已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
北北京京师师范范大大学学珠珠海海分分校校 C 程序设计实践报告 题目 题目 图图 书书 管管 理理 系系 统统 学 院信息技术学院 专 业计算机科学与技术 学 生 姓 名龙海恩 郑少彬 张鑫 麦淑玲 指导教师姓名肖红玉 指导教师单位信息技术学院 2013年年4月月11日日 1 题目与要求 编写一个图书管理系统 除了书上的功能之外 还要能做到读者借书还书 查看书籍排行榜 看到书籍的 借阅记录和分类状况 2 系统总体设计 要给出必要的文字说明及图示 本报告中蓝色字体为我们小组新增的图书信息 2 1 功能需求分析 明确系统的功能需求 1 用户登录 2 系统主控平台 3 新增图书信息处理 4 浏览图书信息处理 5 查询图书信息处理 6 删除图书信息 7 保存图书信息处理 8 普通用户借书信息处理 9 普通用户还书信息处理 10 普通用户可查看已借书籍 11 查看排行榜 12 新增用户信息 13 查找用户 14 查看所有用户 15 保存用户信息 16 退出 2 2 系统功能模块划分 要给出系统功能模块图 1 登录系统 2 增加图书信息 3 浏览图书信息 4 查找图书信息 1 按书名查找 2 按作者查找 3 按出版社查找 4 按出版日期查找 5 按 ISBN 查找 6 按图书类型查找 5 删除图书信息保存图书信息 6 图书排行榜 7 新增用户信息 8 查找用户信息 9 更新用户信息 10 删除用户信息 11 保存用户信息 12 退出系统 1 管理员退出系统 2 普通用户退出系统 3 详细设计 本系统包括图书信息管理和用户管理两大方面 程序有三大模块 有三个源程序文件 management c book c user c 和三个头文件 management h book h user h 其中 book c 完成的是图书信息的管理 包括新增图书 浏览图书 查询图书 删除图书 保存图书功能 user c 完成的是用户信息的管理 包括新增用户 用户查询 保存用户等功能 management c 完成的是用户登录 用户退出等功能 Main 函数也在这一源程序中 book h 中的内容是图书信息的管理中涉及的常量 结构体的定义和相关函数的声明 user h 中的内容是用户信息的管理中涉及的常量 结构体的定义和相关函数的声明 management h 中的内容是菜单及退出函数的声明 3 1 重要数据的数据结构设计 即结构体的声明 变量的定义 文件 1 头文件 management h 1 显示菜单函数声明 void show admin menu void show search book menu void show user menu 2 退出系统函数声明 void admin exit void user exit 2 头文件 book h 1 常量定义 分别定义书名 出版社 出版日期 作者 ISBN 图书类型 借书读者 借阅图书的借阅量的最大 长度 蓝色字体为我们小组新增的图书信息 define MAX BOOK NAME 20 define MAX PUBLISHER 20 define MAX DATE 10 define MAX AUTHOR 20 define MAX ISBN 20 define MAX SORT 10 define MAX BORROW USER 20 define MAX BOOK COUNT 10000 2 结构体类型定义 定义一个结构体类型 book info 使用 typedef 语句自定义一个新类型 book info 新类型中共 11 个 成员 分别是书名 作者 出版社 出版日期 ISBN 页数 用于标记借书还书 图书类型 借阅次数 借书读者 用于标记排行榜 用来描述图书的基本信息 typedef struct book info char book name MAX BOOK NAME char author MAX AUTHOR char publisher MAX PUBLISHER char pub date MAX DATE char ISBN MAX ISBN int pages char borrow size char sort MAX SORT int borrow time char borrow user MAX BORROW USER int book load time book info 定义一个结构体类型 book 使用 typedef 语句自定义一个新类型 book 其中成员有一个结构体变量 bi 和指向下一本图书的指针变量 此结构是存储图书信息的链表 typedef struct book book info bi struct book next book 3 函数声明 1 主要处理函数声明 void init book 图书模块初始化 void load books 从图书文件中加载图书信息 void add book 新增图书 void view book 浏览所有的图书 void delete book 删除图书 void save books 调用将图书信息保存到文件函数 给出提示信息 void clear books 从内存中清除图书链表信息 void books charts 排行榜 void update book 更新图书 2 图书查询函数声明 void search book by name 按书名查询图书 void search book by author 按作者查询图书 void search book by publisher 按出版社查询图书 void search book by pubdate 按出版日期查询图书 void search book by isbn 桉书 ISBN 查询图书 void search book by sort 桉图书类型查询图书 3 辅助函数声明 void save books to file 将图书信息保存到文件 book get last book 得到图书链表的最后一个节点 book get previous book book p 取得图书链表的最后一个节点 void input book book info info 输入一本图书信息 void show book book info info 显示图书信息 void update book data book info info 更新图书信息 int findstr char char 查找字符串 void borrow book 普通用户借阅书籍 void return book 普通用户还书 void show books record 书的借阅记录标记 3 头文件 user h 1 常量定义 define MAX USERNAME 10 define MAX PASSWORD 10 定义一个枚举类型 USER TYPE 使用 typedef 语句自定义一个新枚举类型 USER TYPE 枚举类型可 能取两种值 0 是管理员 1 是普通用户 typedef enum USER TYPE ADMIN 0 USER USER TYPE 2 结构体类型定义 定义一个结构体类型 user info 使用 typedef 语句自定义一个新类型 user info 新类型中共 3 个成 员 分别是用户名 密码 用户权限 用来描述用户的基本信息 typedef struct user info char username MAX USERNAME char password MAX PASSWORD USER TYPE user type user info 定义一个结构体类型 user 使用 typedef 语句自定义一个新类型 user 其中成员有一个结构体变量 ui 和指向下一个用户的指针变量 此结构是存储用户信息的链表 typedef struct user user info ui struct user next user 3 函数声明 1 主要处理函数声明 void init user 用户模块初始化 void load users 从用户文件中加载用户信息 USER TYPE login 用户登录 返回用户类型 void add user 新增一个用户 void search user 查找一个 void save users 调用将用户信息保护到文件函数 给出提示信息 void clear users 从内存中清除用户链表信息 void view users 查看所有用户 2 辅助函数声明 void save users to file 将用户信息保存到文件 user get last user 得到用户链表的最后一个节点 user get previous user user p 得到用户节点 p 的前一个节点 user find user char name 从用户链表中按用户名查找一个用户信息 void show user user info info 显示一个用户信息 void input user user info info 输入一个用户信息 void delete user user p 从链表中删除一个用户信息 void update user user p 更新一个用户信息 4 模块化设计 management c 2 函数指针数组 admin func 存储的是管理员权限操作主菜单所对应的函数 void admin func add book view book show search book menu delete book update book save books books charts add user search user save users view users admin exit 其他函数基本没多大改变 跟书中一样 5 模块化设计 book c 1 预处理 增加了两个语句 int charts MAX BOOK COUNT 0 声明全局变量 排行榜 extern char borrow user 20 调用其他源文件已声明过的变量 2 主要处理函数 1 查找图书的几个函数中 void search book by name void search book by author void search book by publisher void search book by pubdate void search book by isbn void search book by sort 均加了借书还书代码 while p NULL if findstr p bi book name s 1 show book 显示查到的图书信息 if strcmp borrow user admin 0 if p bi borrow size N borrow p 在 user c 中定义 else return p 在 user c 中定义 save books count p p next if count 0 printf 没有找到图书 s 继续查找吗 y or n s getchar input getchar continue else printf 共找到 d 本图书 n count printf 继续查找吗 y or n getchar input getchar printf n 实现后截图为 2 删除图书的代码为 void delete book int count 1 char input Y char isbn MAX ISBN 0 char first isbn MAX ISBN 0 book p NULL book result NULL while input Y input y printf 删除图书 n printf 请输入 ISBN 最大长度为 d MAX ISBN scanf s isbn p first book result NULL while p NULL if count strcpy first isbn p bi ISBN if strcmp p bi ISBN isbn 0 result p break count 0 p p next if result NULL show book printf 确认删除吗 y or n getchar input getchar if input y input Y if strcmp first isbn p bi ISBN 0 first book p next else get previous book p next p next free p else printf 没有找到 ISBN 为 s 的图书 n isbn printf 继续删除其他图书吗 y or n getchar input getchar 书中的这部分是代码是有错误的 在删除第一本书的时候会报错 加上 if count 来判断用户是否要删掉 第一本书 4 更新图书的代码 void update book char try again Y book p NULL ch char s MAX BOOK NAME 0 书名 while try again Y try again y p first book ch first book printf 更新图书 n printf 请输入要更新图书的书名 最大长度为 d MAX BOOK NAME scanf s s while p NULL if strcmp s p bi book name 0 break p p next if p NULL while ch NULL if strcmp ch bi borrow user NULL 0 break ch ch next if ch NULL update book data else printf 改图书已被借出 不能更新 else printf 未找到改图书 printf 继续更新图书吗 y or n getchar try again getchar 5 排行榜 void books charts book p NULL q p first book int i j k temp 0 char input Y for i 0 p NULL i charts i p bi borrow time p bi book load time 1 p p next for j 0 j i j for k j 1 k charts j temp charts k charts k charts j charts j temp while input y input Y k 0 j 0 q first book printf 排行榜 n printf n printf 名次 书名 被借次数 n printf n while k bi borrow time charts k q q next printf 7d 21s 8d n k 1 q bi book name q bi borrow time printf n q bi book load time 2 q first book k printf 要继续查看排行榜么 要 y 不要 n n getchar input getchar while q NULL q bi book load time 1 q q next printf 3 辅助函数 在 show book 中增加了部分显示图书的借阅状态 即被谁借了 借阅次数 if info borrow size N printf 借阅状态 未被借出 n printf s info borrow user else if strcmp borrow user info borrow user 0 printf 借阅状态 已被借出 n if strcmp borrow user info borrow user 0 printf 借阅状态 你借了该图书 n if strcmp borrow user admin 0 printf 借阅者 s n info borrow user printf 被借总次数 d n info borrow time if strcmp info borrow user NULL 1 printf n 6 模块化设计 user c 1 预处理增加声明两个语句 extern book first book char borrow user 20 2 主要处理函数 1 在删除用户函数中 即 void delete user 增加了一个条件 即当要删除的用户中有借书记录时 不 得删除 并作出提示 void delete user user p char input char N book q first book user previous NULL int count 0 printf 确定要删除用户 s 吗 y or n p ui username getchar input char getchar while q NULL if strcmp q bi borrow user p ui username 0 count q q next if count 0 if input char Y input char y previous get previous user p previous next p next free p p NULL else printf 该用户有借书记录 不得删除 2 新增一个 能查看所有用户的函数 即 void view users 代码如下 void view users char try again Y printf s p next next next ui username getchar getchar p p next while try again Y try again y user p first user p p next printf n printf 账号 密码 n printf n while p NULL printf 10s 10s n p ui username p ui password printf n p p next printf 需要再次查询用户信息么 要 y 不要 n getchar try again getchar printf n 3 普通用户借书功能函数 即 void borrow 代码如下 void borrow book p char sure N printf 确定要借阅吗 y or n getchar sure getchar if sure y sure Y p bi borrow size Y p bi borrow time strcpy p bi borrow user borrow user 4 普通用户还书功能函数 代码如下 void return book p char sure N if strcmp borrow user p bi borrow user 0 printf 确定要还书吗 y or n getchar sure getchar if sure y sure Y p bi borrow size N strcpy p bi borrow user NULL 5 查看读者本人已借书籍 代码如下 void show books record book p NULL char input Y while input y input Y p first book printf n printf 书名 作者 n printf n while p NULL if strcmp p bi borrow user borrow user 0 printf 24s 23s n p bi book name p bi author printf n p p next printf 再次查阅已借书籍吗 y or n getchar input getchar 3 2 函数的规划和设计 即根据分析需要设计哪些函数及其之间的调用关系 主菜单上对应的选项分别对应着各个函数 写成一个函数把菜单上的各个 函数包括起来 这样的函数有 void admin func 调用着 add book view book show search book menu delete book update book save books books charts add user search user save users view users admin exit void admin search book func 调用着 search book by name search book by author search book by publisher search book by pubdate search book by isbn search book by sort void user func 调用着 view book show search book menu show books record books charts user exit 2 在查找图书中 无论是按什么方式查找 都调用了 void borrow book p 和 void return book p 两个函数 即在读者每次查找完书之后 都询问 是否借书 是否还书 的过程 在退出系统的时候 管理员和用户的退出是不一样的 在管理员退出的时 候 有 admin exit 调用的函数是 save users to file clear users save books to file clear books exit 0 而用户退出的时候 调用的是 clear users clear books exit 0 3 3 主控模块 main 函数 的流程分析与设计 要画出主函数的流程图 Y N YN YN 显示管理员登陆菜单 重试 输入用户名和密 码 开始 判断输入的用 户名和密码是 否正确 判断输入的用 户名是否为管 理员 显示用户管理菜单 继续下一步结束 3 4 主要功能模块的流程分析与设计 分别画出各主要功能模块实现的流程图 1 普通用户登陆 Y N N Y YYY NNN 结束 重试 输入用户名和密 码 开始 判断输入的用 户名和密码是 否正确 显示用户管理菜单 查 找 图 书 查 看 已 借 书 籍 排
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026四川华丰科技股份有限公司招聘市场经理等岗位的94人备考题库含答案详解(新)
- 2026北京大兴区魏善庄镇社区卫生服务中心招聘临时辅助用工人员4人备考题库带答案详解(满分必刷)
- 2026北京石油学院附属小学教育集团招聘1人备考题库含答案详解(综合题)
- 2026中国地质调查局烟台海岸带地质调查中心招聘工作人员28人备考题库(第一批)带答案详解(培优)
- 2026广东广州花都区邝维煜纪念中学临聘教师招聘2人备考题库及答案详解(有一套)
- 2026中国一重集团国际有限责任公司面向集团内部及社会招聘业务人员备考题库附答案详解(典型题)
- 2026上半年海南事业单位联考海口市美兰区招聘71人备考题库(第一号)附参考答案详解(培优)
- 2026天津津南国有资本投资运营集团有限公司及实控子公司招聘工作人员招聘11人备考题库附参考答案详解(突破训练)
- 2026广东岭南国防教育基地招聘3人备考题库附答案详解(完整版)
- 2026东航实业集团有限公司陕西分公司招聘10人备考题库附参考答案详解(b卷)
- 2026年销售人员心理调适与应对策略试题
- 2026黑龙江哈尔滨家五常市广源农林综合开发有限公司招聘工作人员5人备考题库及一套完整答案详解
- 2026年及未来5年市场数据中国金属铍行业市场竞争格局及发展趋势预测报告
- 2025年建筑工程安全生产标准化手册
- 2025-2030中国动物狂犬病疫苗行业发展现状及趋势前景分析研究报告
- 2026年郑州电力高等专科学校高职单招职业适应性测试参考题库含答案解析
- 制造业员工薪资等级评定及岗位体系方案
- 药品抽检应急预案(3篇)
- 克服ALK靶向耐药的免疫联合治疗新策略
- 基于凝血指标的脓毒症分层管理策略
- 手术室手术前准备规定
评论
0/150
提交评论