版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、优质文本 C语言课程设计 题 目: 图书管理系统 系 别: 数学与统计学院 专 业: 数学与应用数学(经济数学方向) 班 级: 15经济数学 姓 名: 张真 学 号: 1510115055 指导教师: 吕聪颖 邵艳玲 地 点: 7#407 一、目的要求为了满足图书管理的要求,通过计算机技术给图书管理人员和读者借、还书带来便利。使用c语言编写了图书管理系统。本系统主要实现图书信息管理的功能,通过此系统可对图书馆库存图书信息进行管理和维护操作。实现了图书馆内管理的一般功能,包括查询、借书、还书、添加、删除、修改图书信息等。所设计的系统以菜单方式工作,为用户提供清晰的使用提示,依据用户的选择来进行各
2、种处理,并且在此过程中能够尽可能的兼容用户使用过程中可能出现的异常情况。图书信息包括编号、书名、作者、出版社、出版日期、价格、在库状态等。图书信息的录入和显示要求有一定的标准格式,录入的图书信息用文件形式保存,并可以对其进行浏览、查询、修改、删除等根本操作。整个程序实现链表操作,对图书信息的操作逐个地进行,一个图书信息的更改不应影响其他的图书记录。二、算法设计:1设计思想:整个系统制造的而过程中,涉及了较多C语言知识点,对于不同的数据类型、程序控制结构、数据结构作以分析和总结,并结合这个课题进行综合的应用,在一定程度上做到了对所学知识融会贯穿。进一步加深、稳固了所学的专业的根本理论知识,培养了
3、综合分析问题、解决问题的能力。在设计程序时,实现了程序的模块化、结构化。在主函数中调用各种子函数,操作界面简单,易操作。 2.详细设计:(1)、整个系统除了主函数外,另外还有各种功能子函数,利用无限次循环语句while()和选择语句swithch()实现各个子函数的调用,系统根据输入的数字选项来调用相应的函数,以实现相应的功能。主要实现了图书的录入、存储、查询、添加、删除、修改、借书、还书等功能。(2)、Cbook();这是一个指针函数,它主要实现了链表的创立,并且在创立过程中从文件读取信息到链表中,以用于后面其他函数的操作。它返回的时一个单向链表的头。其他函数调用时只需调用它返回的头即可。(
4、3)、mainmenu();、menu1();、glmenu();、cxmenu();、jhmenu();这五个函数时整个图书管理系统的全部菜单函数,mainmenu();为系统主界面,进入时可选择进入程序和退出程序。menu1();为进入程序时显示的功能菜单,在此菜单可以选择录入、保存图书信息,也可选择进入其他子系统。glmenu();此菜单为进入图书管理系统的菜单,在此可以选择添加、删除、修改图书等操作。cxmenu();为查询系统的菜单,在此可以选择按书名、编号、作者等方式进行查询图书。jhmenu();为借书还书的子菜单,在此可以选择借书还书操作。操作完成后按提示信息进行文件的保存操作
5、。(4)、print();这个函数为链表的输出函数,把链表的头传给函数后,可输出整个链表的所有信息。、(5)、hold();这个函数为保存信息到文件的函数,使用时将链表的头传给函数,函数可将整个链表的所有信息存入到磁盘文件中。并覆盖掉源文件,以便以后调用。 (6) 、holdcx();这个函数为保存查询信息到文件的函数,使用时将查询到的节点指针传给函数,函数会将该节点所有信息保存到文件中去,文件写入是以追加方式写入,以便用户查看。(7)、findnumber();findboookname();findauthor();这三个函数为查询图书信息函数,findnumber();按编号查询、fin
6、dboookname();按书名查询、findauthor();按作者查询。查询到信息后返回信息所在节点,查询不到那么返回空指针。(8)、add();sortnumber();delbook();revamp();这四个函数为功能函数,add();添加一本图书信息、sortnumber();将图书按编号排序、delbook();删除一本图书信息、revamp();修改一本图书信息。调用时将链表头指针传递给函数,函数返回经过功能操作后的头指针。(9)、borrowbook();returnbook();这两个函数是借书还书的函数,borrowbook();借书returnbook();还书。在借
7、还后系统会修改图书的在库信息。调用时将链表头指针传递给函数,函数返回经过功能操作后的头指针。并会出提示信息让用户返回菜单保存信息。3结构体系设计:图书管理系统主界面流程图录入所有书籍信 息进入图书管理系 统显示菜 单进入图书查询系 统进入图书借还系 统保存所有图书信 息返回上级菜 单图书管理系统主界面开始图书管理系统流程图显示所有图书信息添加一本图书信息修改一本图书信息删除一本图书信息保存所有图书信息图书管理系统主界面返回上级菜单图书查询系统主界面流程图显示所有图书信息按编号查询图书按书名查询图书按作者查询图书保存所查询图书的信息返回上级菜 单图书查询系统主界面图书借还系统主界面流程图借书还书
8、返回上级菜单图书借还系统三、用户手册:下面,我大致介绍一下我的系统的主要功能和考前须知:当运行此程序时,首先进入系统主界面,然后可以选择1.进入系统,2.退出系统。选择1后进入系统,然后显示功能菜单按数字键选择所需效劳。功能菜单中,1录入所有书籍信息,2进入图书管理系统,3进入图书查询系统,4进入图书借还系统,5保存所有图书信息,6显示菜单,7返回上级菜单。 当出现"请选择"时,需要输入选项前的数字,输完之后按回车下同。首次运行系统需要先选择1录入库存书籍信息,然后再选择其他操作。中选择2时会进入图书管理系统,在这里可以选择添加、修改信息等操作,需要注意的是每次执行完添加、
9、修改等操作后需要手动选择保存图书信息的操作,不然磁盘文件信息不会改变下同。返回上级菜单进入图书查询系统、图书借还系统的操作和管理系统的差不多,用户可自己尝试使用,所有信息最后均以磁盘文件方式保存,而且格式固定,在输入和输出均按这种格式,用户在使用时必须要按这种格式输入,否那么会出现文件信息错误。 源程序代码# include <stdio.h># include <stdlib.h># include <string.h>typedef struct linkchar number100;/编号char bookname100;/书名char author1
10、00;/作者char publish100;/出版社char time100;/出版时间float price;/价格char status100;/在库状态 struct link *next;link;/函数声明 link *Cbook();void mainmenu();void menu1();void glmenu();void cxmenu();void jhmenu();void print(link *head);void hold(link *head);void holdcx(link *t);link *findnumber(link *head);link *findb
11、oookname(link *head);link *findauthor(link *head);link *add(link *head);link *sortnumber(link *head);link *delbook(link *head);link *revamp(link *head);link *borrowbook(link *head); link *returnbook(link *head); /主函数 main()int a,b,c,d,e;link *h,*t;L:system("cls");/L为一个标志位,用于从子函数返回主界面 mainm
12、enu();while(1)/主程序循环运行 scanf("%d",&a);switch(a)case 1:/进入主系统 B: system("cls");/B为一个标志位,用于从子函数返回主功能界面 menu1(); while(1) scanf("%d",&b); switch(b) case 1:/图书信息的录入 h=Cbook(); break; case 2:/进入图书管理的子系统 system("cls"); glmenu(); while(1) scanf("%d"
13、,&c); switch(c) case 1:/显示所有图书信息 print(h); break; case 2:/添加一本图书信息 h=add(h); h=sortnumber(h); print(h); break; case 3:/修改一本书的信息 revamp(h); break; case 4:/删除一本图书信息 h=delbook(h); print(h); break; case 5:/保存图书信息 hold(h); break; case 6: goto B; break; break; case 3:/进入图书查询的子系统 system("cls"
14、); cxmenu(); while(1) scanf("%d",&d); switch(d) case 1:/显示所有图书信息 print(h); break; case 2:/按编号查询图书 t=findnumber(h); if(t=NULL) printf("没有要查询的图书!"); if(t!=NULL) printf("查询的图书为:"); printf("n"); printf("n*n"); printf("n编号tt书名tt作者tt出版社tt出版时间tt价格t
15、t状态n"); printf("n"); printf("%st%st%st%st%s",t->number,t->bookname,t->author,t->publish,t->time); printf("tt%.2f",t->price); printf("tt%s",t->status);printf("n"); break; case 3:/按书名查询图书 t=findboookname(h); if(t=NULL) printf(
16、"没有要查询的图书!"); if(t!=NULL) printf("查询的图书为:"); printf("n"); printf("n*n"); printf("n编号tt书名tt作者tt出版社tt出版时间tt价格tt状态n"); printf("n"); printf("%st%st%st%st%s",t->number,t->bookname,t->author,t->publish,t->time); printf(&q
17、uot;tt%.2f",t->price); printf("tt%s",t->status); printf("n"); break; case 4:/按作者查询图书 t=findauthor(h); if(t=NULL) printf("没有要查询的图书!"); if(t!=NULL) printf("查询的图书为:"); printf("n"); printf("n*n"); printf("n编号tt书名tt作者tt出版社tt出版时间t
18、t价格tt状态n"); printf("n"); printf("%st%st%st%st%s",t->number,t->bookname,t->author,t->publish,t->time); printf("tt%.2f",t->price); printf("tt%s",t->status);printf("n"); break; case 5:/保存查询信息 holdcx(t); break; case 6:/返回上级菜单 go
19、to B; break; break; case 4:/图书借还系统 system("cls");jhmenu();while(1)scanf("%d",&e);switch(e)case 1:/借书 borrowbook(h);break;case 2:/还书 returnbook(h); break;case 3:/返回上级菜单 goto B;break; break; case 5:/ 保存图书信息到文件 hold(h); break; case 6:/显示主功能菜单 system("cls"); menu1(); br
20、eak; case 7:/返回系统主界面 goto L; break; break;case 0:/退出系统 printf("ttt感谢使用,再见!");exit(0);/链表的创立和信息的录入 link *Cbook()int n=0;link *p,*q,*head;FILE *fp;fp=fopen("图书信息.txt","r+");if(fp=NULL)printf("没有找到文件,请检查");p=(link *)malloc(sizeof(link);if(p=NULL)printf("申请内存
21、出错!n");fscanf(fp,"%s%s%s%s%s",p->number,p->bookname,p->author,p->publish,p->time);fscanf(fp,"%f",&p->price);fscanf(fp,"%s",p->status);while(feof(fp)=0)n+;if(n=1)head=p;elseq=p;p=(link *)malloc(sizeof(link);if(p=NULL)printf("申请内存出错!n&qu
22、ot;);fscanf(fp,"%s%s%s%s%s",p->number,p->bookname,p->author,p->publish,p->time);fscanf(fp,"%f",&p->price);fscanf(fp,"%s",p->status);q->next=p;p->next=NULL;fclose(fp);printf("信息已录入!");return head;/系统主界面 void mainmenu()printf("
23、;n*n");printf("n* 欢送使用图书管理系统 *n");printf("n* 1.进入系统");printf("t0.退出系统 *n");printf("n*n");printf("n 请选择");/功能菜单 void menu1()printf("n*n");printf("n* 1.录入所有书籍信息 *n");printf("n* 2.进入图书管理系统 *n");printf("n* 3.进入图书查询
24、系统 *n");printf("n* 4.进入图书借还系统 *n");printf("n* 5.保存所有图书信息 *n");printf("n* 6.显示菜单 *n");printf("n* 7.返回上级菜单 *n");printf("n*n");printf("n请选择");/管理系统菜单 void glmenu() printf("n*n"); printf("n* 1.显示所有图书信息 *n"); printf(&quo
25、t;n* 2.添加一本图书信息 *n"); printf("n* 3.修改一本图书信息 *n"); printf("n* 4.删除一本图书信息 *n"); printf("n* 5.保存所有图书信息 *n"); printf("n* 6.返回上级菜单 *n"); printf("n*n"); printf("n请选择");/查询系统菜单 void cxmenu() printf("n*n"); printf("n* 1.显示所有图书信息
26、 *n"); printf("n* 2.按编号查询图书 *n"); printf("n* 3.按书名查询图书 *n"); printf("n* 4.按作者查询图书 *n"); printf("n* 5.保存所查询图书的信息 *n"); printf("n* 6.返回上级菜单 *n"); printf("n*n"); printf("n请选择");/借还系统菜单void jhmenu()printf("n*n");printf(
27、"n* 1.借书 *n");printf("n* 2.还书 *n");printf("n* 3.返回上级菜单 *n");printf("n*n");printf("n请选择"); /输出链表函数 void print(link *head)link *p;p=head;if(p=NULL)printf("文件中没有图书信息n");elseprintf("n");printf("n*n");printf("n编号tt书名tt作者
28、tt出版社tt出版时间tt价格tt状态n"); while(p!=NULL) printf("n");printf("%st%st%st%st%s",p->number,p->bookname,p->author,p->publish,p->time);printf("tt%.2f",p->price);printf("tt%s",p->status);printf("n");p=p->next;/保存信息到文件子函数void hold(
29、link *head)link *p;FILE *fp;fp=fopen("图书信息.txt","w+");if(fp=NULL)printf("文件操作出错!");exit(1);p=head;for(;p!=NULL;p=p->next) fprintf(fp,"n");fprintf(fp,"%st%st%st%st%s",p->number,p->bookname,p->author,p->publish,p->time);fprintf(fp,&qu
30、ot;tt%.2f",p->price);fprintf(fp,"tt%s",p->status);fclose(fp);printf("信息已保存。");/子函数保存查询的信息到文件 void holdcx(link *t)link *p=NULL;FILE *fp;fp=fopen("查询.txt","a+");p=t;fprintf(fp,"查询到的信息为:n");fprintf(fp,"n");fprintf(fp,"n*n"
31、);fprintf(fp,"n编号tt书名tt作者tt出版社tt出版时间tt价格tt状态n");fprintf(fp,"n");fprintf(fp,"%st%st%st%st%s",p->number,p->bookname,p->author,p->publish,p->time);fprintf(fp,"tt%.2f",p->price);fprintf(fp,"tt%s",p->status);fprintf(fp,"n");
32、fclose(fp);printf("信息已保存!");/子函数按编号查询link *findnumber(link *head)char key100;link *h,*t1=NULL;printf("请输入图书的编号:");getchar();gets(key);for(h=head;h!=NULL;h=h->next) if(strcmp(key,h->number)=0) t1=h; break; return t1; /子函数按书名查询link *findboookname(link *head)char key100;link *
33、h,*t2=NULL;printf("请输入图书的书名:");getchar();gets(key);for(h=head;h!=NULL;h=h->next) if(strcmp(key,h->bookname)=0) t2=h; break; return t2;/子函数按作者查询link *findauthor(link *head)char key100;link *h,*t3=NULL;printf("请输入作者姓名:");getchar();gets(key);for(h=head;h!=NULL;h=h->next) if
34、(strcmp(key,h->author)=0) t3=h; break; return t3;/添加一本图书信息 link *add(link *head)link *h,*h1;h1=head;h=(link *)malloc(sizeof(link);if(h=NULL)printf("申请内存出错!");exit(1);printf("请输入添加图书的信息");printf("n");printf("n*n");printf("n编号tt书名tt作者tt出版社tt出版时间tt价格tt状态n
35、");scanf("%s%s%s%s%s",h->number,h->bookname,h->author,h->publish,h->time);scanf("%f",&h->price);scanf("%s",h->status); h->next=h1; return h;/将链表按编号排序link *sortnumber(link *head)link *p,*q,*temp; temp=(link *)malloc(sizeof(link); if(temp=
36、NULL) printf("申请内存出错!"); exit(1); for(p=head;p!=NULL;p=p->next) for(q=p->next;q!=NULL;q=q->next)if(strcmp(p->number,q->number)>0) strcpy(temp->number,p->number); strcpy(temp->bookname,p->bookname); strcpy(temp->author,p->author); strcpy(temp->publish,
37、p->publish); strcpy(temp->time,p->time); temp->price=p->price; strcpy(temp->status,p->status); strcpy(p->number,q->number); strcpy(p->bookname,q->bookname); strcpy(p->author,q->author); strcpy(p->publish,q->publish); strcpy(p->time,q->time); p->p
38、rice=q->price; strcpy(p->status,temp->status); strcpy(q->number,temp->number); strcpy(q->bookname,temp->bookname); strcpy(q->author,temp->author); strcpy(q->publish,temp->publish); strcpy(q->time,temp->time); q->price=temp->price; strcpy(q->status,temp
39、->status); return head; /删除一本图书信息 link *delbook(link *head)int k=0;char str10;link *h,*t,*p;h=t=p=head;printf("请输入要删除图书的书名:");getchar();gets(str);for(;p!=NULL;p=p->next)k+; if(k>2) t=t->next; if(strcmp(p->bookname,str)=0)&&(k=1) h=p->next; else if(strcmp(p->boo
40、kname,str)=0&&k>1) t->next=p->next; else if(strcmp(p->bookname,str)=0&&p->next=NULL) t=NULL; return h;/修改一本书信息除书名外 link *revamp(link *head)link *h,*t;h=head;t=findboookname(h);if(t=NULL)printf("没有找到");else printf("修改前图书信息为:"); printf("n");
41、 printf("n*n"); printf("n编号tt书名tt作者tt出版社tt出版时间tt价格tt状态n"); printf("n"); printf("%st%st%st%st%s",t->number,t->bookname,t->author,t->publish,t->time); printf("tt%.2f",t->price); printf("tt%s",t->status); printf("n"); printf("请输入这本书的除书名外所有信息:n"); printf("n*n"); printf("n编号tt作者tt出版社tt出版时间tt价格tt状态n"); printf("n"); scanf("%s%s%s%s",t->number,t->author,t->publish,t->time); scanf("%f",&t->price); scanf("%s",t->st
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030年中国度假酒店行业资本规划与股权融资战略制定与实施研究报告
- 2025-2030年中国车载视频监控行业资本规划与股权融资战略制定与实施研究报告
- 2025-2030年中国空调行业营销创新战略制定与实施研究报告
- 2025-2030年中国按摩家电行业资本规划与股权融资战略制定与实施研究报告
- 自动喷淋压力试验方案
- 夜场家具知识培训课件
- 镀锌蛋托网行业行业发展趋势及投资战略研究分析报告
- 中国在线视频网站行业市场发展现状及投资策略咨询报告
- 三年级数学(上)计算题专项练习附答案
- 防溺水安全知识培训课件
- 《神经发展障碍 儿童社交沟通障碍康复规范》
- 2025年中建六局二级子企业总经理岗位公开招聘高频重点提升(共500题)附带答案详解
- 2025年辽宁省大连市普通高中学业水平合格性考试模拟政治试题(一)
- 2024版户外广告牌安装与维护服务合同2篇
- 云南省昆明市五华区2023-2024学年九年级上学期期末数学试卷
- 安徽省合肥市第四十中学2024~2025学年九年级上学期化学期末模拟试题(含答案)
- 安徽省淮北市(2024年-2025年小学六年级语文)部编版期末考试((上下)学期)试卷及答案
- 大学生职业生涯规划
- 干燥综合征的护理查房
- 2023-2024学年浙江省杭州市上城区教科版四年级上册期末考试科学试卷
- 江苏省徐州市2023-2024学年六年级上学期期末科学试卷(含答案)2
评论
0/150
提交评论