图书信息管理系统c语言.doc
沈阳航空航天大学理学院
C语言程序设计课程设计报告
题目: 图书信息管理系统
专 业: 信息与计算科学
班 级:
学 号:
学生姓名:
指导教师:
2010年 7月 9日
课程设计成绩评定表
姓 名学 号
评
语
成
绩平时成绩阶段考核课程设计报告总成绩指
导
教
师
(签字)教
研
室
主
任
(签字)目 录
一、题目简介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
题目简介
1、系统以菜单方式工作
2、图书信息录入功能(图书信息用文件保存)--输入
3、图书信息浏览功能--输出
4、图书信息查询功能—算法,查询方式:按书名、按作者名等查询
5、图书信息的删除与修改
不知道图书的总数和可能的总数,于是使用了链表。题目要求基本可分为三类:对链表的修改、链表的输出和链表的存取。菜单化操作与图书信息文件形式保存都不算太困难,真正的关键还是在链表的使用。输入和输出功能,乃至储存和读取都是对整条链表的全部操作。而查询,删除,修改则需要先找到目标节点,然后只对目标节点进行操作,其中,删除、查询与修改又有所不同,考虑到可能的重号情况(查询里不同书同一作者的情况更加常见),进行删除、查询时就不能单单只找到一个符合条件的节点,而必须将整条链表中所有符合条件的节点全部筛选出来,但是修改若将全部符合条件的全部帅选并替换,则一口气将出现大量重复信息,而且很难处理,于是使用修改时,每次进行修改重号信息只取第一条进行修改。
二、概要设计
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; 学号==输入的学号 yn p1=p1->next; 学号==输入的学号删除p1;
4、修改:
p1=head; 学号==输入的学号 yn p1=p1->next; 学号==输入的学号修改p1;
5、浏览:
选项用的整形,浏览数据用的结构体
p1=head; 输出p1; p1=p1->next; 直到p1==NULL;
6、查询:
选项用的整形,浏览数据用的结构体
p1=head; 学号==输入的学号 yn p1=p1->next; 学号==输入的学号浏览p1;
7、储存:
选项用的整形,修改数据用的结构体,存储时使用的文件类型。
p1=head; 储存p1; p1=p1->next; 直到 要储存的学号==0
8、读取:
选项用的整形,修改数据用的结构体,存储时使用的文件类型。
p1=head; 读取p1; p1=p1->next; 直到 读取的学号==0
五、解决方案
1、读取时头指针的指向问题: