课程设计图书管理系统Word格式文档下载.docx
- 文档编号:19984935
- 上传时间:2023-01-13
- 格式:DOCX
- 页数:33
- 大小:357.11KB
课程设计图书管理系统Word格式文档下载.docx
《课程设计图书管理系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《课程设计图书管理系统Word格式文档下载.docx(33页珍藏版)》请在冰豆网上搜索。
(6)通信录管理结束后,能够正常退出图书借阅管理程序,返回到主菜单界面。
会员借阅管理程序中实现以下功能:
(1)会员增加功能:
增加会员需要填写会员的编号(id)和姓名(name),每次仅限增加一名会员。
(2)会员查询功能:
查询会员是只需要输入会员的编号即可。
(3)会员删除功能:
删除会员是只需输入会员的编号即可。
(4)保存功能:
能将记录保存在任何自定义的文件中,如存在member.txt。
(5)通信录管理结束后,能够正常退出会员借阅管理程序,返回到主菜单界面。
第1.3节开发工具及运行环境
(1)开发工具:
采用MicrosoftvisualC++6.0。
(2)运行环境:
Windows7。
第2章概要设计
第2.1节功能设计
图书管理系统主要通过两大功能:
图书管理功能、会员管理功能。
图书管理功能主要分为五个小模块:
图书的增加、查询、删除、借阅和还书。
会员管理系统主要分为四个小模块:
会员的增加、查询、删除和借书的信息。
第2.2节数据结构计算法设计
第2.2.1节抽象数据类型的定义
此题是设计一个图书借阅管理系统,根据需要应包含图书管理和会员管理。
其中对图书和会员的增加、查询和删除都是基本操作。
在图书管理中对图书的借阅和归还是重点,这两个操作也是整个系统关键。
实现这些操作的关键在于建立的两个带头结点的单链表,分别用于存储图书和会员的基本信息。
在这两个链表之间还应建立起相互的联系,便于查询的操作的实现。
另外,在美观方面,需要设计一个操作界面供用户选择使用。
(1)建立一个带头结点的单链表来存放图书信息;
单链表为linknode
ADTlinknode{
数据对象D:
D是具有相同特性的数据元素的集合。
各个数据元素均为类型相同,可唯一表示数据元素的关键字。
数据关系S:
数据元素同属一个的集合。
基基本操作P:
addbook(linknode&
l);
//增加图书
初始条件:
接受一个存放图书信息的带头结点的单链表
操作结果:
将新增加的图书信息插入到上述链表中
select(linknode&
l)//查询图书
在上述链表中查询指定的图书,并显示出相应图书信息
deletebook(linknode&
l)//删除图书
在上述链表中删除指定的图书信息
borrow(linknode&
l)//图书借阅
接受一个存放图书信息的带头结点的单链表和一个存放会员信息的带头结点的单链表
在上述两个链表中分别添加借阅图书的信息
returnbook(BookList&
H)//还书
在上述两个链表中分别删除借书信息
}
(2)建立一个带头结点的单链表来存放会员信息;
单链表为mlinknode
ADTmlinknode{
各个数据元素均喊有类型相同,可唯一表示数据元素的关键字。
数据元素的同属一个集合。
基本操作P:
addmember(mlinknode&
m);
//增加会员
接受一个存放会员信息的带头结点的单链表
将新增加的会员信息插入到上述链表中
selectmember(mlinknode&
m)//查询会员
操操作结果:
在上述链表中查询指定的会员,并显示出相应会员信息
deletemember(mlinknode&
m)//删除会员
在上述链表中删除指定的会员信息
第2.2.2节数据结构中逻辑结构与物理结构
图书链表、会员链表存储形式:
任何两个元素的存储位置之间没有固定的联系,每个元素的存储位置都包含在其直接的前驱节点的信息中。
就是说指针为数据元素之间的逻辑关系映射,则逻辑上相邻的两个元素其存储位置不要求紧邻。
图书编号
0002
0003
以图书管理链表例:
0001
第3章详细设计
第3.1节图书、会员信息储存
第3.1.1节图书信息储存
采用单链表,其头结点为head的全局变量来存储图书信息。
其定义数据结构如下:
/*图书信息结构体*/
typedefstructelem
{
charbookid[5];
//定义图书编号
charbookname[50];
//定义图书名
charbookauthor[20];
//定义图书作者
charbookmark[2];
//标记此图书是否已被借阅
charmemberid[4];
//标记图书存在数量
}elemtype;
/*图书链表结点结构体*/
typedefstructnode
elemtypedata;
structnode*next;
}lnode,*linknode;
第3.1.2节会员信息储存
采用单链表,其头结点分别为mhead的全局变量来存储会员信息。
/*会员信息结构体*/
typedefstructmemberelem
//会员编号
charmembername[20];
//会员姓名
}memberelemtype;
/*会员链表结点结构体*/
typedefstructmembernode
memberelemtypedata;
structmembernode*next;
}mlnode,*mlinknode;
第3.2节图书管理系统所涉及函数
为了实现上述功能,特定义以下函数原型,具体代码参见源代码部分:
voidmain()/*入口*/
voidinitallinfo()/*初始化图书和会员链表*/
voidwelform()/*系统总菜单*/
voidprintbookinfo(linknodehead)/*输出图书信息函数*/
voidaddbook()/*增加图书模块*/
voidselect()/*按编号查询图书*/
voiddelete()/*按编号删除图书*/
voidborrow()/*借阅图书*/
voidreturnbook()/*还书*/
voidbookmanagetitle()/*图书管理二级菜单*/
voidbookmanage()/*二级图书管理功能选择函数*/
voidprintmemberinfo(mlinknodehead)/*输出会员信息函数*/
voidaddmember()/*增加会员模块*/
voidselectmember()/*按编号查询会员*/
voiddeletemember()/*按编号删除会员*/
voidmembermanagetitle()/*会员管理二级菜单*/
voidmembermanage()/*二级会员管理功能选择函数*/
第3.3节图书会员链表
第3.3.1节程序调试数据如表:
图书初始数据表
bookid
bookname
bookauthor
bookmark
memberid
0001
sanguoyanyi
luoguanzhong
N
0002
hongloumeng
caoxueqin
0003
xiyouji
wuchengen
Y
001
0004
shuihuzhuan
shinaian
0005
javascript
Join
0006
cprogrom
tanghaoqiang
0007
liaozhaizhiyi
pusongling
007
0008
jia
bajin
0009
richu
caoyu
003
0010
nahan
luxun
第3.3.2节会员信息表
会员信息表
membername
zhouxicai
002
longqidong
lipengfei
004
gaopeng
005
chenwentang
006
yangminghao
第4章调试分析
第4.1节图书管理功能运行界面
1、系统启动时,通过读取文件完成对以head、mhead为表头的单链表完成初始化。
初始化后系统进入系统菜单,系统菜单中主要由图书管理功能(1:
bookmanage)、会员管理功能(1:
membermanage)、结束程序(0:
quit)三个选择项组成,其运行如下:
2、当选择图书管理功能(1:
bookmanage)时,进入图书管理模块。
主要分为六个小模块,分别是查询图书目录(1:
Lookallbooks)、增加图书(2:
Addbook)、查找图书(3:
Selectbookbyid)、删除图书(4:
Deletebookbyid)、借书(5:
Borrowbook)、还书(6:
Returnbook)、返回主界面(0:
Returntomainform)其运行界面如下:
3.当选择增加图书功能(2:
Addbook)时,进入增加图书管理模块。
主要输入图书的三个信息点,分别为编号(id)、书名(title)、作者(author)。
其运行界面如下:
4、当选择查看图书目录功能(1:
lookallbook)时,进入图书目录管理模块。
主要显示图书的三个信息点,分别为编号(id)、书名(title)、作者(author)。
5、当选择查看图书功能(3:
selectbookbyid)时,进入图书管理模块。
6、当选择删除图书功能(4:
deletebookbyid)时,进入删除图书管理模块。
只要输入图书编号(id)即可完成此功能其运行界面如下:
,其运行界面如图:
7、当选择借阅图书功能(5:
borrowbookbyid)时,进入借阅图书管理模块。
8、当选择还书功能(5:
returnbookbyid)时,进入还书管理模块。
第4.2节会员管理功能运行界面
1、当选择会员管理功能(2:
membermanage)时,进入会员管理模块。
主要分为四个小模块,分别是查询会员目录(1:
Lookallmemberinfo)、增加会员(2:
Addmember)、查找会员(3:
Selectmemberbyid)、删除会员(4:
Deletememberbyid)、返回主界面(0:
2、当选择增加会员功能(2:
Addmember)时,进入增加会员管理模块。
主要输入会员的两个信息点,分别为编号(id)、姓名(name)。
3、当选择查看会员目录功能(1:
lookallmember)时,进入会员目录管理模块。
主要显示会员的两个信息点,分别为编号(id)、姓名(name)。
4、当选择查看会员功能(3:
selectmemberbyid)时,进入会员管理模块。
5、当选择删除会员功能(4:
deletememberbyid)时,进入删除会员管理模块。
只要输入会员编号(id)即可完成此功能其运行界面如下:
第5章总结
这次基础强化训练的课程设计对于我们来说,有一定的难度。
因为他要求我们较完整的去实现一个比较可行的程序。
将其应用到实际的生活中去。
我被分配到的题目是图书借阅系统的实现与设计。
这个题目相对来说贴近生活,比较容易理解。
但是设计一个较为完整的程序却不是这么简单的。
首先我分析了相关的题目内容,并由此而进行了相关资料和书籍的查询工作然后才开始正式进行设计。
一开始不知从何下手但后来分析了一下题目,并结合这学期所学的知识,再加上相关提示我决定用指针、链表和文件的内容来编写程序。
图书管理主要就是有一些操作来完成,这些操作包括:
新进图书基本信息的输入、图书基本信息的查询、对撤消图书信息的删除、为借书人办理注册、办理借书手续(非注册会员不能借书)、办理还书手续等等。
我想这正好用C++的知识来实现函数:
添加图书,图书查询,删除图书,增加会员,会员查询,删除会员,借阅图书,归还图书,借书信息,到期书催还。
最后编写退出系统的函数。
在具体编写程序时考虑到图书的相关操作与会员基本相同,所以实际上只要编写前三个函数,后面的函数把相应变量改变就可以了。
添加图书:
考虑到图书的信息较多,所以用结构体对其定义。
又考虑到图书量大,所以添加后要保存到文件中去。
图书查询:
用所学过的顺序查找法来写。
删除图书:
把保存到文件中的内容写到链表中去,用链表删除结点的方法来删除图书。
我们所学过的指针这时正好用上。
最后把各函数同主函数相连,用主函数调用它们,编写好好看的界面就可以了。
同时通过这几天的程序及报告编写,我也发现了自己的很多不足,自己知识的很多漏洞,看到了自己的实践经验还是比较缺乏,理论联系实际的能力还是比较脆弱。
尤其是编写大型的程序所要拥有的知识和技能比较缺乏。
程序编好了,还要经过调试和修改,这步也很关键,好的程序是经过了无数次的修改和调试才产生的。
我的程序基本上能够满足要求,但还有一些地方需要改进,在今后我应该在多看书的同时还要加强实践的练习。
才能进一步提高自己的编程能力。
最后,还要感谢我们实验室指导老师的细心指导、热心帮助。
路漫漫其修远兮,虽然本学期数据结构课程结束了,但仍觉得自己还有很多东西要学,我会在自己在以后的学习生活中不断努力、不断提高,争取更大的进步。
第6章源代码清单
#include<
stdio.h>
conio.h>
stdlib.h>
string.h>
#defineNULL0
typedefstructelem/*图书管理初始化*/
charmemberid[5];
}elemtype;
}lnode,*linknode;
typedefstructmemberelem/*会员管理初始化*/
charmembername[25];
}memberelemtype;
}mlnode,*mlinknode;
linknodehead;
mlinknodemhead;
FILE*bp,*bq;
voidinitallinfo()/*初始化图书、会员链表*/
//FILE*bp,*bq;
linknodep,q;
mlinknodem,n;
head=(lnode*)malloc(sizeof(lnode));
head->
next=NULL;
mhead=(mlnode*)malloc(sizeof(mlnode));
mhead->
bp=fopen("
book.txt"
"
rb"
);
printf("
%s"
feof(bp));
bq=fopen("
member.txt"
if(bp==NULL)
{
printf("
cannotopenbookbat!
"
getchar();
}
else
/*do
{
p=(lnode*)malloc(sizeof(lnode));
fread(p,sizeof(lnode),1,bp);
q=p->
next;
p->
next=head->
head->
next=p;
}while(q!
=NULL);
*/
fclose(bp);
if(bq==NULL)
cannotopenmemberdat!
/*do
m=(mlnode*)malloc(sizeof(mlnode));
fread(m,sizeof(mlnode),1,bq);
n=m->
m->
next=mhead->
mhead->
next=m;
}while(n!
fclose(bq);
}
voidmainmenu()/*系统菜单*/
system("
cls"
SYSTEMMAINMENU\n"
*********************************************\n"
*1:
bookmanage*\n"
*-------------------------------------------*\n"
*2:
membermanage*\n"
*0:
quit*\n"
\nPleaseinputorder:
\n"
linknodep=head->
Thebookinformationsare:
%-7s%-20s%-15s%-6s%s\n"
id"
title"
author"
mark"
borrower"
for(;
p!
=NULL;
p=p->
next)
p->
data.bookid,p->
data.bookname,p->
data.bookauthor,p->
data.bookmark,p->
data.memberid);
\nPleaseanykeyreturn....."
getchar();
linknodep=(lnode*)malloc(sizeof(lnode));
printf("
Addbooks.....\n"
%-7s%-20s%-15s%\n"
id(5)"
scanf("
%s%s%s"
data.bookauthor);
p->
data.bookmark[0]='
N'
;
data.bookmark[1]='
\0'
data.memberid[0]='
0'
data.memberid[1]='
\nAddsuccess!
\nPressanykeyreturn....."
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 图书 管理 系统