C++图书管理系统源代码

合集下载

C图书管理系统源代码

C图书管理系统源代码

C图书管理系统源代码 Standardization of sany group #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN#图书管理系统系统功能:1.借书:根据借书人提出的图书编号(id)查询该图书,如果该图书现存量(store)不为0,则提示输入借阅者的学号(num),为借书人办理借书手续,提示用户该书已被借出。

2.归书:根据借书人的学号查询该读者的信息,若有该读者,则提示输入所借书籍的编号(id),为该读者办理还书手续,提示该书已还。

3.书籍管理:弹出书籍管理界面,输入所要执行操作的号码:(1)增加书籍:弹出注册新书的窗口,按照提示输入所增加书籍的信息,最后,提示用户该书已被注册。

(2)删除书籍:弹出删除书籍的窗口,输入所要删除书籍的编号(id),输出该书的信息,确认是否删除该书,1为删除,0为放弃。

(3)修改书籍:弹出修改书籍的窗口,输入所要修改书籍的编号(id),输出该书的信息,确认是否修改该书,1为修改,0为放弃。

之后按照提示重新输入书籍的信息。

4.读者管理:弹出读者管理界面,输入所要执行操作的号码:(1)增加读者:弹出注册读者的窗口,按照提示输入所增加读者的信息,最后,提示用户该读者已被注册。

(2)删除书籍:弹出删除读者的窗口,输入所要删除读者的学号(num),输出该读者的信息,确认是否删除该读者,1为删除,0为放弃。

(3)修改书籍:弹出修改读者的窗口,输入所要修改读者的学号(num),输出该读者的信息,确认是否修改该读者,1为修改,0为放弃。

之后按照提示重新输入读者的信息。

5.搜索:此搜索包括两方面的搜索,书籍搜索以及读者搜索,弹出搜索的窗口,按照提示输入所要搜索的内容,1为书籍搜索,2为读者搜索:(1)搜索书籍:弹出搜索书籍的窗口,按照提示输入所要搜索的方式,包括按<1>书名搜索,<2>书号搜索,<3>作者搜索,<4>出版社搜索,<5>出版时间搜索;根据所选方式输入相应的内容,若是该书籍存在,则输出该书籍的信息,否则,返回主界面。

C语言 图书信息管理系统 最终源代码

C语言  图书信息管理系统 最终源代码

C语言图书信息管理系统最终源代码#include<stdio.h>#include"string.h"struct book /* book2 是用来装用户要录入图书的信息*/{long num,time;char name[12],writer[12],fenlei[8],danwei[10];int pay;}stu[100];struct book1{long num,time;char name[12],writer[12],fenlei[8],danwei[10];int pay;}stu1[100];struct book2 /* book 是用来装cc.dat 文件中的图书信息*/{long num,time;char name[12],writer[12],fenlei[8],danwei[10];int pay;}stu2[100];denglu(){char a[15]="drzhang",b[15]="29257966",c[15],d[15];L3:system("cls");printf(" 欢迎登陆图书管理系统\n\n");printf("请输入姓名:");gets(c);printf("请输入密码:");gets(d);if(strcmp(a,c)==0&&strcmp(b,d)==0)return 0;else{printf("输入错误请重新输入\n\n");printf("1.重新输入 2.退出系统\n\n");printf("请输入.....");switch(getch()){case 49: goto L3;break;default: return 56;break;}}}/*此功能实现的是开始菜单的显示和具体功能的选择*/start(){printf("******************************欢迎使用图书管理系统******************************");printf("* 功能目录:*");printf("* |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| *");printf("* || || *");`printf("* || 1、图书查询2、图书浏览3、录入图书4、删除与修改5、备份与还原|| *");printf("* || || *");printf("* || || *");printf("* || || *");printf("* |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| *");printf("* 使用说明:如要选择“图书查询”,直接输入:1 退出:0 *");printf("************************************************************************* *******");printf("你想要做什么:");return getch(); /*输入选择对应功能的值,返回输入的值,即:用于判断选择的功能*/ }/*实现备份功能,以防图书信息出错带来的麻烦,不必看懂*/beifen(){FILE *fp1,*fp2;int i,a;jieshuo();system("cls");printf("\n\n请选择\\ 备份(B)| 浏览备份(L)/ \\ 还原(H)/ \\ 退出(Q)/ \n");switch(getch()){case 'B':case 'b':if((fp1=fopen("cc","r"))==NULL){printf("不能打开次文件\n");exit(0);}if((fp2=fopen("cc01","w"))==NULL){printf("不能打开次文件\n");exit(0);}fscanf(fp1,"%d",&a);fprintf(fp2,"%d\n",a);printf("\n\n确认备份吗?(Y/N)");switch(getch()){case 'Y':case 'y':for(i=0;i<a;i++){fscanf(fp1,"%ld %s %s %s %s %ld %d",&stu[i].num,stu[i].name,stu[i].writer,stu[i].fenlei,stu[i] .danwei,&stu[i].time,&stu[i].pay);fprintf(fp2,"%ld\t%s\t%s\t%s\t%s\t%ld\t%d\n",stu[i].num,stu[i].name,stu[i].writer,stu[i].fenlei,st u[i].danwei,stu[i].time,stu[i].pay);}printf("\n\n备份成功!\n\n是否打开浏览备份文件?(Y/N)");switch(getch()){case 'Y':case 'y':fclose(fp1);fclose(fp2);liulan02();break;case 'N':case 'n':break;}break;case 'N':case 'n':break;}fclose(fp1);fclose(fp2);break;case 'H':case 'h':if((fp1=fopen("cc01","r"))==NULL){printf("不能打开此文件\n");exit(0);}if((fp2=fopen("cc","w"))==NULL){printf("不能打开此文件\n");exit(0);}fscanf(fp1,"%d",&a);fprintf(fp2,"%d\n",a);printf("\n\n确认还原吗?(Y/N)");switch(getch()){case 'Y':case 'y':for(i=0;i<a;i++){fscanf(fp1,"%ld %s %s %s %s %ld %d",&stu[i].num,stu[i].name,stu[i].writer,stu[i].fenlei,stu[i] .danwei,&stu[i].time,&stu[i].pay);fprintf(fp2,"%ld\t%s\t%s\t%s\t%s\t%ld\t%d\n",stu[i].num,stu[i].name,stu[i].writer,stu[i].fenlei,st u[i].danwei,stu[i].time,stu[i].pay);}printf("\n\n还原成功!\n\n是否打开浏览还原文件?(Y/N)");switch(getch()){case 'Y':case 'y':fclose(fp1);fclose(fp2);liulan();break;case 'N':case 'n':break;}break;case 'N':case 'n':break;}fclose(fp1);fclose(fp2);break;case 'l':case 'L':liulan02();break;case 'Q':case 'q':break;}}/* 在屏幕上打印查询菜单*/chaxun(){jieshuo();system("cls");printf("******************************欢迎使用图书查询系统******************************");printf("* 查询方式:*");printf("**");printf("* 1、书名2、作者名3、出版时间*");printf("**");printf("* 4、价格5、分类号6、出版单位*");printf("**");printf("* 使用说明:如要选择“书名”,直接输入:1 退出:0 *");printf("************************************************************************* *******");printf("\n请输入你要怎么查询:");chaxun01(); /*打印完毕后,进入chaxun()函数,执行用户需要的查询功能*/}/*此程序段实行查询的各种功能*/chaxun01(){FILE *fp;char ch[8];int a=0,i,j,k,n=0,c,d;long b;if((fp=fopen("cc","r"))==NULL) /*说明:cc.dat 文件装着图书的信息,*/ {printf("不能打开此文件\n");exit(0);} /*并且文件开记录的是图书的书量,后*/ fscanf(fp,"%d",&a); /*从文件中读出图书数*/ /*面依次才是具体信息。

C语言图书管理系统代码

C语言图书管理系统代码

#include<stdio.h>#include<stdlib.h>#include<string.h>struct book{int num;char bname[50];char wname[20];char press[50];char sort[50];int time;float price;struct book *next;};struct book *creatbook(); //创建链表struct book *addbook(struct book *head); //添加图书int yanzheng(struct book *head,int m); //验证新添加的图书编码是否已存在void deletebook(struct book *head); //删除图书void fprint(struct book *head); //将链表写入文件struct book *load(); //从文件中读取信息并建成链表void print_book(struct book *head); //将链表信息输出void chaxun(struct book *head); //查询图书信息void num_chaxun(struct book *head); //按图书编号查询图书void wname_chaxun(struct book *head); //按作者名查询图书void sort_chaxun(struct book *head); //按类别查询图书void time_chaxun(struct book *head); //按出版时间查询图书void bname_chaxun(struct book *head); //按图书名查询图书void xiugai(struct book *head); //修改图书信息void paixu(struct book *head); //对图书进行排序void num_paixu(struct book *head); //按图书编号排序void time_paixu(struct book *head); //按图书出版时间排序void price_paixu(struct book *head); //按图书价格排序void bname_paixu(struct book *head); //按图书名排序void wname_paixu(struct book *head); //按作者名排序int main(){int choice,n,x,y=1,c,c1=1234;char a,d,b[10],b1[10]="yjk";struct book *head=NULL;while(y){system("cls");printf("\n\n\n\n\n\n\n");printf(" ********** 欢迎光临**********\n\n");printf(" ********************** 图书信息管理系统************************\n\n\n");printf("\n\n");printf(" ============1-用户登录===========\n");printf(" ============0-退出系统===========\n");printf(" 请输入您的选择:");scanf("%d",&n);printf("\n");getchar();switch(n){case 0:y=0;break;case 1:printf(" 请输入您的用户名:");gets(b);printf("\n");printf(" 请输入您的密码:");scanf("%d",&c);printf("\n");if(strcmp(b,b1)!=0||c!=c1){printf(" 验证失败,请重新输入!\n");scanf("%c",&d);getchar();system("cls");}else{printf(" 验证通过!请按Enter键进入!\n");scanf("%c",&d);getchar();x=1;while(x){system("cls");printf(" ------------------\n");printf(" *图书信息管理系统*\n");printf(" ------------------\n\n");printf("**********************************************\n\n");printf("**********************************************\n\n");printf(" || 1-添加图书2-删除图书||\n\n");printf(" || 3-图书列表4-图书排序||\n\n");printf(" || 5-查询图书6-修改图书||\n\n");printf(" || 7-录入数据0-退出系统||\n\n");printf("**********************************************\n\n");printf("**********************************************\n\n");printf("请输入所选择的序号:");scanf("%d",&choice);getchar();system("cls");switch(choice){case 0:x=0;break;case 1:head=load();if(head==NULL){printf("文件为空,请先录入数据!\n");getchar();break;}else{head=addbook(head);printf("添加成功!\n");printf("是否将新信息保存到文件?(y/n)\n");scanf("%c",&a);getchar();switch(a){case 'n':break;case 'y':fprint(head);printf("保存成功!\n");getchar();break;}break;}case 2:head=load();if(head==NULL){printf("文件为空,请先录入数据!\n");getchar();break;}else{deletebook(head);getchar();break;}break;case 3:head=load();if(head==NULL){printf("文件为空,请先录入数据!\n");getchar();break;}else{print_book(head);getchar();break;}case 4:head=load();if(head==NULL){printf("文件为空,请先录入数据!\n");getchar();break;}else{paixu(head);getchar();}break;case 5:head=load();if(head==NULL){printf("文件为空,请先录入数据!\n");getchar();break;}else{chaxun(head);getchar();}break;case 6:head=load();if(head==NULL){printf("文件为空,请先录入数据!\n");getchar();break;}else{xiugai(head);getchar();break;}break;case 7:printf("注意:输入图书编码为0时结束!\n");head=creatbook();printf("是否将输入的信息保存到文件以覆盖文件中已存在的信息?(y/n)\n");getchar();scanf("%c",&a);getchar();switch(a){case 'n':break;case 'y':fprint(head);printf("保存成功!\n");getchar();break;}break;default:printf("您的输入有误,请重新输入!\n");getchar();break;}}}break;default:printf(" 您的输入有误! 请重新输入!\n");getchar();break;}}}//录入数据并形成链表struct book *creatbook(){struct book *head,*tail,*p;int num,time,n;char bname[50],wname[20],press[50],sort[50];float price;int size=sizeof(struct book);head=tail=NULL;printf("请输入图书编号:");scanf("%d",&num);printf("请输入图书名:");scanf("%s",bname);getchar();printf("请输入作者名:");scanf("%s",wname);getchar();printf("请输入出版社:");scanf("%s",press);getchar();printf("请输入类别:");scanf("%s",sort);getchar();printf("请输入出版时间:");scanf("%d",&time);getchar();printf("请输入价格:");scanf("%f",&price);getchar();while(1){p=(struct book *)malloc(size);p->num=num;strcpy(p->bname,bname);strcpy(p->wname,wname);strcpy(p->press,press);strcpy(p->sort,sort);p->time=time;p->price=price;p->next=NULL;if(head==NULL)head=p;elsetail->next=p;tail=p;do{printf("请输入图书编号:");scanf("%d",&num);n=yanzheng(head,num);if(n==0)break;elseprintf("您输入的编号已存在,请重新输入!\n");}while(1);if(num==0)break;else{printf("请输入图书名:");scanf("%s",bname);getchar();printf("请输入作者名:");scanf("%s",wname);getchar();printf("请输入出版社:");scanf("%s",press);getchar();printf("请输入类别:");scanf("%s",sort);getchar();printf("请输入出版时间:");scanf("%d",&time);getchar();printf("请输入价格:");scanf("%f",&price);getchar();}}return head;}//插入结点,并且插入后仍按一定顺序struct book *addbook(struct book *head){struct book *ptr,*p1,*p2,*p;char bname[50],wname[20],press[50],sort[50];int size=sizeof(struct book);int num,time,n=1;float price;do{printf("请输入图书编号:");scanf("%d",&num);n=yanzheng(head,num);if(n==0)break;elseprintf("您输入的编号已存在,请重新输入!\n");}while(1);printf("请输入图书名:");scanf("%s",bname);getchar();printf("请输入作者名:");scanf("%s",wname);getchar();printf("请输入出版社:");scanf("%s",press);getchar();printf("请输入类别:");scanf("%s",sort);getchar();printf("请输入出版时间:");scanf("%d",&time);getchar();printf("请输入价格:");scanf("%f",&price);getchar();p=(struct book *)malloc(size);p->num=num;strcpy(p->bname,bname);strcpy(p->wname,wname);strcpy(p->press,press);strcpy(p->sort,sort);p->time=time;p->price=price;p2=head;ptr=p;while((ptr->num>p2->num)&&(p2->next!=NULL)){ p1=p2;p2=p2->next;}if(ptr->num<=p2->num){if(head==p2)head=ptr;else{p1->next=ptr;p->next=p2;}}else{p2->next=ptr;p->next=NULL;}return head;}//验证添加的图书编号是否已存在int yanzheng(struct book *head,int m){struct book *p;p=head;while(p!=NULL){if(p->num==m)break;p=p->next;}if(p==NULL)return 0;elsereturn 1;}//将新链表写入文件中void fprint(struct book *head){FILE *fp;char ch='1';struct book *p1;if((fp=fopen("f1.txt","w"))==NULL){printf("File open error!\n");exit(0);}fputc(ch,fp);for(p1=head;p1;p1=p1->next){fprintf(fp,"%d %s %s %s %s %d %f\n",p1->num,p1->bname,p1->wname,p1->press,p1->sort ,p1->time,p1->price);}fclose(fp);}//从文件中读取图书信息struct book *load(){FILE *fp;char ch;struct book *head,*tail,*p1;head=tail=NULL;if((fp=fopen("f1.txt","r"))==NULL){printf("File open error!\n");exit(0);}ch=fgetc(fp);if(ch=='1'){while(!feof(fp)){p1=(struct book *)malloc(sizeof(struct book));fscanf(fp,"%d%s%s%s%s%d%f\n",&p1->num,p1->bname,p1->wname,p1->press,p1->sort,&p1-> time,&p1->price);if(head==NULL)head=p1;elsetail->next=p1;tail=p1;}tail->next=NULL;fclose(fp);return head;}elsereturn NULL;}//将整个链表的信息输出void print_book(struct book *head){struct book *ptr;if(head==NULL){printf("\n没有信息!\n");return;}printf(" 图书信息列表如下\n");printf("==========================================================\n");printf(" 编号图书名作者名出版社类别出版时间价格\n");for(ptr=head;ptr;ptr=ptr->next)printf(" %d %s %s %s %s %d %.2f\n",ptr->num,ptr->bname,ptr->wname,ptr->press,ptr->sort,ptr->time,ptr->price);printf("==========================================================\n");}//删除图书信息void deletebook(struct book *head){int a;char b,ch='1';struct book *p1,*p2;FILE *fp;printf("请输入要删除的图书编号:");scanf("%d",&a);p1=head;if(p1->num==a&&p1->next==NULL){ //对于文件中只有一组数据printf("是否清空文件!(y/n)\n");getchar();scanf("%c",&b);getchar();switch(b){case 'n':break;case 'y':if((fp=fopen("f1.txt","w"))==NULL){printf("File open error!\n");exit(0);}fclose(fp);printf("文件已清空!\n");}}else{while(p1->num!=a&&p1->next!=NULL){p2=p1;p1=p1->next;}if(p1->next==NULL){if(p1->num==a){p2->next=NULL;printf("是否确定从文件中彻底删除该图书?(y/n)\n");getchar();scanf("%c",&b);switch(b){case 'n':break;case 'y':fprint(head);printf("删除成功!\n");getchar();break;}}else{printf("没有找到要删除的数据!\n");getchar();}}else if(p1==head){head=p1->next;printf("是否确定从文件中彻底删除该图书?(y/n)\n");getchar();scanf("%c",&b);switch(b){case 'n':break;case 'y':fprint(head);printf("删除成功!\n");getchar();break;}}else{p2->next=p1->next;printf("是否确定从文件中彻底删除该图书?(y/n)\n");getchar();scanf("%c",&b);switch(b){case 'n':break;case 'y':fprint(head);printf("删除成功!\n");getchar();break;}}}}//图书查询void chaxun(struct book *head){int a;printf("==========================================================\n");printf(" ** 1-按图书编号查询2-按图书名查询**\n");printf(" ** 3-按图书类别查询4-按作者名查询**\n");printf(" ** 5-按出版时间查询0-退出查询**\n");printf("==========================================================\n");printf("请输入所选择的编号:");scanf("%d",&a);getchar();switch(a){case 0:break;case 1:num_chaxun(head);break;case 2:bname_chaxun(head);break;case 3:sort_chaxun(head);break;case 4:wname_chaxun(head);break;case 5:time_chaxun(head);break;default:printf("您的输入有误!\n");break;}}//按编号查询图书信息void num_chaxun(struct book *head){int a;struct book *p;printf("请选择您要查询的图书编号:");scanf("%d",&a);getchar();p=head;while(p!=NULL){if(p->num==a)break;p=p->next;}if(p==NULL){printf("没有找到该编号的图书!\n");}else{printf(" 你所查询的图书信息如下\n");printf("====================================================================== ===\n");printf(" ** 编号图书名作者名出版社类别出版时间价格**\n");printf("** %d %s %s %s %s %d %.2f **\n",p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);printf("====================================================================== ===\n");}}//按图书名查询图书信息void bname_chaxun(struct book *head){char a[50];int flag=0;struct book *p;printf("请选择您要查询的图书名:");gets(a);p=head;while(p!=NULL){if(strcmp(p->bname,a)==0){flag=1;break;}p=p->next;}if(flag==0){printf("没有找到该图书名的图书!\n");}else{printf(" 你所查询的图书信息如下\n");printf("====================================================================== ===\n");printf(" ** 编号图书名作者名出版社类别出版时间价格**\n");while(p!=NULL){if(strcmp(p->bname,a)==0){printf("** %d %s %s %s %s %d %.2f **\n",p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);}p=p->next;}printf("====================================================================== ===\n");}}//按作者名查询图书信息void wname_chaxun(struct book *head){char a[50];int flag=0;struct book *p;printf("请选择您要查询的图书作者名:");gets(a);p=head;while(p!=NULL){if(strcmp(p->wname,a)==0){flag=1;break;}p=p->next;}if(flag==0){printf("没有找到该图书名的图书!\n");}else{printf(" 你所查询的图书信息如下\n");printf("====================================================================== ===\n");printf(" ** 编号图书名作者名出版社类别出版时间价格**\n");while(p!=NULL){if(strcmp(p->wname,a)==0){printf("** %d %s %s %s %s %d %.2f **\n",p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);flag=1;}p=p->next;}printf("====================================================================== ===\n");}}//按图书类别查询图书信息void sort_chaxun(struct book *head){char a[50];int flag=0;struct book *p;printf("请选择您要查询的图书类别:");gets(a);p=head;while(p!=NULL){if(strcmp(p->sort,a)==0){flag=1;break;}p=p->next;}if(flag==0){printf("没有找到该图书名的图书!\n");}else{printf(" 你所查询的图书信息如下\n");printf("====================================================================== ===\n");printf(" ** 编号图书名作者名出版社类别出版时间价格**\n");while(p!=NULL){if(strcmp(p->sort,a)==0){printf("** %d %s %s %s %s %d %.2f **\n",p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);flag=1;}p=p->next;}printf("====================================================================== ===\n");}}//按图书出版时间查询图书信息void time_chaxun(struct book *head){int a,flag=0;struct book *p;printf("请选择您要查询的图书出版时间:");scanf("%d",&a);getchar();p=head;while(p!=NULL){if(p->time==a){flag=1;break;}p=p->next;}if(flag==0){printf("没有找到该图书名的图书!\n");}else{printf(" 你所查询的图书信息如下\n");printf("====================================================================== ===\n");printf(" ** 编号图书名作者名出版社类别出版时间价格**\n");while(p!=NULL){if(p->time==a){printf("** %d %s %s %s %s %d %.2f **\n",p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);flag=1;}p=p->next;}printf("====================================================================== ===\n");}}//修改图书信息void xiugai(struct book *head){int a,b;char c;struct book *p;printf("请输入要修改的图书编号:");scanf("%d",&a);p=head;while(p!=NULL){if(p->num==a)break;p=p->next;}if(p==NULL){printf("没有找到该编号的图书!\n");getchar();}else{printf("============================================================\n");printf(" ** 1-编号2-图书名3-作者名**\n");printf(" ** 4-出版社5-类别6-出版时间**\n");printf(" ** 7-价格8-修改全部0-放弃修改**\n");printf("============================================================\n");printf("请选择你要修改的信息编号:");scanf("%d",&b);getchar();switch(b){case 1:printf("请输入新编号:");scanf("%d",&p->num);printf("修改成功!\n");getchar();break;case 2:printf("请输入新图书名:");gets(p->bname);printf("修改成功!\n");break;case 3:printf("请输入新作者名:");gets(p->wname);printf("修改成功!\n");break;case 4:printf("请输入新出版社:");gets(p->press);printf("修改成功!\n");break;case 5:printf("请输入新类别:");gets(p->sort);printf("修改成功!\n");break;case 6:printf("请输入新出版时间:");scanf("%d",&p->time);printf("修改成功!\n");getchar();break;case 7:printf("请输入新价格:");scanf("%f",&p->price);printf("修改成功!\n");getchar();break;case 8:printf("请输入新图书编号:");scanf("%d",&p->num);printf("请输入新图书名:");scanf("%s",p->bname);getchar();printf("请输入新作者名:");scanf("%s",p->wname);getchar();printf("请输入新出版社:");scanf("%s",p->press);getchar();printf("请输入新类别:");scanf("%s",p->sort);getchar();printf("请输入新出版时间:");scanf("%d",&p->time);getchar();printf("请输入新价格:");scanf("%f",&p->price);getchar();printf("修改成功!\n");getchar();break;case 0:break;default :printf("您的输入有误!\n");break;}printf("是否将修改后的信息保存到文件中?(y/n)\n");scanf("%c",&c);getchar();switch(c){case 'n':break;case 'y':fprint(head);printf("保存成功!\n");getchar();break;}}}//图书排序void paixu(struct book *head){int a;printf("================================================================\n");printf(" ** 1-按图书编号排序2-按出版时间排序**\n");printf(" ** 3-按图书价格排序4-按图书名排序**\n");printf(" ** 5-按作者名排序0-取消排序操作**\n");printf("================================================================\n");printf("请输入您选择的编号:");scanf("%d",&a);getchar();switch(a){case 0:break;case 1:num_paixu(head);break;time_paixu(head);break;case 3:price_paixu(head);break;case 4:bname_paixu(head);break;case 5:wname_paixu(head);break;default:printf("您的输入有误!\n");break;}}//按图书编号排序void num_paixu(struct book *head){struct book *a[1000],*p,*p1,*temp;int i,k,index,n=0;char b;p1=head;for(p=head;p;p=p->next)n++;for(i=0;i<n;i++){a[i]=p1;p1=p1->next;}for(k=0;k<n-1;k++){index=k;for(i=k+1;i<n;i++){if(a[i]->num<a[index]->num)index=i;}temp=a[index];a[index]=a[k];a[k]=temp;}printf("排序成功!\n");printf("是否显示排序结果?(y/n)\n");scanf("%s",&b);switch(b){case 'n':break;case 'y':printf("================================================================\n");printf(" ** 编号图书名作者名出版社类别出版时间价格**\n");for(i=0;i<n;i++){printf("** %d %s %s %s %s %d %.2f **\n",a[i]->num,a[i]->bname,a[i]->wname,a[i]->press,a[i]->sort,a[i]->time,a[i]->price);}printf("================================================================\n");break;default:printf("您的输入有误!\n");break;}}//按出版时间排序void time_paixu(struct book *head){struct book *a[1000],*p,*p1,*temp;int i,k,index,n=0;char b;p1=head;for(p=head;p;p=p->next)n++;for(i=0;i<n;i++){a[i]=p1;p1=p1->next;}for(k=0;k<n-1;k++){index=k;for(i=k+1;i<n;i++){if(a[i]->time<a[index]->time)index=i;}temp=a[index];a[index]=a[k];a[k]=temp;}printf("排序成功!\n");printf("是否显示排序结果?(y/n)\n");scanf("%s",&b);getchar();switch(b){case 'n':break;case 'y':printf("===============================================================\n");printf(" ** 编号图书名作者名出版社类别出版时间价格**\n");for(i=0;i<n;i++){printf("** %d %s %s %s %s %d %.2f **\n",a[i]->num,a[i]->bname,a[i]->wname,a[i]->press,a[i]->sort,a[i]->time,a[i]->price);}printf("===============================================================\n");break;default:printf("您的输入有误!\n");break;}}//按图书价格排序void price_paixu(struct book *head){struct book *a[1000],*p,*p1,*temp;int i,k,index,n=0;char b;p1=head;for(p=head;p;p=p->next)n++;for(i=0;i<n;i++){a[i]=p1;p1=p1->next;}for(k=0;k<n-1;k++){index=k;for(i=k+1;i<n;i++){if(a[i]->price<a[index]->price)index=i;}temp=a[index];a[index]=a[k];a[k]=temp;}printf("排序成功!\n");printf("是否显示排序结果?(y/n)\n");scanf("%s",&b);getchar();switch(b){case 'n':break;case 'y':printf("===============================================================\n");printf(" ** 编号图书名作者名出版社类别出版时间价格**\n");for(i=0;i<n;i++){printf("** %d %s %s %s %s %d %.2f **\n",a[i]->num,a[i]->bname,a[i]->wname,a[i]->press,a[i]->sort,a[i]->time,a[i]->price);}printf("===============================================================\n");break;default:printf("您的输入有误!\n");break;}}//按图书名排序void bname_paixu(struct book *head){struct book *a[1000],*p,*p1,*temp;int i,k,index,n=0;char b;p1=head;for(p=head;p;p=p->next)n++;for(i=0;i<n;i++){a[i]=p1;p1=p1->next;}for(k=0;k<n-1;k++){index=k;for(i=k+1;i<n;i++){if(strcmp(a[index]->bname,a[i]->bname)>0)index=i;}temp=a[index];a[index]=a[k];a[k]=temp;}printf("排序成功!\n");printf("是否显示排序结果?(y/n)\n");scanf("%s",&b);getchar();switch(b){case 'n':break;case 'y':printf("===============================================================\n");printf(" ** 编号图书名作者名出版社类别出版时间价格**\n");for(i=0;i<n;i++){printf("** %d %s %s %s %s %d %.2f **\n",a[i]->num,a[i]->bname,a[i]->wname,a[i]->press,a[i]->sort,a[i]->time,a[i]->price);}printf("===============================================================\n");break;default:printf("您的输入有误!\n");break;}}//按作者名排序void wname_paixu(struct book *head){struct book *a[1000],*p,*p1,*temp;int i,k,index,n=0;char b;p1=head;for(p=head;p;p=p->next)n++;for(i=0;i<n;i++){a[i]=p1;p1=p1->next;}for(k=0;k<n-1;k++){index=k;for(i=k+1;i<n;i++){if(strcmp(a[index]->wname,a[i]->wname)>0)index=i;}temp=a[index];a[index]=a[k];a[k]=temp;}printf("排序成功!\n");printf("是否显示排序结果?(y/n)\n");scanf("%s",&b);getchar();switch(b){case 'n':break;case 'y':printf("===============================================================\n");printf(" ** 编号图书名作者名出版社类别出版时间价格**\n");for(i=0;i<n;i++){printf("** %d %s %s %s %s %d %.2f **\n",a[i]->num,a[i]->bname,a[i]->wname,a[i]->press,a[i]->sort,a[i]->time,a[i]->price);}printf("===============================================================\n");break;default:printf("您的输入有误!\n");break;}}。

C语言图书管理系统源代码

C语言图书管理系统源代码

#include<stdio。

h〉#include<stdlib。

h〉#include<string.h〉struct tushu{/*图书结构体*/ char num[10];/*编号*/char name[20];/*书名*/char writer[20];/*作者*/char press[20];/*出版社*/char kind[20];/*类别*/double time;/*时间*/double price;/*价格*/struct tushu *next;};struct stu /*学生结构体*/ {int snum;/*学号*/char mima[10]; /*密码*/struct stu *next;};FILE *fp; /*图书文件*/FILE *fp1;/*管理员信息文件*/ FILE *fp2; /*学生信息文件*/void menu(); /*管理员主菜单(管理员进入对图书及学生信息进行管理操作)*/void xmenu();/*学生主菜单(学生进入可对图书,密码进行操作)*/void gfind(); /*管理员查询(管理员可按一定的方式查询图书)*/void xfind(); /*学生查询(学生可按一定的方式查询图书)*/void secret();/*管理员权限(管理员登陆所用,输入错误次数过多自动退出)*/void sort(); /*排序(管理员可按一定的方式对图书进行排序,排序完之后可选择文件进行保存)*/void fprint(struct tushu *head);/*保存(可追加的保存,如添加可用)*/void fprint_(struct tushu *head);/*保存(可覆盖保存如修改,删除,排序后用)*/void hfprint(struct tushu *head); /*还书保存(还书成功后自动保存到文件)*/void jfprint_(struct tushu *head); /*借书保存(借书成功之后自动从图书馆删除)*/struct tushu * Input();/*图书添加(可进行图书的添加)*/struct tushu *create(); /*从文件创建链表(从文件中读出信息,建立单链表)*/void gBrowse(struct tushu *head);/*管理员浏览(对图书进行遍历)*/void xBrowse(struct tushu *head);/*学生浏览(学生对图书进行遍历)*/void count(struct tushu *head);/*统计数量(管理员可对图书进行统计)*/void Findofname(struct tushu *head); /*按书名查找*/ void Findofwriter(struct tushu *head);/*按作者查找*/ void Findofkind(struct tushu *head);/*按类别查找*/ void xFindofname(struct tushu *head); /*学生按书名查找*/void xFindofwriter(struct tushu *head);/*学生按作者查找*/ void xFindofkind(struct tushu *head); /*学生按类别查找*/ void Sort_time(struct tushu * head);/*按时间排序(管理员按时间对图书进行排序,排序完之后可选择文件进行保存)*/ void Sort_price(struct tushu *head); /*按价格排序*/void Sort_num(struct tushu * head);/*按编号排序*/ void Delete(struct tushu * head,char m[15]);/*按编号删除(管理员可按编号删除图书)*/void Revise(struct tushu *head); /*修改(管理员可对图书进行修改,并选择是否保存)*/void borrow(struct tushu *head);/*借书*/void huanshu(); /*还书(学生借完书之后进行还书,若没有图书则不能借)*/void gxinxi(); /*管理员信息(有管理员的账号及密码,可进行修改)*/void xmima(struct stu *head1);/*学生密码修改(学生可对自己的密码进行修改)*/struct stu *xcreate();/*从文件创建学生信息(从文件读出学生信息,建立学生链表)*/void xsecret(struct stu *head1); /*学生权限(学生登陆所用)*/void menu()/*管理员主菜单(管理员进入对图书及学生信息进行管理操作)*/{int choice,n=0;struct tushu *head;struct stu *head1,*p;char m[15];there:printf(”┏━┓━━━━━━━━━━━━━━━━━━━┏━┓\n”);printf(” ┃┃socat 图书管理系统┃┃\n”);printf(" ┃┗━━━━━━━━━━━━━━━━━━━┛┃\n”);printf(” ┃●[0]退出系统┃\n");printf(" ┃┃\n");printf(” ┃●[1]帮助┃\n");printf(” ┃┃\n”);printf(" ┃●[2]浏览图书┃\n");printf(” ┃┃\n”);printf(" ┃●[3]统计图书数目┃\n”);printf(” ┃┃\n”);printf(” ┃●[4]查询printf(" ┃┃\n");printf(" ┃●[5]添加┃\n");printf(" ┃┃\n");printf(" ┃●[6]排序┃\n”);printf(” ┃┃\n”);printf(” ┃●[7]修改┃\n”);printf(” ┃┃\n”);printf(” ┃●[8]删除┃\n");printf(" ┃┃\n”);printf(" ┃●[9]修改账号及密码┃\n");print f(” ┃printf(" ┃●[10]学生信息┃\n");printf(" ┗━━━━━━━━━━━━━━━━━━━━━━━┛\n”);printf(” 请选择:");fflush(stdin);head=create();scanf(”%d",&choice);if(choice==1){//help();printf(”没有内容!\n");system(”pause");system("cls”);menu();}else if(choice==2){system("cls");if(head==NULL){printf(”没有图书,请先添加图书!\n");system("pause");system("cls”);menu();}gBrowse(head);}else if(choice==3){system(”cls");count(head);}else if(choice==4){system("cls");if(head==NULL){printf(”没有图书,请先添加图书!\n”);system("pause”);system(”cls”);menu();}gfind();}else if(choice==5){Input();}else if(choice==6){system(”cls”);if(head==NULL){printf(”没有图书,请先添加图书!\n”);system(”pause”);system(”cls”);menu();}sort(head);}else if(choice==7){system(”cls");if(head==NULL){printf("没有图书,请先添加图书!\n");system(”pause”);system("cls");menu();}Revise(head) ;}else if(choice==8){if(head==NULL){printf("没有图书,请先添加图书!\n");system(”pause”);system("cls”);menu();}printf(” 请输入想要删除的图书编号:");scanf(”%s",m);Delete(head,m);}else if(choice==9)gxinxi();}else if(choice==10){system("cls”);head1=xcreate();if(head1==NULL){printf("没有学生信息,请到xuesheng_list。

C语言图书管理系统源代码

C语言图书管理系统源代码

C语言图书管理系统源代码Revised by Jack on December 14,2020/*需要在源代码相同目录下创建四个t x t文件:,,,*/#include<>#include<>#include<>struct tushu{ /*图书结构体*/char num[11]; /*编号*/char name[31]; /*书名*/char writer[21]; /*作者*/char press[21]; /*出版社*/char kind[21]; /*类别*/double time; /*时间*/double price; /*价格*/struct tushu *next;};struct stu /*学生结构体*/{int snum; /*学号*/char mima[11]; /*密码*/struct stu *next;};struct jieshu{ /*借书信息结构体*/int xuehao; /*学生学号*/char num[11]; /*编号*/char name[31]; /*书名*/char writer[21]; /*作者*/char press[21]; /*出版社*/char kind[21]; /*类别*/double time; /*时间*/double price; /*价格*/struct jieshu *next;};int denglu=-1; /*已登录学生学号*/FILE *fp; /*图书文件*/FILE *fp1; /*管理员信息文件*/FILE *fp2; /*学生信息文件*/FILE *fp3; /*借书信息文件*/int main(); /*主函数声明*/ struct tushu * create(); /*从文件创建图书链表(从文件中读出图书信息,建立单链表)*/struct stu * xcreate(); /*从文件创建学生信息(从文件读出学生信息,建立学生链表)*/struct jieshu * jcreate(); /2.否):");scanf("%d",&x);if(x==1)fprint(head);else{system("cls");printf("\n\n\n\t\t\t 文件没有被保存!\n\n\n\n");system("pause");system("cls");menu();}}lf %.2lf\n", p1->num,p1->name,p1->writer,p1->press,p1->kind,p1->time,p1->price );/*将图书信息写入文件*/fclose(fp);system("cls");printf("\n 图书信息已成功保存到文件中!\n");system("pause");system("cls");getchar();menu();}lf %.2lf\n", p1->num,p1->name,p1->writer,p1->press,p1->kind,p1->time,p1->price );/*将图书信息写入文件*/fclose(fp);system("cls");printf("\n 图书信息已成功保存到文件 %s 中!\n",a);system("pause");system("cls");menu();}lf %.2lf\n", p1->num,p1->name,p1->writer,p1->press,p1->kind,p1->time,p1->price );/*将图书信息写入文件*/fclose(fp);xmenu();}lf %.2lf\n", p1->num,p1->name,p1->writer,p1->press,p1->kind,p1->time,p1->price );/*将图书信息写入文件*/}fclose(fp);system("cls");getchar();xmenu();}lf %.2lf\n",pj->xuehao,pj->num,pj->name,pj->writer,pj->press,pj->kind,pj->time,pj->price );fclose(fp3);}lf\n", p1->num,p1->name,p1->writer,p1->press,p1->kind,p1->time,p1->price);}system("pause");system("cls");menu();}lf\n", p1->num,p1->name,p1->writer,p1->press,p1->kind,p1->time,p1->price);}system("pause");system("cls");xmenu();}lf\n", p->num,p->name,p->writer,p->press,p->kind,p->time,p->price);i++;}p=p->next;}if(i==0){system("cls");printf("\n 对不起!没有找到名为《%s》的图书!\n",b);system("pause");}printf("\n\n\n\t\t\t是否继续查找图书信息(1.是/其他.返回):");scanf("%d",&n);if(n==1)gfind();else{system("cls");menu();}}lf\n", p->num,p->name,p->writer,p->press,p->kind,p->time,p->price);i++;}p=p->next;}if(i==0){system("cls");printf("\n 对不起!没有找到' %s '所着的相关图书!\n",b);system("pause");}printf("\n\n\n\t\t\t是否继续查找图书信息(1.是/其他.返回):");scanf("%d",&n);if(n==1)gfind();else{system("cls");menu();}}lf\n", p->num,p->name,p->writer,p->press,p->kind,p->time,p->price);i++;}p=p->next;}if(i==0){system("cls");printf("\n 对不起!没有找到类别为' %s '的图书!\n",b);system("pause");}printf("\n\n\n\t\t\t是否继续查找图书信息(1.是/其他.返回):");scanf("%d",&n);if(n==1)gfind();else{system("cls");menu();}}lf\n", p->num,p->name,p->writer,p->press,p->kind,p->time,p->price);i++;}p=p->next;}if(i==0){system("cls");printf("\n 对不起!没有找到名为《%s》的图书!\n",b);system("pause");}printf("\n\n\n\t\t\t是否继续查找图书信息(1.是/其他.返回):");scanf("%d",&n);if(n==1)xfind();else{system("cls");xmenu();}}lf\n", p->num,p->name,p->writer,p->press,p->kind,p->time,p->price);i++;}p=p->next;}if(i==0)system("cls");printf("\n 对不起!没有找到' %s '所着的相关图书!\n",b);system("pause");printf("\n\n\n\t\t\t是否继续查找图书信息(1.是/其他.返回):");scanf("%d",&n);if(n==1)xfind();else{system("cls");xmenu();}}lf\n", p->num,p->name,p->writer,p->press,p->kind,p->time,p->price);i++;}p=p->next;}if(i==0)system("cls");printf("\n 对不起!没有找到类别为' %s '的图书!\n",b);system("pause");printf("\n\n\n\t\t\t是否继续查找图书信息(1.是/其他.返回):");scanf("%d",&n);if(n==1)xfind();else{system("cls");xmenu();}}lf\n", p5->num,p5->name,p5->writer,p5->press,p5->kind,p5->time,p5->price);system("pause");system("cls");printf("\n\n\n\t\t\t是否保存图书信息(1.是/2.否(返回)):");scanf("%d",&x);if(x==1)fprint_(p1);elsesystem("cls");printf("\n\n\n\t\t\t 没有被保存到文件!\n\n\n\n");system("pause");system("cls");menu();return;}lf\n", p5->num,p5->name,p5->writer,p5->press,p5->kind,p5->time,p5->price);system("pause");system("cls");printf("\n\n\n\t\t\t是否保存图书信息(1.是/2.否(返回)):");scanf("%d",&x);if(x==1)fprint_(p1);elsesystem("cls");printf("\n\n\n\t\t\t 没有被保存到文件!\n\n\n\n");system("pause");system("cls");menu();return;}lf\n", p5->num,p5->name,p5->writer,p5->press,p5->kind,p5->time,p5->price);system("pause");system("cls");printf("\n\n\n\t\t\t是否保存图书信息(1.是/2.否(返回)):");scanf("%d",&x);if(x==1)fprint_(p1);elsesystem("cls");printf("\n\n\n\t\t\t 没有被保存到文件!\n\n\n\n");system("pause");system("cls");menu();return;}/2.否(返回)):");scanf("%d",&x);if(x==1)fprint_(head);elsesystem("cls");printf("\n\n\n\t\t\t 并没有被保存到文件!\n\n\n\n");system("pause");system("cls");menu();return;}/2.否(返回)):");scanf("%d",&x);if(x==1)fprint_(head);elsesystem("cls");printf("\n\n\n\t\t\t 没有被保存到文件!\n\n\n\n");system("pause");system("cls");menu();return;}lf %.2lf\n",pj->xuehao,pj->num,pj->name,pj->writer,pj->press,pj->kind,pj->time,pj->price);fclose(fp3);}lf %.2lf\n", h->num,h->name,h->writer,h->press,h->kind,h->time,h->price);fclose(fp);}....\n");getchar();there:fflush(stdin);system("cls");printf("\n\n\n1 :管理员登陆系统\n\n2 :学生登陆系统\n\n0 :退出\n\n\n\n");printf("请选择:");scanf("%d",&i);if(i==0){system("cls");printf("\n\n\n\n****************************************************** ***************************\n");printf(" 感谢使用图书管理系统\n");printf("************************************************************** *******************\n\n\n");system("pause");exit(0);}else if(i==1){system("cls");secret();}else if(i==2){system("cls");head1=xcreate();if(head1==NULL){printf("暂没有学生信息,学生不能登录!\n");system("pause");system("cls");main();}xsecret(head1);}else{printf("\n\n输入错误,请重新输入!\n\n\n");system("pause");system("cls");j++;if(j==3){system("cls");printf("\n\n\n******************************************************** *****************\n\n");printf("\n\n\t\t你输入的次数过多,自动退出!谢谢使用!\n\n");printf("\n\n********************************************************** ***************\n\n");system("pause");exit(0);}goto there;}}。

C 大型实验之图书管理系统源代码(仅供参考)

C  大型实验之图书管理系统源代码(仅供参考)
//将borrows链表中的数据写入到文件
//===================================
void DBFile::Write_borrowdata_infile(){
ofstream outfile("BorrowData.dat",ios::trunc);
//覆盖写入模式,因为中间有修改变量
infile>>(m->ID);
if((m->ID)[0]=='\0')break;
infile>>(m->Password);
infile>>(m->Name);
infile>>(m->Sex);
if(managers==0)
managers=m;
string bname;//书名
string author;//作者
string press;//出版社
int storenum;//现有藏书量
int borrownum;//借出数
Book *next;
Book();
void print();
};
#endif
//DBFile.h//数据操作类
//====================
#ifndef HEADER_DBFILE
#define HEADER_DBFILE
#include <iostream>
#include <fstream>
#include <string>
#include "Reader.h"

图书管理系统C语言实现源代码

图书管理系统C语言实现源代码
} } return 0; }
//建立链表,并输入数据 struct book *chu_jian() {
struct book *head,*tail,*p; char num[N],name[M],autor[L],dizhi[K],leixing[E],time[F]; float price;
**********\n");
printf("
图书管理系统
\n");
printf("
0---退出系统
1---录入数据
\n");
printf("
2---保存文件
3---输出信息
\n");
printf("
4--- 根 据 编 号 查 询 信 息
5--- 插 入 数 据
\n");
printf("
6---删除数据
getchar();
} //输出图书的信息 void printf_(struct book *head) {
struct book *p; p=head; if(head!=NULL) {
do {
printf("编号:"); puts(p->num); printf("书名:"); puts(p->name); printf("作者:"); puts(p->autor); printf("出版社:"); puts(p->dizhi); printf("类型:"); puts(p->leixing); printf("时间:"); puts(p->time); printf("价格:"); printf("%f",p->price); printf("\n"); p=p->next; }while(p!=NULL); } getchar(); } //根据图书的编号查询图书的信息,并输出数据 void num_chaxun(struct book *head) { char a[N]; struct book *p;

C语言编写的图书借阅管理系统源代码

C语言编写的图书借阅管理系统源代码

C语言编写的图书借阅管理系统源代码C语言编写的图书借阅管理系统源代码#include <dos.h>#include <bios.h>#include <conio.h>#include <stdio.h>#include <stdlib.h>#include <math.h>#define LEFT 0x4b00 /*左*/#define RIGHT 0x4d00 /*右*/#define DOWN 0x5000 /*下*/#define UP 0x4800 /*上*/#define SPACE 0x3920 /*空格*/#define ESC 0x011b /* ESC键*/#define ENTER 0x1c0d /*回车键*/#define Backspace 0xe08 /*擦除键*/#define ALT_B 12288 /*组合键ALT_B */#define ALT_M 12800/*组合键ALT_M */#define ALT_H 8960/*组合键ALT_H */int key;/*按键变量*/int textx,texty;/*光标坐标,x行,y列*/struct menustruct/*菜单用的结构体*/{char name[10];/*主菜单名*/char str[10][20];/*选项*/int n;/*选项数*/}ml[3];/*使用了3个,可根据需要增删*/typedef struct BookList/*书的结构体*/{char num[20];/*图书编号*/char name[20];/*书名*/int price;/*书的价格*/char person[20];/*借阅人*/int yes;/*判断书是否存在或者已经借出,1存在,0借出*/ struct BookList *next;}Book;typedef struct MemberList/*会员的结构体*/{char name[20];/*会员的姓名*/char sex[2];/*会员的性别*/int age;/*会员的年龄*/struct MemberList *next;}Member;char save[4096];/*保存文本区域空间*//*char sav1[4096];*/char c[4096];/*清屏专用空间*/int i,j;/*常见变量*/void Menu();/*初始化界面*/void Selectitem();/*定义菜单*/void DrawSelectitem();/*显示主菜单*/void BlackText(int x,int y,char *z);/*选中菜单*/ void RedText(int x,int y,char *z);/*正常菜单*/ void Run();/*具体操作过程*/void DrawMl(int n);/*显示下拉菜单*/void MoveMl(int n,int x);/*菜单选项的控制*/ void Enter(int m,int n);/*菜单选项的具体功能*/ void BookAdd();/*添加图书*/void BookConsult();/*图书查询*/void BookDel();/*删除图书资料*/void BookBorrow();/*借书*/void BookReturn(); /*还书*/void MemberAdd(); /*增加会员*/void MemberConsult();/*查询会员*/void MemberDel(); /*删除会员*/void MemberBook(); /*查询会员借书信息*/ void Help(); /*帮助*/void Ver(); /*版本信息*/void ClrScr();/*自定义清屏函数*/void DrawFrame(int left,int up,int right,int down,int textcolor,int backgroundcolor);/*画边框*//***主函数****/void main(void){Menu();/*初始化界面*/Run();/*具体操作过程*/}/*初始化界面*/void Menu(){system("cls"); /*调用系统的清屏命令*/textbackground(BLUE);/*将背景设置为蓝色*/window(1,1,25,80);clrscr();textx=3;/*光标初始化位置*/texty=2;gotoxy(1,2);printf("%c",218);/*画左上角*/for(i=0;i<78;i++)printf("%c",196); /*画水平直线*/printf("%c",191);/*画右上角*/for(i=3;i<=23;i++){gotoxy(1,i);printf("%c",179); /*画垂直线*/gotoxy(80,i);printf("%c",179);}printf("%c",192); /*画左下角*/for(i=0;i<78;i++)printf("%c",196);printf("%c",217); /*画右下角*/gotoxy(1,1);textcolor(7); /*设置灰色*/for(i=0;i<80;i++)cprintf("%c",219);/*用符号实现画主菜单的灰色背景区*/ Selectitem(); /*调用选项函数*/DrawSelectitem(); /*画选项*/gettext(2,3,78,23,c); /*保存当前文本区域*/}/*定义菜单*/void Selectitem(){strcpy(ml[0].name,"Book");/*下面的具体选项补空格是为了各菜单黑色背景相同*/strcpy(ml[0].str[0],"Add ");/*添加图书*/strcpy(ml[0].str[1],"Consult ");/*查询图书*/strcpy(ml[0].str[2],"Del ");/*删除图书资料*/strcpy(ml[0].str[3],"Borrow ");/*借书*/strcpy(ml[0].str[4],"Return ");/*还书*/strcpy(ml[0].str[5],"Exit ");/*退出系统*/ml[0].n=6; /*保存菜单的项数*/strcpy(ml[1].name,"Member");strcpy(ml[1].str[0],"Add ");/*添加新会员*/strcpy(ml[1].str[1],"Consult ");/*查询会员资料*/strcpy(ml[1].str[2],"Del ");/*删除会员资料*/strcpy(ml[1].str[3],"Member&book ");ml[1].n=4;strcpy(ml[2].name,"Help");/*系统帮助*/strcpy(ml[2].str[0],"This System ");strcpy(ml[2].str[1],"Ver ");ml[2].n=2;}/*显示主单名*/void DrawSelectitem(){for(i=0;i<3;i++)RedText(i,1,ml[i].name); /*显示主菜单名,且首字母为红色*/ }/*正常显示菜单*/void RedText(int x,int y,char *z){textbackground(7); /*设置背景颜色为浅灰色*/gotoxy(3+x*20,y);for(j=0;z[j];j++){if(j==0)textcolor(RED);/*第一个字母显示红色*/elsetextcolor(BLACK); /*设置黑色*/cprintf("%c",z[j]); /*输出菜单名*/}}/*显示选中菜单*/void BlackText(int x,int y,char *z){textbackground(0); /*设置背景颜色为黑色*/textcolor(15); /*设置文本颜色为白色*/gotoxy(3+20*x,y);/*定位坐标*/cputs(z); /*输出菜单名字符串*/}/*按键操作过程*/void Run(){while(1){gotoxy(texty,textx);key=bioskey(0);/*接收按键*/switch(key){case ALT_B:case ESC: DrawMl(0);break; /*显示下拉菜单1*/case ALT_M: DrawMl(1);break;/*显示下拉菜单2*/case ALT_H: DrawMl(2);/*显示下拉菜单3*/case UP: /*上光标键的操作控制*/{if(textx==3)textx=23;textx--;gotoxy(texty,textx);}break;case DOWN: /*下光标键的操作控制*/ {if(textx==23)textx=3;textx++;gotoxy(texty,textx);}break;case LEFT: /*左光标键的操作控制*/ {if(texty==2)texty=79;texty--;gotoxy(texty,textx);}break;case Backspace: /*擦除键的设置*/{if(texty==2&&textx==3)continue;else{if(texty!=2)texty--; /*擦除键的细节问题,先擦去东西,然后光标还要往后退一格*/elseif(texty==2){texty=78;textx--;}gotoxy(texty,textx);printf(" ");gotoxy(texty,textx);}}break;/*end case 0xe08*/case RIGHT: /*右光标键的操作控制*/{if(texty==79)texty=2;texty++;gotoxy(texty,textx);}break;case SPACE: /*空格键的操作*/{if(texty==79)continue;else{gotoxy(texty,textx); /*空格的细节操作*/printf(" ");texty++;gotoxy(texty,textx);}}break;case ENTER: /*回车的控制操作*/{if(textx==23)continue;textx++;texty=2;gotoxy(texty,textx);}break;default : /*非控制键的结果*/{if(texty==79&&textx==23)/*到达最后就不再输出*/continue;elseif(texty==79&&textx!=23) /*到行的最后*/{textx++;texty=2;}gotoxy(texty,textx);/*输出结果*/printf("%c",key);if(texty==79) /*如果texty==79就不执行*/continue;else /*如果没到行尾就继续执行,使光标向前移动一位*/ texty++;}}}/*大循环的大括号*/}/*画边框函数*/void DrawFrame(int l,int u,int r,int d,int tcolor,int bcolor){textbackground(bcolor); /*背景颜色*/textcolor(bcolor); /*文本颜色*/for(i=l;i<=r;i++) /*输出背景区域*/{for(j=u;j<=d;j++){gotoxy(i,j);printf("%c",219); /*输出背景字符*/}}textcolor(tcolor);/*边框颜色*/for(i=u+1;i<d;i++) /*在背景区域内输出边框线*/ {gotoxy(l,i);cprintf("%c",179); /*垂直线*/gotoxy(r,i);cprintf("%c",179);}for(i=l+1;i<r;i++){gotoxy(i,u);cprintf("%c",196); /*水平线*/gotoxy(i,d);cprintf("%c",196);}gotoxy(l,u);cprintf("%c",218);/*左上角*/gotoxy(r,u);cprintf("%c",191);/*右上角*/gotoxy(l,d);cprintf("%c",192);/*左下角*/gotoxy(r,d);cprintf("%c",217); /*右下角*//* gettext(l+1,u+1,r-1,d-1,save1);*//*保存边框内区域*/}/*显示具体下拉选择项目*/void DrawMl(int n){gettext(1,1,80,25,save);/*保存被掩盖的地方*/BlackText(n,1,ml[n].name);/*反选显示主菜单*/DrawFrame(3+20*n-1,2,3+20*n+19,3+ml[n].n,0,7);/*下拉菜单的边框*/for(i=3;i<3+ml[n].n;i++)/*输出所选菜单各选项*/{if(i==3)BlackText(n,i,ml[n].str[i-3]);/*默认选中第一项*/elseRedText(n,i,ml[n].str[i-3]);/*其余各项首字符红色显示*/}gotoxy(79,1);MoveMl(n,3);/*菜单选项的控制*/}/*菜单选项的控制,n决定水平项,x决定下拉的选项*/void MoveMl(int n,int x){int flag=1;while(flag){gotoxy(79,1);key=bioskey(0);/*接收按键*/gotoxy(79,1);switch(key){case ESC:/*退出循环*/puttext(1,1,80,25,save);/*恢复打开菜单前的样子*/flag=0;break;case LEFT:/*移到左边的选项*/puttext(1,1,80,25,save);/*恢复打开菜单前的样子*/if(n==0)/*往左移动越界的话移到最后一个选项*/DrawMl(2);elseDrawMl(n-1);flag=0;break;case RIGHT:/*移动右边的选项*/puttext(1,1,80,25,save);/*恢复打开菜单前的样子*/if(n==2)/*往右移动越界的话移到第一个选项*/DrawMl(0);elseDrawMl(n+1);flag=0;break;case UP:/*具体选项往上移动*/RedText(n,x,ml[n].str[x-3]);/*输出红色字体*/if(x==3)/*移到最上面再按上键,就移到最下面*/x=3+ml[n].n-1;elsex--;/*移动到新的要显示的内容*/BlackText(n,x,ml[n].str[x-3]);/*输出黑色字体*/flag=1;break;case DOWN:/*具体选项往下移动*/RedText(n,x,ml[n].str[x-3]);if(x==(3+ml[n].n-1))/*移动到最底下再按下键就移到最上面*/x=3;elsex++;/*移动到新的要显示的内容*/BlackText(n,x,ml[n].str[x-3]);flag=1;break;case ENTER:puttext(1,1,80,25,save);/*恢复打开菜单前的样子*/Enter(n,x-3);/*菜单选项的具体功能*/flag=0;break;}gotoxy(79,1);}}/*菜单选项的具体功能*/void Enter(int m,int n){switch(m){case 0:switch(n) /*选择了图书菜单选项*/{case 0:BookAdd();break;/*添加图书*/case 1:BookConsult();break;/*图书查询*/case 2:BookDel();break;/*删除一本图书资料*/case 3:BookBorrow();break;/*借书*/case 4:BookReturn();break;/*还书*/case 5:exit(0);break;} break;/*退出系统*/case 1: switch(n) /*选择了会员菜单选项*/{case 0: MemberAdd();break;/*添加会员*/case 1: MemberConsult();break;/*会员查询*/case 2:MemberDel();break;/*删除一个会员资料*/case 3:MemberBook();/*查询某个会员所借图书情况*/}break;case 2:switch(n) /*选择了帮助菜单选项*/ {case 0:Help();break;case 1:Ver();}}/*结束外switch*/}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

图书管理系统系统功能:1.借书:根据借书人提出的图书编号(id)查询该图书,如果该图书现存量(store)不为0,则提示输入借阅者的学号(num),为借书人办理借书手续,提示用户该书已被借出。

2.归书:根据借书人的学号查询该读者的信息,若有该读者,则提示输入所借书籍的编号(id),为该读者办理还书手续,提示该书已还。

3.书籍管理:弹出书籍管理界面,输入所要执行操作的号码:(1)增加书籍:弹出注册新书的窗口,按照提示输入所增加书籍的信息,最后,提示用户该书已被注册。

(2)删除书籍:弹出删除书籍的窗口,输入所要删除书籍的编号(id),输出该书的信息,确认是否删除该书,1为删除,0为放弃。

(3)修改书籍:弹出修改书籍的窗口,输入所要修改书籍的编号(id),输出该书的信息,确认是否修改该书,1为修改,0为放弃。

之后按照提示重新输入书籍的信息。

4.读者管理:弹出读者管理界面,输入所要执行操作的号码:(1)增加读者:弹出注册读者的窗口,按照提示输入所增加读者的信息,最后,提示用户该读者已被注册。

(2)删除书籍:弹出删除读者的窗口,输入所要删除读者的学号(num),输出该读者的信息,确认是否删除该读者,1为删除,0为放弃。

(3)修改书籍:弹出修改读者的窗口,输入所要修改读者的学号(num),输出该读者的信息,确认是否修改该读者,1为修改,0为放弃。

之后按照提示重新输入读者的信息。

5.搜索:此搜索包括两方面的搜索,书籍搜索以及读者搜索,弹出搜索的窗口,按照提示输入所要搜索的内容,1为书籍搜索,2为读者搜索:(1)搜索书籍:弹出搜索书籍的窗口,按照提示输入所要搜索的方式,包括按<1>书名搜索,<2>书号搜索,<3>作者搜索,<4>出版社搜索,<5>出版时间搜索;根据所选方式输入相应的内容,若是该书籍存在,则输出该书籍的信息,否则,返回主界面。

(2)搜索读者:弹出搜索读者的窗口,按照提示输入所要搜索的方式,包括按<1>名字搜索,<2>学号搜索;根据所选方式输入相应的内容,若是该读者存在,则输出该读者的信息,否则,返回主界面。

6.退出:退出图书管理系统。

图书类设计:私有成员:书名(name)、编号(id)、作者名(writer)、价格(price)、总存量(total)、现存量(store)、出版单位(publish)、出版时间(pub_time)。

及该书的借阅情况(借阅者名字(borrower)、借阅者学号(borr_num):若无人借阅该书,则borrower=0, borr_num=0;否则borrower=借阅者名字,borr_num=借阅者学号)。

class book{private:char name[50]; //书名char writer[10]; //作者char borrower[10]; //借书人int id; //书号int borr_num; //借书人学号int store; //现存量int total; // 总存量int pub_time; //出版时间float price; //价格char publish[50]; //出版社public:book(); //book类构造函数int book1(); //书籍管理界面函数int book_add(); //增加书籍函数int book_del(); //删除书籍函数int book_mod(); //修改书籍函数int book_out(); //借书函数int book_in(); //还书函数int book_name(); //按书名搜索书籍函数int book_id(); //按书号搜索书籍函数int book_pub(); //按出版社搜索书籍函数int book_time(); //按出版时间搜索书籍函数int book_writer(); //按作者搜索书籍函数int seach_book(); //搜索书籍界面函数int seach(); //主搜索界面函数};读者类设计:私有成员:借书人的姓名(name)、性别(sex)、年级(grade)、班级(class)、学号(num)。

及所借图书名字(book_name)、借书日期(date)、可借天数(avai_days)。

class reader{private:char name[10]; //名字int num; //学号char grade[10]; //年级char clas[10]; //班级char sex[10]; //性别char book_name[50]; //所借书的书名char date[10]; //借书日期int avai_days; //可借天数public:int reader_1(); //读者管理界面函数int reader_add(); //增加读者函数int reader_del(); //删除读者函数int reader_mod(); //修改读者函数int reader_name(); //按读者名字搜索读者函数 int reader_num(); //按读者学号搜索读者函数int seach_reader(); //搜索读者界面函数char *getname(); //获取读者姓名函数int getnum(); //获取读者学号函数 char *getgrade(); //获取读者年级函数char *getclas(); //获取读者班级函数char *getsex(); //获取读者性别函数char *getbook_name(); //获取所借书书名函数char *getdate(); //获取借书日期函数int getavaiday(); //获取可借天数函数int setname(char *); //设置读者姓名函数int setnum(int); //设置读者学号函数int setgrade(char *); //设置读者年级函数int setclas(char *); //设置读者班级函数int setsex(char *); //设置读者性别函数int setbook_name(char *); //设置所借书籍书名函数 int setdate(char *); //设置借书日期函数int setavaiday(int); //设置可借天数函数};图书管理系统源代码:#include<iostream>using namespace std;class reader;class book{private:char name[50]; //书名char writer[10]; //作者char borrower[10]; //借书人int id; //书号int borr_num; //借书人学号int store; //现存量int total; // 总存量int pub_time; //出版时间float price; //价格char publish[50]; //出版社public:book(); //book类构造函数int book1(); //书籍管理界面函数 int book_add(); //增加书籍函数int book_del(); //删除书籍函数int book_mod(); //修改书籍函数int book_out(); //借书函数int book_in(); //还书函数int book_name(); //按书名搜索书籍函数int book_id(); //按书号搜索书籍函数int book_pub(); //按出版社搜索书籍函数int book_time(); //按出版时间搜索书籍函数 int book_writer(); //按作者搜索书籍函数int seach_book(); //搜索书籍界面函数int seach(); //主搜索界面函数};class reader{private:char name[10]; //名字int num; //学号char grade[10]; //年级char clas[10]; //班级char sex[10]; //性别char book_name[50]; //所借书的书名 char date[10]; //借书日期int avai_days; //可借天数public:int read1(); //读者管理界面函数 int reader_add(); //增加读者函数int reader_del(); //删除读者函数int reader_mod(); //修改读者函数int reader_name(); //按读者名字搜索读者函数 int reader_num(); //按读者学号搜索读者函数int seach_reader(); //搜索读者界面函数char *getname(); //获取读者姓名函数int getnum(); //获取读者学号函数 char *getgrade(); //获取读者年级函数char *getclas(); //获取读者班级函数char *getsex(); //获取读者性别函数char *getbook_name(); //获取所借书书名函数char *getdate(); //获取借书如期函数int getavaiday(); //获取可借天数函数int setname(char *); //设置读者姓名函数int setnum(int); //设置读者学号函数int setgrade(char *); //设置读者年级函数int setclas(char *); //设置读者班级函数int setsex(char *); //设置读者性别函数int setbook_name(char *); //设置所借书籍书名函数 int setdate(char *); //设置借书日期函数int setavaiday(int); //设置可借天数函数};#include<string.h>#include<conio.h>#include<stdlib.h>#include<windows.h>#define SIZE 100#define AMOUNT 50book books[SIZE];reader stud[AMOUNT];int return_back(){cout<<"请按下任何键. ";getch();return 0;}char *reader::getname(){return name;}int reader::getnum(){return num;}char *reader::getgrade(){return grade;}char *reader::getclas(){return clas;}char *reader::getsex(){return sex;}char *reader::getbook_name() {return book_name;}char *reader::getdate(){return date;}int reader::getavaiday(){return avai_days;}int reader::setname(char *names) {strcpy(name,names);return 0;}int reader::setnum(int nums){num=nums;return 0;}int reader::setgrade(char *grades){strcpy(grade,grades);return 0;}int reader::setclas(char *classes){strcpy(clas,classes);return 0;}int reader::setsex(char *sexs){strcpy(sex,sexs);return 0;}int reader::setbook_name(char *book_names) {strcpy(book_name,book_names);return 0;}int reader::setdate(char *dates){strcpy(date,dates);return 0;}int reader::setavaiday(int avaiday){avai_days=avaiday;return 0;}int page_title(){system("cls");cout<<" * * * * * * * * * * * * * * * * * * * * * * * * * *\n "; cout<<" * ☆★☆欢迎来到图书管理系统☆★☆ *\n ";cout<<" * * * * * * * * * * * * * * * * * * * * * * * * * *\n "; return 0;}book::book(){system("color 17");reader read;menu:page_title();cout<<" ★主菜单★ "<<endl<<endl<<endl; cout<<" * * * * * * * * * * * "<< endl;cout<<" * 1.借书 * "<< endl<<endl; cout<<" * 2.还书 * "<< endl<<endl; cout<<" * 3.书籍管理 * "<< endl<<endl; cout<<" * 4.读者管理 * "<< endl<<endl; cout<<" * 5.搜索 * "<< endl<<endl; cout<<" * 0.退出 * "<< endl;cout<<" * * * * * * * * * * *"<<endl<<endl; cout<<" 请输入你的选择:" ;switch(getch()){case'1':book_out();break;case'2':book_in();break;case'3':book1();break;case'4':read.read1();break;case'5':seach();break;case'0':exit(0);break;default:system("cls");page_title();cout<<" \n错误,请再输入一遍! "<< endl;}goto menu;}int book::book1(){system("cls");page_title();cout<<" ☆管理☆" <<endl<< endl<< endl; cout<<" * * * * * * * * * * *"<< endl;cout<<" * 1.增加书籍 * "<< endl<< endl; cout<<" * 2.注销书籍 * "<< endl<< endl; cout<<" * 3.修改书籍 * "<< endl<< endl; cout<<" * 0.返回 *"<<endl;cout<<" * * * * * * * * * * * "<< endl<< endl; cout<<" 请输入你的选择:" ;switch(getch()){case'1':book_add();break;case'2':book_del();break;case'3':book_mod();break;case'0':return_back();break;default:system("cls");cout<<"\n错误,请再输入一遍!\n";}return 0;}int book::book_add() //定义增加书籍的函数{FILE *bfp;int i,n;page_title();cout<<" ☆增加书籍☆"<< endl;cout<<">>>请输入书的信息<<<"<< endl;bfp=fopen("books","rb");for(n=0;n<SIZE;n++){fread(&books[n],sizeof(books[n]),1,bfp);if(books[n].id==0) break;}fclose(bfp);do{cout<<"请输入一个新的书号(书号从1001开始,但必须不同于已存在的书号):" ; cin>>books[n].id;for(i=0;i<SIZE;i++){if(books[n].id==books[i].id&&n!=i){cout<<"\n这个书号已经存在. "<< endl; break;}}}while(books[n].id==books[i].id);cout<<"书名: ";cin>>books[n].name;cout<<"作者: ";cin>>books[n].writer;cout<<"价格: ";cin>>books[n].price;cout<<"总存量: ";cin>>books[n].total;cout<<"现存量: ";cin>>books[n].store;cout<<"出版社: ";cin>>books[n].publish;cout<<"出版时间: ";cin>>books[n].pub_time;cout<<"借书人: ";cin>>books[n].borrower;cout<<"借书者学号: ";cin>>books[n].borr_num;bfp=fopen("books","wb");for(n=0;n<SIZE;n++)fwrite(&books[n],sizeof(books[n]),1,bfp);fclose(bfp);cout<<"\n该书已经添加.\n"<< endl;return 0;}int book::book_del() //定义删除书籍的函数{FILE *bfp;int i,id,s;page_title();cout<<" ☆注销旧书☆"<< endl;if((bfp=fopen("books","rb"))==0){cout<<"无法打开文件. ";}for(i=0;i<SIZE;i++){fread(&books[i],sizeof(books[i]),1,bfp);}fclose(bfp);cout<<"\n请输入书号: ";cin>>id;for(i=0,s=-1;i<SIZE;i++){if(books[i].id==id){cout<<"书名: "<<books[i].name<< endl;cout<<"书号: "<<books[i].id<< endl;cout<<"作者: "<<books[i].writer<< endl;cout<<"价格: "<<books[i].price<< endl;cout<<"总存量: "<<books[i].total<< endl;cout<<"现存量: "<<books[i].store<< endl;cout<<"出版社: "<<books[i].publish<< endl;cout<<"出版时间: "<<books[i]. pub_time<< endl; cout<<"读者: "<<books[i].borrower<< endl;cout<<"读者学号: "<<books[i].borr_num<< endl;cout<<"**********************************************************"<< endl; cout<<"请问是否确定注销此书(1为是,0为否): "; cin>>s;if(s==1){for(;i<SIZE;i++)books[i]=books[i+1];}else if(s==0){return 0;}}}if(s==-1){cout<<"该书不存在."<< endl;}if((bfp=fopen("books", "wb"))==0){cout<<"无法打开文件. ";}for(i=0;i<SIZE;i++){fwrite(&books[i],sizeof(books[i]),1,bfp);}fclose(bfp);return 0;}int book::book_mod() //定义修改书籍的函数{FILE *bfp;int i,id,s,n;page_title();cout<<" ☆修改书籍☆"<<endl;if((bfp=fopen("books","rb"))==0){cout<<"无法打开文件. ";}for(i=0;i<SIZE;i++){fread(&books[i],sizeof(books[i]),1,bfp);}fclose(bfp);cout<<endl<<"请输入书号: ";cin>>id;for(i=0,s==0;i<SIZE;i++){if(books[i].id==id){cout<<"书名:"<<books[i].name<<endl;cout<<"书号: "<<books[i].id<< endl;cout<<"作者: "<<books[i].writer<< endl;cout<<"价格: "<<books[i].price<< endl;cout<<"总存量: "<<books[i].total<< endl;cout<<"现存量: "<<books[i].store<< endl;cout<<"出版社: "<<books[i].publish<< endl;cout<<"出版时间: "<<books[i]. pub_time<< endl; cout<<"读者: "<<books[i].borrower<< endl;cout<<"读者学号: "<<books[i].borr_num<< endl;cout<<"**********************************************************"<<cout<<"是否确定修改该书籍(1为是,0为否): ";cin>>s;if(s==1){ page_title();cout<<">>>请重新输入书籍的信息:<<<"<<endl;do{cout<<endl<<"请输入一个新的书号(学号从1001开始,但必须不同于已存在的书号):";cin>>books[i].id;for(n=0;n<SIZE;n++){if(books[i].id==books[n].id&&n!=i){cout<<"该书号已存在. "<<endl;break;}}}while(books[i].id==books[n].id);cout<<"书名: ";cin>>books[i].name;cout<<"作者: ";cin>>books[i].writer;cout<<"价格: ";cin>>books[i].price;cout<<"总存量: ";cin>>books[i].total;cout<<"现存量: ";cin>>books[i].store;cout<<"出版社: ";cin>>books[i].publish;cout<<"出版时间: ";cin>>books[i].pub_time;cout<<"借书人: ";cin>>books[i].borrower;cout<<"借书者学号: ";cin>>books[i].borr_num;}else if(s==0){return 0;}}if(s==-1){cout<<"该书不存在。

相关文档
最新文档