1、图书馆管理系统实习报告 实习报告 题目:图书馆管理系统 班级:计科092 姓名:周利亚 学号:* 姓名:戚永华 学号:* 姓名:张计伟 学号:* 完成日期:2011.9.231.设计内容设计开发一个小型的图书管信息管理系统,要求具有如下功能:查寻所有图书信息、通过输入图书编号来完成查找某一本图书信息、添加图书信息 、删除图书信息 以及通过学生学号实现图书借阅功能。2.需求分析1.该程序可用于图书馆对图书信息的管理2.该程序可对初始时对图书及借书证信息的储存以及以后对新买图书3.在应用时可对错误信息进行修改、对需要图书按具体内容经行查询、对库存量进行统计。3.基本要求 (1)通过提示菜单选择可以
2、进行的操作。(2)将图书的信息存入文件中。(3)将图书借阅情况信息存入文件中。(4)在本系统中可以进行管理系统包含的基本操作,其中包括:a)查看所有图书的信息。b)输入一本图书的图书编号,从当前图书中进行查找,如果找到则显示该图书的相关信息,如果没有找到则给出提示信息。c)添加一本图书的基本信息,通过输入图书编号,首先查找是否存在该图书编号的图书,如果存在则提示重新输入,否则将该图书按照顺序插入到相应位置。d)删除一本图书的基本信息,通过输入图书编号,首先查找是否存在该图书编号的图书,如果存在则将该图书删除,否则给出提示信息,提示该图书不存在。 e)借阅一本图书,需要给出学号和图书编号,如果图
3、书编号不存在则重新输入,直到输入正确为止,并将学号和相应的图书编号存入SendInfo.txt文件中。(5)图书基本信息包括图书编号、书名、作者。4.概要设计 1储存模块:在主菜单按1进入储存模块,在提示中选1进入储存图书模块,按2进入储存借书证模块。按提示以此输入储存。 2删除模块:在主菜单按2进入删除模块,按提示进入删除图书或删除借书证模块,输入要删除的编号对其进行删除。 3修改模块:在主菜单按3进入修改模块,在提示中进入修改图书或修改借书证模块。在修改模块按对应的数字键并照提示输入修改后的数据按回车修改完成。4借书模块:进入借书模块后按提示以此输入要借的图书序号和借书证号完成借阅。5还书
4、模块:与借书模块类似。6查询模块:进入查询模块后按照提示进入图书查询或借书证查询模块。在图书查询中选择你要查询的种类,进入后输入要查询的内容精心查询。在借书证查询中输入借书证编号便会显示次借书证当前的信息。5.调试分析 1、对自己设计进行评价,指出合理和不足之处,提出改进的方案。一周的时间,我们编了一个学生图书管理程序,这是一个应用程序相对于以前我们编写的程序,这个程序似乎稍微大了一些,运行的结果也不是很理想,程序的书写方面也不是很规范,还需要改进,在老师的指导及同学的互相商讨下,经过我一次一次的修改,最终基本达到了预期的效果,但还有不足的的地方。第一次独立完成这种规模的程序,由于时间短,有许
5、多原先构想的程序还未编辑,故有一些功能未能实现,现在已编辑的程序基本上能满足客户的需求,但还不是十分完善,若能添加更多的功能就能进一步满足需求了。2、在设计过程中的感受。 通过这次实习让我对C语言有了进一步的了解,以前只停留在编写十几行的小程序的基础上,对它只是略知皮毛,经过上学期的学习也只是停留在理论上,此次实习让我受益匪浅,这次提高了我们的动手动脑能力,大学生缺乏动手实践的能力,对于大学生来说书本知识固然重要,但是实践课绝对是其大学四年中不可或缺的一部分。所以我认为大学开实践课是非常有必要的!6.程序源代码 #include#include#include#includestruct bo
6、oks_list char author20; /*作者名*/ char bookname20; /*书名*/ char publisher20; /*出版单位*/ char pbtime15; /*出版时间*/ char loginnum10; /*登陆号*/ float price; /*价格*/ char classfy10; /*分类号*/ struct books_list * next; /*链表的指针域*/; struct books_list * Create_Books_Doc(); /*新建链表*/void InsertDoc(struct books_list * hea
7、d); /*插入*/void DeleteDoc(struct books_list * head , int num);/*删除*/void Print_Book_Doc(struct books_list * head);/*浏览*/void search_book(struct books_list * head); /*查询*/void info_change(struct books_list * head);/*修改*/void save(struct books_list * head);/*保存数据至文件*/*新建链表头节点*/struct books_list * Creat
8、e_Books_Doc() struct books_list * head; head=(struct books_list *)malloc(sizeof(struct books_list); /*分配头节点空间*/ head-next=NULL; /*头节点指针域初始化,定为空*/ return head; /*保存数据至文件*/void save(struct books_list * head) struct books_list *p; FILE *fp; p=head; fp=fopen(data.txt,w+); /*以写方式新建并打开 data.txt文件*/fprintf
9、(fp,登录号书 名作 者出版单位 出版时间 分类号 价格 n); /*指针从头节点开始移动,遍历至尾结点,依次输出图书信息*/ while(p-next!= NULL) p=p-next; fprintf(fp, %-6.6s%-10.10s%-10.10s%-10.10s%-12.12s%-6.6s%.2fn,p-loginnum,p-bookname,p-author,p-publisher,p-pbtime,p-classfy,p-price); fclose(fp); printf(已将图书数据保存到 data.txt 文件n);/*插入*/void InsertDoc(struct
10、 books_list *head) /*定义结构体指针变量 s指向开辟的新结点首地址 p为中间变量*/ struct books_list *s, *p; char flag=Y; /*定义flag,方便用户选择重复输入*/ p=head; /*遍历到尾结点,p指向尾结点*/ while(p-next!= NULL) p=p-next; /*开辟新空间,存入数据,添加进链表*/ while(flag=Y|flag=y) s=(struct books_list *)malloc(sizeof(struct books_list); printf(n请输入图书登陆号:); fflush(std
11、in); scanf(%s,s-loginnum); printf(n请输入图书书名:); fflush(stdin); scanf(%s,s-bookname); printf(n请输入图书作者名:); fflush(stdin); scanf(%s,s-author); printf(n请输入图书出版社:); fflush(stdin); scanf(%s,s-publisher); printf(n请输入图书出版时间:); fflush(stdin); scanf(%s,s-pbtime); printf(n请输入图书分类号:); fflush(stdin); scanf(%s,s-cl
12、assfy); printf(n 请输入图书价格:); fflush(stdin); scanf(%f,&s-price); printf(n); p-next=s; /*将新增加的节点添加进链表*/ p=s; /*p指向尾节点,向后移*/ s-next=NULL; printf(添加成功! ); printf(n 继续添加?(Y/N):); fflush(stdin); scanf(%c,&flag); printf(n); if(flag=N|flag=n) break; else if(flag=Y|flag=y) continue; save(head); /*保存数据至文件*/ re
13、turn;/*查询操作*/void search_book(struct books_list *head) struct books_list * p; char temp20; p=head; if(head=NULL | head-next=NULL) /*判断数据库是否为空*/ printf(图书库为空! n); else printf(请输入您要查找的书名: ); fflush(stdin); scanf(%s,temp); /*指针从头节点开始移动,遍历至尾结点,查找书目信息*/ while(p-next!= NULL) p=p-next; if(strcmp(p-bookname
14、,temp)=0) printf(n图书已找到!n); printf(n); printf(登录号: %stn,p-loginnum); printf(书名: %stn,p-bookname); printf(作者名: %stn,p-author); printf(出版单位: %stn,p-publisher); printf(出版时间: %stn,p-pbtime); printf(分类号: %stn,p-classfy); printf(价格: %.2ftn,p-price); if(p-next=NULL) printf(n查询完毕!n); return; /*浏览操作*/ void P
15、rint_Book_Doc(struct books_list * head) struct books_list * p; if(head=NULL | head-next=NULL) /*判断数据库是否为空*/ printf(n 没有图书记录! nn); return; p=head;printf(登录号书 名作 者出版单位 出版时间 分类号 价格 n); /*指针从头节点开始移动,遍历至尾结点,依次输出图书信息*/ while(p-next!= NULL) p=p-next; printf(%-6.6s%-10.10s%-10.10s%-10.10s%-12.12s%-6.6s%.2f
16、n,p-loginnum,p-bookname,p-author,p-publisher,p-pbtime,p-classfy,p-price); /*循环输出表格*/ printf(n); /*修改操作*/void info_change(struct books_list * head) struct books_list * p; int panduan=0; /*此变量用于判断是否找到书目*/ char temp20; p=head; printf(请输入要修改的书名:); scanf(%s,temp); while(p-next!= NULL) p=p-next; if(strcmp
17、(p-bookname,temp)=0) printf(n请输入图书登陆卡号:); fflush(stdin); scanf(%s,p-loginnum); printf(n请输入图书书名:); fflush(stdin); scanf(%s,p-bookname); printf(n请输入图书作者名:); fflush(stdin); scanf(%s,p-author); printf(n请输入图书出版社:); fflush(stdin); scanf(%s,p-publisher); printf(n请输入图书出版时间:); fflush(stdin); scanf(%s,p-pbtim
18、e); printf(n请输入图书分类号:); fflush(stdin); scanf(%s,p-classfy); printf(n请输入图书价格:); fflush(stdin); scanf(%f,&p-price); printf(n); panduan=1; if(panduan=0) printf(n 没有图书记录! nn); return;/*删除操作*/void DeleteDoc(struct books_list * head) struct books_list *s,*p; /*s为中间变量,p为遍历时使用的指针*/ char temp20; int panduan;
19、 /*此变量用于判断是否找到了书目*/ panduan=0; p=s=head; printf( 请输入您要删除的书名:); scanf(%s,temp); /*遍历到尾结点*/ while(p!= NULL) if(strcmp(p-bookname,temp)=0) panduan+; break; p=p-next; if(panduan=1) for(;s-next!=p;) /*找到所需删除卡号结点的上一个结点*/ s=s-next; s-next=p-next; /*将后一节点地址赋值给前一节点的指针域*/ free(p); printf(n 删除成功! n); else /*未找
20、到相应书目*/ printf(您输入的书目不存在,请确认后输入!n); return;int main(void) struct books_list * head; char choice; head=NULL; for(;) /*实现反复输入选择*/ printf(图书管理系统n); printf( 1图书信息录入n); printf( 2图书信息浏览n); printf( 3图书信息查询n); printf( 4图书信息修改n); printf( 5图书信息删除n); printf( 6退出系统n); printf(请选择:); fflush(stdin); scanf(%c,&choi
21、ce); if(choice=1) if(head=NULL) head=Create_Books_Doc(); InsertDoc(head); else if(choice=2) Print_Book_Doc(head); else if(choice=3) search_book(head); else if(choice=4) info_change(head); else if(choice=5) DeleteDoc(head); else if(choice=6) printf(n); printf(感谢使用图书管理系统n); break; else printf(输入错误,请重新输入! ); break; return 0;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1