图书信息管理系统-c语言
沈阳航空航天高校理学院 C语言程序设计课程设计报告 题目: 图书信息管理系统 专 业: 信息与计算科学 班 级: 学 号: 学生姓名: 指导老师: 2010年 7月 9日 课程设计成果评定表 姓 名 学 号 评 语 成 绩 平常成果 阶段考核 课程设计报告 总成果 指 导 教 师 (签字) 教 研 室 主 任 (签字) C语言程序设计课程设计 目 录 目 录 一、题目简介1 二、概要设计2 1、无文件时的输入:2 2、有原文件时的输入:2 3、删除:2 4、修改:2 5、阅读:2 6、查询:2 7、储存2 8、读取:2 三、具体设计4 1、无文件时的输入:4 2、有原文件时的输入4 3、删除:5 4、修改:5 5、阅读:6 6、查询:7 7、储存:7 8、读取:7 五、解决方案9 1、读取时头指针的指向问题:9 2、菜单无法返回:9 3、自动存储:9 参考文献11 C语言程序设计课程设计 正 文 一、 题目简介 1、系统以菜单方式工作 2、图书信息录入功能(图书信息用文件保存)--输入 3、图书信息阅读功能--输出 4、图书信息查询功能—算法,查询方式:按书名、按作者名等查询 5、图书信息的删除与修改 不知道图书的总数和可能的总数,于是运用了链表。题目要求基本可分为三类:对链表的修改、链表的输出和链表的存取。菜单化操作与图书信息文件形式保存都不算太困难,真正的关键还是在链表的运用。输入和输出功能,乃至储存和读取都是对整条链表的全部操作。而查询,删除,修改则须要先找到目标节点,然后只对目标节点进行操作,其中,删除、查询与修改又有所不同,考虑到可能的重号状况(查询里不同书同一作者的状况更加常见),进行删除、查询时就不能单单只找到一个符合条件的节点,而必需将整条链表中全部符合条件的节点全部筛选出来,但是修改若将全部符合条件的全部帅选并替换,则一口气将出现大量重复信息,而且很难处理,于是运用修改时,每次进行修改重号信息只取第一条进行修改。 -9- 二、概要设计 1、无文件时的输入: 包含了有原文件但原文件为空时的状况,重点是将头指针清空以便使数据正确输入即可。 2、有原文件时的输入: 包含了无原文件但已经输入数据的状况,干脆在原有链表后接着添加数据。 3、删除: 运用搜寻找到指定的节点,然后将下一节点干脆连接到上一节点,以起到删除该节点的功能。 4、修改: 运用搜寻找到指定的节点,干脆将该链表节点重新赋值。 5、阅读: 将全体链表全部输出。 6、查询: 按指定条件运用搜寻找到指定的链表,只输出该节点的数据。 7、储存: 将链表的信息以文件形式保存。 8、读取: 将链表信息从文件中读取出来。 图书信息管理系统 对链表的修改 输出 存取 有原文件时的输入 无文件时的输入 阅读 查询 储存 读取 对链表进行了删除 对链表进行了修改 系统模块图 三、具体设计 1、无文件时的输入: 选项用的整形,修改数据用的结构体。 head=NULL; p1=head; 输入p1; p1=p1->next; 直到 输入的学号==0 2、有原文件时的输入: 选项用的整形,修改数据用的结构体 p1=head; 输入p1; p1=p1->next; 直到 输入的学号==0 3、删除: 选项用的整形,修改数据用的结构体 p1=head; 学号==输入的学号 y n p1=p1->next; 学号==输入的学号 删除p1; 4、修改: p1=head; 学号==输入的学号 y n p1=p1->next; 学号==输入的学号 修改p1; 5、阅读: 选项用的整形,阅读数据用的结构体 p1=head; 输出p1; p1=p1->next; 直到p1==NULL; 6、查询: 选项用的整形,阅读数据用的结构体 p1=head; 学号==输入的学号 y n p1=p1->next; 学号==输入的学号 阅读p1; 7、储存: 选项用的整形,修改数据用的结构体,存储时运用的文件类型。 p1=head; 储存p1; p1=p1->next; 直到 要储存的学号==0 8、读取: 选项用的整形,修改数据用的结构体,存储时运用的文件类型。 p1=head; 读取p1; p1=p1->next; 直到 读取的学号==0 五、解决方案 1、读取时头指针的指向问题: 修改前 头指针总是无法正确指向正确数据,导致头指针指向全部都是乱码,后来将头指针的读取单独做一个函数出现,虽然是程序更为拖沓,但终于是使程序正常运行。 修改后 2、菜单无法返回: 无论进行任何行为之后,依据程序的流程,程序都会自动退出,而不是返回菜单,允许用户经行其他操作(如删除一条数据后,无法视察是否删除胜利),给用户的运用造成不便。后将主菜单函数从单线程改为do…while循环,若用户没有选择退出选项,则程序始终运行。 3、自动存储: 最起先函数是每次执行一次对链表的修改都会自动储存,假如用户进行了误操作(如误删),则没有挽救的机会,后加入了一个全局变量,每次对数据称有进行改动操作时,即会改动该全局变量,当用户退出时,会依据该全局变量是否发生变更而推断是否须要用户存盘,而用户也可选择是否存盘,以削减误操作的可能。 修改后 数据课程设计