收藏 分享(赏)

数据结构课程设计-图书管理.doc

上传人:精品资料 文档编号:10708023 上传时间:2019-12-29 格式:DOC 页数:45 大小:845.48KB
下载 相关 举报
数据结构课程设计-图书管理.doc_第1页
第1页 / 共45页
数据结构课程设计-图书管理.doc_第2页
第2页 / 共45页
数据结构课程设计-图书管理.doc_第3页
第3页 / 共45页
数据结构课程设计-图书管理.doc_第4页
第4页 / 共45页
数据结构课程设计-图书管理.doc_第5页
第5页 / 共45页
点击查看更多>>
资源描述

1、数据结构课程设计报告题目:6.3 图书管理学 院 计算机学院 专 业 软件工程 年级班别 2012 级 2 班 学 号 3112006200 学生姓名 林迅玄 指导教师 李藜 成 绩 2014 年 7 月 1 日难度 选做 独立完成率%自评5 有一、需求分析【设计任务描述】设计一个计算机管理系统完成图书管理基本业务。图书管理基本业务活动包括:对一本书的采编入库、清除库存、借阅和归还等等。【输入的形式和输入值的范围】进入管理界面输入整型数据 0-7 选择需要的操作书号、现存量、总存量为大于零的整型数据,输入值的范围由系统整型数据范围而定。书名、作者名、出版社名称为字符串类型数据,长度不大于 20

2、。借书证号码,归还时间均先由字符串输入再由函数转换为整型数据,借书证号码长度不大于 5 位字符,归还时间长度不大于 8 位。【程序所能达到的主要功能】1.图书信息录入功能:每种书的登记内容包括书号、书名、著作者、出版社名称、现存量和总存量等。2.图书查询功能:分别可按书号、书名、作者、出版社名称查询图书,还可查询图书的当前借阅信息。3.排序功能:对书库中的图书按书号排序。4.图书修改功能:对选定图书信息进行修改。5.图书删除功能:某本书已无保留价值,将其从书库中注销。6.图书借阅功能:若图书现存量大于零,登记借阅者图书证号和归还日期,图书现存量减 1。7.图书归还功能注销对借阅者的登记,改变该

3、书的现存量。【测试数据】输入 1 进入图书录入信息:输入需要录入的图书信息的个数,依次录入以下信息书号 书名 作者 出版社名称 现存量 总存量1 w e g 5 5成功则输出“录入成功”错误则输出“此图书已存在!” 、 “请重新输入”输入 2 进入图书查询:1.按书号查询输入 2成功则输出错误则输出“对不起,不存在此图书!”2.按书名查询输入 c成功则输出错误则输出“对不起,不存在此图书!”3.按作者名查询4 x h j 4 47 y e z 9 92 s a p 16 166 r e j 10 108 i f t 20 203 d f g 18 185 c l g 17 1711 m l g

4、 13 139 q a t 14 1410 b o p 8 8书号 书名 作者 出版社名称 现存量 总存量2 s a p 16 16书号 书名 作者 出版社名称 现存量 总存量5 c l g 17 17输入 e成功则输出错误则输出“对不起,不存在此作者的图书!”4.按出版社名称查询输入 g成功则输出错误则输出“对不起,不存在此出版社出版的图书!”输入 4 进入图书修改输入 w正确则重新录入该书信息错误则输出“不存在此图书”输入 5 进入图书删除输入 d书号 书名 作者 出版社名称 现存量 总存量1 w e g 5 56 r e j 10 107 y e z 9 9书号 书名 作者 出版社名称

5、现存量 总存量1 w e g 5 53 d f g 18 185 c l g 17 1711 m l g 13 13书号 书名 作者 出版社名称 现存量 总存量1 w e g 6 6成功则输出“删除成功”错误则输出“你输入的书名不存在,请核实后重新输入!”输入 3 进入图书排序输出输入 6 进入图书借阅输入 w成功则继续输入 错误则输出“此图书不存在!”输入 15成功则继续输入 错误则输出“输入有误,请重新输入”输入 20140101成功输出“借书成功!”错误则输出“此图书不存在!” 、 “不好意思,此书已借完!” 、 “你已经借了这本书,不能够重复借!”输入 6 进入图书借阅重复输入 w 1

6、7 20140715 w 25 20141109输入 2 进入图书查询输入 2 按书名查询书号 书名 作者 出版社名称 现存量 总存量1 w e g 6 62 s a p 16 164 x h j 4 45 c l g 17 176 r e j 10 107 y e z 9 98 i f t 20 209 q a t 14 1410 b o p 8 811 m l g 13 13输入 w成功则输出错误则输出“对不起,不存在此图书!”输入 2 进入图书查询输入 5 查询图书借阅信息输入 w成功则输出借阅者图书证号 归还时间15 2014010117 2014071525 20141109错误则输

7、出“不存在此图书”输入 7 进入图书归还输入 w成功则继续输入 错误则输出“此图书不存在!”输入 17成功则输出“该书归还成功!”错误则输出“你输入的图书证号不正确!请重 新操作! ”输入 2 进入图书查询输入 5 查询图书借阅信息输入 w成功则输出借阅者图书证号 归还时间15 2014010125 20141109书号 书名 作者 出版社名称 现存量 总存量1 w e g 3 6错误则输出“不存在此图书”输入 0 退出系统成功则输出“谢谢使用”2、概要设计所用数据结构:线性表、查找、排序借阅者的存储结构体数据类型是无表头单链表。typedef struct User /借阅者的存储结构体in

8、t number; /借书证号码int limitdate; /归还时间struct User *next; /下一个借阅者User; /定义用户的的信息图书信息的存储结构是带表头单链表。typedef struct int num; /图书的书号char name20; /书名char author20; /著者char press20; /出版社名称int left; /现存量int count; /总存量User *user; /借阅该书的人ElemType; /定义书的信息typedef struct LNode /定义单链表结点类型ElemType data;struct LNode

9、 *next; LinkList;主程序流程以及各程序模块之间的调用关系:N Y 重新输入 主程序模块图书管理系统借阅者信息模块图书信息的录入添加图书信息的查询模块图书信息的排序模块图书信息的修改模块图书信息的删除模块图书的借阅模块图书的归还模块退出图书管理系统开始输入功能所对应的数字输入的数字小于 0 大于 7执行所选功能1.图书信息录入功能YYN 2.图书查询功能YN1. NY输入需要录入的图书信息的个数 n循环输入 n 个图书信息是否有此图书向系统录入此书信息选择查询方式输入的数字小于 0 大于 6执行所选功能按书号查询遍历书库查找输出书本信息不存在此书2.NY3. NY4.NY按作者查

10、询遍历书库查找输出书本信息不存在此作者的书按书名查询遍历书库查找输出书本信息不存在此书按出版社查询遍历书库查找输出书本信息不存在此作者的书5.NY6.3.图书排序功能4.图书修改N Y5.图书删除N Y返回查询图书借阅信息遍历书库查找输出借阅信息不存在此书按书号递增有序排序(直接插入排序法)输入书名遍历书库查找修改书本信息不存在此书输入书名遍历书库查找删除书本信息不存在此书6.图书借阅 NYYN7.图书归还NYN Y3、详细设计原理:图书管理系统要求实现许多的功能。将软件的设计任务分成许多小的功能模块进行设计。本程序经过分析分成以下几个子任务:图书信息录入、图书信息的查询、图书信息的排序、图书

11、信息的修改、图书信息的删除、图书的借阅、图书的归还、退出图书管理系统。输入书名遍历书库查找登记信息不存在此书是否可借 借出失败输入书名遍历书库查找注销信息归还不存在此书是否借过此书 归还失败伪码算法:主程序:(1)创建单链表 L,分配内存并置空;(2)输出选择菜单;(3)输入选择操作数 s;(4)Switch(s)执行所选操作;图书录入功能:(1)输入需要录入的图书信息的个数 n;(2)For(i=1;inext)(1)输入 k(与 t 对应);x=0;(2)While(若原单链表中有数据结点)if(k 不等于 p 的 t)p 指向下一个结点;else 输出 p 的信息为所找信息并指向下一个结

12、点,x+;Endwhile(3)if(p 为空 查询图书借阅信息:(1)输入 k(书名);p=L-next;x=0;(2)while(p 不为空)if(k 不等于 p 的书名)p 指向下一个结点;else user 指向 p 的第一个借阅者信息结点;for(;user 不为空;user 指向下一个结点)循环输出借阅者图书证号和归还时间x 加 1;p 指向下一个结点;Endelse Endwhile(3)if(p 为空图书排序功能:(直接插入排序法)(1)p 指向 L 第一个数据结点;(2)if(若原单链表中有数据结点)r 保存*p 结点直接后继结点的指针;p 后继指针置空,构造只含一个数据结点

13、的有序表 L;While(r 不为空)将 r 中的结点按递增顺序插入 L 中;EndwhileEndif图书修改功能:(1)输入 k(书名);p 指向 L 第一个数据结点;(2)While(若原单链表中有数据结点)if(k 等于 p 的书名)p 修改信息并返回;p 指向下一个结点;Endwhile;(3)输出图书不存在;(4)返回;图书删除功能:(1)输入 k(书名);p 指向 L 第一个数据结点;q 指向 p 前驱结点;(2)while(p 不为空(3)if(p 不是最后的结点)q 指向 p 的下一个结点,删除成功 ;(4)if(p 是最后的结点(5)else q 下一个结点置空,删除成功;

14、图书借阅功能:(1)输入 k(借阅书名);p 指向 L 第一个数据结点;(2)while(p 不为空(3)if(p 是最后的结点(4)else if(p 书现存量小于 1)此书已借完!;(5)else 注册借阅者信息结点 s(图书证号和归还日期) ;if 1(p 图书尚无人借阅)借书成功;p 结点的借阅者信息结点保存 s;现存量减 1;else 1u 保存 p 结点的第一个借阅者信息结点;while(u 不为空if 2(u 为空u 下一个结点结点保存 s;现存量减 1;else if(u 的图书证号等于 s 的图书证号)不能够重复借;Endelse 1Endelse图书归还功能(1)输入 k(

15、归还书名);p 指向 L 第一个数据结点;(2)while(p 不为空(3)if(p 是最后的结点(4)else if(k 等于 p 的书名)输入图书证号 n;user 指向 p 的第一个借阅者信息结点;if 1(n 等于 p 的第一个借阅者信息结点的图书证号)归还成功;p 的第一个借阅者信息结点指向下一个结点 ;现存量加 1;else 1while(user 后继指针不为空 user 指向下一个结点;Endwhileif(user 的图书证号等于 n)归还成功;pre 的第一个结点指向 user 的下一个结点; 现存量加 1;else 输入图书证号不正确,重新操作;Endelse 1Ende

16、lse函数调用关系图mainSwitch() ()CreateListR(L)Search(L)Sort(L);Display(L);ModifyList(L);ListDelete(L);Borrow(L); Return(L);InitList(L)InUserMess(user)4、调试分析(一) 问题:录入图书信息后,输出图书信息时有些项目输出乱码。采取的措施:检查代码在输入语句中,定义为 int 型的项目在输入语句中加上取地址符号“&”。(二)问题:添加图书信息,虽然显示“录入成功!” ,但是实际上并没有与之前已经存在的图书信息存放在一起。采取的措施:修改录入添加图书信息的算法,修改

17、结点的指向,使之后添加的图书信息与之前已经存在的图书信息存放在一起。(三)问题:多个借阅者借阅同一本图书,借阅成功后查询该书借阅者信息,发现只有最新的借阅者信息。采取的措施:修改借阅信息插入算法,修改结点指针指向,使之不会有旧结点被新结点覆盖的情况发生。算法时空分析基本操作 时间复杂度CreateListR(L) O(n)O(mn)Search(L) O(n)Sort(L) O(n)O(n2)Display(L) O(n)ModifyList(L) O(n)ListDelete(L) O(n)Borrow(L) O(n)Return(L) O(n)由上表知除录入和排序函数,其它函数的时间复杂度

18、都是 O(n),但录入函数是受录入图书信息个数 m 影响,因此在录入一种书的信息时的时间复杂度也是 O(n);此外排序函数在时间复杂度 O(n)O(n2)之间仍有改进的空间,这需要算法的改进,这也是需要继续努力学习的方面。心得与体会选择了“图书管理系统”这个课题。程序的大部分函数的算法在很短的时间内就差不多写好了,可是在调试的过程中却发现了不少问题。譬如录入图书的信息后,在进行图书信息排序时有些项目的输出会出现乱码。仔细检查后才发现在录入 int 型的数据时,没有添加取地址符号。还有在信息录入的过程中,程序也出现了漏洞。添加图书信息,虽然显示“录入成功!” ,但是实际上并没有与之前已经存在的图

19、书信息存放在一起。最后修改了录入图书信息的算法,修改了结点的指向,使之后添加的图书信息与之前已经存在的图书信息存放在一起。多个借阅者借阅同一本图书,借阅成功后查询该书借阅者信息,发现只有最新的借阅者信息。修改借阅信息插入算法,修改结点指针指向,使之不会有旧结点被新结点覆盖的情况发生。在整个课程设计的过程中,遇到了很多困难,花费了很多时间去解决,也让我深刻体会到要圆满完成一个程序的不易。大到算法,小到一个符号,都会影响整个程序的执行状况。这也警惕我要注意细节。5、用户使用说明开发软件环境:操作系统为 XP开发环境软件为 Ms visual C+6.0开发语言为 C 语言程序运行说明:登入界面后输

20、入 0-7 选择需要执行的操作;选择 1 图书录入则输入需要录入的图书信息的个数 n,然后依次录入图书信息,输出录入成功即可继续;选择 2 图书查询输入 0-6 选择需要执行的操作;选择 1 按书号查询 输入书号即可 成功则输出该书信息;选择 2 按书名查询 输入书名即可 成功则输出该书信息;选择 3 按作者查询 输入作者即可 成功则输出书库中该作者的所有著作;选择 4 按出版社查询 输入出版社即可 成功则输出书库中该出版社出版的所有书籍;选择 5 查询图书借阅信息 输入书名即可 成功则输出该书当前所有借阅者的信息(图书证号和归还日期) ;选择 3 图书排序 程序自动将书库中的书按书号排序输出

21、;选择 4 图书修改 输入书名 成功则依次输入该书更新后的信息,成功后系统便会更新信息;选择 5 图书删除 输入书名即可 成功则在书库中注销该书的信息;选择 6 图书借阅 输入书名 成功则登记借阅者信息 输入图书证号和归还日期,若信息正确和该书现存量大于 0,则借阅成功,该书现存量减 1,并将该借阅者信息录入该书借阅信息中;选择 7 图书归还 输入书名 成功则输入图书证号 若信息正确则该书现存量加1,注销该图书证号在该书借阅信息中的信息;选择 0 退出系统。6、测试结果程序运行开始界面按照测试数据的步骤进行:选择 1.图书信息录入功能输入需要录入的图书信息个数 n=11;依次按照测试数据输入

22、11 个图书信息选择 2 图书查询功能选择 1 按书号查询输入书号 2继续选择 2 图书查询功能 选择 2 按书名查询 输入书名 c继续选择 2 图书查询功能 选择 3 按作者查询输入作者名 e继续选择 2 图书查询功能 选择 4 按出版社查询输入出版社名称 g选择 4 图书修改功能输入要修改的书名 w按照测试数据输入修改信息选择 5 图书删除功能输入要删除的书名 d选择 3 图书信息排序功能选择 6 图书借阅输入要借阅的图书 w输入图书证号 15输入归还日期 20140101重复选择 6 输入 w 17 20140715 w 25 20141109选择 2 图书查询功能 选择 5 查询图书借阅信息输入书名 w

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报