




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
某大学某学院数据结构课程课程设计设计题目: 图书管理基本业务 姓 名: X X 学 号: 0123456789 专业班级: 12级软件工程(1)班 院 系: 信息工程学院 设计时间: 2012-2013学年第2学期 设计地点: 计算机中心公共机房B区 成绩: 指导教师签名: 年 月 日目 录1 绪 论11.1 课程设计的目的11.2课题设计的意义12 需求分析22.1 课程设计要求22.2 课程设计任务22.3分析用例23 设计思路34 详细设计45 数据测试96 总结体会13参考文献14附录源代码151 绪 论改革开放以来,随着我国经济水平的提高,计算机知识在我国得到了越来越大的普及。计算机也在各个领域发挥着越来越大的作用。科技的提高,让我们的生活、工作越来越离不开计算机。随着时代的发展,人们越来越离不开书本。每个学校都有自己的图书馆,班级也会有班级的书库,相信大家都有自己的书库。对于普通微小型用户来说,自己的书库不大,也没有多余的资金来购买专业的操作复杂的价格昂贵的图书管理系统。以往的图书借阅手段效率低,操作复杂,为了便于图书资料的管理需,减轻工作人员的工作量,方便用户对书籍的查找、借阅、归还,用户应具有一套完善的图书借阅管理系统。在这种情况下,一个免费,高效,简单,实用的图书管理系统就非常适合于这类普通微小型用户。1.1 课程设计的目的设计一个免费,高效,简单,实用的图书管理系统。1.2课题设计的意义让普通微小型用户可以更好的管理自己的书库。免于购买专业的操作复杂的价格昂贵的图书管理系统,节约资金以免造成浪费。此系统以“免费,高效,简单,实用”为核心,倾心倾力为普通微小型用户量身打造!所以简便易用,高效实用改善普通微小型用户书库环境。2 需求分析2.1 课程设计要求(1)用C语言实现程序设计;(2)利用结构体、单链表的基本操作进行相关信息处理;(3)画出查询模块的流程图;(4)系统的各个功能模块要求函数的形式实现;(5)界面友好(良好的人机交互),程序要有注释。2.2 课程设计任务设计一个计算机管理系统完成图书管理基本业务。1) 馆藏图书信息。每种书的登记内容包括书号、书名、著作者、现存量和库存量;2) 图书查询。对书号查找,并显示所查找图书的所有信息,包括书号、书名、著作者、现存量、库存量和借阅者姓名;3)系统主要功能如下:采编入库:新购一种书确定书号后,登记到图书帐目表中,如果表中已有,则将库存量和现存量增加;读者借阅:若一种书的现存量大于0,则借出一本,登记借阅者的姓名,改变现存量,若一种书的现存量为0,则提示该书库存不足,读者无法借阅;读者归还:注销对借阅者的登记,改变该书的现存量。2.3分析用例书号书名著作者现存量库存量借阅者姓名1高等数学同济大学55NULL2数字电路清华大学33NULL3大学英语蔡基刚等00NULL4基本算法戴燕等著33NULL5三言二拍冯梦龙等55NULL3 设计思路本程序是以单链表的基本操作为基础,进行改造升级,而形成的图书管理基本操作程序。图书馆基本业务模拟包含多方面的操作,其中本程序描述的是图书馆的新书入库、图书馆借阅、归还、信息查询(书籍信息查询)等功能。1)新书入库功能:新到书籍入库包含几方面的操作:查询该书名的书籍在图书馆信息中是否已经存在,若存在,则增加可借数量和书籍总量,若不存在,则新增加概述信息,从界面输入书籍的编号(0999999的长整型)、书名(字符串类型)、该书作者名(字符串类型)、该书的现存量(整型)、该书的总量(整型)。输入该信息之后,将该节点插入到书籍信息链表中去。该节点的插入位置根据查找,找到合适的位置插入,这样可以保证整个数据都是有序的,方便查找。2)借阅功能书籍借阅主要涉及存书库和读者信息库双方的更新。用户首先使用系统,查询该书是否存在,该书的剩余数量是否大于零,最后查询该读者是否已经借满书籍。若以上条件都满足,则将该读者的可借书数量减一,该存书的可借数量减一。3)归还功能按书名号来归还所借书籍,若书名号正确并且确认归还该书籍,删除该书的读者借阅信息(姓名),然后返回。4)信息查询功能信息查询分为读者信息查询和书籍信息查询,读者信息查询是在读者登录之后,可以显示本人的基本信息以及借书状况(所借书的本数、可借书本书以及所借书的信息),还可查询书籍信息,可根据书籍的编号来查找书籍、根据书名来查找书籍、根据作者名来查询书籍。查询到该书籍后显示是否借阅该书籍。4 详细设计首先定义一个定义一个单链表的结点typedef struct nodeint num;/书号char title50;/书名char author50;/著作者int num1;/现存量int num2;/库存量char name50;/借阅者姓名struct node *link;linklist;此结点包括书号,书名,著作者,现存量,库存量,借阅者姓名。linklist* creatnull(linklist *l)/建立一个带头的结点; l=(linklist*)malloc(sizeof(linklist);l-link=NULL;return l;馆藏图书信息模块void print(linklist *l)/输出所有图书的信息linklist *p;p=l-link;printf(n输出所有图书的信息:n书号t书名t著作者t现存量t库存量t借阅者姓名);while(p)printf(n%dt%st%st%dt%dt%s,p-num,p-title,p-author,p-num1,p-num2,p-name);p=p-link; /指针指向下一个通过对单链表的输出来完成对馆藏图书信息的输出;采编入库模块void creat(linklist *l)/采编入库int i,n;linklist *p,*tail,*q;tail=l;if(l-link!=NULL) q=l-link; else q=l;while(tail-link!=NULL)tail=tail-link;printf(n请输入入库图书的数量:);scanf(%d,&n);for(i=1;inum);while(q-num!=p-num&q-link!=NULL)q=q-link;if(q-num=p-num) q-num1=q-num1+1;q-num2=q-num2+1;printf(n该图书已在图书库存在,已自动增加图书数量);else printf(n请输入入库图书的书名:); scanf(%s,&p-title); printf(n请输入入库图书的著作者:); scanf(%s,&p-author); printf(n请输入入库图书的现存量:); scanf(%d,&p-num1); printf(n请输入入库图书的库存量:); scanf(%d,&p-num2);strcpy(p-name,NULL);tail-link=p;tail=p; tail-link=NULL;首先先判断该结点是否为空,若不为空,指针指向下一个结点。若该结点为空,输入入库图书的数量,通过for循环依次输入书号,书名,著作者,现存量,库存量等信息。其中while(q-num!=p-num&q-link!=NULL)q=q-link;if(q-num=p-num) q-num1=q-num1+1;q-num2=q-num2+1;printf(n该图书已在图书库存在,已自动增加图书数量。);根据输入的书号(入库的图书)与库存的书号(本库的图书)是否相同,若相同,不用输入该书的相关信息,便自动完成图书库存和现存量的增加。并提示“该图书已在图书库存在,已自动增加图书数量。”根据书号查找图书模块void locat(linklist *l,int i)/根据书号查找图书linklist *p;p=l-link;while(p-num!=i)p=p-link;If(p-limk!=NULL)printf(n输出图书的信息:n书号t书名t著作者t现存量t库存量t借阅者姓名);printf(n%dt%st%st%dt%dt%sn,p-num,p-title,p-author,p-num1,p-num2,p-name);else printf(该图书不在此书库!);通过指针所指书号与查找图书的书好进行比较,若相同则输出该图书的所有信息。若不相同,则指针指向下一个结点,直到指向为NULL,结束并提示“该图书不在此书库!”。借阅模块void borrowbook(linklist *l)/借阅linklist *p;int i;printf(n借阅的图书书号:);scanf(%d,&i);p=l-link;while(p-num!=i)p=p-link;printf(n输出图书的信息:n书号t书名t著作者t现存量t库存量t借阅者姓名);printf(n%dt%st%st%dt%dt%sn,p-num,p-title,p-author,p-num1,p-num2,p-name);if(p-num1num1=p-num1-1; printf(n请输入借阅者的姓名:);scanf(%s,&p-name);printf(n输出图书的信息:n书号t书名t著作者t现存量t库存量t借阅者姓名);printf(n%dt%st%st%dt%dt%sn,p-num,p-title,p-author,p-num1,p-num2,p-name);通过指针所指书号与查找图书的书好进行比较,若相同则输出该图书的所有信息,若库存不大于零,提示“该书库存不足,读者无法借阅.”,相反,则提示“请输入借阅者的姓名:”,记录借阅者的姓名,现存量和库存量各减一个。若不同,则指针指向下一个结点。归还模块void returnbook(linklist *l)/归还linklist *p;int i;printf(n请输入归还图书的书号:);scanf(%d,&i);p=l-link;while(p-num!=i)p=p-link;printf(n输出图书的信息:n书号t书名t著作者t现存量t库存量t借阅者姓名);printf(n%dt%st%st%dt%dt%sn,p-num,p-title,p-author,p-num1,p-num2,p-name);p-num1=p-num1+1;strcpy(p-name,NULL);printf(n输出图书的信息:n书号t书名t著作者t现存量t库存量t借阅者姓名);printf(n%dt%st%st%dt%dt%sn,p-num,p-title,p-author,p-num1,p-num2,p-name);通过指针所指书号与查找图书的书好进行比较,若相同则输出该图书的所有信息。若不同,则指针指向下一个结点。Main函数模块int main()linklist l,*head;head=creatnull(&l); printf( *n);printf( 欢迎使用图书管理系统 n); printf( *n);printf( 免费 高效 简单 实用n); printf(nnnn);int flag=1,a;while(flag) printf(1:馆藏图书信息n2:采编入库n3:图书查询n4:读者借阅n5:读者归还n6:退出图书管理系统n请输入您的选项:);scanf(%d,&a); switch(a) case 6:flag=0; printf( *n); printf( 已退出图书管理系统 n); printf( *n); break; case 1:flag=1; print(head); printf(nnn); break; case 2:flag=1; creat(head); printf(nnn); break; case 3:flag=1; int number;/书号printf(n请输入要查找的图书书号:);scanf(%d,&number);locat(head,number); printf(nnn); break; case 4:flag=1; borrowbook(head); printf(nnn); break; case 5:flag=1; returnbook(head); printf(nnn); break; ;system(pause);return 1;首先,定义一个该类型的结点和一个指向该类型的指针。用creatnull()函数创建一个头结点,且指针指向该头结点。然后输出用户界面,通过while循环和switch case语句进行选择。把各个功能模块都编辑在main函数。5 数据测试(1)开始界面图5.1开始界面(2)采编入库模块图5.2采编入库图5.3采编入库图5.4采编入库图5.5采编入库(3)根据书号查找图书模块图5.6根据书号查找图书图5.7根据书号查找图书 (4)借阅模块图5.8读者借阅图5.9读者借阅(5)归还模块图6.0读者归还(6)退出模块6.1退出界面6 总结体会通过本次课程设计,让我对数据结构这门学科对有了进一步的认识,掌握了单链表的基本操作和应用。以前对该课程不再那么恐惧,任何事情没有做不到只有愿不愿意去做。之后凭借那闪现在眼前的点点思路,慢慢在琢磨,终于想出了大体的程序内容。然后一个一个函数的思考,一步一步的编写,调试,做起来也就越来越顺手了。通过我的反复思考,程序中的错误得到了解决。函数功能也得到了进一步的完善。并且在本次课程设计的过程中,让我知道一个人的力量真的好有限,即使个人能力再强,做一个大点的项目,也会力不从心。所以遇到问题要学会去问同学,问老师,只有这样才能将事顺利办得越快越好。通过这次课程设计,会为我们以后进入社会提供一定的经验。我相信在今后的学习真的我会更加努力,积累经验。使自己在编程等各方面得到提高。参考文献1 孙玉方,张乃孝.实用C语言程序设计M.北京:北京大学出版(简体版),1989;台湾儒林出版公司(繁体版),1992.2 许卓群,张乃孝,杨冬青,等.数据结构M.北京:高等教育出版社,19873. 郭有强 ,C+面向对象程序设计J .清华大学出版社 ,2009;4 朱晓龙,Java语言程序设计,北京邮电大学出版社,2011;5 Wirth N.Algorithms + Data Structures = ProgramsM.S.I.PrenticeHall.1976.附录源代码#include#include#includetypedef struct nodeint num;/书号char title50;/书名char author50;/著作者int num1;/现存量int num2;/库存量char name50;/借阅者姓名struct node *link;linklist;linklist* creatnull(linklist *l) l=(linklist*)malloc(sizeof(linklist);l-link=NULL;return l;void creat(linklist *l)/采编入库int i,n;linklist *p,*tail,*q;tail=l;if(l-link!=NULL) q=l-link; else q=l;while(tail-link!=NULL)tail=tail-link;printf(n请输入入库图书的数量:);scanf(%d,&n);for(i=1;inum);while(q-num!=p-num&q-link!=NULL)q=q-link;if(q-num=p-num) q-num1=q-num1+1;q-num2=q-num2+1;printf(n该图书已在图书库存在,已自动增加图书数量);else printf(n请输入入库图书的书名:); scanf(%s,&p-title); printf(n请输入入库图书的著作者:); scanf(%s,&p-author); printf(n请输入入库图书的现存量:); scanf(%d,&p-num1); printf(n请输入入库图书的库存量:); scanf(%d,&p-num2);strcpy(p-name,NULL);tail-link=p;tail=p; tail-link=NULL;void print(linklist *l)/输出所有图书的信息linklist *p;p=l-link;printf(n输出所有图书的信息:n书号t书名t著作者t现存量t库存量t借阅者姓名);while(p) printf(n%dt%st%st%dt%dt%s,p-num,p-title,p-author,p-num1,p-num2,p-name);p=p-link;void locat(linklist *l,int i)/根据书号查找图书linklist *p;p=l-link;while(p-num!=i&p-link!=NULL)p=p-link;if(p-link!=NULL)printf(n输出图书的信息:n书号t书名t著作者t现存量t库存量t借阅者姓名);printf(n%dt%st%st%dt%dt%sn,p-num,p-title,p-author,p-num1,p-num2,p-name);else printf(该图书不在此书库!);void borrowbook(linklist *l)/借阅linklist *p;int i;printf(n借阅的图书书号:);scanf(%d,&i);p=l-link;while(p-num!=i)p=p-link;printf(n输出图书的信息:n书号t书名t著作者t现存量t库存量t借阅者姓名);printf(n%dt%st%st%dt%dt%sn,p-num,p-title,p-author,p-num1,p-num2,p-name);if(p-num1num1=p-num1-1; printf(n请输入借阅者的姓名:);scanf(%s,&p-name);printf(n输出图书的信息:n书号t书名t著作者t现存量t库存量t借阅者姓名);printf(n%dt%st%st%dt%dt%sn,p-num,p-title,p-author,p-num1,p-num2,p-name);void returnbook(linklist *l)/归还linklist *p;int i;printf(n请输入归还图书的书号:);scanf(%d,&i);p=l-link;while(p-num!=i)p=p-link;printf(n输出图书的信息:n书号t书名t著作者t现存量t库存量t借阅者姓名);printf(n%dt%st%st%dt%dt%sn,p-num,p-title,p-author,p-num1,p-num2,p-nam
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学数学淘气的作息时间公开课教案
- 商务文书写作培训
- 农业基础知识培训
- 创伤救护教学幻灯课件
- 向日葵(教学设计)-2023-2024学年人美版(北京)(2013)美术四年级下册
- 小学政治 (道德与法治)人教部编版一年级下册6 花儿草儿真美丽教学设计
- 燃气系统法务培训
- 会议室租赁简易合同2025
- 人工智能技术服务合同2025
- 版个人租住房屋契约
- 国企治理三会一层详解
- GB/T 788-1999图书和杂志开本及其幅面尺寸
- GB/T 756-2010旋转电机圆柱形轴伸
- GB/T 6172.1-2000六角薄螺母
- GB/T 19189-2011压力容器用调质高强度钢板
- 公司合格供应商清单
- GB/T 13007-2011离心泵效率
- 2022年物流仓储行业REITs研究
- 政治学基础课件全部终稿
- 朱兰质量手册课件
- 小猪佩奇Peppa-Pig第一季1-2集英文台词
评论
0/150
提交评论