《C语言程序设计》课程设计报告(图书信息管理系统) 联系客服

发布时间 : 星期三 文章《C语言程序设计》课程设计报告(图书信息管理系统)更新完毕开始阅读31012ed626284b73f242336c1eb91a37f1113282

四 详细设计

1、 设计思路:

首先,输入一些图书信息,申请一个结构类型的动态内存,把图书信息赋值到动态内存内,每一快动态内存存放一本图书的信息,并形成一条链表,比较登录号的大小,按登录号从大到小排列;

然后,建立并打开一个文件,把链表中的数据写入文件中,然后关闭文件;

最后,插入功能:先把所有的数据从文件中读出来,申请动态内存来存放,形成链表,输入你想要插入的图书信息,比较登录号的大小,然后把新的图书信息按照登录号的大小顺序插入链表里面,新建一个文间,把新的链表写入文件中;

浏览功能:先把所有的数据从文件中读出来,申请动态内存来存放,形成链表,然后链表头开始,把结构中的数据一个一个输出到界面上;

查询功能:先把所有的数据从文件中读出来,申请动态内存来存放,形成链表;选择你要查询的方式:1是按书名查询,2是按作者名查询。输入你的选择,判断你的查询方式。

书名查询:输入你要查询的书名,在链表中查找你这本书,然后把这本书的信息输出到界面上;

作者名查询:输入你要查询的作者名,在链表中查找对应作者名的图书的信息,并把信息输入到界面上;

修改功能:先把所有的数据从文件中读出来,申请动态内存来存放,形成链表,输入你要修改的图书的登录号,在链表中查找对应登录号的图书信息的结构,重新输入你要修改的图书的全部信息,并把这些新的图书信息赋值给找到的结构,覆盖旧的图书信息,新建一个文件,存放新的图书信息;

删除功能:先把所有的数据从文件中读出来,申请动态内存来存放,形成链表,输入你要删除的图书的登录号,在链表中查找对应登录号的图书信息的结构与前一个结构,让前一个结构的next指向对应登录号结构的下一个结构,释放动态内存,新建一个新的文件,存放新的图示信息;

2、数据结构的选择:

据图书信息表特点,决定选用链表这种数据结构(也可用其它的数据结构)来作为组成成绩数据库的基本框架。链表是最简单也是最常用的一种动态数据结构。它是对动态获得的内存进行组织的一种结构。选用链表有得好处: 1.即用即申请,不会造成内存空间的浪费;

2.是数据之间既有独立性,又便于数据的相互连系; 3.便于数据的添加及删除等优点。

3、设计思想的选择:

用模块化程序设计理念,对各个功能定义不同函数,分块处理,这样有利于后期调试及今后对功能的完善。

五 调试分析

1、把数据从文件中拿出来时,当文件是空的,它也会读数据,这时的数据时0;当文件不空时,最后的数据会被读两次。因此,这样读出来的文件就会出现一些小差错,必须做适当的调整。当文件为空,把链表的首地址head赋值为NULL,然后释放动态内存;当文件不为空时,把链表的最后第二个结构的next赋值为NULL,然后释放动态内存。

2、因为开始时定义choice为整型变量,所以只能输入整数,如果不小心输入字符数时,整个程序就出现错误,不能继续运行。因此,我们把choice重新定义成字符型,这样就可以输入字符数,所以后面用switch时,也要改成字符型。

3、一开始运行程序是,因为还没有创建文件,所以在读取文件中的数据时,就会出现“不能打开文件”的错误。因此,在一开始运行程序时必须要先创建一个文件,以后程序就会自动建立一个新的文件。

4、在作者名查询那里,一开始是当查找到一条对应的结构数据时,因为用了break,所以就直接退出了循环,因此如果一个作者有多本书是,以只能查询一本书的信息。调试后,我们把break删掉,这样它就会一直循环,直到链表的最后一条数据,它才会跳出循环。这样就能把一个作者全部的书都显示出来。 …………

六 测试结果

1、数据的输入:

新建一个文件,并把数据写入文件中:

增加功能:

查询功能: