图书借阅管理系统数据结构课程设计 联系客服

发布时间 : 星期四 文章图书借阅管理系统数据结构课程设计更新完毕开始阅读41ef8f0e854769eae009581b6bd97f192279bf6e

2.3 算法思想描述

本项目的实质是完成对学生成绩信息的建立、查找、插入、修改、删除等功能,可以首先定义项目的数据结构,然后将每个功能写成一个函数来完成对数据的操作,最后完成主函数以验证各个函数功能并得出运行结果。

该程序的由多种函数实现,每个函数具有不同的功能,主要有主菜单函数,插入功能子菜单函数,查找功能子菜单函数,会员信息录入函数,显示函数,排序函数,插入函数以及查找函数。在每个区域中会调用不同的函数来实现主要的功能比如,在新增功能里调用子菜单函数;在显示信息时调用排序函数先对需要输出的信息进行排序,然后再输出;在查找功能里会调用查找函数来进行查找。

而最主要的函数有添加图书:考虑到图书的信息较多,所以用结构体对其定义。又考虑到图书量大,所以添加后要保存到文件中去。图书查询:用所学过的顺序查找法来写。删除图书:把保存到文件中的内容写到链表中去,用链表删除结点的方法来删除图书。我们所学过的指针这时正好用上。最后把各函数同主函数相连,用主函数调用它们,主要函数如下:

<1>插入函数,它用插入排序来实现; <2>查找函数,用顺序查找法; <3>删除函数, 用链表删除结点的方法

11

第三章 算法实现

3.1 数据结构

要完成这个题目,主要是建立解决图书和会员的信息的存储,解决的方法是建立两个带头结点的单链表,分别用于存储图书和会员。解决了这个问题后就是如何建立这两个链表的联系了,解决的方法是在图书结点中设一个借书人编号,在会员结点中设一个数组用于存会员借的书。解决了这两个问题,剩下的工作就简单了。只需按链表的操作就可以了。

以会员管理为例,本项目的数据是一组会员的借阅信息,每条学生的借阅信息由会员编号、会员姓名和组成,这组会员的借阅信息具有相同特性,属于同一数据对象,相邻数据元素之间存在序偶关系。由此可以看出,这些数据具有线性表中数据元素的性质,所以该系统的数据采用线性表来存储。

顺序表是线性表的顺序存储结构,是指用一组连续的内存单元依次存放线性表的数据元素。在顺序存储结构下,逻辑关系相邻的两个元素在物理位置上也相邻,这是顺序表的特点。本项目可以采用顺序表的线性表顺序存储结构。

若一个数据元素仅占一个存储单元,第i个数据元素的地址为Loc(ai)=loc(a1)+(i-1)

假设线性表中每个元素占用k个存储单元,那么在顺序表中,线性表的第i个元素的存储位置与第1个元素的存储位置的关系是

Loc(ai)=loc(a1)+(i-1)*k

这里Loc(ai)是第i个元素的存储位置,loc(a1)是第1个元素的存储位置,也称为线性表的基址。显然,顺序表便于进行随机访问,故线性表的顺序存储结构是一种随机存储结构。

顺序表适宜于做查找这样的静态操作;顺序存储的优点是存储密度大,存储空间利用率高。缺点是插入或删除元素时不方便。 由于C语言的数组类型也有随机存储的特点,一维数组的机内表示就是顺序结构。因此,可用C语言的一维数组实现线性表的顺序存储。数组实现线性表的顺序存储的优点是可以随机存取表中任一元素O(1),存储空间使用紧凑;

12

缺点是在插入,删除某一元素时,需要移动大量元素O(n),预先分配空间需按最大空间分配,利用不充分,表容量难以扩充。

用结构体类型定义每个会员数据,故该数组中的每个数据的结构可描述为: typedef struct MemberInfo///会员结构 {

long m_Code; /////会员编号 char m_Name[20]; ////会员名字

int l_Codes[6]; /////已借书的编号,最多5 MemberInfo* nextmember; ////下一会员

}MemberInfo;

3.2 程序模块

头文件及散列定义关键字 #include #include #include #define NULL 0

定义图书结构类型

typedef struct BookInfo/////图书结构 {

int b_Code; ////图书编号 char b_Name[20]; /////名称 int b_Total; /////总数 int b_Out; ///借出数

BookInfo* nextbook; //////下一类图书

}BookInfo;

13

3.3 各模块之间的调用关系

模块内部的具体算法,包括输入、处理和输出,相当于c++语言的过程或函数设计。整体算法描述:建立一个结构来存放学生信息,再将这个结构存放在文件中,按要求通过调用各个函数对文件内的数据进行操纵及处理。

各个分函数算法描述:由主函数调用建立一个新的文件用于存储图书以及会员记录。

3.4 源程序代码

#include #include #include #define NULL 0

14