C语言做图 书 信 息 管 理 系 统,大学的孩子们 福音在哪,这足够应付你们考试了

来源:互联网 发布:英语复读机软件 编辑:程序博客网 时间:2024/05/21 22:48
#include <stdio.h>#include <stdlib.h>#include <string.h>/*结构体类型定义*/struct book{int num;//图书编号char bname[20];   //图书名char wname[20];   //作者名char sort[50];    //类别char price[20];  //图书价格char press[20];   //出版社struct book *next; //指针};struct book2{int num;//图书编号char bname[20];   //图书名char ruktime[50];      //入库年份int rukunum;      //入库数量int sum;     //总数struct book2 *next; //指针};/*声明新的类型名来代替原有的类型名*/typedef struct book BK;typedef struct book2 BK2;/* 显示菜单 */char Menu(){char m;printf("                  图 书 信 息 管 理 系 统                          \n\n");printf("*************************************************************************\n");printf("*----------------1.添加图书信息-----------------*\n");printf("*----------------2.查询图书信息-----------------*\n");printf("*----------------3.删除图书信息-----------------*\n");printf("*----------------4.修改图书信息-----------------*\n");printf("*----------------5.打印图书信息-----------------*\n");printf("*----------------6.入库信息录入-----------------*\n");printf("*----------------7.退出------------------------*\n");printf("***************************************************************************\n");printf("请输入您的选择:\n");fflush(stdin);scanf("%c",&m);return m;}/*在图书链表末端添加一个新节点*/BK *creatbook(BK *head,BK **pNew){struct book *p=NULL;struct book *pr=head;p=(BK *)malloc(sizeof(BK));/*为新添加的节点申请内存*/if(p==NULL){printf("内存不够!");exit(0);}if(head==NULL){head=p;/*如果原来的链表为空,则新建节点为首节点*/}else{while(pr->next!=NULL){pr=pr->next;}pr->next=p;}pr=p;pr->next=NULL;*pNew=p;return head;}/*保存到TXT文本.图书*/void SaveToTxt(BK *head){BK *p=head;FILE *file;file=fopen("book.txt","w+");if(file!=NULL){while(p!=NULL){fprintf(file,"%d\t%s\t%s\t%s\t%s\t%s\t%s\t\n",p->num,p->bname,p->wname,p->sort,p->price,p->press);p=p->next;}fclose(file);}else{printf("存入文件失败!");}};/*从TXT文本中读取信息*/BK *load(BK *head){BK *p=NULL;FILE *file;char a;int i=0;file=fopen("book.txt","a+");if(file!=NULL){while(!feof(file)){ if(head==NULL&&i==0){a=fgetc(file);if(a==EOF){fclose(file);return NULL;}rewind(file);}head=creatbook(head,&p);fscanf(file,"%d\t%s\t%s\t%s\t%s\t%s\t%s\n",&(p->num),p->bname,p->wname,p->sort,p->price,p->press);}fclose(file);}else{printf("打开文件失败!");} return (head);}/* 删除图书链表的某个新节点 */BK  *pdel(BK *head,int num){BK *p=head,*pr=head;if(head==NULL){printf("链表为空!无法删除!");return(head);}while(p->num!=num&&p->next!=NULL){pr=p;p=p->next;}if(p->num==num){//两种情况if(p==head){//就是链表的开头的时候head=p->next;//头指针向后移动一位}else{pr->next=p->next;}free(p);}else{printf("无法找到该联系人!");}return(head);}/*向图书信息链表中添加数据*/BK *addbook(BK *head){char c;int i=0;BK *pNew=NULL;/*定义一个新的结构体指针,用于添加*/do{head=creatbook(head,&pNew);printf("请输入新的图书信息!\n");printf("请输入图书编号:\t");scanf("%d",&pNew->num);printf("请输入图书书名:\t");scanf("%s",pNew->bname);printf("请输入作者名字:\t");scanf("%s",pNew->wname);printf("请输入类别:\t");scanf("%s",pNew->sort);printf("请输入图书价格:\t");scanf("%s",pNew->price);printf("请输入出版社:\t");scanf("%s",pNew->press);printf("\n输入完毕!是否需要继续输入(Y/N)?");fflush(stdin);/*清除缓冲区*/scanf("%c",&c);fflush(stdin);/*清除缓冲区*/i++;}while(c=='Y'||c=='y');printf("您添加了%d条新纪录!\n",i);SaveToTxt(head);return head;}/*修改图书信息*/void xiugai(BK *head){BK *p=head;int m;printf("请输入要修改的图书编号:");scanf("%d",&m);while(p!=NULL){if(m==p->num){printf("请输入图书编号:\t");scanf("%d",&p->num);printf("请输入图书书名:\t");scanf("%s",p->bname);printf("请输入作者名字:\t");scanf("%s",p->wname);printf("请输入类别:\t");scanf("%s",p->sort);printf("请输入图书价格:\t");scanf("%s",p->price);printf("请输入出版社:\t");scanf("%s",p->press);return;}p=p->next;}SaveToTxt(head);}/*删除图书信息*/BK *deletebook(BK *head){int num,i=0;char c;do{printf("请输入你要删除的图书编号:");scanf("%d",&num);head=pdel(head,num);printf("\n删除完毕!是否需要继续删除(Y/N)?");fflush(stdin);//清除缓冲区scanf("%c",&c);fflush(stdin);//清除缓冲区i++;}while(c=='y'||c=='Y');printf("你删除了%d条数据",i);SaveToTxt(head);return (head);}/*查询图书信息*/void chaxun(BK *head){BK *p=head;int m;printf("请输入您要查询的图书编号:\n");scanf("%d",&m);printf("图书编号\t图书名\t作者名\t类别\t图书价格\t出版社\n");while(p!=NULL){if(m==p->num){printf("%d\t\t%s\t\t%s\t\t%s\t\t%s\t\t%s\n",p->num,p->bname,p->wname,p->sort,p->price,p->press);return;}p=p->next;}}/*输出图书信息*/void printbook(BK *head){BK *p=head;printf("图书编号\t图书名\t作者名\t类别\t图书价格\t出版社\n");while(p!=NULL){printf("%d\t\t%s\t%s\t%s\t%s\t\t%s\n",p->num,p->bname,p->wname,p->sort,p->price,p->press);p=p->next;}}//------------------------------------------------华丽的分割线---------------------------------------------------------------------------/*在入库链表末端添加一个新节点*/BK2 *creatbook2(BK2 *head2,BK2 **pNew){BK2 *p=NULL;BK2 *pr=head2;p=(BK2 *)malloc(sizeof(BK2));/*为新添加的节点申请内存*/if(p==NULL){printf("内存不够!");exit(0);}if(head2==NULL){head2=p;/*如果原来的链表为空,则新建节点为首节点*/}else{while(pr->next!=NULL){pr=pr->next;}pr->next=p;}pr=p;pr->next=NULL;*pNew=p;return head2;}/*保存到TXT文本.入库*/void SaveToTxt2(BK2 *head2){BK2 *p=head2;FILE *file;file=fopen("book2.txt","w+");if(file!=NULL){while(p!=NULL){fprintf(file,"%d\t%s\t%s\t%d\t\n",p->num,p->bname,p->ruktime,p->rukunum);p=p->next;}fclose(file);}else{printf("存入文件失败!");}};/*从TXT文本中读取信息*/BK2 *load2(BK2 *head2){BK2 *p=NULL;FILE *file;char a;int i=0;file=fopen("book2.txt","a+");if(file!=NULL){while(!feof(file)){ if(head2==NULL&&i==0){a=fgetc(file);if(a==EOF){fclose(file);return NULL;}rewind(file);}head2=creatbook2(head2,&p);fscanf(file,"%d\t%s\t%s\t%d\t\n",&(p->num),p->bname,p->ruktime,&(p->rukunum));}fclose(file);}else{printf("打开文件失败!");} return (head2);}/* 删除入库链表的某个新节点 */BK2  *pdel2(BK2 *head2,int num){BK2 *p=head2,*pr=head2;if(head2==NULL){printf("链表为空!无法删除!");return(head2);}while(p->num!=num&&p->next!=NULL){pr=p;p=p->next;}if(p->num==num){//两种情况if(p==head2){//就是链表的开头的时候head2=p->next;//头指针向后移动一位}else{pr->next=p->next;}free(p);}else{printf("无法找到该联系人!");}return(head2);}/*添加入库信息*/BK2 *addbook2(BK2 *head2){char c;int i=0;BK2 *pNew=NULL;/*定义一个新的结构体指针,用于添加*/do{head2=creatbook2(head2,&pNew);printf("请输入入库信息!\n");printf("请输入入库图书编号:");scanf("%d",&pNew->num);printf("请输入入库图书名称:");scanf("%s",pNew->bname);printf("请输入入库年份:");scanf("%s",pNew->ruktime);printf("请输入入库数量:");scanf("%d",&pNew->rukunum);printf("\n输入完毕!是否需要继续输入(Y/N)?");pNew->sum=0;fflush(stdin);/*清除缓冲区*/scanf("%c",&c);fflush(stdin);/*清除缓冲区*/i++;}while(c=='Y'||c=='y');printf("您添加了%d条入库记录!\n",i);SaveToTxt2(head2);return head2;}/*修改入库信息*/void xiugai2(BK2 *head2){BK2 *p=head2;int m;printf("请输入要修改的图书编号:");scanf("%d",&m);while(p!=NULL){if(m==p->num){printf("请输入入库图书编号:\t");scanf("%d",&p->num);printf("请输入入库图书名称:\t");scanf("%s",p->bname);printf("请输入入库年份:\t");scanf("%s",p->ruktime);printf("请输入入库数量:\t");scanf("%d",&p->rukunum);return;}p=p->next;}SaveToTxt2(head2);}/*删除入库信息*/BK2 *deletebook2(BK2 *head2){int num,i=0;char c;do{printf("请输入你要删除的入库信息:");scanf("%d",&num);head2=pdel2(head2,num);printf("\n删除完毕!是否需要继续删除(Y/N)?");fflush(stdin);//清除缓冲区scanf("%c",&c);fflush(stdin);//清除缓冲区i++;}while(c=='y'||c=='Y');printf("你删除了%d条数据",i);SaveToTxt2(head2);return (head2);}/*查询入库信息*/void chaxun2(BK2 *head2){BK2 *p=head2;int m;printf("请输入您要查询入库的图书编号:\n");scanf("%d",&m);printf("图书编号\t图书名\t入库年份\t入库数量\n");while(p!=NULL){if(m==p->num){printf("%d\t%s\t%s\t%d\t\n",p->num,p->bname,p->ruktime,p->rukunum);return;}p=p->next;}}/*输出入库信息*/void printbook2(BK2 *head2){BK2 *p=head2;printf("图书编号\t图书名\t\t入库年份\t入库数量\n");while(p!=NULL){printf("%d\t\t%s\t\t%s\t\t%d\t\n",p->num,p->bname,p->ruktime,p->rukunum);p=p->next;}}/*排序*/void paixu(BK2 *head2){BK2 *p;BK2 *pr=NULL;int i=0;pr=(BK2 *)malloc(sizeof(BK2));//提问在什么情况下添加内存do{i=0;p=head2;while(p->next!=NULL){if(p->next->rukunum>p->rukunum){pr->num=p->next->num;strcpy(pr->bname,p->next->bname);strcpy(pr->ruktime,p->next->ruktime);pr->rukunum=p->next->rukunum;pr->sum=p->next->sum;p->next->num=p->num;strcpy(p->next->bname,p->bname);strcpy(p->next->ruktime,p->ruktime);p->next->rukunum=p->rukunum;p->next->sum=p->sum;p->num=pr->num;strcpy(p->bname,pr->bname);strcpy(p->ruktime,pr->ruktime);p->rukunum=pr->rukunum;p->sum=pr->sum;i=1;}p=p->next;}}while(i);SaveToTxt2(head2);}/*统计*/void tongji(BK2 *head2){int sum=0;BK2 *p=head2;while(p!=NULL){sum+=p->rukunum;p=p->next;}printf("%d\n",sum);SaveToTxt2(head2);}/*登入界面*/void dengru(){char n,y=1;/*choice=序号,n=用户登入、退出系统数字,a=(y/n),*/int j,i=123456;char b[10],b1[10]="hcj";/*a=选择,d=验证,*/while(y){system("cls");printf("\n\n\n\n\n\n\n");printf("****************************** 欢迎光临 *******************************\n\n");printf("********************** 图 书 信 息 管 理 系 统 ************************\n\n\n");printf("\n\n");printf("\t========== ========== 1.用户登录 ====== ==========\n");printf("\t========== ========== 0.退出系统 ====== ==========\n");printf("          请输入您的选择:");scanf("%c",&n);printf("\n");switch(n){case '0':printf("程序结束!");exit(0);break;case '1':printf("      请输入您的用户名:");fflush(stdin);gets(b);printf("\n");printf("      请输入您的密码:");scanf("%d",&j);printf("\n");while(strcmp(b,b1)!=0&&j!=i){printf("      请输入您的用户名:");fflush(stdin);gets(b);printf("\n");printf("      请输入您的密码:");scanf("%d",&j);printf("\n");}printf("          验证通过!请请按Enter键进入!\n");getchar();getchar();y=0;break;default:printf("输入错误,请重新输入!");break;}}}/*入库信息菜单*/char Menuruku(BK2 *head2){char m;while(1){printf("*************************************************************************\n");printf("*----------------1.添加入库信息-------------------*\n");printf("*----------------2.查询入库信息-------------------*\n");printf("*----------------3.删除入库信息-------------------*\n");printf("*----------------4.修改入库信息-------------------*\n");printf("*----------------5.打印入库信息-------------------*\n");printf("*----------------6.排序-------------------*\n");printf("*----------------7.统计-------------------*\n");printf("*----------------8.退出---------------------------*\n");printf("*----------------0.返回添加图书信息---------------*\n");printf("***************************************************************************\n");printf("请输入您的选择:\n");fflush(stdin);scanf("%c",&m);switch(m){case '0':return m;break;case '1':head2=addbook2(head2);break;case '2':chaxun2(head2);break;case '3':head2=deletebook2(head2);break;case '4':xiugai2(head2);break;case '5':printbook2(head2);break;case '6':paixu(head2);break;case '7':tongji(head2);break;case '8':printf("程序结束!");exit(0);break;default:printf("输入错误,请重新输入!");break;}}return m;}/*主函数*/main(){BK *head=NULL;BK2 *head2=NULL;char m;dengru();head=load(head);head2=load2(head2);while(1){m=Menu();switch(m){case '1':head=addbook(head);break;case '2':chaxun(head);break;case '3':head=deletebook(head);break;case '4':xiugai(head);break;case '5':printbook(head);break;case '6':Menuruku(head2);break;case '7':printf("程序结束!");exit(0);break;default:printf("输入错误,请重新输入!");break;}}}

原创粉丝点击