




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
西安交通大学编号学院计算机系课 程 设 计(数据结构)班 级姓 名学 号 指导教师二一三年 6 月 26 日课程设计任务书及成绩评定课题名称 图书管理系统、题目的目的和要求: 1、设计目的巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序。(1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。(2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。2、设计题目要求:设计内容:本系统应完成一下几方面的功能:输入信息enter();显示信息display( );查找以书名作为关键字 search( );删除信息delete( );存盘save ( );装入load( ) ;设计要求:1)每条信息至包含 :书名(B_NAME )作者名(B_AUTHOR)编号名(B_NO)出版社(B_PUB)馆藏量(B_SUM)2)作为一个完整的系统,应具有友好的界面和较强的容错能力3)上机能正常运行,并写出课程设计报告、成绩评定:设计成绩: (教师填写)指导老师: (签字)二一三 年 月 日目 录第一章 概述1第二章 系统分析2第三章 概要设计第四章 详细设计第五章 运行与测试第六章 总结与心得参考文献第一章 概述七个模块第二章 系统分析图书管理基本内容包括:添加,查找,删除图书信息,上述基本功能用链式存储比较方便,由于查找,删除都是以书名或电话号码为关键字进行的,因此要用到双向链表,效率高,以实现各种功能。由此重点和难点是双向链表的建立,查找,删除等基本操作。图书管理软件,通过各种接口函数完成对图书的添加,查找,删除,看似简单,实际实现起来,还是有点困难,关键是要考虑到各种情况程序执行时的命令:本程序为了使用时的方便,采用菜单式的方式来完成程序的演示,几乎不用输入什么特殊的命令,只需按提示输入选者即可。界面友好,适合用户使用习惯。测试数据。在我的这个图书管理软件中;基本函数有dlink *enter(dlink *h);/ 输入图书信息函数int menu_select();/菜单选择函数dlink *add(dlink *h);/增加读者信息函数void search(dlink *h) ;/查找图书函数dlink *deletebyB_name(dlink *h);/ 以书名为关键字删除dlink *deletebyno(dlink *h) ;/以图书编号为关键字删除void output(dlink *h);/ 输出图书信息函数void searchbyB_name(dlink *h) /按书名查找void searchbyno(dlink *h) /按编号查找void save(dlink *h) /保存图书信息到文件详细分析:1.通过dlink *creatlist()dlink *head,*p,*r;p=new dlink;head=p;r=head;p-Rlink=NULL;return head; / 创建双向链表2.通过dlink *enter(dlink *h)函数输入图书信息3.通过调用void search(dlink *h)函数选择是以书名还是编号方式进行查找,分别调用函数void searchbyB_name(dlink *h),void searchbyno(dlink *h)完成相应功能。3.调用函数dlink *add(dlink *h)增加图书详细。4.通过调用dlink *deletebyB_name(dlink *h),dlink *deletebyno(dlink *h),分别以书名,电话号码为关键字进行删除。5.调用void output(dlink *h)函数输出所有图书信息6.调用void save(dlink *h)函数保存图书信息。第三章 概要设计1.数据结构设计:添加,查找,删除图书信息,用链式存储比较方便,由于查找,删除都是以书名或电话号码为关键字进行的,因此要用到双向链表,效率高,以实现各种功能。由此重点和难点是双向链表的建立,查找,删除等基本操作。2.算法的设计:本系统从整体上分为7大模块: (1)输入图书信息(2)查找图书信息 /根据指定关键字进行相关查找(3)显示图书信息 /显示所有图书信息(4)增加图书信息 /向图书管理中增加图书信息(5)删除图书信息 /根据指定关键字删除图书信息(6)存储图书信息 /存储图书管理中的图书信息(7)退出程序 3.功能模块图:图书管理系统输入图书信息继续输入退出输入显示图书信息查找图书信息按书名查找按编号查找增加图书信息删除图书信息按书名删除按编号删除存储图书信息 图3.1 系统功能模块图2第四章 详细设计程序源代码为:#include#include#include#include#include #include using namespace std;unsigned int num=0;struct informationstring B_name;string B_author;string B_no;string B_pub;string B_sum;struct information a120;typedef struct doublelink /定义struct information data;struct doublelink *Llink,*Rlink;dlink;dlink *enter(dlink *h);dlink *insert(dlink *h) ;int menu_select();dlink *add(dlink *h);void search(dlink *h) ;dlink *deletebyB_name(dlink *h);dlink *deletebyno(dlink *h) ;void output(dlink *h);dlink *creatlist()dlink *head,*p,*r;p=new dlink;head=p;r=head;p-Rlink=NULL;return head;/*dlink *enter(dlink *h) /创建 dlink *head,*r,*p,*q;head=h;r=h;q=h-Rlink;system(cls);/新建用户信息p=new dlink;coutntt* 请输入图书信息 *endl;cout请输入书名:p-data.B_name;cout请输入作者名: p-data.B_author;cout请输入编号名: p-data.B_no;cout请输入出版社: p-data.B_pub;cout请输入馆藏量名: p-data.B_sum;p-Rlink=NULL;while(q!=NULL)r=q;q=q-Rlink;p-Llink=r;r-Rlink=p;r=p;num+;char z;cout 是否要继续插入新图书信息? (Y/N):z;if(z=y)|(z=Y)head=insert(head);return head;/*dlink *insert(dlink *h) /插入新用户信息 dlink *head=h;if(num=0) coutnt图书管理中没有任何图书信息,确认要添加吗?(Y/N)z;if(z=y)|(z=Y)head=add(head);else ;elsehead=add(head);return head;/*dlink *add(dlink *h)dlink *head,*r,*p,*q;head=h;r=h;q=h-Rlink;system(cls);/新建用户信息p=new dlink;coutntt* 请输入图书信息 *endl;cout请输入书名:p-data.B_name;cout请输入作者名: p-data.B_author;cout请输入编号名: p-data.B_no;cout请输入出版社: p-data.B_pub;cout请输入馆藏量名: p-data.B_sum;p-Rlink=NULL;while(q!=NULL)r=q;q=q-Rlink; /whilep-Llink=r;r-Rlink=p;r=p;num+;char z;cout 是否要继续插入新图书信息? (Y/N):z;if(z=y)|(z=Y)head=insert(head);return head;/*void searchbyB_name(dlink *h) /按书名查找if(num=0)coutnt当 前 通 讯 录 没 有 任 何 联 系 人 信 息!endl;coutnttt*无法执行查找操作!*endl;coutRlink;int i,j=1,k=1,mark=0;system(cls);cout请输入要查找的图书书名: nam;for(i=k;iRlink)while(p&p-data.B_name!=nam)q=p;p=p-Rlink;j+;if(p)cout您要查找的图书信息为:endl;cout*endl;coutnt书名: data.B_nameendl;coutnt作者名: data.B_authorendl;coutnt编号名: data.B_noendl;coutnt出版社: data.B_pubendl;coutnt馆藏量: data.B_sumendl;cout*endl;coutRlink=NULL)coutnt已无重名信息endl;coutnt您是否继续下一个查找?(Y/N)z;if(z=y)|(z=Y)search(head);else break;if(p=NULL)if(mark=1)if(q-data.B_name!=nam)coutnt已无重名信息endl;coutnt您是否继续下一个查找?(Y/N)z;if(z=y)|(z=Y)search(head);else break;elsecoutntt搜索的图书不存在!endl;coutendl;coutnt您是否继续下一个查找?(Y/N)z;if(z=y)|(z=Y)search(head);else break;/for/else/wai/*void searchbyno(dlink *h) /按电话号码查找if(num=0)coutnt当 前 通 讯 录 没 有 任 何 联 系 人 信 息!endl;coutnttt*无法执行查找操作!*endl;coutRlink;int j=0,k=1;system(cls);cout请输入要查找的图书电话号码: booknum;while(p&p-data.B_no!=booknum)q=p;p=p-Rlink;j+;if(p)cout您要查找的图书信息为:endl;cout*endl;coutnt书名: data.B_nameendl;coutnt作者名: data.B_authorendl;coutnt编号名: data.B_noendl;coutnt出版社: data.B_pubendl;coutnt馆藏量: data.B_sumendl;cout*endl;coutendl;else coutntt搜索的图书不存在!endl;coutendl;coutnt您是否继续下一个查找?(Y/N)z;if(z=y)|(z=Y)search(head);else ;/else/wai/*void search(dlink *h)dlink *head;head=h;int choic;coutntt1-按图书编号查找 2-按书名查找;coutchoic;switch (choic)case 1:searchbyno(head);break;case 2:searchbyB_name(head);break;/*dlink *deletebyB_name(dlink *h) /按书名删除dlink *head,*p,*q;if(num=0) coutntt当 前 通 讯 录 没 有 任 何 联 系 人 信 息!endl;coutntttt删除操作无法执行!Rlink;system(pause);system(cls);cout请输入要删除的图书书名: nam;for(i=k;iRlink)while(p&p-data.B_name!=nam)q=p;p=p-Rlink;j+; /whileif(p) /waiifcout您要删除的图书信息为:endl;coutweiyuj+1weizhiendl;cout*endl;coutnt书名: data.B_nameendl;coutnt作者名: data.B_authorendl;coutnt编号名: data.B_noendl;coutnt出版社: data.B_pubendl;coutnt馆藏量: data.B_sumendl;cout*endl;char z;cout您确定要删除该图书信息吗?(Y/N)z;if(z=y)|(z=Y)if(num=1)p-Llink-Rlink=NULL;free(p);num-;elseif(p-Llink=head) p-Rlink-Llink=head;p-Llink-Rlink=p-Rlink;free(p);num-;else if(p-Rlink=NULL)p-Llink-Rlink=NULL;free(p);num-;else p-Rlink-Llink=p-Llink;q-Rlink=p-Rlink;free(p);num-;coutntt已删除成功!endl;break;/*char s;coutn您是否继续删除相同书名的图书?(Y/N)s;if(s=y)|(s=Y)continue;else break;*/else coutnt已放弃删除!endl;/有问题char d;coutn您是否继续删除相同书名的图书?(Y/N)d;if(d=y)|(d=Y)continue;else break;/waiifelse cout没有此图书信息endl;char a;coutn您是否要继续删除?(Y/N)a;if(a=y)|(a=Y)head=deletebyB_name(head);elsebreak;/for/elsecoutendl;return head;/wai/*dlink *deletebyno(dlink *h) /按电话号码删除dlink *head,*p,*q;if(num=0) coutntt当 前 通 讯 录 没 有 任 何 联 系 人 信 息!endl;coutntttt删除操作无法执行!Rlink;system(pause);system(cls);cout请输入要删除的图书编号: booknum;while(p&p-data.B_no!= booknum)q=p;p=p-Rlink;j+; /whileif(p) /waiifcout您要删除的图书信息为:endl;cout*endl;coutnt书名: data.B_nameendl;coutnt作者名: data.B_authorendl;coutnt编号名: data.B_noendl;coutnt出版社: data.B_pubendl;coutnt馆藏量: data.B_sumendl;cout*endl;char z;cout您确定要删除该图书信息吗?(Y/N)z;if(z=y)|(z=Y)if(num=1)p-Llink-Rlink=NULL;free(p);num-;elseif(p-Llink=head) p-Rlink-Llink=head;p-Llink-Rlink=p-Rlink;free(p);num-;else if(p-Rlink=NULL)p-Llink-Rlink=NULL;free(p);num-;else p-Rlink-Llink=p-Llink;q-Rlink=p-Rlink;free(p);num-;coutntt已删除成功!endl;char a;coutn您是否要继续删除?(Y/N)a;if(a=y)|(a=Y)head=deletebyno(head);else ;else coutntt已放弃删除!endl;char a;coutn您是否要继续删除?(Y/N)a;if(a=y)|(a=Y)head=deletebyno(head);else ; elsecoutnt没有此图书信息endl;char a;coutnn您是否要继续删除?(Y/N)a;if(a=y)|(a=Y)head=deletebyno(head);else ;coutendl;return head;dlink *dele(dlink *h)dlink *head;head=h;int choic;coutntt1-按编号删除 2-按书名删除;coutchoic;switch (choic)case 1:head=deletebyno(head);break;case 2:head=deletebyB_name(head);break;return head;void output(dlink *h) / 输出dlink *p;if(num=0)coutntt当 前 通 讯 录 没 有 任 何 联 系 人 信 息!endl;coutnttt*无法执行显示操作!*Rlink;system(pause);system(cls);coutntt输出所有图书的信息:endl;coutnttt当前图书管理共有num个图书信息endl;for(i=1;i=num;i+)coutnttt第 i个图书信息为:endl;cout*endl;coutnt书名: data.B_nameendl;coutnt作者名: data.B_authorendl;coutnt编号名: data.B_noendl;coutnt出版社: data.B_pubendl;coutnt馆藏量: data.B_sumendl;cout*Rlink;coutendl;int menu_select()int b;cout*(o)欢迎使用图书管理软件 请按任意键进入主菜单! (o)*endl;getch();system(cls);couttt*WELCOME TO USE THIS SOFTWARE *endl;couttt*图书管理软件*endl;couttt* COPYRIGHT 2011 *endl;couttt*DESIGNED BY DaiJunYou O (_)O哈哈 *endl;couttt* MENU *endl;coutntt1: 输入图书信息endl;coutntt2: 查找图书信息endl;coutntt3: 显示图书信息endl;coutntt4: 增加图书信息endl;coutntt5: 删除图书信息endl;coutntt6: 存储图书信息endl;coutntt7: 退出本程序endl;for(;)coutn*Please make your choice(17)* endl;coutb;if(b7)continue;elsereturn b;break;int WriteLinklistToFile(const char* strFile, dlink *h)FILE *fpFile;dlink *head = h;dlink *p;p=head-Rlink;if(!(fpFile = fopen(strFile,w)/以写的方式打开printf(Open file failedn);return 0;while(p)fprintf(fpFile,%st%st%st%st%st%stn,p-data.B_name,p-data.B_author,p-data.B_no,p-data.B_pub,p-data.B_sum);p=p-Rlink;fclose(fpFile);return 1;void save(dlink *h) cout暂不支持 很快会解决endl;exit(0);dlink *head;head=h;int a;char* strB_name = test.txt;a=WriteLinklistToFile(strB_name, head);void main() dlink *head;head=creatlist();system(cls);for(;)switch(menu_select()case 1:head=enter(head);break;case 2:search(head);break;case 3:output(head);break;case 4:head=insert(head);break;case 5:head=dele(head);break;case 6:save(head) ;break;case 7:exit(0);第五章 运行与测试程序测试数据及执行流程如下系列截图:图书管理总界面,如图5.1所示,只需用户作出相应选择即可。图5.1 图书管理总界面17可以任意选而不会停止工作,容错能力较强,在输入过程中,摁下任意键便会进入总界面。现在我们开始测试程序,输入“1”,如图5.2所示。图5.2 输入图书界面(1)输入“Y”继续输入图书信息,我们输入其他三组数据如图5.3,5.4,5.5所示。图5.3 输入图书界面(2) 图5.4 输入图书界面(3) 图5.5输入图书界面(4)输入“3”,则显示所有的图书信息,如图5.6所示。 图5.6 显示图书界面图5.7 选择查找图书方式界面输入“2”后,显示界面如图5.8所示图5.8 按书名查找图书方式界面假设输入“shujujiegou”,如图5.9所示。图5.9 查找书名为“g”的图书界面输入“N”则退出查找。输入“Y”则继续查找。现在我们选择“Y”。仍以书名为关键字进行查找,输入“2”,然后输入有重名的“d”。显示结果如图5.10,5.11所示。图5.10 查找书名为“d”的图书界面(1)图5.11 查找书名为“d”的图书界面(2)现在我们测试删除功能 接上选N 回主菜单。输入“5”,如图5.12所示图5.12 选择删除图书方式界面输入“2”则按书名删除,如图5.13所示。图5.13 删除图书界面输入“Y”则成功删除,如图5.14所示。输入“N”则放弃删除图书。图5.14 成功删除图书界面图5.15 放弃删除图书界面若无该图书书名,则会出现如图5.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 老师入职培训心得体会
- 2025年大学生实验室安全与环保知识竞赛试题库及答案
- 技术研讨会会议纪要范本-会议纪要
- 2025年消毒员三级试题及答案
- 2025年急救理论知识考试试题(含答案)
- 2025年120驾驶员抢救试题(及答案)
- 2025版心肺复苏指南解读试题及答案
- 2025年邯郸科技职业学院单招职业技能测试题库带答案(突破训练)
- 溶剂发酵工技能巩固考核试卷及答案
- 钢水喂丝控制项目可行性研究报告
- 2025年中国物流集团国际物流事业部招聘面试经验及模拟题集
- 乡镇安全培训课件
- 2025年航空业面试者必看航空公司招聘笔试预测试题及答案
- 中望CAD机械版使用手册
- 2024年9月28日安徽省地市级遴选笔试真题及解析
- GB/T 33009.2-2016工业自动化和控制系统网络安全集散控制系统(DCS)第2部分:管理要求
- GB/T 14534-1993电磁吸盘
- GA/T 718-2007枪支致伤力的法庭科学鉴定判据
- 装备制造业研究报告
- 【课件】第6课 西方的文官制度 课件高中历史统编版(2019)选择性必修一国家制度与社会治理
- 进场人员、机械、材料报审表
评论
0/150
提交评论