#include
#include
#include
#define STU struct Book
#define SIZE 100
void write();
void search();
void read();
void del();
void fdel();
void fmod();
void borrow();
void gback();
int load();
void printf_back();
void save(int n,STU*);
int modify_data(int,int);
void menu();
STU {char name[20]; /*图书名*/
char num[20]; /*图书编号*/
int price; /*价格*/
char author[20]; /*作者*/
int state; /*状态未借1 ;借出0 */
char loader[20]; /*借书人姓名*/
int sex; /*性别男1 ;女0*/
long stn; /*学号*/
char pub[20]; /*出版社*/
long time; /*出版时间*/
}book[SIZE];
void main()
{
int n, w ;
do
{
puts("*****************************menu*************************\n\n");
puts("\t\t 1.录入信息");
puts("\t\t 2.浏览图书信息");
puts("\t\t 3.图书信息查询");
puts("\t\t 4.删除与改写信息");
puts("\t\t 5.办理借书手续");
puts("\t\t 6.办理还书手续");
puts("\t\t 0.退出");
printf("选择功能(0~6):[ ]\b\b");
scanf("%d",&n);
if(n<0||n>6)
{
w=1;
getchar();
}
else w=0;
}while(w==1);
switch(n)
{
case 1:write();break;
case 2:read();break;
case 3:search();break;
case 4:del();break;
case 5:borrow();break;
case 6:gback();break;
case 0:exit(0);
}
}
void write()
{ int i,m,k,n;
FILE *fp;
n=load();
printf("要追加的记录个数:\n ");
scanf("%d",&m);
k=m+n;
if((fp=fopen("book.txt","a"))==NULL)
{
printf("\n无法打开文件\n");
}
for(i=n;i { printf("请输入第%d本图书的信息",i-n+1); printf("\n图书信息:图书名编号价格作者状态借书人性别学号出版社出版时间\n"); scanf("%s%s%d%s%d%s%d%ld%s%ld",book[i].name,book[i].num,&book[i].price,book[i].autho r,&book[i].state,book[i].loader,&book[i].sex,&book[i].stn,book[i].pub,&book[i].time); } for(i=n;i if(fwrite(&book[i],sizeof(STU),1,fp)!=1) printf("文件写入错误!"); fclose(fp); printf_back(); } void search() { int i,n,k,w1=1; STU fbook; n=load(); do { k=-1; printf("\n请输入查询书目名称:\n"); scanf("%s", https://www.wendangku.net/doc/ed13084305.html,); for(i=0;i if(strcmp(https://www.wendangku.net/doc/ed13084305.html,,book[i].name)==0) { k=i; printf("\n图书信息:图书名编号价格作者状态借书人性别学号出版社出版时间\n"); printf("%s %s %d %s %d %s %d %ld %s %ld\n",book[i].name,book[i].num,book[i].price,bo ok[i].author,book[i].state,book[i].loader,book[i].sex,book[i].stn,book[i].pub,book[i].time); printf_back(); break; } if(k==-1) { printf("\n不存在这个书名的信息\n"); printf("\n1).again 2).no and back\n"); scanf("%d",&w1); if(w1==2) printf_back(); } while(k==-1&&w1==1); } void read() { int i,n; n=load(); printf("图书名编号价格作者状态借书人姓名性别学号出版社出版时间\n"); for(i=0;i printf("%s %s %d %s %d %s %d %ld %s %ld\n",book[i].name,book[i].num,book[i].price,book[i]. author,book[i].state,book[i].loader,book[i].sex,book[i].stn,book[i].pub,book[i].time); printf_back(); } void del() { int n,w; do { printf("\t\t**********删除与修改信息**********\n\n"); printf("\t\t 1.删除操作\n"); printf("\t\t 2.修改操作\n"); printf("\t\t 0.返回"); printf("\n选择功能(0~2):[ ]\b\b"); scanf("%d",&n); if(n<0||n>2) { w=1; getchar(); } else w=0; }while(w==1); switch(n) { case 1:fdel();break;/*删除函数*/ case 2:fmod();break;/*修改函数*/ case 0:printf_back(); } } void fdel () { STU fbook; int i,n,j,k=-1; n=load(); do {printf("请输入要修改书目名称:"); scanf("%s", https://www.wendangku.net/doc/ed13084305.html,); for(i=0;i if(strcmp(https://www.wendangku.net/doc/ed13084305.html,,book[i].name)==0) { k=i; fbook=book[i]; } if(k==-1) printf("\n书名不存在!请重新输入:\n"); }while(k==-1); printf("\n图书名编号价格作者状态借书人姓名性别学号出版社出版时间\n"); printf("%s %s %d %s %d %s %d %ld %s %ld",https://www.wendangku.net/doc/ed13084305.html,,fbook.num,fbook.price,fbook.author,f book.state,fbook.loader,fbook.sex,fbook.stn,fbook.pub,fbook.time); printf("\n\n确定要删除此图书信息?\n1 确定0 取消并返回[ ]\b\b"); scanf("%d",&j); switch(j) {case 1: {strcpy(book[k].name,"0"); strcpy(book[k].num,"0"); book[k].price=0; strcpy(book[k].author,"0"); book[k].state=0; strcpy(book[k].loader,"0"); book[k].sex=0; book[k].stn=0; strcpy(book[k].pub,"0"); book[k].time=0;}; break; case 0:printf_back(); } save(n,book); printf_back(); void fmod() { STU fbook; int i,n,k=-1,w0=1,w1,w2=0; n=load(); do { do {printf("请输入要修改书目名称:"); scanf("%s", https://www.wendangku.net/doc/ed13084305.html,); for(i=0;i if(strcmp(https://www.wendangku.net/doc/ed13084305.html,,book[i].name)==0) { k=i; fbook=book[i]; } if(k==-1) printf("\n书名不存在!请重新输入:\n"); }while(k==-1); printf("\n图书名编号价格作者状态借书人姓名性别学号出版社出版时间\n"); printf("%s %s %d %s %d %s %d %ld %s %ld",https://www.wendangku.net/doc/ed13084305.html,,fbook.num,fbook.price,fbook.author,f book.state,fbook.loader,fbook.sex,fbook.stn,fbook.pub,fbook.time); w1=modify_data(k,n); /*只会返回1或3,1是确认修改,3是放弃修改*/ if(w1==1) { printf("\n修改成功!\n\n要修改其它数据吗?\n1).是2).否,返回\t[ ]\b\b"); scanf("%d",&w0); w2=1; } else {w0=0; if(w2==0) book[k]=fbook; } if(w0!=1&&w2==1)/*W2=1说明进行了上一个if语句,数据修改成功了,W0!=1不再修改其他数据*/ save(n,book); }while(w0==1);/*do while语句w0=1表示修改成功,还要修改其他语句,进行循环*/ menu(); } void gback() { STU fbook; int i,n,k=-1; n=load(); do {printf("请输入要还的书目名称:"); scanf("%s", https://www.wendangku.net/doc/ed13084305.html,); for(i=0;i if(strcmp(https://www.wendangku.net/doc/ed13084305.html,,book[i].name)==0) { k=i; fbook=book[i]; } if(k==-1) printf("\n书名不存在!请重新输入:\n"); }while(k==-1); printf("\n图书名编号价格作者状态借书人姓名性别学号出版社出版时间\n"); printf("%s %s %d %s %d %s %d %ld %s %ld",https://www.wendangku.net/doc/ed13084305.html,,fbook.num,fbook.price,fbook.author,f book.state,fbook.loader,fbook.sex,fbook.stn,fbook.pub,fbook.time); printf("\n确定要归还这本书?1).确定2).取消并返回[ ]\b\b"); scanf("%d",&i); if (i==1) { book[k].state=1; strcpy(book[k].loader,"0"); book[k].sex=0; book[k].stn=0; save(n,book); printf("图书归还成功!\n"); printf_back(); } else printf_back(); } void borrow () {STU fbook; int i,n,k=-1; n=load(); {printf("请输入要借的书目名称:"); scanf("%s", https://www.wendangku.net/doc/ed13084305.html,); for(i=0;i if(strcmp(https://www.wendangku.net/doc/ed13084305.html,,book[i].name)==0) { k=i; fbook=book[i]; } if(k==-1) printf("\n书名不存在!请重新输入:\n"); }while(k==-1); printf("\n图书名编号价格作者状态借书人姓名性别学号出版社出版时间\n"); printf("%s %s %d %s %d %s %d %ld %s %ld",https://www.wendangku.net/doc/ed13084305.html,,fbook.num,fbook.price,fbook.author,f book.state,fbook.loader,fbook.sex,fbook.stn,fbook.pub,fbook.time); printf("\n确定要借这本书?1).确定2).取消并返回[ ]\b\b"); scanf("%d",&i); if (i==1) { book[k].state=0; printf("\n请输入借阅者姓名:\n"); scanf("%s",book[k].loader); printf("\n请输入借阅者性别(1:男、0:女):\n"); scanf("%d",&book[k].sex); printf("\n请输入借阅者学号:"); scanf("%ld",&book[k].stn); save(n,book); printf("图书借阅成功!\n"); printf_back(); } else printf_back(); } void save(int n,STU *tr) { FILE *fp; int i; if((fp=fopen("book.txt","w"))==NULL) { printf("无法打开文件!\n"); return NULL; for(i=0;i if(tr[i].time!=0) if(fwrite(&tr[i],sizeof(STU),1,fp)!=1) printf("文件写入错误!\n"); fclose(fp); } void printf_back() { int w; printf("\n1).返回主菜单2).退出\n"); scanf("%d",&w); if(w==1) menu(); else exit(0); } int load() { FILE *fp; int i; if((fp=fopen("book.txt","r"))==NULL) { printf("\n不能打开文件book!\n"); return NULL; } for(i=0;!feof(fp);i++) fread(&book[i],sizeof(STU),1,fp); fclose(fp); return (i-1); } int modify_data(int i,int n) {int c,w1; do { printf("\n选择修改项目=>\n\n1.书名2.图书编号3.价格4.作者5.借阅状态6.借书人7.性别8.学号9.出版社10.出版时间11.修改所有信息12.取消\n"); printf("你的选择:\n"); scanf("%d",&c); if(c>12||c<1) { printf("输入错误,请重新输入\n"); c=getchar(); } }while(c>12||c<1); do { switch(c) {case 1:printf("输入新书名:");scanf("%s",book[i].name);break; case 2:printf("输入新图书编号:");scanf("%s",book[i].num);break; case 3:printf("输入新价格:");scanf("%d",&book[i].price);break; case 4:printf("输入作者:");scanf("%s",book[i].author);break; case 5:printf("输入新借阅状态:");scanf("%d",&book[i].state);break; case 6:printf("输入新借书人:");scanf("%s",book[i].loader);break; case 7:printf("输入性别:");scanf("%d",&book[i].sex);break; case 8:printf("输入学号:");scanf("%ld",&book[i].stn);break; case 9:printf("输入出版社:");scanf("%s",book[i].pub);break; case 10:printf("输入出版日期:");scanf("%ld",&book[i].time);break; case 11:printf("\n图书信息:图书名编号价格作者状态借书人性别学号出版社出版时间\n"); scanf("%s%s%d%s%d%s%d%ld%s%ld",book[i].name,book[i].num,&book[i].price,book[i].autho r,&book[i].state,book[i].loader,&book[i].sex,&book[i].stn,book[i].pub,&book[i].time); } if(c>0||c<12) {printf("\n\n修改后的信息:\n"); printf("%s %s %d %s %d %s %d %ld %s %ld",book[i].name,book[i].num,book[i].price,book [i].author,book[i].state,book[i].loader,book[i].sex,book[i].stn,book[i].pub,book[i].time);} printf("\n确定要修改?\n1).确定2).放弃,重新输入3).这次输入不保存,返回\n [ ]\b\b"); scanf("%d",&w1); }while(w1==2); return(w1); } void menu() {int w,n; do { puts("*****************************menu*************************\n\n"); puts("\t\t 1.录入信息"); puts("\t\t 2.浏览图书信息"); puts("\t\t 3.图书信息查询"); puts("\t\t 4.删除与改写信息"); puts("\t\t 5.办理借书手续"); puts("\t\t 6.办理还书手续"); puts("\t\t 0.退出"); printf("选择功能(0~6):[ ]\b\b"); scanf("%d",&n); if(n<0||n>6) { w=1; getchar(); } else w=0; }while(w==1); switch(n) { case 1:write();break; case 2:read();break; case 3:search();break; case 4:del();break; case 5:borrow();break; case 6:gback();break; case 0:exit(0); } }