免费预览已结束,剩余21页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计题目课程设计题目 题目 图书管理系统 日期 2011 6 25 年级 大二 班级 计科 0903 班 姓名 张闲臻 刘晓 李子清 夏广 夏玲玲 学号 一 实习目的 通过实习 了解并初步掌握设计 实现较大系统的完整过程 包括系统分析 编码设计 系统集成 以及调试分析 熟练掌握数据结构的选择 设计 实现以及 操作方法 为进一步的应用开发打好基础 二 问题描述 简单的模拟学校图书管理系统 功能比较简单 容易上手 借书步骤如下 图书入库 学生注册 学生借书 查看图书馆图书信息 查看学生信息 还书管理 再查看图书和学生信息 退出图书管理系统 三 需求分析 需求提出 各大高校都有图书馆 每个学校的图书管理系统可能都不会完 全相同 但大致主要功能还是差不多的 好的图书管理系统当然既方便学生借 阅书籍 也方便学校图书的管理 需求描述 作为大学生 我们也都很清楚怎么去图书馆借书 1 首先 当然是要保证图书馆有书 在这个程序中 我们可以理解为图书 的采编入库 得保证学生有书借才行 2 图书馆已经有各式的书了 如果你需要借 则先应该在学校的图书管理 系统中注册才行 至少的确认你是该校的学生才有资格的 其实就是一 个通行证 3 接下来就是借书的过程了 4 借了书最后还是要还的 所以还有一个还书的过程 四 概要设计 系统用到的抽象数据类型定义 从整个管理系统来看 我们知道这里主要有两个对象 一个是图书馆的图书 另一个就是学生 这里这两个对象不单单是作为简单的主体存在 他们都有很多功能 所以我们使用结构体来定义这两个 1 图书结构体的定义 typedef struct char number 10 书号 char name 20 书名 char author 20 作者 int countbook 库存 int shY 剩余量 mbook typedef struct int count 书的本数 mbook book 100 最大可有 100 本书 mlibrary mlibrary library 2 学生结构体 typedef struct 学生系统 char account MAXCOUNT 学生帐号 char name 10 学生姓名 book borrow book MAXNUM 所借书目 书号 int borrownum 借书数目 stu typedef struct int u 用于记录已注册的学生数目 stu z w 最大学生 数 可以有 1000 人 Wstudent Wstudent student 系统中子程序及功能要求的说明 1 void putin 图书的采编入库 为了给学生提供较好的学习资源 我们可以采编多种类型的图书 而且每种类型 的书籍可以入库一定数量 方便广大学生借阅 2 void Regist 学生注册信息 在借阅之前 通常要有身份识别 主要是为了学校管理各种书籍借出 能够统一规 则管理整个借书于还书的过程 3 void borrow 借书的方法 其实整个程序的主要目的就是学生借书 学生通过自 己注册的唯一编号借阅图书馆在馆的图书 而且每个学生最多只能借 8 本 4void lent 还书的方法 借了书之后 在一定的时间内必须要归还 书是图书馆的 不是某个人的 不能总是占有它 当然也是从大众利益出发 5 void lookStu 查看学生信息 不管你是借了还是没有借书 只要你注册了 就会有你 的信息 包括你的借阅号 姓名 所借书籍书证号 借阅的书的数目 还书日期等 6 void save student 保存学生信息 如果只是你单方面的注册 而并没有将 你的所有信息保存起来 那就等于你没有注册 如果你注册过了 借书时 没有保 存 那就是说图书馆的系统并不承认你借过书 7 void readStu 读取学生信息 看上去好像和查看学生信息类似 其实完全 不同的过程 这是一个将学生的有关信息保存在文件中的过程 这个过程是我们视 觉上感觉不到的 这和保存学生 8 void lookup 查询图书信息 这个类似于查询学生信息的方法 都是将从文 件中读取的信息打印出来 9 void save 保存图书信息的方法 也就是将所有图书的信息记录在文件中 比如每次入库了多少图示 是哪些图书 数量是多少 或者是借出去一些后那些图 书的现有量是多少等相关的信息 10 void readBook 读取图书信息 这个跟读取学生的信息道理是一样的 只有 将学生的所有信息读取得内存中 我们才能得到完整的图书信息 各程序模块之间的调用关系 从上面每个方法差不多也可以知道每个方法之间的关系了 入库之前 我们也需 要将已经入库的图书和已经注册好的学生信息读取到内存中 以便后面的操作 入库 图书后 需要 void save 之后还要 void readBook 也就是更新图书信息 学生注册和图书入库的道路是一样的 注册之后 需要保存 再读取到内存中 也就是及时更新信息 借书和还书的过程都是将图书和学生联系起来 每次借书时都需要同时更新图书 的信息和学生的信息 借了书后 学生的记录中应该保存了他所借的书证号以及要还 书的日期 而此时图书的信息也要相应的改变 借出后图书的数量或书目上要体现出 来 还书也是如此 成功还书后 学生信息和图书信息也都要更新 就用到了对学生和图 书的信息的保存和读取 五 详细设计 图书管理系统的伪码描述如下 保存图书信息的算法 fp fopen library doc w 打开文件 if fp NULL printf n 不能保存图书信息 n return fwrite 读取 sizeof int 个数据到文件中 fwrite library book sizeof library book 0 library count fp 从文件中读取图书信息 fp fopen library doc r 打开文件 if fp NULL printf n 不能打开图书信息 n return fread 从文件中读取 sizeof int 个数据到 library 中 printf 图书数量 library count fread library book sizeof library book 0 library count fp 图书信息入库 while y scanf s num strcpy library book library count number num scanf s library book library count name scanf s library book library count author scanf d library book library count shY library book library count countbo ok library count 每次新书入库 要将图书的全部信息记录 查看所以图书信息 for i 0 i library count i printf s t s t s t d t d n library book i number library book i name library book i author library book i shY library book i countbook 遍历图书的种类 将其打印出来 保存学生信息 fwrite 从学生信息中 读取 sizeof int 个 学生结构体类型数据信息保存到文件中 fwrite student z sizeof student z 0 student u fp 读取学生信息 fread fread student z sizeof student z 0 student u fp 借书管理 scanf s bnum 选择要借的书籍序列号 strcpy student z i borrow book student z i borrownum bName bnum 记录学生 借书的信息 scanf s bo day strcpy student z i borrow book student z i borrownum borrow day bo day scanf s lent day strcpy student z i borrow book student z i borrownum lent day lent day library book i shY student z i borrownum 每次借书后 学生的借书数目就 会增加 而图书馆内的该类型书数目将减少 1 还书管理 for i 0 i student u i 遍历已经注册好的学生 for j 0 j student z i borrownum j 找到学生后 遍历他所借的所有图书 library book i shY student z i borrownum 还书后 要将该信息清除掉 六 测试分析 按照附录中的测试数据 得出如下测试 分析结果 进入系统 初始界面 未操作之前 图书和学生的文件也还不存在 注册读者 已经注册了的 就不需要注册了 可以直接借书 查询读者信息 未借书之前 没有借书记录 图书入库 可以入库不同的书 查询图书信息 没有借出之前 图书的现有量和库存是相同的 借书 0101 读者借 01 号图书一本 此时查询图书信息 01 书本现有量减少 1 0101 读者的信息 借书后的学生信息 继续借 7 本书达到借书上限 一个学生只能借 8 本书 此时的 0101 读者的信息 还书 此时 01 号书的现有量增 1 此时 0101 读者的信息未借书 七 使用说明 a 1 时 采编入库图书 a 2 时 注册学生信息 a 3 时 学生借书管理 a 4 时 学生还书 a 5 时 显示学生信息 a 6 时 显示图书信息 a 0 时 退出图书管理系统 八 附录 测试数据 入库的图书 书证号 01 书名 11 作者 AA 库存 100 书证号 02 书名 22 作者 bb 库存 100 书证号 5 书名 cc 作者 vv 库存 100 注册学生 读者书证号 0101 读者姓名 qq 九 C 语言代码实现 include include include define MAXCOUNT 10 define MAXNUM 20 define w 1000 typedef struct char number 10 书号 char name 20 书名 char author 20 作者 int countbook 库存 int shY 剩余量 mbook typedef struct int count 书的本数 mbook book 100 最大可有 100 本书 mlibrary mlibrary library typedef struct char borrow day 10 借书日期 char lent day 10 还书日期 char bName 10 book typedef struct 学生系统 char account MAXCOUNT 学生帐号 char name 10 学生姓名 book borrow book MAXNUM 所借书目 书号 int borrownum 借书数目 stu typedef struct int u 用于记录已注册的学生数目 stu z w 最大学生 数 可以有 1000 人 Wstudent Wstudent student void save 保存图书信息 FILE fp fp fopen library doc w if fp NULL printf n 不能保存图书信息 n return fwrite fwrite library book sizeof library book 0 library count fp fclose fp 每次将文件中的图书信息 加载到内存中 void readBook FILE fp fp fopen library doc r if fp NULL printf n 不能打开图书信息 n return fread printf 图书数量 library count fread library book sizeof library book 0 library count fp fclose fp void putin 定义录入函数 int i count1 char num 10 int y 1 while y printf n 新书入库模块 printf n 请输入新书信息 printf n 包括书号 书名 数量 printf n 图书编号 scanf s num count1 library count for i 0 i library count i if strcmp library book i number num 0 return count1 if strcmp count1 library count 0 strcpy library book library count number num printf 图书书名 scanf s library book library count name printf 图书作者 scanf s library book library count author printf 图书数量 scanf d library book library count shY library book library count countbook library count if strcmp count1 library count 0 else printf 图书管已经有此书 请输入要增加的数量 scanf d library book library count shY library book library count shY library book library count count book printf n 是否继续录入 1 继续 0 退出录入 fflush stdin scanf d if y 1 y 0 break save 查询图书信息 void lookup int i printf 图书号 t 图书名 t 作者名 t 现有量 t 库存量 n for i 0 i d student u fread student z sizeof student z 0 student u fp fclose fp 学生注册 void Regist int i char account 10 printf n n 读者初始化开始 请输入读者信息 n 包括证号 姓名 n 学生注册信息 printf 请输入读者的信息 n 读者书证号 scanf s account for i 0 i student u i if strcmp student z i account account 0 printf 你已经注册了 return if i student u strcpy student z student u account account printf n 读者的姓名 scanf s student z student u name printf 恭喜你 注册成功 student u fflush stdin save student 保存学生信息 借书 管理 void borrow char num 10 bnum 10 bo day 10 lent day 10 int i y 1 j n cou 0 printf t t 你已进入借书模块 n while y printf 请输入借书的读者证号 scanf s num cou library count for i 0 i0 if student z i borrownum 8 printf 对不起 你已达到最大借书上限 不能再借 n break else printf 请输入你要借的书的编号 scanf s bnum for j 0 j library book j shY if strcmp library book j number bnum 0 continue else strcpy student z i borrow book student z i borrownum bName bnum printf 请输入借书日期 格式如 08 03 24 scanf s bo day strcpy student z i borrow book student z i borrownum borrow day bo day printf 请输入还书日期 格式如 08 03 24 scanf s lent day strcpy student z i borrow book student z i borrownum lent day lent day printf 恭喜你 你已借书成功 n library book i shY student z i borrownum save save student readBook readStu break if j cou printf 对不起 本图书馆没有你要借的书 或者货存不足 n return if n i printf 对不起 你还没有注册 请先注册 才能借书 return printf n 是否继续录入 1 继续 0 退出录入 fflush stdin scanf d if y 1 y 0 return save save student 还书管理 void lent char num 10 bnum 10 bo day 10 lent day 10 int i j con printf t t 你已进入还书模块 n printf 请输入还书的读者证号 scanf s num for i 0 i student u i con if strcmp student z i account num 0 if student z i borrownum 1 printf 对不起 你没有借书 不需要还 n break else printf 请输入你要借的书的编号 scanf s bnum for j 0 j student z i borrownum j if strcmp student z i borrow book j bName bnum 0 printf 恭喜你 你已成功还书 n library book i shY student z i borrownum save save student return if strcmp con student u 0 printf 对不起 你还没有注册 请先注册 save save student 查看学生信息 void lookStu int i j for i 0 i student u i printf 读者书证号 t 读者姓名 t 借书数目 n printf s t t s t t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 演艺经纪转让合同范本
- 人美版二年级下学期16.画夜景教案
- 美式餐车售卖合同范本
- 酒店合作套房合同范本
- 进口业务采购合同范本
- 监控工程转包合同范本
- 2025年建筑电气考试题目及答案
- 滴灌破损维修合同范本
- 运输货款押金合同范本
- 物业管理施工合同范本
- 2025江苏南京四桥经济园有限公司招聘10人考试笔试备考试题及答案解析
- 技术经理人考试题库及答案
- 2024年国家电网网络安全专业考试题库(附答案)
- 口腔科正畸病历范文
- 钢结构桁架吊装安装专项施工方案
- 消防知识竞赛考试题(附答案)
- 2025年浙能集团甘肃有限公司新能源项目招聘22人笔试历年参考题库附带答案详解
- 学堂在线 海权与制海权 章节测试答案
- Q∕SY 02004-2016 油气井氮气排液技术规程
- 工艺学异丁烯合成MTBE
- 门诊慢性病病种及鉴定标准
评论
0/150
提交评论