1、图书信息管理系统*实践教学* 兰州理工大学计算机与通信学院2012年春季学期 C程序设计 课程设计题 目:图书信息管理系统专业班级: 姓 名: 人才v 学 号: 指导教师: 成 绩:_摘 要人类已经跨入了新世纪,正在进入信息时代。随着馆藏量的不断增加,图书资料的录入和查询的难度也就相应增加,数据处理手工操作,工作量大,出错率高,出错后不易更改的手工方式,已经不能满足要求。 基于这此问题,建立一个规范化,系统化,程序化的图书管理系统迫不急待。为方便对图书馆书籍、读者资料、借还书等进行高效的管理,特编写该程序以提高图书馆的管理效率。使用该程序之后,工作人员可以查询某位读者、某种图书的借阅情况,还可
2、以对当前图书借阅情况进行一些统计,以便全面掌握图书的流通情况。关键词:图书管理系统;信息技术;数据处理;高效管理目录一、需求分析 1二、总体设计 2三、详细设计 33.1 主函数 33.2 模块函数 43.2.1输入模块 43.2.2 删除模块 53.2.3借出模块 63.2.4归还模块 63.3公共函数 8四、编码 8五、测试 9设计总结 11参考文献 13致谢 14附录(源代码) 15一、需求分析图书管理系统是图书馆的重要组成部分,图书是我们最好的获取信息的方式,但由于图书馆图书收藏量大大增加,使传统的图书管理员的工作日益繁重起来,迫使人们起用新的管理方法来管理图书。该系统可以运用于高校的
3、图书管理,由图书编目,图书流通,标准管理,资料管理,系统维护等多个子系统组成,实现了图书资料的计算机网络管理。我们需要让其更方便简洁, 此外,随着工Internet应用的发展,一个完善的系统还应提供无缝接入Internet的功能,通过IE浏览器让读者使用借阅资料查询、更换密码、预约、资料检索等功能。二、总体设计总体设计目标:使用者可以利用本系统进行对图书馆借阅的各项运算操作,如根据用户的需求自动的进行添加图书,删除图书,借书还书。查找所要的图书,查阅图书的详细资料,查阅读者的详细资料。最后清晰完整的结果于屏幕中。大大方便使用者对图书借阅的操作,不仅节省时间,而且提高准确性,可以达到事半功倍的效
4、果。 总体设计策略:本系统采用的是自顶向下、层次化的模块结构。对高层模块,采用以事务为中心的设计策略,把一个大的模块逐步分解成较小的相对简单的模块。对低层模块,采用以变换为中心的设计策略。为了提高每个模块的内聚性、降低模块间的耦合性,将每个模块设计成具有单一功能的模块(即功能内聚),使模块间的联系完全是通过主模块的控制和调用来实现(即非直接耦合)。结合上述分析该系统应包括以下模块:信息输入、图书查找、信息删除,图书借出、图书归还。结构图1如下;图1 工资管理系统功能模块图三、详细设计3.1 主函数主函数要求设计比较简洁,只提供设输入,处理和输出部分的函数调用。其中各功能模块用菜单方式选择,如图
5、2所示;NY图2 菜单方式选择程序: void main(void) menu: page_title(操作选单); printf(请用数字键选择操作nn); printf(ttt1 借阅图书ttt2 归还图书n); printf(ttt3 注册新书ttt4 注销旧书nn); printf(nttttt0 退出n); switch(getch() case 1 : book_out();break; case 2 : book_in();break; case 3 : book_add();break; case 4 : book_del();break; case 0 : exit(0);
6、goto menu; 3.2 模块函数3.2.1输入模块分析:该模块的功能是假如用户需要新加入新的图书信息,通过键盘输入将新信息逐条加在原来输入文件上但不能覆盖原有信息。输入模块如图3所示; i从0到N-1 调用输入函数input(i) Y N 图3 输入模块流程图程序:void book_add(void) int n; page_title(注册新书); for(n=0;n0) printf(请输入借书证序号:); scanf(%d,&s); printf(请输入可借天数:); scanf(%d,&d); for(l=0;l10;l+) if(booksn.usrl=0) booksn.u
7、srl=s; booksn.daysl=d; break; booksn.store-; if(n!=-1&booksn.store=0) printf(此书已经全部借出.n); return_confirm(); 3.2.4归还模块分析:该模块功能应体现为方便用户归还图书,归还模块如图6所示;输入归还图书序号 Y N显示记录提示没找到 返回菜单让用户输入信息:入库图6 归还模块流程图程序:void book_in(void) int n,s,l; page_title(归还图书); if(n=search_book()!=-1&booksn.storebooksn.total) printf
8、(借阅者图书证列表:n); for(l=0;l10;l+) if (booksn.usrl!=0) printf(%d- %d天n,booksn.usrl,booksn.daysl); printf(请输入借书证序号:); scanf(%d,&s); for(l=0;l10;l+) if(booksn.usrl=s) booksn.usrl=0; booksn.daysl=0; break; booksn.store+; if(n!=-1&booksn.store=booksn.total) printf(全部入藏.n); return_confirm(); 3.3公共函数定义结构体: str
9、uct BOOK int id,usr10,total,store,days10,zt; char name31,author21; books100;void page_title(char *menu_item) printf(ttt*欢迎使用图书馆管理系统*nn- %s -nn,menu_item); void return_confirm(void) printf(n按任意键返回n);getch(); void state(int n)if(booksn.total!=0)printf(1); if(booksn.total=0)printf(0);四、编码1.定义4个结构体,分别用来
10、定义学生类型,用于存放借阅书籍;职工类型,记录借阅者信息;定义书的类型;借卡的数据类型。2.还书函数。3.借阅系统。4.学生卡管理系统。5.图书查询系统.五、测试 主界面截图,如图7所示:图7 主界面新书注册截面图,如图8所示:图8 新书注册借阅界面截图,如图9所示:图9 图书借阅归还界面截图,如图10所示:图10 图书归还注销界面截图,如图11所示:图11图书注销状态界面截图,如图12所示:图12 图书状态设计总结本次课设是我们大学以来第一次,面对如此大的编程量,开始时我不知所措,坦白说,刚开始我也曾打过退堂鼓,应为在能力方面我还有很多不足,首先遇到的困难是做出一个像样的管理菜单并且能自由的
11、进入各个页面,后来通过查阅书籍,在网上查找资料,解决了此问题。接下来就是编译的程序,困难就是在储存信息和信息的提取和修改。最后通过建立文本替换的方法得以解决。通过这次课设让我明白到,如今我们所学的程序知识九牛一毛,我们必须能够编译大量数据的程序,图书管理系统也只是让我们小试牛刀罢了。这让我明白大学里练习编译10万编码的重要性,也让我对C语言有了更深的了解,对它的掌握也有所提高,在接下来的学习中我要刻苦钻研,不能把目光只停留在书本中。同时也激起了对C语言更深层次的学习欲望。参考文献1 C/C+程序设计,王连相等,中国科学技术出版社,20042 C语言程序设计,谭浩强,清华大学出版社,19993
12、C程序设计题解与上机指导,谭浩强,清华大学出版社,19994 C语言实用程序荟萃,西安电子科技大学出版社,19935 C语言函数手册,机械工业出版社,19996 C语言的实际应用,安徽科学技术出版社,2000致谢感谢张老师在课设期间对我们的指导,并不厌其烦地多次帮我们纠正错误,没有他的帮助,我们将会错误百出;感谢小组的同学全力帮助,我一个人不可能完成;感谢兰州理工大学给我们这次机会,并给以大力支持。附录(源代码)#include #include #include struct BOOK int id,usr10,total,store,days10,zt; char name31,autho
13、r21; books100;void page_title(char *menu_item) printf(ttt*欢迎使用图书馆管理系统*nn- %s -nn,menu_item); void return_confirm(void) printf(n按任意键返回n); getch(); void state(int n)if(booksn.total!=0)printf(1); if(booksn.total=0)printf(0);int search_book(void) int n,i; printf(请输入图书序号:); scanf(%d,&i); for(n=0;n0) prin
14、tf(请输入借书证序号:); scanf(%d,&s); printf(请输入可借天数:); scanf(%d,&d); for(l=0;l10;l+) if(booksn.usrl=0) booksn.usrl=s; booksn.daysl=d; break; booksn.store-; if(n!=-1&booksn.store=0) printf(此书已经全部借出.n); return_confirm(); void book_in(void) int n,s,l; page_title(归还图书); if(n=search_book()!=-1&booksn.storebooksn
15、.total) printf(借阅者图书证列表:n); for(l=0;l10;l+) if (booksn.usrl!=0) printf(%d - %d天n,booksn.usrl,booksn.daysl); printf(请输入借书证序号:); scanf(%d,&s); for(l=0;l10;l+) if(booksn.usrl=s) booksn.usrl=0; booksn.daysl=0; break; booksn.store+; if(n!=-1&booksn.store=booksn.total) printf(全部入藏.n); return_confirm(); vo
16、id book_add(void) int n; page_title(注册新书); for(n=0;n100;n+) if(booksn.id=0) break; printf(序号:); scanf(%d,&booksn.id); printf(书名:); scanf(%s,&booksn.name); printf(作者:); scanf(%s,&booksn.author); printf(数量:); scanf(%d,&booksn.total); printf(存在状态:); state(n); booksn.store=booksn.total; return_confirm()
17、; void book_del(void) int n; page_title(注销旧书); if(n=search_book()!=-1) booksn.id=0; printf(该书已注销.n); return_confirm(); void main(void) menu: page_title(操作选单); printf(请用数字键选择操作nn); printf(ttt1 借阅图书ttt2 归还图书n); printf(ttt3 注册新书ttt4 注销旧书nn); printf(nttttt0 退出n); switch(getch() case 1 : book_out();break; case 2 : book_in();break; case 3 : book_add();break; case 4 : book_del();break; case 0 : exit(0); goto menu;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1