图书借阅管理系统数据结构课程设计文档格式.docx
- 文档编号:6569479
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:39
- 大小:486.40KB
图书借阅管理系统数据结构课程设计文档格式.docx
《图书借阅管理系统数据结构课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《图书借阅管理系统数据结构课程设计文档格式.docx(39页珍藏版)》请在冰点文库上搜索。
本系统具有灵活、方便、快捷、界面友好等优点,更加方便的在线了解图书信息,以及借阅图书。
本系统研究的课题主要意义是通过完成这个图书管理系统,方便管理者的管理以及用户所需要查询的书籍,使大家在尽可能短的时间内完成对所需要图书的借阅。
大大的方便了用户的需求在很大程度上提升了高校的教学水平。
因此,本文所研究的图书馆借阅管理信息系统具有一定的使用价值和现实意义。
1.3开发环境
软件平台是信息系统开发和运行所需的集成软件环境,设计和选择高效、实用、方便、功能齐全的软件平台,对信息系统的开发具有十分重要的意义。
在结合实际开
发的需要并充分考虑各种软件平台的性能及适用范围和对软件平台的使用能力,本系统的软件平台选择如下:
(1)操作系统
操作系统是计算机系统中最重要的系统软件,目前在微机上使用的桌面操作系统有
Windows95/98/2000/me/xp/2003server等,可运行于前面所列举的各种操作系统,但建议使用Windows2000以上系统。
本系统在WindowsXP操作系统下进行开发。
(2)支撑软件
支撑软件是协助人们开发和维护软件的工具和环境软件,包括编辑程序,数据库系统,集成开发环境等,本系统的支撑软件如下:
系统运行环境:
visualC++6.0
系统编程语言:
C/C++程序设计语言
第二章算法思想
随着计算机技术的飞速发展,采用计算机进行信息化管理已成为衡量高校图书管理科学化和现代化的重要标志。
为了减少工作人员的工作量,提高各个环节的工作效率,优化人师生的学习环境,我们需要研究一个高效快捷的图书借阅管理系统。
本系统是以建立一个以通过计算机数据管理图书借阅系统为目的,以用户浏览图书信息的系统。
该系统的功能强大,其具有良好的界面,操作方便灵活、简洁高效。
具有良好的健壮性,以会员制为主要借还书手段,各种功能设置方便图书管图书借阅管理。
2.1系统需求分析
2.1.1会员管理功能
(1)添加会员:
输入会员编号、会员姓名,进行会员添加,添加成功显示添加完毕。
此功能可连续添加。
新用户经注册方可登录系统并使用读者服务功能。
(2)查询会员:
输入查询的会员编号,如果存在该会员,则会显示该会员信息,包括会员编号,会员姓名,已借出的图书数为几本;
如果查询的会员编号不存在,则显示没找到指定会员。
(3)删除会员:
请输入要删除的会员的编号,如果输入的会员编号不存在,则显示没有找到要删除的会员编号。
系统会提示你还有会员要删除吗?
输入Y,则可以继续输入想要删除的会员编号,并进行删除,如果不想在进行删除的话,可以选择N,进行删除会员结束操作,退回主界面。
(4)载入数据:
实现数据载入功能。
(5)保存功能:
能将记录保存在任何自定义的文件中。
(6)退出程序:
如果想要退出程序,系统会提示警告:
程序结束后未存储的数据将消失确定要退出吗?
(Y/N),选择y,则直接退出程序。
2.1.2图书管理功能
(1)增加图书:
增加新的图书资料,同时需检查新书的图书编号是否已存在于原图书资料中,若已存在则显示这类书已有库存,可输入图书的入库量进行添加图书操作;
如果该类图书为第一次进行添加,则应该输入该图书的图书编号,图书的名称,以及图书的入库量,输入完毕则图书添加完毕,可继续选择是否继续添加。
(2)查询图书:
查询图书时需要输入查询的图书编号,如果该图书存在则会显示该图书的图书编号,图书名称,该图书的库存量以及图书的借出量。
其中图书的库存量以及图书的借出量均可以累加。
如果该图书已经被借出,则查询结果显示图书库存量以及图书的借出量。
(3)删除图书:
通过图书编号查询该图书资料,若该编号存在,允许删除,否则提示没有找到你所要的图书。
删除对象包括该图书资料以及“图书状态”和“借阅人”中与此书相关的所有记录。
一旦进行删除成功,则所有该图书信息都将不存在。
(4)借书处理:
如果需要进行借书操作,则必须保证该借书者已经进行过会员注册,借书操作需要输入要借出的书号,以及会员编号,如果会员编号输入错误,则显示会员编号输入错误,外借失败;
如果输入要借出的书号进行借书操作,则系统会显示该编号图书的现有库存量,如果没有查询到该图书的编号则显示没有找到要借出的图书,如果借出成功,显示外借成功。
(5)还书处理:
如果需要进行还书操作,则必须保证该借书者是会员,还书操作需要输入要借出的书号,以及会员编号,如果会员编号输入错误,则显示会员编号输入错误,还书失败;
如果输入要借出的书号进行借书操作,则系统会显示该编号图书的现有库存量,如果没有查询到该图书的编号则显示没有找到要借出的图书,如果还书成功,而显示归还成功。
2.2系统总体设计
2.2.1系统设计目标
本文研究开发的图书借阅管理系统用于支持高校完成图书馆图书借阅工作,有如下三个方面的目标:
●支持图书馆实现规范化的管理。
●支持图书馆高效率完成图书馆增加图书以及会员借还书管理的日常业务,包括图书借阅管理系统的两大功能:
(1)图书管理(增加图书、查询图书、删除图书、图书借阅、还书)
(2)会员管理(增加会员、查询会员、删除会员、借书信息)
●支持图书馆实现无纸化办公,方便快捷,提高图书馆的管理效率,便利师生进入图书馆进行学习。
2.2.2开发设计思想
基于以上系统设计目标,本文在图书馆图书借阅管理系统时遵循了以下开发设计思想:
●采用现有的软硬件环境及先进的管理系统开发方案,从而达到充分利用现有资源,提高系统开发水平和应用效果的目的。
●尽量达到操作过程中的直观、方便、实用、安全等要求。
●系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员补充、维护。
●系统应具备数据维护功能,及时根据用户需求进行数据的添加、删除、修改、备份等操作。
2.2.3系统功能模块设计
本系统开发的意图是借由网络化的管理减轻图书馆工作人员的工作量,全面提高图书馆的管理效率及服务质量。
实现两方面的功能,这两个方面分别是图书管理和会员管理。
(1)图书管理(增加图书、查询图书、删除图书、图书借阅、还书);
(2)会员管理(增加会员、查询会员、删除会员、借书信息)。
图书借阅管理系统主要包括以下功能模块,如图所示。
系统功能模块图
进入系统后需要先进行会员注册,才可以进行图书管理和会员管理。
如图2.2.1
图2.2.1
进行进入系统,显示功能列表,可选择任意系统,但在操作之前先要进行增加图书。
如图2.2.2
图2.2.2
如果会员注册完毕,新书添加完毕,读者可以进行借书操作。
如图2.2.3
图2.2.3
查询图书操作。
如图2.2.4
图2.2.4
删除会员操作。
如图2.2.5
图2.2.5
2.3算法思想描述
本项目的实质是完成对学生成绩信息的建立、查找、插入、修改、删除等功能,可以首先定义项目的数据结构,然后将每个功能写成一个函数来完成对数据的操作,最后完成主函数以验证各个函数功能并得出运行结果。
该程序的由多种函数实现,每个函数具有不同的功能,主要有主菜单函数,插入功能子菜单函数,查找功能子菜单函数,会员信息录入函数,显示函数,排序函数,插入函数以及查找函数。
在每个区域中会调用不同的函数来实现主要的功能比如,在新增功能里调用子菜单函数;
在显示信息时调用排序函数先对需要输出的信息进行排序,然后再输出;
在查找功能里会调用查找函数来进行查找。
而最主要的函数有添加图书:
考虑到图书的信息较多,所以用结构体对其定义。
又考虑到图书量大,所以添加后要保存到文件中去。
图书查询:
用所学过的顺序查找法来写。
删除图书:
把保存到文件中的内容写到链表中去,用链表删除结点的方法来删除图书。
我们所学过的指针这时正好用上。
最后把各函数同主函数相连,用主函数调用它们,主要函数如下:
<
1>
插入函数,它用插入排序来实现;
<
2>
查找函数,用顺序查找法;
3>
删除函数,用链表删除结点的方法
第三章算法实现
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),存储空间使用紧凑;
缺点是在插入,删除某一元素时,需要移动大量元素O(n),预先分配空间需按最大空间分配,利用不充分,表容量难以扩充。
用结构体类型定义每个会员数据,故该数组中的每个数据的结构可描述为:
typedefstructMemberInfo///会员结构
{
longm_Code;
/////会员编号
charm_Name[20];
////会员名字
intl_Codes[6];
/////已借书的编号,最多5
MemberInfo*nextmember;
////下一会员
}MemberInfo;
3.2程序模块
头文件及散列定义关键字
#include<
stdlib.h>
stdio.h>
iostream.h>
#defineNULL0
定义图书结构类型
typedefstructBookInfo/////图书结构
{
intb_Code;
////图书编号
charb_Name[20];
/////名称
intb_Total;
/////总数
intb_Out;
///借出数
BookInfo*nextbook;
//////下一类图书
}BookInfo;
3.3各模块之间的调用关系
模块内部的具体算法,包括输入、处理和输出,相当于c++语言的过程或函数设计。
整体算法描述:
建立一个结构来存放学生信息,再将这个结构存放在文件中,按要求通过调用各个函数对文件内的数据进行操纵及处理。
各个分函数算法描述:
由主函数调用建立一个新的文件用于存储图书以及会员记录。
3.4源程序代码
typedefstructSystem///管理系统结构
BookInfo*BI;
MemberInfo*MI;
intBookTotal;
////图书类库存量
intMemberTota;
/////会员数量
}System;
System*InitSystem();
/////系统初始化
voidAddBook(System*);
////增加图书
BookInfo*SearchBook(System*,int);
////查询图书信息
voidDelBook(System*);
/////删除图书
voidBrrowBook(System*);
///////借书处理
voidTurnBackBook(System*);
////还书处理
voidAddMember(System*);
/////添加会员
voidDelMember(System*);
////删除会员
MemberInfo*SearchMember(System*,int);
/////查询会员信息
voidStoreData(System*);
//定义一个空的数据存储(系统)
voidLoadData(System*);
//加载所有数据
voidExitSystem();
//退出程序
voidmain()
{
System*S=InitSystem();
intsel;
do
{
cout<
"
\n\t\t\t\t图书借阅管理系统主界面"
endl;
\t\t\t※※※※※※※※※※※※※※※※※"
\t\t\t※1.增加图书.※\t"
\t\t\t※2.查询图书.※\t"
\t\t\t※3.删除图书.※\t"
\t\t\t※4.借书处理.※\t"
\t\t\t※5.还书处理.※\t"
\t\t\t※6.添加会员.※\t"
\t\t\t※7.删除会员.※\t"
\t\t\t※8.查询会员.※\t"
\t\t\t※9.载入数据.※\t"
\t\t\t※10.保存数据.※\t"
\t\t\t※11.退出程序※\t"
请选择:
;
do
{
cin>
>
sel;
if(sel>
=1&
&
sel<
=11)break;
//选择1到11
cout<
选择错误!
\n重新输入"
}while
(1);
/*无限循环,while只有为假才跳出循环。
在循环体内用if语句判断是否达到条件,用break调出循环。
*/
switch(sel)
case1:
AddBook(S);
break;
//添加图书
case2:
SearchBook(S,-1);
//查询图书
case3:
DelBook(S);
//删除图书
case4:
BrrowBook(S);
//结束操作
case5:
TurnBackBook(S);
//还书操作
case6:
AddMember(S);
//添加会员
case7:
DelMember(S);
//删除会员
case8:
SearchMember(S,-1);
//查询会员
case9:
LoadData(S);
//载入数据
case10:
StoreData(S);
//保存数据
default:
ExitSystem();
}
}while
(1);
}
System*InitSystem()//系统初始化
System*S=(System*)malloc(sizeof(System));
//malloc向系统申请分配内存空间,系统信息初始化
S->
BI=(BookInfo*)malloc(sizeof(BookInfo));
//图书信息初始化,sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数
BookTotal=0;
//图书数量初始为0
BI->
nextbook=NULL;
//下一类图书信息初始为空
MI=(MemberInfo*)malloc(sizeof(MemberInfo));
//初始化会员信息
MemberTota=0;
//图书总数初始为0
MI->
nextmember=NULL;
//下一个会员信息初始为空
returnS;
voidAddBook(System*S)//添加图书模块
intTempcode;
//图书编号
charsel;
//查询该图书编号是否已存在
BookInfo*p=S->
BI;
//p指向图书结构
BookInfo*t;
//添加的图书库存没有
BookInfo*m;
//添加的图书库存已有
intnum;
//入库量
输入图书编号:
cin>
Tempcode;
if(m=SearchBook(S,Tempcode))//图书编号库存已有
这类书已有库存.\n输入图书的入库量:
num;
m->
b_Total+=num;
/*图书数量累加。
m->
b_Total间接引用运算符,表达式m->
b_Total引用了指针m指向的结构体的成员b_Total。
else
t=(BookInfo*)malloc(sizeof(BookInfo));
//在图书信息中定义一个t的内存空间
t->
b_Code=Tempcode;
/*添加的图书编号与库存已有。
间接引用运算符,表达式t->
b_Code引用了指针t指向的结构体的成员b_Code。
输入图书的名称:
t->
b_Name;
输入图书的入库量:
b_Total;
b_Out=0;
//图书借出量为0
nextbook=p->
nextbook;
p->
nextbook=t;
S->
BookTotal++;
//图书总数
添加完毕!
还要添加吗?
(Y/N)"
//是否继续添加
if(sel=='
n'
||sel=='
N'
)
结束添加"
return;
BookInfo*SearchBook(System*S,intcode)//查询图书
Bo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 借阅 管理 系统 数据结构 课程设计