




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计说明书 课程名称 数据结构课程设计 班级 11 电科1班 姓 名 张海琴 学号 设计题目 图书管理系统 一 设计题目与要求一 设计题目与要求 问题描述 设计一个计算机管理系统完成图书管理基本业务 基本要求 1 每种书的登记内容包括书号 书名 著作者 现存量和库存量 2 对书号建立索引表 线性表 以提高查找效率 3 系统主要功能如下 采编入库 新购一种书 确定书号后 登记到图书帐目表中 如果表中已有 则只将库存量增加 借阅 如果一种书的现存量大于 0 则借出一本 登记借阅者的书证号和归还 期限 改变现存量 归还 注销对借阅者的登记 改变该书的现存量 进一步完成内容 1 系统功能的进一步完善 2 索引表采用树表 3 设计内容 4 程序流程图 5 源程序 6 软件测试报告 包括所用到的数据及结果 二 概要设计二 概要设计 有八个模块 1 图书初始化 输入图书的一些信息 编号 作者 书名 数量 使有一定的库存 2 新书入库 新书采编入库 输入编号后如果有次数只需输入数量 没有则继续输入书名 作者 数量 3 添加读者信息 读者信息初始化 输入读书证号和姓名 只有输入书证号和姓名才能进行借书还书 4 借书模块 读者输入读书证号 证号存在输入要借的图书编号 不能借同一本书 如果借书数 量以达到最大也不能借书 5 还书模块 归还已借的图书 要先输入读者书证号 书证号存在继续输入要还的图书编号 图 书编号存在并且借来此书 归还成功 6 查询图书信息 7 查询读者信息 可查询读者姓名书证号 借了几本书 都是什么书和还书日期 还可以借几本书 8 退出 退出读书管理系统并保存读者和图书信息 图书管理系统 三 算法设计三 算法设计 进入系统后首先进行图书初始化 输入图书的信息 初始化之后 进入系统 显示功能列表 可选择任意系统 但在借书之前先 要输入读者信息 图书管 理模块 理 读者管 理模块 借阅操 作模块 查询操 作模块 初始化图书信 息 采编入库 输入读者信息 借书系统 还书系统 读者信息查询 图书信息查询 开始 开始 开始 输入图书 编号 名 称 作者 和图书数 量 进入系统 1 采编入库 是 否 录入图书信息 判断是否有此图书 在原有的纪录上加 上现有的图书数量 向系统中加入新纪录 开始 输入功能 所对应的 数字 错误 请重新输 入 执行所选功能 输入的数字小 于 0 大于 6 2 输入读者信息 3 借阅图书 否 是 否 是 否 开始 输入读者信息 读 者书证号 结束 输入读者书证号 判断读者是否 存在 输出次读者编号不 存在 按任意键返 回 输入要借的图书编 号 判断图书编号 是否存在 输出此图书编号不 存在 按任意键返 回 看是否还有此图书 是 是 否 是 否 4 归还图书 否 输出此书已借完 按任意键返回 看读者的借书数目 是否满了 输出借书数目已满不 能借书 按任意键返 回 看读者是否借了相 同的书 输出同一读者不能借 相同的两本书 输入归还图书的日 期 图书现有数量和库 存数量都减 1 输出读者结束成功 按任意键返回 结束 输入要还书的读者编号 判断读者编号是否 存在 是 否 是 5 查询图书信息 否 输出读者编号不存 在按任意键返回 输入读者还书编号 判断图书编号是否 存在 输出此图书编号不 存在按任意键返回 此图书编号和还书 日期等于 0 库存和现有图书数量 加 1 借书数量减 1 输出读者还书完毕 按任意键返回 结束 判断图书信息 是否为空 输出图书信息 编号 名称 作者 现有和库 存 6 查询读者信息 否 四 运行结果和调试分析四 运行结果和调试分析 图书信息初始化 结束 判断读者信息是 否为空 输出读者书证号 姓名 图书编码和还书日期 输出读者信息打印完毕 结束 同一本新书入库的运行结果图 不同的新书采编入库 采编入库后查询图书信息的运行结果图 登记读者信息 借书 借书后查询图书信息的运行结果图 借同一本书的运行结果图 借不同的书 借两本书后查询读者信息的运行结果图 还书运行结果图 还书之后再查询读者信息的运行结果图 还书后查询图书信息 退出 五 总结体会五 总结体会 虽然这次的程序是通过上网查出来的 但是通过这次的实验使我知道了图书管 理系统的流程 知道了一些以前不知道的知识 在运行程序时也遇到了一些问题 借书时只能借一本书 再借书就不能显示是借了还是不能借 把最多能借书的数量 改了一下还是不行 最后在每一个判断输出之后都加了goto END借书 就能正常借 书了 程序有点长 本来一个函数就能完成一个功能 他用了两个函数就我把自己 能改成一个的改了 借书系统比较复杂 不容易懂 和同学交流了一下自己看了看 才明白 这次的实验还让我复习了数据结构的一些知识 如数组 while语句 switch 语句 链表 还知道了如何使用system cls 清屏 还知道了strcmp是用来比较 字符串s1和s2大小的 strcpy使用来把字符串s2的值赋给s1的 这次的实验增加了我们自己动手动脑的能力 希望多做一些这样的实验 很有 意义 和现实生活结合的程序增加了我的兴趣 源代码源代码 include include include include define Max 4 typedef struct book char book num 10 char book name 20 char book writer 10 int book xy int book kc struct book next BK typedef struct borrow char borrow book num 10 char limit date 8 BO typedef struct reader char reader num 10 char reader name 10 int right BO borrow Max struct reader next RD BK h book RD h reader void Login int Menu void Init void Init book void Menu select void Insert New Book void Find Book void add reader void Print reader void Print book void Borrow Book void Return Book void Save void Save Book void Save Reader void Load void Load Reader void Load Book void Login system cls printf n n n t t n printf n n n t t t欢迎使用图书管理系统 n printf n n n t t n printf n n t t本程序制作人 学号 n n n n n n n printf n n n t t 按任意键进入系统 getch system cls int Menu 主菜单 int dm printf n t t图书管理系统主菜单 n printf n printf t0 退出系统 n printf t1 采编入库 n printf t2 登记读者 n printf t3 借阅登记 n printf t4 还书管理 n printf t5 查询图书信息 n printf t6 查询读者信息 n printf n printf 请选择相应的代码 for scanf d dm输入的数字 if dm6 printf n错误 请重新输入 else break return dm void Menu select 主菜单选择函数 for switch Menu 功能选择 case 0 system cls Save printf n n t文件保存成功 n printf n n t欢迎下次使用本系统 n getch exit 0 case 1 Insert New Book break case 2 add reader break case 3 Borrow Book break case 4 Return Book break case 5 Print book break case 6 Print reader break default printf n错误 exit 0 void Init 初始化 BK p0 printf n图书初始化开始 请输入图书信息 n包括编号 书名 数量 n p0 BK malloc sizeof BK h book p0 printf n请输入图书信息 n printf 图书编号 输入图书编号 唯一 scanf s p0 book num printf 图书名称 输入图书名称 scanf s p0 book name printf 图书作者 输入图书作者 scanf s p0 book writer printf 图书数量 输入图书数量 scanf d p0 book xy p0 book kc 开始时图书现有量和库存量相等 p0 next NULL printf n图书信息初始化完毕 按任意键继续下一步操作 n getch system cls void Insert New Book 新书入库 BK p p0 p1 p p1 h book printf n新书入库模块 n printf n请输入新书信息 n包括书号 书名 数量 n p0 BK malloc sizeof BK printf 图书编号 scanf s p0 book num while strcmp p0 book num p1 book num 0 if strcmp p0 book num p1 book num 0 此处分两种情况 若图书编号 存在 则直接进库 只须输入书的数量 printf n此编号图书已存在 直接入库 n printf 图书数量 scanf d p1 book kc p0 book kc p1 book xy p0 book kc else 若不存在 则需要输入其他的信息 然后在进行插入操作 printf 图书名称 scanf s p0 book name printf 图书作者 scanf s p0 book writer printf 图书数量 scanf d 库存数量 while p next p p next if h book NULL h book p0 此处分两种情况 链表中没有数据 head 直接指向p0处 else p next p0 此处分两种情况 链表中有数据 链表中 最后元素的next指向p0处 p0 next NULL p0 book xy p0 book kc printf n新书入库完毕 按任意键继续下一步操作 n getch system cls void add reader 添加读者 RD p0 int i printf n读者初始化开始 请输入读者信息 n包括书证号 姓名 n p0 RD malloc sizeof RD 申请新结点存储空间 h reader p0 printf n请输入读者的信息 n printf 读者书证号 scanf s p0 reader num printf 读者姓名 scanf s p0 reader name p0 right 0 for i 0 iborrow i borrow book num 0 所借图书直接置为 即没有借书 strcpy p0 borrow i limit date 0 p0 next NULL printf n读者信息初始化完毕 按任意键继续下一步操作 n getch system cls void Borrow Book 借书模块 BK p0 RD p1 char bo num 10 rea num 10 lim date 8 int i p0 h book p1 h reader printf n借书模块 n printf n请输入借书的读者书证号 scanf s rea num while p1 next NULL if p1 next NULL goto END printf n请输入你要借的书的编号 scanf s bo num while strcmp bo num p0 book num 0 if p0 next NULL goto END else if p0 book xyright Max p1 right Max printf n不好意思 借书数目已满 不能借书 n按任意键返回 goto END else if strcmp p1 borrow 0 borrow book num 0 0 for i 0 iborrow i borrow book num bo num 0 printf n抱歉 同一个读者不能同借两本相同的书 n按任意键返回 goto END else if strcmp p1 borrow i borrow book num 0 0 printf n请输入你要归还图书的日期 scanf s lim date strcpy p1 borrow p1 right borrow book num bo num strcpy p1 borrow p1 right 1 limit date lim date p0 book xy p0 book kc printf n读者编号 s借书完毕 按任意键继续下步操作 p1 reader num goto END else printf n请输入你要归还图书的日期 scanf s lim date strcpy p1 borrow p1 right borrow book num bo num strcpy p1 borrow p1 right 1 limit date lim date p0 book xy p0 book kc printf n读者编号 s借书完毕 按任意键继续下步操作 p1 reader num END getch system cls void Return Book 还书模块 BK p RD q int i j find 0 char return book num 10 return reader num 10 p h book q h reader printf n还书模块 n printf n请输入要还书的读者编号 scanf s return reader num while q next NULL if q next NULL printf n此读者编号不存在 按任意键返回 n goto end printf n请输入读者还书的编号 scanf s return book num while p next NULL if p next NULL printf n错误 此图书编号不存在 按任意键返回 n goto end for i 0 iborrow i borrow book num 0 如 果此读者借了此书 find 1 for j i jborrow j borrow book num q borrow j 1 borrow book num strcpy q borrow j limit date q borrow j 1 limit date strcpy q borrow Max 1 borrow book num 0 strcpy q borrow Max 1 limit date 0 p book xy p book kc q right printf n编号 s的读者还书完毕 按任意键继续下步操作 return reader num if find 0 printf n错误 此读者未借此书 按任意键返回 n end getch system cls void Print book 查询图书信息 BK p p h book printf n图书信息如下 n n printf 图书编号 t图书名称 t图书作者 t现有 t t库存 n while p NULL printf s t t s t t s t t d t t d n p book num p book name p book writer p book xy p book kc p p next printf n图书信息打印完毕 按任意键继续下一步操作 getch system cls void Print reader 查询读者信息 RD p int i p h reader printf n读者信息如下 n n printf 读者书证号 t t读者姓名 n printf n while p NULL printf t s t t s p reader num p reader name for i 0 iborrow i borrow book num printf t t s p borrow i limit date printf n p p next printf n读者信息打印完毕 按任意键继续下一步操作 getch system cls void Save 保存信息 Save Reader Save Book void Save Reader 保存读者信息 FILE fp reader RD p p0 p h reader if fp reader fopen Reader txt wb NULL 创建文件 进行保存 printf n文件保存失败 n请重新启动本系统 n exit 0 while p NULL if fwrite p sizeof RD 1 fp reader 1 将链表中的信息写入文件中 printf n写入文件失败 n请重新启动本系统 n p0 p p p next free p0 释放所有结点 h reader NULL fclose fp reader 关闭文件 void Save Book 保存图书信息 FILE fp book 创建文件型指针 BK p p0 p h book if fp book fopen Book txt wb NULL 创建文件 进行保存 printf n文件保存失败 n请重新启动本系统 n exit 0 while p NULL if fwrite
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 药材补品销售方案(3篇)
- 建筑外墙保温系统施工技术规范
- 2025年PA尼龙塑料行业研究报告及未来行业发展趋势预测
- 2025年电力监测仪行业研究报告及未来行业发展趋势预测
- 2025年电阻焊行业研究报告及未来行业发展趋势预测
- 2026届山东省枣庄市薛城区临城化学九年级第一学期期末达标检测试题含解析
- 荆州历史考试题目及答案
- 西方文学自考试题及答案
- 生物历史中考试题及答案
- 音乐总监考试题及答案
- 电动机智能运维与健康管理
- 义务教育信息科技课程标准(2022年版)解读
- 空调维保项目进度保障计划
- 大脑动脉狭窄脑梗死的护理查房
- T-GDPIA 21-2020 高转速高转矩同向双螺杆挤出机
- 最常用2000个英语单词-电子表格版
- 老年人常见疾病预防知识讲座
- 《解决方案营销》节选版
- 流感传染的预防与护理知识培训课件
- 秋季慢性病知识讲座
- 2024年全国高考体育单招考试语文试卷试题(含答案详解)
评论
0/150
提交评论