版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件综合课程设计广义表的应用图书借阅管理系统二一四 年 六 月广义表的应用一、问题陈述由于广义表在结构上较线性表复杂得多, 因此,广义表的运算也不如线性表 简单。本设计要求实现的广义表的建立、查找、输出、取表头和取表尾以及求深 度、求逆表等。本设计用一个主控菜单程序控制,共分为 6 个子系统。(1)建立广义表(2)输出广义表(3)结点的查找(4)求广义表表头(5)求广义表表尾(6)求广义表的深度需求分析1. 菜单函数使用数字 0-6 来选择菜单项,超出此范围时,提示输入错误,并重新输入。 运行程序时,先输入一个广义表,回车后,调用各功能函数,则出现功能菜单, 输入的一个数字,该数字用 sn 存
2、储,使用 choose()接受数字输入,该函数的 返回值提供给主函数;则主函数使用 while 循环实现重复选择,以实现不同的广 义表菜单功能。2. 主函数 包含的功能函数有:输出广义表、广义表深度、广义表表头、广义表表尾、 广义表查找、广义表逆置 6 个函数。运行程序时,首先执行主函数,根据提示, 建立广义表,广义表中的元素应单独输入,每输入一个字符,回车,广义表输入 完成时,应再次输入“) ”,表示输入结束,这是由于 CreateGList 函数递归的原 因,回车,此时调用 choose()函数,出现功能菜单,提示用户进行相关操作, 进入任一操作,通过 switch( choose()对用
3、户所输入的信息进行匹配,匹配 后调用相关的子函数,从而实现各项函数的功能。3. 创建广义表函数 函数中,先定义一个整型数据 i=0 和一个数组 a10,构建时,先输入一个字 符,如果输入字符的是 #,则广义表为空,否则输出第一个左括号。接下来的 元素项如果是子表,则递归调用 CreateGList(),若是原子,则直接输出,并将输 入的数据保存在数组 ai 中,同时 i+,然后继续输入保存用户所输入的数据, 若 是,则递归调用 CreateGLis(t )函数,继续执行第一步,当遇到) 时, 结束。4. 广义表的输出 此函数实现的是输出功能,它直接关联到后面的取表头、表尾运算。函数中, 分为原
4、子和子表,若是子表,则利用头结点指针,递归输出子表。若是原子,则直 接输出该原子的数值。然后判断下一结点是否为空,不为空则输出“, ”,继续递归 输出,执行上一步的操作。5. 结点的查找运行时,输入要查找的元素,将该元素与数组中的元素进行比较,若相等,则 查找成功,输出此元素的位置信息,当查找超出范围时,输出查找失败信息。6求广义表的表头表头分为子表和原子。当表头为子表时,先输出左括号,再通过递归调用依次 输出表头,最后输出右括号。当表头为原子时,直接输出原子数值。7. 求广义表的表尾 若广义表非空,则广义表中除去表头后其余元素构成的子表为表尾。函数中, 定义指针 p 、q, q 用于指向广义
5、表表头, q-next 为广义表表尾,并赋值给 p,因 p 也是广义表,则可调用广义表输出函数 PrintGList(),输出表尾。8. 广义表的逆置 逆置即将表头和表尾倒置,因此算法中,先后调用取表尾函数和取表头函数, 先输出表尾,再输出表头,以此实现逆置功能。9. 广义表的深度广义表深度的递归定义式: 它等于所有子表中表的最大深度加 1。若一个表为空, 则深度为 1。定义 dep 表示任一子表的深度, max 为所有子表中的最大深度,则广 义表的深度为 max+1。函数中,当广义表 L为空表或由单元素组成时, 不进行递归调用,返回 1;否则, 当广义表含有子表时,利用头结点指针,递归求出深
6、度,将最大深度的子表的 dep 赋值给 max,返回 max+1 即为广义表深度。三、概要设计程序的开始, 先定义广义表的结点类型, 采用枚举类型区分原子 ATOM和子 表 LIST。采用联合体定义原子结点的值域 atom 和表头指针域 hp 。再输入一个广 义表,在程序中可以定义一个数组用来存放广义表中的关键字。 编写各个功能函 数时,先了解算法的思想,绘出流程图,根据流程图进一步编写。之后编写一个 功能选择函数 choose(),并在此函数中打印运行界面,通过输入代码,来进行 不同功能的操作。 在运行界面中,通过一个 while 循环,能让用户进行循环操作, 直至退出系统。四、详细设计1.
7、 菜单函数int choose()int sn;coutcout广义表的应用endl;cout1.广义表输出2.结点的查找endl;cout3.广义表表头4.广义表表尾endl;cout5.广义表逆置6.广义表深度endl;cout0. 退出系统endl;2.主函数int main()endl;coutendl;cout请输入代码 0 6: sn;if( sn 6) coutendl 输入错误, 重选 06: endl;elsebreak; return sn;GList *L; char ch;printf( 建立广义表,结束请多输一个右括号! n); CreateGList(&L); 建广
8、义表函数: CreateGLis(t )void CreateGList(GList *L) void PrintGList(GList *L)义表输出函数 PrintGList() 广义表查找函数 Locate()void Locate(GList *L,char ch) 义表取表头函数:void GListHead(GList *L) void GListTail(GList *L) void TraverseList(GList *L) int GListDepth(GList *L)义表取表尾函数 义表逆置函数 TraverseList() 广义表求深度函数义表输出2.结点的查找end
9、l;cout3.广义表表头4.广义表表尾endl;cout5.广义表逆置6.广义表深度endl;cout 0.退出系统endl;coutendl;cout 请输入代码 0 6: sn; if( sn 6) coutendl 输入错误,重选 0 6: endl; elsebreak;return sn;int main()GList *L;char ch;printf( 建立广义表,结束请多输一个右括号! n); CreateGList(&L); 立广义表2. 输出广义表3. 结点的查找4. 求广义表表头5. 求广义表表尾6. 求广义表的逆表7. 求广义表的深度8. 退出七、设计体会与总结 此次
10、课程设计我被分配到的题目是广义表的应用, 这对我来说是个熟悉的陌 生人,因为前不久才复习过,可是没记住,只能回头再去看,经过多方面参考, 总算是勉强执行出来了,不过这中间也遇到了一些问题:1. 建立广义表时,把表一次性全部输完再回车,无限循环;经检查,是源程 序中输入算法编写的错误。2. 输入代码 1,即输出广义表,显示调试错误,经检查,是源程序中输出算 法编写的错误。3. 查找结点的时候要输入两个结点才会显示第二个结点位置;经检查,是调 用的程序中多写了一句输入语句。图书借阅管理系统一、问题陈述主要分为两大功能:1)图书管理 (增加图书、查询图书、删除图书、图书借阅、还书 );2)会员管理
11、(增加会员、查询会员、删除会员、借书信息 );二、需求分析1. 主函数 分为两个模块:图书信息和会员信息,并显示两个模块的主界面,可将图书 信息和会员信息写入和读出。2. 图书管理(1)增加图书:只需添加书的编号和书名即可,考虑到图书的信息较多,所以 用结构体对其定义,又考虑到图书量大,所以添加后要保存到文件中去。(2)查询图书:可按书名查询、按书的编号查询,也可查询所有图书信息,主 要是通过顺序查找法来实现的。(3)删除图书:输入要删除的书的编号即可,主要是把保存到文件中的内容写 到链表中去, 用链表删除结点的方法来删除, 删除时以记录为单位, 能一次删除 一条记录。(4)图书借阅:输入会员
12、编号和图书编号即可借阅,能对借出的图书作记录信 息,能一次借出一本图书。( 5)还书:输入要还的书的编号即可还,能将被借出的图书信息还原,能一次 借出一本图书。3. 会员管理(方法与图书管理类似)(1)增加会员:输入会员编号、姓名、性别即可添加。(2)查询会员:可按姓名查询,也可查询所有会员信息。(3)删除会员:输入会员编号即可删除,主要是通过把保存到文件中的内容写 到链表中去,用链表删除结点的方法来删除图书。(4)借书信息:选择“借书信息”即可显示所有读者是否借书三、概要设计图书和会员的信息的存储是建立两个带头结点的单链表, 分别用于存储图书 和会员。建立这两个链表的联系是在图书结点中设一个
13、借书人编号, 在会员结点 中设一个数组用于存会员借的书,剩下的只需按链表的操作就可以了四、详细设计1.主函数void main()FILE *fpb1,*fpb2,*fpm1,*fpm2; 书管理 endl; cout 2.会员管理 endl; cout 0.退出系统 endl;coutendl;coutm;coutendl;coutendl;if(m=1)cout图书管理endl;coutendl;cout 1. 增加图书3.删除图书 endl;cout 2. 查询图书4.图书借阅 endl;cout 0. 退 出endl;coutendl;coutn;coutendl;switch(n)c
14、ase 1:BookAdd(H); break; 加会员3.删除会员cout 2. 查询会员 4.借书信息endl;endl;cout 0. 退 出endl;coutendl;coutn;cout=ti.num=p-num;cout 成功借出! endl; cout=num)q-tk.num=0;q-max-;break;cout 还书成功! endl;coutmax=0)q-yes=0;flag=1; 员管理(1)增加会员int MemberAdd(MemberList &L) um=0;p-max=0; um=0;p-max=0; um!=0)k+;if(flag=0)cout 本 数 s
15、etw(15) 编号 setw(15) 借书时间 setw(15)endl;coutktj.numendl;flag=1;endl;cout=num=n&p-yes=0)cout 无借书记录! endl;cout= =endl;return 1;五、程序代码#include #include #include #include #include #include #include #define MAX 10 书名查询 3.查询所有图书信息 endl;cout 2. 按编号查询 0.退出endl;coutendl;coutm;cout=ti.num=p-num; cout 成功借出! endl
16、; cout=num)q-tk.num=0;q-max-;break;cout 还书成功! endl; cout=max=0)q-yes=0;flag=1; um=0; p-max=0; um=0; p-max=0; 姓名查询 cout0. 退出2. 查询所有会员信息 endl; endl;coutendl;coutm;cout=endl;switch(m)case 1:Search_MemberName(L); break; um!=0)k+;if(flag=0)cout 本 数 setw(15) 编 号 setw(15) 借 书 时 间setw(15)endl;coutktj.numend
17、l;flag=1; cout=num=n&p-yes=0)cout 无借书记录! endl; cout=endl;return 1;Book *H; 书管理 endl;cout 2.会员管理 endl;cout 0.退出系统 endl;coutendl;coutm;cout=endl; coutendl;if(m=1)cout图书管理 endl;coutendl;cout 1. 增加图书3.删除图书 endl;cout 2. 查询图书4.图书借阅 endl;cout 0. 退 出 endl;coutendl;coutn;coutendl;switch(n)case 1:BookAdd(H);
18、break; 加会员3.删除会员cout 2. 查询会员 4.借书信息endl;cout 0. 退 出 endl;endl;coutendl;coutn;coutendl;switch(n)case 1:MemberAdd(L); break; 菜单1-1 增加图书1-2 查询图书:可查询所有图书,也可按书名或编号查询查询所有图书按书号查询1-3 删除图书1-4 图书借阅1-5 还书2-1 增加会员2-2 查询会员:可查询所有会员或按姓名查询查询所有会员2-3 删除会员2-4 借书信息七、设计体会与总结由于之前其他的课程设计做的都是图书管理系统,对这个比较熟悉,所以这 次就选了差不多的图书借阅管理系统。 不过在做的过程中还是不免出现了这样那 样的问题,最
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年温州大客车从业资格证考试试题
- 2024年迪庆客运资格证考试题库下载
- 人教部编版二年级语文上册第22课《狐假虎威》精美课件
- 吉首大学《建筑设计Ⅴ》2021-2022学年第一学期期末试卷
- 吉首大学《场景设计》2021-2022学年第一学期期末试卷
- 《机床夹具设计》试卷17
- 吉林艺术学院《艺术批评写作》2021-2022学年第一学期期末试卷
- 吉林艺术学院《全媒体文案创意写作》2021-2022学年第一学期期末试卷
- 签订宴会厅协议书范本范本
- 吉林艺术学院《CG模型设计》2021-2022学年第一学期期末试卷
- 培训教学课件模板
- 系统架构师论文(经典范文6篇)
- 降低患者外出检查漏检率-品管圈课件
- 五年级上册生命安全教育全册教案
- 安全标准化安全培训试题附参考答案【考试直接用】
- 第二单元 成长的时空(知识清单)-【上好课】2024-2025学年六年级道德与法治全一册同步课堂(统编版五四制2024)
- 2024年分项、分部、单位工程验收制度范文(二篇)
- 11.20世界慢阻肺日认识你的肺功能预防控制和消除慢阻肺课件
- 【核心素养目标】人教版物理八年级上册 1.3 运动的快慢 教案
- 电子病历质控制度
- 外研版英语2024七年级上册全册单元知识清单(默写版)
评论
0/150
提交评论