




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 东南大学 C C 语言课程设计报告语言课程设计报告 课程名称 课程名称 计算机综合课程设计计算机综合课程设计 学学 院 院 土木工程学院土木工程学院 设计题目 设计题目 图书信息管理系统设计图书信息管理系统设计 级级 别 别 A A 级级 学生姓名 学生姓名 学学 号 号 同组学生 同组学生 学学 号 号 指导教师 指导教师 20122012 年年 0909 月月 0505 日日 2 课程报告任务书课程报告任务书 题目图书信息管理系统 主 要 内 容 图书信息包括 登录号 书名 作者名 分类号 出版单位 出 版时间 价格等 试设计一图书信息管理系统 使之提供以下功 能 1 系统以菜单方式工作 2 图书信息录入功能 图书信息用文本文件形式保存 3 图书信息浏览功能 4 查询和排序功能 按书名查找 按作者名查找 5 图书信息删除功能 6 图书信息修改功能 任 务 要 求 采用模块化程序设计 鼓励可视化编程 源程序中应有足够的注释 学生可自行增加新功能模块 视情况可另外加分 必须上机调试通过 注重算法运用 优化存储效率与运算效率 需提交源程序 含有注释 及相关文件 数据或数据库文件 cpp 文件 txt 或 dat 文件等 提交设计报告书 成绩评定 评定 教师 3 摘要 摘要 随着当今社会发展 信息化水平逐步提高 对图书管理有了新的要求 因此 编写一个信息管理系统是十分必要的 为了满足图书管理的要求 通过计算机技术给图书管理人员带来便利 使 用 C 语言编写图书管理系统 其中主要运用了结构化设计与链表结构 本系统 主要实现图书信息管理的功能 通过此系统可对图书馆库存图书信息进行管理 和维护操作 实现了图书馆内管理的一般功能 包括图书信息录入 浏览 排 序 删除和修改等功能 所设计的系统以菜单方式工作 为用户提供清晰的使 用提示 依据用户的选择来进行各种处理 图书信息包括登录号 书名 作者 名 分类号 出版单位 出版时间 价格等 图书信息的录入和显示要求有一 定的规范格式 录入的图书信息用文件形式保存 并可以对其进行浏览 查询 删除和修改等基本操作 关键字 图书信息管理关键字 图书信息管理 C C 语言语言 链表链表 结构结构 目录目录 1 设计的目的与要求 4 2 分析 4 3 总体设计 5 4 主要功能算法 5 5 完整程序及注释 8 6 调试分析 24 7 总结 28 8 答辩记录 29 9 教师意见 29 4 1 设设计计的的目目的的与与要要求求 1 1 设设计计的的目目的的 使用链表和结构等结构数据 编写一C 语言程序 实现图书信 息管理的功能 通过此系统可对图书馆图书信息进行管理和维护等操作 给图 书管理人员带来便利 1 21 2 设设计计的的要要求求 图书信息包括 登录号 书名 作者名 分类号 出版单位 出版 时间 价格等 试设计一图书信息管理系统 使之提供以下功能 1 系统以菜单方式工作 2 图书信息录入功能 图书信息用文本文件形式保存 3 图书信息浏览功能 4 查询和排序功能 按书名查找 按作者名查找 5 图书信息删除功能 6 图书信息修改功能 2 分析分析 根据题目要求 应当把图书信息用结构体形式输入 再定义一个全局 变量和文件指针进行整个程序的运行 然后把图书信息送到文件中 所 以应该提供一个结构体和文件的输入输出等操作 在程序中需实现图书 信息录入 浏览 查询 排序 删除和修改等功能 的操作 所以需要 建立相应的函数模块来实现 另外还需提供键盘式选择菜单实现功能 在运行时达到所要目的 5 3 总体设计总体设计 根据题目要求 我们经过分析和讨论后 决定将此系统分为十个功能模 块 1 菜单选择模块 2 图书信息录入功能模块 3 图书信息浏览功能模块 4 图书信息查询功能模块 5 图书信息排序功能模块 6 图书信息删除功能模块 7 图书信息修改功能模块 8 图书数据保存功能模块 9 信息文件打开功能模块 10 退出系统功能模块 4 4 主要功能的算法主要功能的算法 4 14 1 录入函数算法 6 4 24 2 按书名查找算法 按作者名与此类似 按书名查找算法 按作者名与此类似 4 3 删除图书信息算法 修改与此类似 删除图书信息算法 修改与此类似 7 4 44 4 显示函数算法显示函数算法 5 5 完整程序及注释完整程序及注释 include 引用库函数引用库函数 include include include include include typedef struct book info 定义图书信息的结构体变量并声明新的类型名定义图书信息的结构体变量并声明新的类型名 char AN 10 登录号 char name 20 书名 char author 20 作者名 char clc 10 分类名 char company 20 出版单位 char date 20 出版日期 char price 10 价格 struct book info next 8 Booklist Pointer int num 0 全局变量的定义 Pointer Head NULL 头指针为空 FILE fp 指向文件的指针 声明函数声明函数 int menu select 主菜单函数 void Insert Pointer Head 录入函数 void Scan Pointer Head 显示函数 void Search name Pointer Head 按书名查找函数 void Search author Pointer Head 按作者名查找函数 void Listbyname Pointer Head 按书名排序函数 void Delete Pointer Head 删除函数 void Update Pointer Head 修改函数 void Save 用文本文件形式保存函数 void Read 读入文本文件函数 void Exit 退出函数 void main 主函数主函数 system cls 运行前清屏 for switch menu select case 1 Insert break case 2 Scan Head break 9 case 3 Search name Head break case 4 Search author Head break case 5 Listbyname break case 6 Delete break case 7 Update Head break case 8 Save break case 9 Read break case 0 Exit default putchar a menu select 主菜单函数主菜单函数 int a printf n t t t 欢迎使用图书信息管理系统 n n n n n t t 请按 任意键进入系统菜单 n getch system cls printf t t MENU n 主 菜单 10 printf t t 1 录入图书信息 n printf t t 2 浏览图书信息 n printf t t 3 按书名查询图书信息 n printf t t 4 按作者名查询图书信息 n printf t t 5 图书信息排序 n printf t t 6 删除图书信息 n printf t t 7 修改图书信息 n printf t t 8 图书数据保存 n printf t t 9 图书信息文件打开 n printf t t 0 退出 n printf t t n do printf n t 请选择您所需要的服务 scanf d while a9 return a void Insert Pointer Head 录入图书信息函数录入图书信息函数 char AN 10 char c Pointer p q r printf n t t 请输入图书信息 n 交互输入 printf n t t 请输入登录号 scanf s AN p q Head 检测登录号是否重复 11 while p NULL if strcmp p AN AN 0 printf 已经有相同的登录号 return else q p p p next r Pointer malloc sizeof Booklist r next NULL if r NULL printf 分配空间失败 return if q NULL Head r else q next r strcpy r AN AN printf n t t 输入书名 录入图书信息 scanf s r name getchar printf n t t 输入作者名 scanf s r author getchar printf n t t 输入分类号 scanf s r clc getchar printf n t t 输入出版单位 scanf s r company getchar printf n t t 输入出版日期 12 gets r date printf n t t 输入价格 scanf s r price do printf n t t 录入成功 num printf 选择是否继续录入 Y N 连续录入图书信息 getchar scanf c if c y c Y Insert Head else if c n c N return else printf n t t 输入错误 请重新输入 while c y void Scan Pointer Head 显示图书信息函数显示图书信息函数 Pointer p p Head if p NULL printf 记录为空 检测是否有图书信息 else 13 printf n t 共有 d 条记录 num while p NULL printf n n t t 登录号 10s p AN 显示图书信息 printf n t t 书名 20s p name printf n t t 作者名 20s p author printf n t t 分类号 10s p clc printf n t t 出版单位 20s p company printf n t t 出版时间 20s p date printf n t t 价格 10s p price p p next printf n t t 请按任意键回到主菜单 return void Search name Pointer Head 按书名查找函数按书名查找函数 int flag 0 标记变量的初值 char name 10 Pointer p printf n 请输入需要查询的书名 scanf s name printf n t t 以下是您查找的信息 p Head while p NULL if strcmp p name name 0 查找符合的图书 14 printf n t 登录号 10s p AN printf n t 书名 20s p name printf n t 作者名 20s p author printf n t 分类号 10s p clc printf n t 出版单位 20s p company printf n t 出版时间 20s p date printf n t 价格 10s p price flag 1 找到标记变量设为 1 p p next 指针走到下一个节点 else p p next if flag 0 printf n t t 没有相同书名纪录 printf n t t 请按任意键返回主菜单 getchar void Search author Pointer Head 按作者名查找函数按作者名查找函数 int flag 0 char author 10 Pointer p printf n 请输入需要查询的作者名 scanf s author printf n t t 以下是您查找的信息 p Head while p NULL 查找符合的图书 15 if strcmp p author author 0 找到图书显示信息 printf n t 登录号 10s p AN printf n t 书名 20s p name printf n t 作者名 20s p author printf n t 分类号 10s p clc printf n t 出版单位 20s p company printf n t 出版时间 20s p date printf n t 价格 10s p price flag 1 p p next else p p next if flag 0 printf n t t 没有相同作者名纪录 printf n t t 请按任意键返回主菜单 getch void Listbyname Pointer Head 按书名排序函数按书名排序函数 Pointer p q int i j char t 10 char c if Head NULL 16 printf n t t 没有任何资料 n return if num 0 检查是否存在数据可供排序 printf n t t 图书信息记录为空 请按任意键返回主菜单 getchar return p q Head for i 0 i num i 排序 for j i 1 jnext 使指针指向下一个结点 if strcmp q name p name 0 检查二者排序先后 p 指针对应数据应排于 q 指针对应数据后 p q 进行数据交换 strcpy t p AN strcpy p AN q AN strcpy q AN t strcpy t p author strcpy p author q author strcpy q author t strcpy t p clc strcpy p clc q clc strcpy q clc t 17 strcpy t p company strcpy p company q company strcpy q company t strcpy t p date strcpy p date q date strcpy q date t strcpy t p name strcpy p name q name strcpy q name t strcpy t p price strcpy p price q price strcpy q price t q Head p Head do printf n t 排序完成 是否显示 Y N 询问是否显示排序结果 getchar scanf c if c y c Y Scan Head 显示排序结果 else if c n c N return 返回主菜单 18 else printf n t t 输入错误 请重新输入 错误则继续询问 while c y void Delete Pointer Head 删除函数删除函数 int flag 1 char AN 10 char c z Pointer p q printf n t t 图书删除 n printf t 请输入要删除图书的信息的登录号 scanf s AN p q Head 查找符合条件的图书 while p NULL 显示即将要删除的图书的信息 printf t n 书名 20s p name printf t n 作者名 20s p author printf t n 分类号 10s p clc printf t n 出版单位 20s p company printf t n 出版时间 20s p date printf t n 价格 10s n p price printf 确定删除 确定请输 Y 其它则不删除 询问是否删除 getchar scanf c 19 if z Y z y if p Head Head p next free p 删除图书信息 else q next p next free p flag 0 else printf 图书信息未删除 返回主菜单 return else q p p p next 指针走到下一个节点 printf t t 删除成功 n if flag printf t 没有找到可以删除的数据 do printf 选择是否继续删除 Y N 连续删除图书信息 getchar scanf c if c y c Y Delete Head 继续删除 else if c n c N return 不删除返回主菜单 else 20 printf n t t 输入错误 请重新输入 while c y void Update Pointer Head 图书信息修改函数图书信息修改函数 int flag 1 char AN 10 char c Pointer p printf n t t 图书信息修改 n printf t 请输入要修改的图书的登录号 scanf s AN 查找符合条件的图书 p Head while p NULL 修改图书信息 scanf s p AN printf n t t 输入书名 scanf s p name getchar printf n t t 输入作者名 scanf s p author getchar printf n t t 输入分类号 scanf s p clc 21 getchar printf n t t 输入出版单位 scanf s p company getchar printf n t t 输入出版日期 gets p date printf n t t 输入价格 scanf s p price flag 0 printf 修改成功 n else p p next 指针走到下一个节点 if flag printf n t t 没有该图书记录 do printf 选择是否继续修改 Y N 连续修改图书信息 getchar scanf c if c y c Y Update Head 继续修改 else if c n c N return 不修改 返回菜单 else printf n t t 输入错误 请重新输入 22 while c y 输入错误则继续询问 void Save 以文本文件形式保存的函数以文本文件形式保存的函数 Pointer p p Head char file 20 用来存放文件保存路径以及文件名 printf 请输入文件路径及文件名 scanf s file if fp fopen file w NULL 判断能否打开文件 printf 不能打开文件 n return while p NULL fprintf fp s t s t s t s t s t s t s n p AN p name p author p clc p company p date p price 将数据写入文件 p p next 下移一个结点 fclose fp 写入完成 关闭文件 printf 文件已经保存 n return void Read 读入文本文件的函数读入文本文件的函数 Pointer p q int m 0 char file 20 printf 请输入文件路径及文件名 23 scanf s file 输入文件路径及名称 if fp fopen file r NULL 检查文件是否存在 printf 不能打开文件 n return m m 1 if m 1 p Pointer malloc sizeof Booklist 开辟一个新单元 Head p 将 p 的地址赋给头指针 Head fscanf fp s t s t s t s t s t s t s t n 文件读入 do num num 1 记录书籍信息量 if num 1 区别开链表开头与中间的处理方法 Head next p else q next p q p p Pointer malloc sizeof Booklist 开辟一个新单元 fscanf fp s t s t s t s t s t s t s t n 读入文件数据 while feof fp 检查文件是否结束 若是则停止读入 否则继续读入 q next p p next NULL 链表结尾处理 num num 1 正确的图书信息量 printf 写入数据成功 可返回浏览其信息 fclose fp 结束读入 关闭文件 return 24 void Exit 退出程序的函数退出程序的函数 char c do printf n t t 退出中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年潍坊寒亭区(经济区)公开招聘中小学教师(11名)模拟试卷及答案详解(必刷)
- 2025江苏连云港市赣榆区教育局所属学校招聘新教师69人模拟试卷(含答案详解)
- 小学安全培训反思课件
- 2025年文化科技主题公园项目建议书
- 2025年福州市供电服务有限公司招聘65人模拟试卷及答案详解(易错题)
- 2025年氢氧化亚镍合作协议书
- 2025年金属制建筑装饰、散热器及其零件项目建议书
- 2025河南省水利厅厅属事业单位招聘47人模拟试卷完整答案详解
- 2025安徽芜湖市人才发展集团有限公司招聘2人考前自测高频考点模拟试题及参考答案详解1套
- 2025年光电子器件及激光器件项目建议书
- 2025中医四大经典知识竞赛真题模拟及答案
- 《公司金融》(第二版) 课件 第1-10章 公司金融导论 - 资本成本
- 建筑公司部门保密管理规定
- 2025年山东省委党校在职研究生招生考试(政治理论)历年参考题库含答案详解(5卷)
- 危险化学品装卸管理课件
- 货架清洗施工方案(3篇)
- 口腔医疗纠纷预防与管理要点
- 世赛基地管理办法
- 中小学人教版语文《爬山虎的脚》教学课件
- 无损检测超声波检测二级试题库(UT)(含答案)
- 啤酒酿造0102030451课件
评论
0/150
提交评论