先上神仙结果
保存
#include"Function.h"
void save(book *head)
{
book *p;
FILE *fp;
if(n==0)
{
printf("没有记录可存\n");
return;
}
if((fp=fopen("sname.txt","wb"))==NULL)
{
printf("不能打开文件\n");
exit(1);
}
p=head;
while(p!=NULL)
{
fwrite(p,LEN,1,fp);
p=p->next;
}
fclose(fp);
}
读取
book *load(book *head)
{
FILE *fp;
book *p,*old;
n=0;
if((fp=fopen("sname.txt","rb"))==NULL)
{
exit(1);
}
ASK(p);
head=p;
old=head;
while(!feof(fp))
{
if(1!=fread(p,LEN,1,fp))break;
n=n+1;
ASK(p->next);
old=p->next;
old=p;
p=p->next;
}
old->next=NULL;
fclose(fp);
return(head);
}
显示
#include"Function.h"
void mydisplay(book *head)//显示函数
{
book *p1;
p1=head;
unsigned int i;
i=37;
nodoLine();
while(p1!=NULL)
{
outtextxy(13,i,p1->num);
outtextxy(213,i,p1->name);
outtextxy(413,i,p1->writer);
outtextxy(613,i,p1->price);
outtextxy(813,i,p1->leibie);//文字输出形式
i+=25;
p1=p1->next;
}
}
头文件
#ifndef _H_FUNCTION_H
#define _H_FUNCTION_H
#include<stdlib.h>
#include<stdio.h>
#include<cstring>
#include<iostream>
#include<conio.h>
#include<graphics.h>
#include<ctype.h>
using namespace std;
#define ASK(q) do{ \
q=(book*)malloc(sizeof(book)); \
if(q==NULL){exit(-1);} \
}while(0)
#define LEN sizeof(book)
extern int n;
typedef struct Book
{
char name[20];//书名
char num[10];//编号
char writer[10];//作者
char price[10];//价格
char leibie[10];//类别
struct Book *next;
}book;
extern book num[20];//书本数量
extern unsigned int count;
void nodoLine();//表格绘制
book *mycreat(book *);//创建管理书本
void mydisplay(book *);//显示函数
void search1(book *);//编号查找
void search2(book *);//书名查找
void mymodify(book *);//修改图书信息
book *mydelete(book *);//删除图书信息
void showmenu(book *);//主页面函数
void save(book *);//文件存储
book *load(book *);//文件读取
#endif