这篇文章将为大家详细讲解有关C语言如何实现图书管理系统,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
主要内容
开发一个图书信息管理系统,图书信息包括:图书编号、书名、作者、出版社、类别、出版时间、价格等基本信息(也可以根据自己情况进行扩充,比如是否借出、库存量等)。使之能提供以下基本功能:
(1)图书信息录入功能(图书信息用文件保存)--输入
(2)图书信息浏览功能--输出
(3)查询功能(至少一种查询方式)、排序功能(至少一种排序方式):
①按书名查询
②按作者名查询 按照价钱排序 按出版时间排序等等
(4)图书信息的删除与修改
扩展功能:可以按照自己的程度进行扩展。比如
(1)简单的权限处理
(2)报表打印功能
(3)甚至根据自己情况,可以加上学生信息,并扩充为图书借阅系统。
(4)模糊查询
(5)综合查询
(6)统计功能 比如统计处某一类别的图书信息 或 筛选出小于指定数量库存的图书信息等等。
概要设计
1 图书录入可以录入图书名,作者,出版社,出版日期,价格!录入图书编号时函数就会判断此 编 号是否存在,若存在不能成功录入!
2 图书浏览可以浏览全部图书!
3 图书查询提供按图书编号模糊查询,按图书名关键字查询,按图书编号精确查询,按图书名精确 查询!模糊查询和关键字查询事通过比价字符串的相似度而实现的!
4 修改删除图书可以通过图书查询来查询操作的图书编号,通过编号操作!函数会提示用户是否调 用图书查询来找到自己想要操作的图书的编号。如果某一本图书已经被借阅那么用户就不能删 除 该图书!
5 借阅图书通过学号和图书编号进行借阅!如果该学号是第一次借阅那么会提示用户输入自己的姓 名,并存入student.txt,方便以后借阅与归还!
6 归还图书先提供学号,然后程序会输出该学号借阅的所有图书,然后再通过编号归还!
7 借阅查询可查询某个学生已借但未归还的图书!
项目源码
结构体
先建立结构体,定义结构体成员
typedef struct book{char num[10]; char name[10]; char auth[10]; int count;int sum;}Book;typedef struct borrow{char id[20];char user[20];char book[20];char bookid[20];struct borrow *next;}BBnode,*BBlink;struct user { char num[10]; char pass[15];char name[15]; char sex[10]; }; typedef struct unode { struct user data; struct unode *next; }Unode,*Ulink; Unode *os;
登录界面函数
int login(Ulink l){ while(!flag){char User_id[10],password[10],tmp;int i=0;User_id[0]='\0';password[0]='\0';textbackground(179);clrscr();gotoxy(33,23);textcolor(YELLOW);cputs("ESC = EXIT");textcolor(WHITE);textbackground(179);box(1,1,80,24);h_line(2,3,78);gotoxy(15,2);cputs("Login now please input the User__ID and Password");bar_(30,10,23,5,5);while(User_id[0]=='\0'){gotoxy(31,11);textcolor(YELLOW);textbackground(5);cputs("User__ID:");gotoxy(31,13);cputs("Password:");textbackground(179);textcolor(WHITE);gotoxy(28,7);cputs("please input the User__ID!");textbackground(179);textcolor(YELLOW);gotoxy(27,11);putch(272);gotoxy(27,13);putch(' ');gotoxy(40,11);tmp=getch();if(tmp==27){flg=27;return 0;}while(tmp!='\r'&&i<=9&&(tmp>=64&&tmp<=90)||(tmp>=97&&tmp<=122||(tmp>=48&&tmp<=57))){textcolor(YELLOW);textbackground(5);putch(tmp);User_id[i]=tmp;i++;tmp=getch();if(tmp==27){flg=27;return 0;}}User_id[i]='\0';}while(password[0]=='\0'){gotoxy(28,7);textbackground(179);textcolor(WHITE);cputs(" input the password now ");textbackground(179);textcolor(YELLOW);gotoxy(27,13);putch(272);gotoxy(27,11);putch(' ');gotoxy(40,13);i=0;tmp=getch();if(tmp==27){flg=27;return 0;}while(tmp!='\r'&&i<=10&&(tmp>=64&&tmp<=90)||(tmp>=97&&tmp<=122||(tmp>=48&&tmp<=57))){textbackground(5);putch('*'); password[i]=tmp;i++;tmp=getch();if(tmp==27){flg=27;return 0;}}password[i]='\0';}if(!strcmp(User_id,"admin")&&!strcmp(password,"admin")){return 2;}if(cmps(l,User_id,password)){ return 1;}}}
选择界面函数
void choose(){while(1){ textbackground(179);clrscr();gotoxy(33,2);textcolor(WHITE);cputs("Administrastor");textcolor(YELLOW);box(1,1,80,24);h_line(2,3,78);gotoxy(3,6);cputs(">>>-------------------------1.User Management----------------------------<<<");gotoxy(3,10);cputs(">>>-------------------------2.Book Management----------------------------<<<");gotoxy(3,14);cputs(">>>-------------------------3.Borrow Books-------------------------------<<<");gotoxy(30,22);textcolor(RED);cputs("Please Select!!!");flg=getch();if(flg=='2')bookss();if(flg=='1')users();if(flg=='3')borrow();if(flg==27){flg=-1;return;}}}void admin(){while(1){choose();if(flg=='1')bookss();if(flg=='2')users();if(flg=='3')borrow();if(flg==27){return;}}}
操作界面函数
void user(Ulink h){int flag;BBlink l,p,r; FILE *fp; int count=0; l=(BBnode*)malloc(sizeof(BBnode)); l->next=NULL; r=l; fp=fopen(bfile,"rb"); if(fp==NULL) { fp=fopen(bfile,"wb"); } while(!feof(fp)) {p=(BBnode*)malloc(sizeof(BBnode)); if(fread(p,sizeof(BBnode),1,fp)) { p->next=NULL; r->next=p; r=p; count++; } } while(1) {textbackground(179);clrscr();textcolor(YELLOW);box(1,1,80,24);h_line(2,3,78);gotoxy(3,2);textcolor(RED);cputs("A.");textcolor(BLUE);cputs("my message ");textcolor(RED);cputs("B.");textcolor(BLUE);cputs("modyfy my message ");textcolor(RED);cputs("C.");textcolor(BLUE);cputs("my borrow ");textcolor(RED);cputs("D.");textcolor(BLUE);cputs("search book");textcolor(YELLOW);gotoxy(50,50);flag=getch(); switch(flag){ case 'a':show(os);break; case 'b':Modify_user(h);Save(h);break;case 'c':Myborrow();break;case 'd':usersearch(); break;case 27:return;} } }
添加函数
图书的添加,包括用户添加以及管理员添加
void add(blink l){ Bnode *p,*r,*s; char num[10]; r=l; s=l->next; while(r->next!=NULL) r=r->next; textcolor(RED);gotoxy(25,4);cputs("INPUT THE MESSAGE ABOUT BOOK");gotoxy(31,10);textcolor(YELLOW);cputs("Book ID:");scanf("%s",num); p=(Bnode *)malloc(sizeof(Bnode)); while(s) { if(strcmp(s->data.num,num)==0) { textcolor(WHITE);gotoxy(25,15);cputs("This ID:");printf("'%s'",num); cputs("is exist!"); gotoxy(25,22);cputs("please Press any key to continue..."); gotoxy(255,252);getch(); return; } s=s->next; } strcpy(p->data.num,num); gotoxy(31,12);textcolor(YELLOW);cputs("Input Book name:"); scanf("%s",p->data.name); gotoxy(31,14);cputs("input your Book auth:"); scanf("%s",p->data.auth); gotoxy(31,16);cputs("input your Book count:"); scanf("%d",&p->data.count); bookcount=p->data.count+bookcount;p->data.sum=0;p->next=NULL; r->next=p; r=p; gotoxy(30,22);textcolor(RED);cputs("Add Book Success !!!");getch();textcolor(YELLOW);} void Add(Ulink l){ Unode *p,*r,*s; char num[10]; r=l; s=l->next; while(r->next!=NULL) r=r->next; textcolor(RED);gotoxy(25,4);cputs("INPUT THE MESSAGE ABOUT BOOK");gotoxy(31,10);textcolor(YELLOW);cputs("User ID:");scanf("%s",num); p=(Unode *)malloc(sizeof(Unode)); while(s) { if(strcmp(s->data.num,num)==0) { gotoxy(25,15);cputs("This ID:");printf("'%s'",num); cputs("is exist!"); gotoxy(25,22);textcolor(RED);cputs("please Press any key to continue..."); gotoxy(255,252);getch(); return; } s=s->next; } strcpy(p->data.num,num); gotoxy(31,12);textcolor(YELLOW);cputs("Input Password:"); scanf("%s",p->data.pass); gotoxy(31,14);cputs("input your name:"); scanf("%s",p->data.name); gotoxy(31,16);cputs("input the sex:"); scanf("%s",p->data.sex); p->next=NULL; r->next=p; r=p; gotoxy(30,22);cputs("Add User Success !!!");usercount++;getch();textcolor(YELLOW);}
查找函数
用户查找以及管理员查找
void qur(blink l){ int sel; char findmess[20]; Bnode *p; if(!l->next) { gotoxy(30,4);textcolor(WHITE); cputs("Not Find Bookdata!!!"); getch(); return; } textcolor(RED);gotoxy(25,4);cputs("Please Select Search Type !");gotoxy(10,8);textcolor(WHITE);cputs("1.Search by ID");gotoxy(10,10);cputs("2.Search by Name");gotoxy(10,12);cputs("Please Select 1 or 2:");scanf("%d",&sel); if(sel==1) {gotoxy(36,8);textcolor(YELLOW);cputs("Input the search ID:"); scanf("%s",findmess); p=locate(l,findmess,"num"); if(p) { gotoxy(36,12);textcolor(WHITE);cputs("Book ID:");printf("%s",p->data.num);gotoxy(36,14);textcolor(WHITE);cputs("Book Name:");printf("%s",p->data.name);gotoxy(36,16);textcolor(WHITE);cputs("Book author:");printf("%s",p->data.auth);gotoxy(36,18);textcolor(WHITE);cputs("Book count:");printf("%d",p->data.count);getch();textcolor(YELLOW);gotoxy(30,21);cputs("Search Success !!");}else {gotoxy(30,22);textcolor(RED);cputs("Not finde !!!"); getch();}}else if(sel==2) { gotoxy(36,8);textcolor(YELLOW);cputs("Input the search name:");scanf("%s",findmess); p=locate(l,findmess,"name"); if(p) { gotoxy(36,12);textcolor(WHITE);cputs("Book ID:");printf("%s",p->data.num);gotoxy(36,14);textcolor(WHITE);cputs("Book Name:");printf("%s",p->data.name);gotoxy(36,16);textcolor(WHITE);cputs("Book author:");printf("%s",p->data.auth);gotoxy(36,18);textcolor(WHITE);cputs("Book count:");printf("%d",p->data.count);getch();textcolor(YELLOW);} else {textcolor(RED);gotoxy(30,22);cputs("Not finde !!!"); }} else {textcolor(RED);gotoxy(30,22); cputs("Error !!"); getch();}} void usersearch(){ int sel; char findmess[20]; Bnode *p; blink l; FILE *fp; int count=0; Bnode *P,*r;l=(Bnode*)malloc(sizeof(Bnode)); l->next=NULL; r=l; fp=fopen(file,"rb"); if(fp==NULL) { fp=fopen(file,"wb"); } while(!feof(fp)) { P=(Bnode*)malloc(sizeof(Bnode)); if(fread(P,sizeof(Bnode),1,fp)) { P->next=NULL; bookcount=bookcount+P->data.count;booksum=booksum+P->data.sum; r->next=P; r=P; count++; }} fclose(fp); if(!l->next) { gotoxy(30,4);textcolor(WHITE); cputs("Not Find Bookdata!!!"); getch(); return; } textcolor(RED);gotoxy(25,4);cputs("Please Select Delete Type !");gotoxy(10,8);textcolor(WHITE);cputs("1.Search by ID");gotoxy(10,10);cputs("2.Search by Name");gotoxy(10,12);cputs("Please Select 1 or 2:");scanf("%d",&sel); if(sel==1) {gotoxy(36,8);textcolor(YELLOW);cputs("Input the search ID:"); scanf("%s",findmess); p=locate(l,findmess,"num"); if(p) { gotoxy(36,12);textcolor(WHITE);cputs("Book ID:");printf("%s",p->data.num);gotoxy(36,14);textcolor(WHITE);cputs("Book Name:");printf("%s",p->data.name);gotoxy(36,16);textcolor(WHITE);cputs("Book author:");printf("%s",p->data.auth);gotoxy(36,18);textcolor(WHITE);cputs("Book count:");printf("%d",p->data.count-p->data.sum);getch();textcolor(YELLOW);}else {gotoxy(30,22);textcolor(RED);cputs("Not finde !!!"); getch();}}else if(sel==2){ gotoxy(36,8);textcolor(YELLOW);cputs("Input the search name:");scanf("%s",findmess); p=locate(l,findmess,"name"); if(p) { gotoxy(36,12);textcolor(WHITE);cputs("Book ID:");printf("%s",p->data.num);gotoxy(36,14);textcolor(WHITE);cputs("Book Name:");printf("%s",p->data.name);gotoxy(36,16);textcolor(WHITE);cputs("Book author:");printf("%s",p->data.auth);gotoxy(36,18);textcolor(WHITE);cputs("Book count:");printf("%d",(p->data.count-p->data.sum));getch();textcolor(YELLOW);} else {textcolor(RED);gotoxy(30,22);cputs("Not finde !!!"); }} else {textcolor(RED);gotoxy(30,22); cputs("Error !!"); getch();}} int cmpbook(blink l,char id[],char na[]){ char findm[20];Bnode *p; if(!l->next) { gotoxy(25,4);textcolor(RED); cputs("Not Find Book!!!"); getch(); return 0; } strcpy(findm,id);p=locate(l,findm,"num"); if(p) { strcpy(findm,na);p=locate(l,findm,"name"); if(p) { return 1;} else {textcolor(RED);gotoxy(30,22);cputs("Book name is NULL !!!"); getch();return 0;}}else {gotoxy(30,22);textcolor(RED);cputs("Book id is NULL !!!"); getch();return 0;} }
删除函数
图书的删除
void del(blink l) { int sel; Bnode *p,*r; char findmess[20]; if(!l->next) { gotoxy(25,4);textcolor(RED);cputs("=====>not thing could delete!\n"); getch();return; } textcolor(RED);gotoxy(25,4);puts("Please Select Delete Type !");gotoxy(10,8);textcolor(WHITE);cputs("1.Delete by Book ID");gotoxy(10,10);cputs("2.Delete by Book Name");gotoxy(10,12);cputs("Please Select 1 or 2:");scanf("%d",&sel); if(sel==1) { gotoxy(36,8);textcolor(YELLOW);cputs("Input the delete ID:"); scanf("%s",findmess); p=locate(l,findmess,"num"); if(p) { bookcount=bookcount-p->data.count;r=l; while(r->next!=p) r=r->next; r->next=p->next; free(p); gotoxy(30,22);textcolor(RED);cputs("Delete success!\n"); textcolor(YELLOW); } else {textcolor(RED);gotoxy(30,22); cputs("Error !!"); }} else if(sel==2) { gotoxy(36,8);textcolor(YELLOW);cputs("Input the delete name:"); scanf("%s",findmess); p=locate(l,findmess,"name"); if(p) { r=l; while(r->next!=p) r=r->next; r->next=p->next; free(p); gotoxy(30,22);textcolor(RED);cputs("Delete success!\n"); bookcount--;textcolor(YELLOW); } else{gotoxy(25,18);cputs("Not find!!"); }} else{textcolor(RED);gotoxy(30,22); cputs("Error !!"); }getch();textcolor(YELLOW);}
借书管理函数
void borrow(){while(1){int flag;BBlink l,p,r; FILE *fp; int count=0; l=(BBnode*)malloc(sizeof(BBnode)); l->next=NULL; r=l; fp=fopen(bfile,"rb"); if(fp==NULL) { fp=fopen(bfile,"wb"); } while(!feof(fp)) {p=(BBnode*)malloc(sizeof(BBnode)); if(fread(p,sizeof(BBnode),1,fp)) { p->next=NULL; r->next=p; r=p; count++; } borrowcount=count;} while(1) {textbackground(179);clrscr();textcolor(YELLOW);box(1,1,80,24);h_line(2,3,78);gotoxy(3,2);textcolor(RED);cputs("B");textcolor(BLUE);cputs("orrow book ");textcolor(RED);cputs("R");textcolor(BLUE);cputs("eturn book ");textcolor(RED);cputs("S");textcolor(BLUE);cputs("earch borrow ");textcolor(YELLOW);printf("count: (borrow=%d)",borrowcount);textcolor(RED);gotoxy(50,50);flag=getch(); switch(flag){ case 'b':Add_borrow(l);break; case 'r':Del_borrow(l);Save_borrow(l);break;case 's':Qur_borrow(l);break;case 27:return;} } }}
信息储存函数
图书信息的储存
*******借书信息保存*******/void Save_borrow(BBlink l) { FILE* fp; BBnode *p; int flag=1,count=0; fp=fopen(bfile,"wb"); if(fp==NULL) { gotoxy(35,12);textcolor(RED); cputs("open error!"); exit(1); } p=l->next; while(p) { if(fwrite(p,sizeof(BBnode),1,fp)==1) { p=p->next; count++; } else { flag=0; break; } } if(flag) { textcolor(RED);gotoxy(30,24); }fclose(fp); }
还书函数
void Del_borrow(BBlink l) { int sel; BBnode *p,*r; Bnode *L;char findmess[20];FILE *fp; Bnode *P,*R,*Q;L=(Bnode*)malloc(sizeof(Bnode)); L->next=NULL; R=L; fp=fopen(file,"rb"); if(fp==NULL) { fp=fopen(file,"wb"); }while(!feof(fp)){ P=(Bnode*)malloc(sizeof(Bnode)); if(fread(P,sizeof(Bnode),1,fp)) { P->next=NULL; R->next=P; R=P; }}fclose(fp); if(!l->next){gotoxy(30,4);textcolor(RED);cputs("not Book could Return!\n");getch();return;}textcolor(RED);gotoxy(25,4);puts("Please Select Return Type !");gotoxy(10,8); textcolor(WHITE);cputs("1.Return by Borrow ID");gotoxy(10,10);cputs("2.Return by book name");gotoxy(10,12);cputs("Please Select 1 or 2:");scanf("%d",&sel);if(sel==1){gotoxy(36,8);textcolor(YELLOW);cputs("Input the Borrow ID:");scanf("%s",findmess);p=Locate_borrow(l,findmess,"num");if(p){ Q=locate(L,findmess,"num");if(Q) { Q->data.sum=Q->data.sum-1;save(L);} r=l; while(r->next!=p) r=r->next; r->next=p->next; free(p); gotoxy(30,22);textcolor(RED);cputs("Return success!\n"); borrowcount--;getch();textcolor(YELLOW); } else {gotoxy(30,22);textcolor(RED);cputs("Note find !!"); getch();}} else if(sel==2) { gotoxy(36,8);textcolor(YELLOW);cputs("Input the Book name:"); scanf("%s",findmess); p=Locate_borrow(l,findmess,"book");if(p) { Q=locate(L,findmess,"name"); if(Q) { Q->data.sum=Q->data.sum-1;save(L);} r=l; while(r->next!=p) r=r->next; r->next=p->next; free(p); gotoxy(30,22);textcolor(RED);cputs("Borrow success!\n"); borrowcount--;getch();textcolor(YELLOW); } else{gotoxy(30,18);textcolor(RED);cputs("Not find!!"); getch();}} else{gotoxy(30,22);textcolor(RED);cputs("Not finde !!"); getch();}textcolor(YELLOW);}
修改函数
也分为用户和管理员两种情况
void Modify(Ulink l) { Unode *p; char findmess[20]; if(!l->next) {gotoxy(30,4);textcolor(RED);cputs("not thing could modify!"); getch();return; } gotoxy(30,4);textcolor(RED);cputs("Modify User Message");gotoxy(25,8);textcolor(YELLOW);cputs("input the User Id:");scanf("%s",findmess); p=Locate(l,findmess,"num"); if(p) { textcolor(YELLOW);gotoxy(25,10);printf("Inpute The New ID(old:%s):",p->data.num); scanf("%s",p->data.num); gotoxy(25,12);printf("Input The New Password(old:%s):",p->data.pass); scanf("%s",p->data.pass); gotoxy(25,14);printf("Input The New Name(old:%s):",p->data.name); scanf("%s",p->data.name); gotoxy(25,16);printf("Input The New Sex(old:%s):",p->data.sex); scanf("%s",p->data.sex); gotoxy(30,20);textcolor(RED);cputs("Modify Success !!!"); getch();textcolor(YELLOW);} else {gotoxy(30,16);textcolor(RED);cputs("Not Finde !!!"); getch();}} void Modify_user(Ulink l){ Unode *p; char findmess[20]; if(!l->next) {gotoxy(30,4);textcolor(RED);cputs("not thing could modify!"); getch();return; } gotoxy(30,4);textcolor(RED);cputs("Modify User Message");gotoxy(33,8);textcolor(YELLOW);strcpy(findmess,os->data.num);printf("your id:%s",findmess);p=Locate(l,findmess,"num"); if(p) { textcolor(YELLOW);gotoxy(24,10);printf("Input The New Password(old:%s):",p->data.pass); scanf("%s",p->data.pass); gotoxy(24,12);printf("Input The New Name(old:%s):",p->data.name); scanf("%s",p->data.name); gotoxy(24,14);printf("Input The New Sex(old:%s):",p->data.sex); scanf("%s",p->data.sex); gotoxy(31,18);textcolor(RED);cputs("Modify Success !!!"); getch();textcolor(YELLOW);} else {gotoxy(30,16);textcolor(RED);cputs("Not Finde !!!"); getch();}}
添加借书函数
void Add_borrow(BBlink l) { Ulink H; FILE *Fp; Unode *Q,*T;blink L; FILE *FP; int ttl; Bnode *P,*R;char bookid[20];char bookname[20];char userid[20];BBnode *p,*r,*s; char num[10]; r=l; s=l->next; while(r->next!=NULL) r=r->next; L=(Bnode*)malloc(sizeof(Bnode)); L->next=NULL; R=L; FP=fopen(file,"rb"); if(FP==NULL) { FP=fopen(file,"wb"); } while(!feof(FP)) { P=(Bnode*)malloc(sizeof(Bnode)); if(fread(P,sizeof(Bnode),1,FP)) { P->next=NULL; bookcount=bookcount+P->data.count; R->next=P; R=P; } } fclose(FP); H=(Unode*)malloc(sizeof(Unode)); H->next=NULL; T=H;Fp=fopen(ufile,"rb"); if(Fp==NULL) { Fp=fopen(ufile,"wb"); } while(!feof(Fp)) { Q=(Unode*)malloc(sizeof(Unode)); if(fread(Q,sizeof(Unode),1,Fp)) { Q->next=NULL; T->next=Q; T=Q; } } fclose(Fp); textcolor(RED);gotoxy(25,4);cputs("Please input thease message");gotoxy(30,10);textcolor(YELLOW);cputs("Input Borrow ID:");scanf("%d",&ttl);itoa(ttl,num,10) ;p=(BBnode *)malloc(sizeof(BBnode));while(s) { if(strcmp(s->id,num)==0) { gotoxy(30,15);cputs("Borrow ID:");printf("'%s'",num); cputs("is exist!"); gotoxy(26,22);textcolor(RED);cputs("please Press any key to continue..."); gotoxy(255,252);getch(); return; } s=s->next; } strcpy(p->id,num);gotoxy(31,12);textcolor(YELLOW);cputs("Input book id:"); scanf("%s",bookid);gotoxy(31,14);textcolor(YELLOW);cputs("Input book name:"); scanf("%s",bookname); if(cmpbook(L,bookid,bookname)){strcpy(p->bookid,bookid);strcpy(p->book,bookname);gotoxy(31,16);cputs("input your ID:"); scanf("%s",userid); if(cmpuser(H,userid)){strcpy(p->user,userid);p->next=NULL; r->next=p; r=p; if(changeb(L,bookid)){gotoxy(30,22);cputs("Borrow Success !!!");Save_borrow(l);borrowcount++; getch();}} } textcolor(YELLOW);}
查找借书函数
查找自己借了哪些书
void Myborrow(){int i; BBlink l,p,r; FILE *fp; int count=0; l=(BBnode*)malloc(sizeof(BBnode)); l->next=NULL; r=l; fp=fopen(bfile,"rb"); if(fp==NULL) { fp=fopen(bfile,"wb"); } i=6;while(!feof(fp)) { p=(BBnode*)malloc(sizeof(BBnode)); if(fread(p,sizeof(BBnode),1,fp)) { textcolor(WHITE);gotoxy(30,4);cputs("Your borrow book");if(strcmp(p->user,os->data.num)==0){textcolor(YELLOW); gotoxy(20,i);printf("Borrow ID:%s\tBook id:%s\tBook name:%s",p->id,p->bookid,p->book);i++; p->next=NULL; r->next=p; r=p; count++; } } myborrow=count;if(myborrow==0){textcolor(YELLOW);gotoxy(30,13);cputs("You no borrow !!"); } }fclose(fp);textcolor(YELLOW);gotoxy(65,2);printf("(borrow=%d)",myborrow);getch(); }
借书管理函数
void borrow(){while(1){int flag;BBlink l,p,r; FILE *fp; int count=0; l=(BBnode*)malloc(sizeof(BBnode)); l->next=NULL; r=l; fp=fopen(bfile,"rb"); if(fp==NULL) { fp=fopen(bfile,"wb"); } while(!feof(fp)) {p=(BBnode*)malloc(sizeof(BBnode)); if(fread(p,sizeof(BBnode),1,fp)) { p->next=NULL; r->next=p; r=p; count++; } borrowcount=count;} while(1) {textbackground(179);clrscr();textcolor(YELLOW);box(1,1,80,24);h_line(2,3,78);gotoxy(3,2);textcolor(RED);cputs("B");textcolor(BLUE);cputs("orrow book ");textcolor(RED);cputs("R");textcolor(BLUE);cputs("eturn book ");textcolor(RED);cputs("S");textcolor(BLUE);cputs("earch borrow ");textcolor(YELLOW);printf("count: (borrow=%d)",borrowcount);textcolor(RED);gotoxy(50,50);flag=getch(); switch(flag){ case 'b':Add_borrow(l);break; case 'r':Del_borrow(l);Save_borrow(l);break;case 's':Qur_borrow(l);break;case 27:return;} } } }
主函数
main(){ Ulink h,os; FILE *fp; Unode *p,*r;h=(Unode*)malloc(sizeof(Unode)); h->next=NULL; r=h; fp=fopen(ufile,"rb"); if(fp==NULL) { fp=fopen(ufile,"wb"); } while(!feof(fp)) { p=(Unode*)malloc(sizeof(Unode)); if(fread(p,sizeof(Unode),1,fp)) { p->next=NULL; r->next=p; r=p; }}fclose(fp);system("wellcome");if(flg==27){flg=-1;return;}while(1){flag=login(h);if(flg==27){flg=-1;break;} if(flag==2){choose();flag=0;}if(flag==1){user(h);flag=0;} } }
关于“C语言如何实现图书管理系统”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。