C语言程序设计----图书信息管理系统_第1页
C语言程序设计----图书信息管理系统_第2页
C语言程序设计----图书信息管理系统_第3页
C语言程序设计----图书信息管理系统_第4页
C语言程序设计----图书信息管理系统_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序设计基础 C 课程设计报告 图书信息管理系统图书信息管理系统 学 生 姓 名 朱斌朱斌 学 号 班 级 电力工程与管理电力工程与管理 12011201 班班 指 导 老 师 邓伟华邓伟华 日 期 2013 07 052013 07 05 兰州交通大学新能源与动力工程学院 C 语言程序设计语言程序设计 第第 1 1 页页 共共 2929 页页 C C 语言课程设计报告语言课程设计报告 一 设计目标一 设计目标 1 二 总体设计二 总体设计 2 三 详细设计三 详细设计 2 五 分析及结论五 分析及结论 9 六 参考文献六 参考文献 11 七 附录七 附录 11 源程序清单源程序清单 11 一 设计目标一 设计目标 C 语言程序设计语言程序设计 第第 2 2 页页 共共 2929 页页 图书信息包括 登录号 书名 作者名 分类号 出版单位 出版时间 价格等 设计的图书信息管理系统 应当具备能提供以下功能 1 系统以菜单方式工作 2 图书信息录入功能 输入 3 图书信息浏览功能 输出 4 图书信息查询功能 算法 查询方式 1 按书名查询 2 按作者名查询 5 图书信息的删除与修改 二 总体设计二 总体设计 1 程序设计组成框图 图书信息 管理系统 系统登录 模块 菜单选择 模块 图书信息 录入模块 图书信息 浏览模块 图书信息 查询模块 图书信息 修改模块 设计 朱斌 设计 周勇 设计 闫鹏 设计 张旭东 设计 杨国峥 设计 王文模 2 程序流程图 C 语言程序设计语言程序设计 第第 3 3 页页 共共 2929 页页 三 详细设计三 详细设计 1 系统登录模块系统登录模块 f1 f1 本函数由 朱朱 斌斌 设 计 1 函数的功能 验证管理员信息 进入菜单功能界面 2 函数的入口 从 main 的 switch 结构中进入 即 choice 的值为 1 时进入函数 然 后提示用户通过键盘对输入管理员账户及密码 3 函数调用关系 被主函数调用 由 switch 开关结构中进入 并在文中无返回值的空值 void 函数 4 函数的出口 当验证失败 提示重新输入 当验证成功 通过 ENTER 键 跳出 switch 开关函数 进入菜单功能模块 继续执行选择结构 程序流程图 图书登录系统界面图书登录系统界面 2 2 菜单菜单功功能能 选择模块选择模块 f2 f2 本函数由 周周 勇勇 设计 C 语言程序设计语言程序设计 第第 4 4 页页 共共 2929 页页 1 函数功能 主要作用是提示用户操作 体现模块化思想 主要是显示出菜单让用户选择要进行的任 务 2 函数入口 从主函数void 中的 adm servelist 进入函数 这是直接被主函数 void 调用的 3 函数调用关系 被主函数调用 并在文中无返回值的空值 void 函数 4 函数的出口 执行完所有的 printf 函数后自动退出该函数 图书管理 系统 添加图书删除图书信息浏览信息查询修改图书创建图书退出管理 系统 开始 输入 n 判断 是否 0 6 输入 n 调用各个模块的 函数 结束 Y N 主函数的流程图 菜单界面菜单界面 C 语言程序设计语言程序设计 第第 5 5 页页 共共 2929 页页 3 修改与删除模块 f3 f3 本函数由 王文模王文模 设计 图书删除 1 函数功能 利用 while 循环和 if 语句和 scanf getchar search change del 函数 完成对图书信息 分类 名 出版单位 出版时间 价格 的修改和删除 2 函数入口 从主函数 main 中的 system cls 清屏命令 menu 菜单函数提示用户怎样选择 进入 函数 这是直接被主函数 main 调用的 3 调用关系 void change int x 是改变图书信息 它里面又调用了 book search 4 函数出口 执行完所有的 printf 函数后自动退出该函数 程序框架图 图书修改 该模块实现按照用户需求 将需要修改的图书名输入 进行 for 循环查找是否有此书 若无 则显示未找到 退出 若有 则显示输入新的图书信息 开始输入修改的信息 进行 for 循环开始录入 替换原文件信息 结束显示 修改成功 图书修改界面 C 语言程序设计语言程序设计 第第 6 6 页页 共共 2929 页页 图书删除界面 4 图书信息浏览 f4 f4 本函数由 张旭东张旭东 设计 1 函数的功能 显示图书的信息 编号 价格 作者 出版单位 出版时间 类别 2 函数的入口 从主函数 main 中的 system cls 清屏命令 menu 菜单函数提示用户怎样 选择04信息浏览 进入函数 这是直接被主函数 main 调用的 3 函数调用关系 被主函数调用 并在文中无返回值的空值 void 函数 4 函数的出口 执行完所有的 printf 函数后自动退出该函数 框架图 图书浏览流程图 C 语言程序设计语言程序设计 第第 7 7 页页 共共 2929 页页 图书浏览 5 图书查询 本函数由杨国峥设计 1 函数的功能 按着书名查询与作者名查询 输出排序结果 2 函数的入口 程序从 main 的 while 开关结构中进入 即 choice 的值为 4 时进入该函数 开始进入 该函数 进入函数后 首先打开文件 然后利用 printf 选择按书名查询与作者名查询 若 flag 1 或 flag 2 则有此书 若 flag 0 则无此书 并退出查询 3 函数调用关系 被主函数调用 由 while 开关结构中进入 并在文中无返回值的空值 void 函数 4 函数的出口 当输出查询结果用 printf 标准输出到屏幕上 然后结束该函数 而执行主函数 main 中 break 跳出 while 开关函数 继续执行 if 选择结构 图书信息查询 按书名查询 1 EXIT 0 按作者名查询 2 04 信息查询 输入 a 判断 a 是否为 0 2 a 0 退出回到主菜单a 1 则调用 search by name 按书名 查询 输入书名 若有此书则输出此书信息 若没有 则输出 file open error 没有 则输出 file open error a 2 则调用 search by writer 按 作者名查询 输入作者名 若有此书则输出此书 信息若没有 则输出 file open error C 语言程序设计语言程序设计 第第 8 8 页页 共共 2929 页页 按图书名查询按图书名查询 按作者名查询按作者名查询 6 输入模块 本函数由 闫闫 鹏鹏 设计 1 函数的功能 利用 for 循环语句和 scanf gets getchar 函数完成对结构数组的输入 存放图书信息 图书编号 图书名 作者名 出版社 类别 出版时间 价格 2 函数的入口 从主函数 main 中的 system cls 清屏命令 menu 菜单函数提示用户怎样选择 进 入函数 这是直接被主函数 main 调用的 3 函数调用关系 被主函数调用 并在文中无返回值的空值 void 函数 4 函数的出口 执行完所有的 printf 函数后自动退出该函数 程序框架图 录入 数据 请输入 图书编 号 请输入 图书名 请输入 作者名 请输入 出版社 请输入 类别 请输入 出版时 间 请输入 价格 C 语言程序设计语言程序设计 第第 9 9 页页 共共 2929 页页 图书信息输入图书信息输入 四 调试与测试四 调试与测试 调试方法 打开 Microsoft Visual C 6 0 先将各个功能函数的的内容清空 只保留主函 数 main 然后编译检验 main 函数中是否有错 如果没有错误 再连接 运行 确认 main 函数一切无误后 然后加入功能函数 menu 函数与 f1 函数 由于 menu 函数比较 简单 所以与 f1 函数一起进行调试 f1 函数中主要注意读取文件 与写入文件 这都是 二进制的形式 若 menu 函数与 f1 函数编译 连接 运行没问题 继续加入 f2 函数 就这样的方法依次检查调试 f3 函数 f4 函数 当所有的功能函数都加上且正确无误时 就可以进入下一个环节 程序的测试 测试方法 运行程序 然后进入销售管理系统的界面 在这里需要做的就是把自己当成一 个公司的程序使用者 来对该程序进行使用 看该程序有哪些方面用着不够爽 把这些问 题依次整理出来 再对源程序进行修改 在这个过程中也需要对程序进行调试 不过不必 将各个功能函数的的内容清空再进行如上述的调试方法 而是 改一部份运行一次 看是 否有无 如 f1 函数有误 则先修改 f1 函数 一块一块的进行修改 就是遵循 C 语言的模块 化设计原理 若所有的都改过来了 且运行无误 那就大功告成了 在调试中遇到的问题 在调试过程中 我们遇到诸多小问题 但都在我们共同讨论后解决 C 语言程序设计语言程序设计 第第 1010 页页 共共 2929 页页 了 1 问题 标点符号在输入的时候 使用的是中文输入法 这种错误一般都难以发现 让修 改的时候找不到目标 解决方法 用 替换 如果程序中的 error 很多 不管 error 是什么 先将标点替换成英文 的标点 2 问题 调试时 有的时候编译后没什么问题 就是在点击连接 link 时出现了错误 而且 这种错误让我们不知道怎么修改 但是我们的程序的确正确 解决方法 将源程序保存 save 然后关掉 Microsoft Visual C 6 0 重新启动 Microsoft Visual C 6 0 五 分析及结论五 分析及结论 A 在设计中我们实现了设计目标的所有内容 在设计中我们实现了设计目标的所有内容 即 1 系统以菜单方式工作 2 图书信息录入功能 输入 3 图书信息浏览功能 输出 4 图书信息查询功能 算法 查询方式 1按书名查询 2 按作者名查询 5 图书信息的删除与修改 B B 其中遇到了以下问题 其中遇到了以下问题 不能清晰的建立设计模块 不会修改出现的错误等等 解决方案 向同学寻求帮助 向他们学习 最终通过自己努力建立了模块 不可避免地程 序中肯定依然存在者某些问题在应用中不断提高自己的能力 攻克遇到的困难 C C 该程序的不足 该程序的不足 函数较复杂 界面不美观 D D 实践心得 实践心得 经过一个多星期的编译原理课程设计 在我们一组的共同的努力下 顺利完成该课程设 计 通过该课程设计 掌握了编译程序工作的基本过程及其各阶段的基本任务 熟悉了编 译程序总流程框图 了解了编译程序的生成过程及其相关的技术 对课本上的知识也有了 更深的理解 老师常说 课本上的知识是机械的 表面的 要学会去运用 要举一反三 现在终于深刻的了解了这句话 经过这次的课程设计 发现书本上很深奥的知识变的更为 简单 同样 对 C 程序原理也了有更深的理解 知道和理解了该理论在计算机中是怎样执 行的 对该理论在实践中的应用有深刻的理解 通过该课程设计 把死板的课本知识变 得生动有趣 激发了学习的积极性 能够把课堂上学的知识通过自己设计的程序表示出来 加深了对理论知识的理解 C 语言程序设计语言程序设计 第第 1111 页页 共共 2929 页页 课程设计中程序比较复杂 在调试时应该仔细 在程序调试时 注意指针 将不必要 的命令去除 除了课堂外 课程设计是最能学到东西的 最考验人的 在做课程设计的这 段时间 时刻都感到自己学的知识有多么的贫瘠 经过这次课程设计 让我们对 C 这门 语言有了更深的认识 操作能力有了提高要想是写出的代码能运行 需要耐心细心 毅力 以及充沛的体力 只有经过多次编辑 多次编译 再多次运行 才能编写出更好的程序 有时候需要多次的更正才能达到所要的运行结果 在编写本程序时 在网上寻找的参考程 序起到了很大的启发与参考作用 六 参考文献六 参考文献 1 C 语言程序设计 谭浩强版 2 C 语言上机指导 3 Microsoft Visual C 6 0 指南 4 附 在编写本程序时 在网上寻找的参考程序起到了很大的启发与参考作用 七 附录七 附录 源程序清单源程序清单 源程序清单源程序清单 include include include struct book 声明 BOOK 类的所有变量 int num char bname 50 char wname 20 char press 50 char sort 50 int time float price struct book next C 语言程序设计语言程序设计 第第 1212 页页 共共 2929 页页 struct book creatbook 创建链表 struct book addbook struct book head 添加图书 int yanzheng struct book head int m 验证新添加的图书编码是否已存在 void deletebook struct book head 删除图书 void fprint struct book head 将链表写入文件 struct book load 从文件中读取信息并建成链表 void print book struct book head 将链表信息输出 void chaxun struct book head 查询图书信息 void wname chaxun struct book head 按作者名查询图书 void bname chaxun struct book head 按图书名查询图书 void xiugai struct book head 修改图书信息 int main 本代码由 小小 组组 设计 int choice n x y 1 c c1 317 choice 选择进入哪项功能 对图书的增删改查 char a d b 10 b1 10 317 struct book head NULL 声明一个新的 book 类 while y 实现 登录 退出系统 这两个选项 在输入口令错误时产生的循环 system cls 清屏 printf n printf 欢迎进入 n printf 兰州交通大学图书管理系统 n printf n printf 请输入选项 0 1 n printf n printf 1 用户登录 n printf 0 退出系统 n printf n n printf 请输入您的选择 scanf d 读取选项 0 1 printf n getchar 从 stdio 流中读字符 switch n 进入选择 case 0 y 0 C 语言程序设计语言程序设计 第第 1313 页页 共共 2929 页页 break case 1 printf 请输入您的用户名 gets b 获取输入的字符 将字符赋值为 b printf n printf 请输入您的密码 scanf d printf n if strcmp b b1 0 c c1 strcmp 比较功能 b1 c1 之前赋值为 317 317 只要刚输 入的 b 与 c 存在不等于 317 printf 验证失败 请重新输入 n scanf c getchar system cls else printf 验证通过 请按 Enter 键进入 n scanf c getchar x 1 while x system cls 本代码由 朱朱 斌斌 设计 printf n printf 兰州交通大学图书信息管理系统 n printf n printf n printf 请输入选项 0 6 n printf n printf 1 添加图书 2 删除图书 n n printf 3 信息浏览 4 信息查询 n n printf 5 修改图书 6 创建图书 n n printf 0 退出系统 n printf n printf 请输入所选择的序号 scanf d getchar C 语言程序设计语言程序设计 第第 1414 页页 共共 2929 页页 system cls switch choice 选择进入哪项功能 对图书的增删改查 case 0 x 0 break case 1 head load 链头尾节点一致相同 即文件为空 if head NULL printf 文件为空 请先录入数据 n getchar break else head addbook head 链表的表头与新加入的内容相同 即添加成功 printf 添加成功 n printf 是否将新信息保存到文件 y n n scanf c getchar switch a case n break case y fprint head printf 保存成功 n getchar break break case 2 head load 链头尾节点一致 即文件为空 if head NULL printf 文件为空 请先录入数据 n getchar break else C 语言程序设计语言程序设计 第第 1515 页页 共共 2929 页页 deletebook head 执行删除 getchar break break case 3 head load if head NULL 链头尾节点一致 即文件为空 printf 文件为空 请先录入数据 n getchar break else print book head 执行浏览 getchar break case 4 head load if head NULL 链头尾节点一致 即文件为空 printf 文件为空 请先录入数据 n getchar break else chaxun head 执行查询 getchar break case 5 head load if head NULL 链头尾节点一致 即文件为空 printf 文件为空 请先录入数据 n getchar break else C 语言程序设计语言程序设计 第第 1616 页页 共共 2929 页页 xiugai head 执行修改 getchar break break case 6 printf 注意 输入图书编码为 0 时结束 n head creatbook 找到相同信息 询问是否替换 printf 是否将输入的信息保存到文件以覆盖文件中已存在的信息 y n n getchar scanf c getchar switch a case n break case y fprint head 将链表写入文件 printf 保存成功 n getchar break break default printf 您的输入有误 请重新输入 n getchar break break default printf 您的输入有误 请重新输入 n getchar break C 语言程序设计语言程序设计 第第 1717 页页 共共 2929 页页 本代码由 周周 勇和王文模勇和王文模 设计 录入数据并形成链表 struct book creatbook struct book head tail p 声明数据链表 int num time n char bname 50 wname 20 press 50 sort 50 float price int size sizeof struct book head tail NULL printf 请输入图书编号 scanf d printf 请输入图书名 scanf s bname getchar printf 请输入作者名 scanf s wname getchar printf 请输入出版社 scanf s press getchar printf 请输入类别 scanf s sort getchar printf 请输入出版时间 scanf d getchar 从键盘中输入一个值 printf 请输入价格 scanf f getchar while 1 p struct book malloc size p num num strcpy p bname bname 赋值 把后者复制给前者 strcpy p wname wname 赋值 把后者复制给前者 strcpy p press press 赋值 把后者复制给前者 C 语言程序设计语言程序设计 第第 1818 页页 共共 2929 页页 strcpy p sort sort 赋值 把后者复制给前者 p time time p price price p next NULL if head NULL head p else tail next p 赋值 将地址付给下一个 形成链 tail p do printf 请输入图书编号 scanf d n yanzheng head num 验证添加的图书编号是否已存在 if n 0 break else printf 您输入的编号已存在 请重新输入 n while 1 if num 0 break else printf 请输入图书名 scanf s bname getchar printf 请输入作者名 scanf s wname getchar printf 请输入出版社 scanf s press getchar printf 请输入类别 scanf s sort getchar printf 请输入出版时间 scanf d getchar C 语言程序设计语言程序设计 第第 1919 页页 共共 2929 页页 printf 请输入价格 scanf f getchar return head int yanzheng struct book head int m struct book p p head while p NULL if p num m break p p next if p NULL return 0 else return 1 将新链表写入文件中 void fprint struct book head FILE fp char ch 1 struct book p1 if fp fopen f1 txt w NULL 字符 IO 流 printf File open error n exit 0 fputc ch fp 将字符 ch 写到文件指针 fp 所指向的文件的当前写指针的位置 for p1 head p1 p1 p1 next 依次写入 fprintf fp d s s s s d f n p1 num p1 bname p1 wname p1 press p1 sort p1 time p1 price fclose fp 关闭 释放内存 C 语言程序设计语言程序设计 第第 2020 页页 共共 2929 页页 本代码由 闫闫 鹏鹏 设计 从文件中读取图书信息 struct book load FILE fp char ch struct book head tail p1 head tail NULL 链表初始化 if fp fopen f1 txt r NULL printf File open error n exit 0 ch fgetc fp 意为从文件指针 fp 指向的文件中读取一个字符 读取一个字节后 光标位 置后移一个字节 if ch 1 while feof fp 检测 fp 流上的文件结束符 p1 struct book malloc sizeof struct book fscanf fp d s s s s d f n if head NULL head p1 else tail next p1 tail p1 tail next NULL fclose fp return head else return NULL 将整个链表的信息输出 void print book struct book head C 语言程序设计语言程序设计 第第 2121 页页 共共 2929 页页 struct book ptr if head NULL printf n 没有信息 n return printf 图书信息列表如下 n printf n printf 编号 图书名 作者名 出版社 类别 出版时间 价格 n for ptr head ptr ptr ptr next 依次输出 printf d s s s s d 2f n ptr num ptr bname ptr wname ptr press ptr sort ptr time ptr price printf n 本代码由 张旭东张旭东 设计 删除图书信息 void deletebook struct book head int a char b ch 1 struct book p1 p2 FILE fp printf 请输入要删除的图书编号 scanf d p1 head if p1 num a getchar scanf c getchar switch b case n break case y if fp fopen f1 txt w NULL 重新写入 printf File open error n exit 0 C 语言程序设计语言程序设计 第第 2222 页页 共共 2929 页页 fclose fp printf 文件已清空 n else while p1 num a p1 p1 next if p1 next NULL if p1 num a p2 next NULL printf 是否确定从文件中彻底删除该图书 y n n getchar scanf c switch b case n break case y fprint head printf 删除成功 n getchar break else printf 没有找到要删除的数据 n getchar else if p1 head head p1 next printf 是否确定从文件中彻底删除该图书 y n n getchar scanf c switch b C 语言程序设计语言程序设计 第第 2323 页页 共共 2929 页页 case n break case y fprint head printf 删除成功 n getchar break else p2 next p1 next printf 是否确定从文件中彻底删除该图书 y n n getchar scanf c switch b case n break case y fprint head printf 删除成功 n getchar break 本代码由 王文模王文模 设计 图书查询 void chaxun struct book head int a printf n printf 兰州交通大学图书信息管理系统 n printf n n printf n printf 请输入选项 0 2 n printf n C 语言程序设计语言程序设计 第第 2424 页页 共共 2929 页页 printf 1 按图书名查询 n printf 2 按作者名查询 n printf 0 退出查询 n printf n printf 请输入所选择的编号 scanf d getchar switch a case 0 break case 1 bname chaxun head 进入按照书名查询 break case 2 wname chaxun head 进入按照作者查询 break default printf 您的输入有误 n break 按图书名查询图书信息 void bname chaxun struct book head char a 50 int flag 0 struct book p printf 请选择您要查询的图书名 gets a p head while p NULL if strcmp p bname a 0 比较 如果输入的 a 与已有信息存在有相符的 进入循 环 flag 1 break p p next C 语言程序设计语言程序设计 第第 2525 页页 共共 2929 页页 if flag 0 如果输入的 a 与已有信息没有相符的 flag 的值不改变 printf 没有找到该图书名的图书 n else printf 你所查询的图书信息如下 n printf n printf 编号 图书名 作者名 出版社 类别 出版时间 价格 n while p NULL if strcmp p bname a 0 printf d s s s s d 2f n p num p bname p wname p press p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论