《c语言课程设计—图书信息管理》由会员分享,可在线阅读,更多相关《c语言课程设计—图书信息管理(25页珍藏版)》请在毕设资料网上搜索。
1、 1 本科生课程论文封面本科生课程论文封面 课 程 名 称 c 语言课程设计 教 师 姓 名 本科生姓名 本科生学号 本科生专业 所 在 院 系 类别: 本科生 日期: 2012 年 9 月 5 日 2 目目 录录 课程设计评语. 错误错误!未定义书签。未定义书签。 目 录 2 1课程论文题目 3 2程序设计思路 3 3功能模块图 4 4数据结构设计 4 5算法设计 .8 6程序代码 .9 7程序运行结果 22 8编程中遇到的困难及解决方法 24 9总结心得及良好建议 25 10致谢. 25 3 1课程论文题目课程论文题目 图书信息管理系统 2程序设计思路程序设计思路 1:本系统包括两个抽象数
2、据:图书库链表和借书者链表。 (1)定义图书链表类型为: ADT Abook 数据对象 D=bi|bi=Booktype,i=1n n=o 数据关系 R=|(bi-1,bi)=D,i=2n 基本操作: Insert(n) 操作结果:建立一个长度为 n 的链表或插入 n 个新结点。 Del(n) 操作结果:从已建立链表中删除 n 个结点。 Print( ) 操作结果:输出已建立链表。 Search( ) 操作结果:按要求查找并输出已建立链表中的结点。 Borrow( ) 操作结果:按要求改变已建立链表中某一结点的相关信息 。 return( ) 操作结果:按要求改变已建立链表中某一结点的相关信息
3、 。 (2)定义图书链表类型为: ADT Aborrow 数据对象 D=ri|ri|borrowtype,i=1n n=1 数据关系 R=|ri-1,ri=D,i=2n 基本操作: creat(n) 操作结果:建立一个长度为 n 的链表。 Insert(n) 操作结果:插入 n 个新结点到已建立链表中。 Remove(n) 操作结果:从已建立链表中删除 n 个结点。 4 3功能模块图功能模块图 各模块的详细流程图 添加数据函数流程图 N Y 添 加 数 据 浏 览 所 有 数 据 查 找 数 据 删 除 数 据 修 改 数 据 主函数 输入要填加的纪录个数 K 纪录是否输完毕 输入纪录的详细信
4、息 保存记录 返回主菜单 5 浏览数据函数流程图 查找函数流程图 N Y Y Y N N N Y Y 开始 调用函数 load(),计算记录个数 n 开始显示记录 判断记录是否 全部显示? 返回主函数(mian) 用 户 是 否 继续浏览 开始 输入要查找纪录的条件 与已知纪录中对应相比较是 是否与所有的都比 较完 是否找到要找 的纪录 显示 find 显 示 not 返回主函数(main) 输出记录格 主菜单 按姓名查找 按 ID 查找 按作者名查 是否返回 6 修改函数流程图 Y N Y N 开始 输入要修改纪录的名称 选择要修改纪录的相应的项 在已知的纪录中根据输入的相 应的纪录 输入纪
5、录相应项的替代内容 更改 保存 是否继续更改 是否返回主函数 跳出程序 返回主函数 7 删除函数流程图 Y N Y N Y N Y 开始 输入你想删除的记录的名称 根据名称在所有纪录中查找你 要删除的记录 是否找到想要找的记录 将后面的记录覆盖要删除的记录, 后 面的记录一次覆盖前一纪录 是否所有纪录都被覆盖 保存 是否继续删除 是否返回主函数 跳出程序 返回主函数 显示 没有此书 信息 8 4数据结构设计数据结构设计 程序采用菜单形式,共包括五个模块 (1) 添加模块 (2) 浏览模块 (3) 查找模块 (4) 删除模块 (5) 修改模块 5算法设计算法设计 1 在最初进行模块划分是未将借书人信息管理作为一个单独摸块,致 使调试时无法明确管理结借书者信息,造成书目链表混乱,重新分配 后解决了这个问题 2 原先想进行中文书名及人命输入输出,但由于未能找到相关信息资 料,无法完成该操作,最终放弃该设计 3 最初我们曾规定了一些变量以及结构体,但随着设计的进行深化, 最初的结构体及变量无法满足需要,致使调试时出现不少混乱,后来 我们重新规定了一下,解决了这些问题; 4 程序的串联我们采取了循环控制与选择结构相结合的结构很好地解 决了系统长时间运行及循环执行命令的问题,使演示系统现实化。 9 6程序代码程序代码 #include #include #include