已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C 程序设计报告程序设计报告 图书管理系统图书管理系统 C 课程设计 2 33 设计题目 图书管理系统设计题目 图书管理系统 设计要求 利用 C 语言实现小型的图书管理系统 能够满足基本的借阅功 能 1 1 问题提出 本人计划编写一个图书管理系统 主要是提供具有图书管理的程序 问题提出 本人计划编写一个图书管理系统 主要是提供具有图书管理的程序 本人的主要工作就是 编写出一个正确的程序 使其正常运行 实现图书管理功能 本人的主要工作就是 编写出一个正确的程序 使其正常运行 实现图书管理功能 1 2 本系统主要会涉及的知识点 结构 数组 循环 函数 判断 指针等语句的应 用 1 3 主要功能要求 功能分析 从图书馆的管理功能上分析 图书馆一共有三个方面的需求 1对用户的管理 2对图书的管理 3对借阅的管理 因此 本系统也从以上三个方面进行了设计 以实现上面的功能 具体分析如下 1 注册用户管理 以学校为样体 用户为学生 学生信息包括 学生 ID 学生姓名 学生学号 所在院系 所在班级 性别 年龄 1 学生加入需要依次输入学生 ID 学生姓名 学生学号 所在院系 所在班级 性别 年龄 不能为空 2 学生删除此处用一个查询功能 是你方便的找到要删除的学生 同时显示该 学生的信息 并要求删除确认 3 学生信息修改使用系统提供的查找功能可以迅速的找到要修改的学生 并提示 修改的信息 2图书信息管理 图书信息包括 图书 ID 图书名字 图书作者 在馆状态 C 课程设计 3 33 1 新书入库 需要填入 图书 ID 图书名字 图书作者 在馆状态 其中在馆状态需要填 true 表示图书在馆 2 旧书删除 对不用的旧书可以执行该操作 可以使用系统提供的查找符合条件的图书 并可以同步显示该图书的信息 以便确认所删图书的正确性 3 图书信息修改 当图书的信息发生改变的时候可以使用该功能来更新图书的信息 以保证 图书信息的正确性 操作是只要用系统提供的查找功能找到该图书 就可以在信息显示栏中对 图书信息做修改 3图书借阅管理 图书借阅信息包括 借阅号 图书 ID 学生 ID 是否借出 借 出日期 是否归还 归还日期 1 图书借阅 需要图书 ID 学生 ID 2 图书归还 需要图书 ID 学生 ID 4查询报表 1 图书信息查询 可以按照图书 ID 图书名字 图书作者实现查询 2 借 还纪录查询 借 还图书信息都可以按照图书 ID 学生 ID 日期范围灵活的查询 3 未还图书查询 查询可以按照图书 ID 学生 ID 班级 院系进行 从而可以方便的进行 分组管理 2 功能设计功能设计 2 1 算法设计算法设计 本系统需要实现的功能要求 利用 switch 语句设计如图 1 所示的主菜单 请输入选项编号 1 10 C 课程设计 4 33 图书菜单图书菜单 1 添加图书 2 图书查寻 3 删除一本图书资料 4 借书 5 还书 6 退出系统 会员菜单会员菜单 7 添加会员 8 会员查询 9 删除一个会员资料 10 查询某个会员所借图书情况 图 1 图书管理系统主菜单 2 选择 5 后 调用还书函数 进入函数后利用 switch 语句实现一个如图 2 所示的菜单 该菜单中每个选项调用一个函数 还书菜单 请输入选项编号 1 4 C 课程设计 5 33 1 输入图书名 2 查询图书资料 3 图书已借出的判断 4 作图书未借书标志 表示已还书 图 2 还书子菜单 部分模部分模块块流程流程图图 程序开始程序开始 图书管理图书管理借借 还管理还管理查询报表查询报表关于关于退出系统退出系统 新新 书书 入入 库库 旧旧 书书 删删 除除 信信 息息 修修 改改 加加 入入 学学 生生 删删 除除 学学 生生 信信 息息 修修 改改 借借 书书 还还 书书 未还图书查询未还图书查询 图书信息查询图书信息查询 借借 还纪录查询还纪录查询 系统信息系统信息 学生管理学生管理 确认所选操作的对象 进行操作确认所选操作的对象 进行操作 查找进行操作的对象查找进行操作的对象 循环操作循环操作 确认退出确认退出 程序结束程序结束 C 课程设计 6 33 3 程序代码设计程序代码设计 1 初始化界面模块初始化界面模块 1 函数原型 void Menu 2 功能 初始化界面 3 变量及类型 void RedText int x int y char z 定义整形变量 void Menu system cls 调用系统的清屏命令 textbackground BLUE 将背景设置为蓝色 window 1 1 25 80 clrscr textx 3 光标初始化位置 texty 2 gotoxy 1 2 printf c 218 画左上角 for i 0 i 78 i printf c 196 画水平直线 printf c 191 画右上角 for i 3 i 23 i gotoxy 1 i printf c 179 画垂直线 gotoxy 80 i 退出系统退出系统 C 课程设计 7 33 printf c 179 printf c 192 画左下角 for i 0 i 78 i printf c 196 printf c 217 画右下角 gotoxy 1 1 textcolor 7 设置灰色 for i 0 i 80 i cprintf c 219 用符号实现画主菜单的灰色背景区 Selectitem 调用选项函数 DrawSelectitem 画选项 gettext 2 3 78 23 c 保存当前文本区域 4 说明 进入系统后自动驱动初始化界面 2 具体操作过程模块具体操作过程模块 1 函数原型 void Run 2 功能 利用 while for 等循环语句和 if 等判断语句 实现具体的图书管理的过程如 借书 还书等过程 3 变量及类型 void DrawFrame int l int u int r int d int tcolor int bcolor textbackground bcolor 背景颜色 textcolor bcolor 文本颜色 for i l i r i 输出背景区域 for j u j d j gotoxy i j printf c 219 输出背景字符 textcolor tcolor 边框颜色 for i u 1 i d i 在背景区域内输出边框线 gotoxy l i C 课程设计 8 33 cprintf c 179 垂直线 gotoxy r i cprintf c 179 for i l 1 i r i gotoxy i u cprintf c 196 水平线 gotoxy i d cprintf c 196 gotoxy l u cprintf c 218 左上角 gotoxy r u cprintf c 191 右上角 gotoxy l d cprintf c 192 左下角 gotoxy r d cprintf c 217 右下角 gettext l 1 u 1 r 1 d 1 save1 保存边框内区域 4 说明 以大量的函数 实现图书管理的主要过程 包括对用户的管理 对图书的管 理 对借阅的管理 4 C 程序设计总结程序设计总结 1 程序调试基本正常 基本达到图书管理要求 调试之处游少数错误 经过修改基本 上已经可以正常使用了 2 本人在程序设计感到 充分的利用网上的资源和手中的源代码及借鉴他人的经验可 以更加的解决困难 使程序达到要求 参考文献参考文献 1 谭浩强 C 程序设计 第二版 北京 清华大学出版社 2001 1 2 陈朔鹰 C 语言程序设计习题集 北京 人命邮电出版社 2003 6 C 课程设计 9 33 附录 程序清单附录 程序清单 include include include include include include include define LEFT 0 x4b00 左 define RIGHT 0 x4d00 右 define DOWN 0 x5000 下 define UP 0 x4800 上 define SPACE 0 x3920 空格 define ESC 0 x011b ESC 键 define ENTER 0 x1c0d 回车键 define Backspace 0 xe08 擦除键 define ALT B 12288 组合键 ALT B define ALT M 12800 组合键 ALT M define ALT H 8960 组合键 ALT H int key 按键变量 int textx texty 光标坐标 x 行 y 列 struct menustruct 菜单用的结构体 char name 10 主菜单名 char str 10 20 选项 int n 选项数 ml 3 使用了 3 个 可根据需要增删 typedef struct BookList 书的结构体 char num 20 图书编号 char name 20 书名 int price 书的价格 char person 20 借阅人 int yes 判断书是否存在或者已经借出 1 存在 0 借出 C 课程设计 10 33 struct BookList next Book typedef struct MemberList 会员的结构体 char name 20 会员的姓名 char sex 2 会员的性别 int age 会员的年龄 struct MemberList next Member char save 4096 保存文本区域空间 char sav1 4096 char c 4096 清屏专用空间 int i j 常用变量 void Menu 初始化界面 void Selectitem 定义菜单 void DrawSelectitem 显示主菜单 void BlackText int x int y char z 选中菜单 void RedText int x int y char z 正常菜单 void Run 具体操作过程 void DrawMl int n 显示下拉菜单 void MoveMl int n int x 菜单选项的控制 void Enter int m int n 菜单选项的具体功能 void BookAdd 添加图书 void BookConsult 图书查询 void BookDel 删除图书资料 void BookBorrow 借书 void BookReturn 还书 void MemberAdd 增加会员 void MemberConsult 查询会员 void MemberDel 删除会员 void MemberBook 查询会员借书信息 void Help 帮助 void Ver 版本信息 void ClrScr 自定义清屏函数 void DrawFrame int left int up int right int down int textcolor int backgroundcolor 画边框 主函数 C 课程设计 11 33 void main void Menu 初始化界面 Run 具体操作过程 初始化界面 void Menu system cls 调用系统的清屏命令 textbackground BLUE 将背景设置为蓝色 window 1 1 25 80 clrscr textx 3 光标初始化位置 texty 2 gotoxy 1 2 printf c 218 画左上角 for i 0 i 78 i printf c 196 画水平直线 printf c 191 画右上角 for i 3 i 23 i gotoxy 1 i printf c 179 画垂直线 gotoxy 80 i printf c 179 printf c 192 画左下角 for i 0 i 78 i printf c 196 printf c 217 画右下角 gotoxy 1 1 textcolor 7 设置灰色 for i 0 i 80 i cprintf c 219 用符号实现画主菜单的灰色背景区 Selectitem 调用选项函数 DrawSelectitem 画选项 C 课程设计 12 33 gettext 2 3 78 23 c 保存当前文本区域 定义菜单 void Selectitem strcpy ml 0 name Book 下面的具体选项补空格是为了各菜单黑色背景相同 strcpy ml 0 str 0 Add 添加图书 strcpy ml 0 str 1 Consult 查询图书 strcpy ml 0 str 2 Del 删除图书资料 strcpy ml 0 str 3 Borrow 借书 strcpy ml 0 str 4 Return 还书 strcpy ml 0 str 5 Exit 退出系统 ml 0 n 6 保存菜单的项数 strcpy ml 1 name Member strcpy ml 1 str 0 Add 添加新会员 strcpy ml 1 str 1 Consult 查询会员资料 strcpy ml 1 str 2 Del 删除会员资料 strcpy ml 1 str 3 Member ml 1 n 4 strcpy ml 2 name Help 系统帮助 strcpy ml 2 str 0 This System strcpy ml 2 str 1 Ver ml 2 n 2 显示主单名 void DrawSelectitem for i 0 i 3 i RedText i 1 ml i name 显示主菜单名 且首字母为红色 正常显示菜单 void RedText int x int y char z textbackground 7 设置背景颜色为浅灰色 gotoxy 3 x 20 y for j 0 z j j C 课程设计 13 33 if j 0 textcolor RED 第一个字母显示红色 else textcolor BLACK 设置黑色 cprintf c z j 输出菜单名 显示选中菜单 void BlackText int x int y char z textbackground 0 设置背景颜色为黑色 textcolor 15 设置文本颜色为白色 gotoxy 3 20 x y 定位坐标 cputs z 输出菜单名字符串 按键操作过程 void Run while 1 gotoxy texty textx key bioskey 0 接收按键 switch key case ALT B case ESC DrawMl 0 break 显示下拉菜单 1 case ALT M DrawMl 1 break 显示下拉菜单 2 case ALT H DrawMl 2 显示下拉菜单 3 case UP 上光标键的操作控制 if textx 3 textx 23 textx gotoxy texty textx break C 课程设计 14 33 case DOWN 下光标键的操作控制 if textx 23 textx 3 textx gotoxy texty textx break case LEFT 左光标键的操作控制 if texty 2 texty 79 texty gotoxy texty textx break case Backspace 擦除键的设置 if texty 2 else if texty 2 texty 擦除键的细节问题 先擦去东西 然后光标还要往后退一格 else if texty 2 texty 78 textx gotoxy texty textx printf gotoxy texty textx break end case 0 xe08 case RIGHT 右光标键的操作控制 if texty 79 C 课程设计 15 33 texty 2 texty gotoxy texty textx break case SPACE 空格键的操作 if texty 79 continue else gotoxy texty textx 空格的细节操作 printf texty gotoxy texty textx break case ENTER 回车的控制操作 if textx 23 continue textx texty 2 gotoxy texty textx break default 非控制键的结果 if texty 79 else if texty 79 texty 2 gotoxy texty textx 输出结果 printf c key C 课程设计 16 33 if texty 79 如果 texty 79 就不执行 continue else 如果没到行尾就继续执行 使光标向前移动一位 texty 大循环的大括号 画边框函数 void DrawFrame int l int u int r int d int tcolor int bcolor textbackground bcolor 背景颜色 textcolor bcolor 文本颜色 for i l i r i 输出背景区域 for j u j d j gotoxy i j printf c 219 输出背景字符 textcolor tcolor 边框颜色 for i u 1 i d i 在背景区域内输出边框线 gotoxy l i cprintf c 179 垂直线 gotoxy r i cprintf c 179 for i l 1 i r i gotoxy i u cprintf c 196 水平线 gotoxy i d cprintf c 196 C 课程设计 17 33 gotoxy l u cprintf c 218 左上角 gotoxy r u cprintf c 191 右上角 gotoxy l d cprintf c 192 左下角 gotoxy r d cprintf c 217 右下角 gettext l 1 u 1 r 1 d 1 save1 保存边框内区域 显示具体下拉选择项目 void DrawMl int n gettext 1 1 80 25 save 保存被掩盖的地方 BlackText n 1 ml n name 反选显示主菜单 DrawFrame 3 20 n 1 2 3 20 n 19 3 ml n n 0 7 下拉菜单的边框 for i 3 inext p 新记录插入到链表的尾 p next NULL 最后一个结点的后继为空 fclose fp ClrScr printf Input the book name gets bookname 输入图书名 C 课程设计 23 33 p head while p NULL 按名字查找要删除的图书 if strcmp p name bookname 0 找到要删除的图书 if p head 如果是第一个结点 head head next else q next p next 不是第一个结点 break q p 指针后移 p p next fp fopen book txt wb 删除后从链表的头开始重新保存 while head NULL fwrite head sizeof Book 1 fp 块写 head head next fclose fp ClrScr 借书 void BookBorrow FILE fp Book consultbook Member consultmember char bookname 20 membername 20 int flag 0 mflag 0 ClrScr gotoxy 2 3 printf Input the mermber name gets membername 输入会员名 if fp fopen member txt rb NULL 没找到文件 C 课程设计 24 33 gotoxy 3 3 printf Cannot open file n return else while feof fp 查询会员资料 fread if strcmp consultmember name membername 0 mflag 1 是会员标志 break fclose fp if mflag 0 gotoxy 2 4 printf You not is a member pleas register 不是会员不能借书 return gotoxy 3 5 printf Input the book name gets bookname 输入图书名 ClrScr if fp fopen book txt rb NULL 没找到文件 gotoxy 2 3 printf Cannot open file n return while feof fp 查询图书资料 fread if strcmp consultbook name bookname 0 C 课程设计 25 33 if consultbook yes 0 图书已经借出的判断 gotoxy 2 3 printf This book has borrowed n break else consultbook yes 0 作借出标志 strcpy consultbook person membername 登记借书会员 fseek fp 1L sizeof Book 1 从当前位置前移一条记录指针 fwrite 写记录 gotoxy 2 3 printf Borrowed succ flag 1 借出书标志 break if flag 1 ClrScr gotoxy 2 3 printf Borrowed fail n 借书失败 fclose fp 还书 void BookReturn FILE fp Book consultbook char bookname 20 int flag 0 ClrScr if fp fopen book txt rb NULL 没找到文件 C 课程设计 26 33 gotoxy 2 3 printf cannot open file n return printf Input the book name gets bookname 输入图书名 ClrScr while feof fp 查询图书资料 fread if strcmp consultbook name bookname 0 if consultbook yes 0 图书已经借出的判断 consultbook yes 1 作图书未借书标志 表示已还书 strcpy consultbook person fseek fp 1L sizeof Book 1 fwrite gotoxy 2 3 printf Return book succ flag 1 break if flag 1 printf Return fail n fclose fp 清除屏幕 void ClrScr int i j puttext 2 3 78 23 c 刚开始已经用 gettext 把蓝色的一块地方保存下来 现在再还原 gotoxy 2 3 C 课程设计 27 33 会员注册 void MemberAdd FILE fp Member consultmember fp fopen member txt rb if fp NULL 如果没会员就新建 fp fopen member txt wb else 如果有会员就添加 fclose fp fp fopen member txt ab 追加方式打开 ClrScr gotoxy 2 3 printf Intput new member name 逐个输入会员的资料 gets consultmember name gotoxy 2 4 printf Input member sex gets consultmember sex gotoxy 2 5 printf Please input member age scanf d c fwrite 写入记录 fclose fp ClrScr 查询会员 void MemberConsult FILE fp Member consultmember char membername 20 int flag 0 ClrScr gotoxy 2 3 C 课程设计 28 33 printf Input the member name 输入要查询的会员名 gets membername fp fopen member txt rb if fp NULL 没找到文件 ClrScr gotoxy 2 3 printf Error fclose fp return while feof fp 查询会员资料 fread if strcmp consultmember name membername 0 比较 ClrScr gotoxy 2 3 printf This member s information as follow consultmember name gotoxy 2 4 printf This member sex is s consultmember sex gotoxy 2 5 printf This member s age is d consultmember age flag 1 break if flag 0 ClrScr gotoxy 2 3 printf No found this member fclose fp 删除会员资料 C 课程设计 29 33 void MemberDel FILE fp Member head p q char membername 20 fp fopen member txt rb if fp NULL 没找到文件 gotoxy 2 3 printf Error fclose fp return head p q Member malloc sizeof Member 将文件内容放入链表 fread p sizeof Member 1 fp while feof fp q p p Member malloc sizeof Member fread p sizeof Member 1 fp 读记录 q next p 链入到链表的尾部 p next NULL fclose fp ClrScr printf Input the member name 输入会员名 gets membername p head while p NULL 按名字查找要删除的书 if strcmp p name membername 0 查找会员 if p head head head next 如果是第一条记录 else q next p next 不是第一条记录 C 课程设计 30 33 break q p 没找到 则指针后移继续找 p p next fp fopen member txt wb 删除后重新保存 while head NULL fwrite head sizeof Member 1 fp 块写 head head next f
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 热奄包治疗知识测试题目与答案
- 树元教育考试试题及答案展示
- 2026年供用电营业人员测试卷及答案
- 焊接缺陷练习题及精准答案
- 2026年低压电工实操业务考试试卷试题及答案
- 2026年超限超载风险管控考试试卷试题及答案
- 2026年不合格品处置流程考核考试试卷试题及答案
- 2026年危险化学品从业人员安全培训考试题库及答案
- 2026年特种设备安全员考试题(附答案)
- 2026年数据库运维考核试题(附答案)
- 2025广东食品药品职业学院教师招聘考试题目及答案
- 2026年中国急性缺血性脑卒中指南
- (2025年)传染病上报培训考试题附答案
- 全国工业产品生产许可证目录(2026年版)
- 企业品牌形象策划方案书
- 建设质量安全培训制度
- 25消防设施操作员考试承诺书电子版
- 塔式起重机安拆手册(2024版)
- 2025年湖南安全技术职业学院单招(计算机)考试备考题库附答案
- 舞美搭建合同范本
- 血小板抗体检测及临床意义
评论
0/150
提交评论