C++图书管理系统课程设计.docx
《C++图书管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《C++图书管理系统课程设计.docx(57页珍藏版)》请在冰豆网上搜索。
![C++图书管理系统课程设计.docx](https://file1.bdocx.com/fileroot1/2023-2/26/601837a4-e291-4d44-98ca-705d19655454/601837a4-e291-4d44-98ca-705d196554541.gif)
C++图书管理系统课程设计
课程设计
课程名称
面向对象程序设计课程设计
题目名称
图书管理系统
专业班级
2015级计算机科学与技术1班
学生姓名
学号
指导教师
二○一六年十一月二十日
蚌埠学院计算机科学与技术系课程设计任务书
课程
面向对象程序设计课程设计
班级
2015级计科1班
指导教师
题目
图书管理系统
完成时间
2016年11月21日至
2016年12月18日
主要内容
要求完成以下功能:
1.对图书信息进行查询、更改、删除
2.对读者信息进行查询、更改、删除
3.通过输入读者编号和图书编号进行借阅图书
4.通过读者编号和图书编号进行还书
5.要求有错误提示功能,输入不正确提示错误
设计报告要求
1.封面
2.课程设计任务书
3.分工协作说明
4.课程设计报告
⑴目录⑵引言
⑶系统总体方案⑷设计思路和主要步骤
⑸各功能模块和流程图
程序类的说明
系统测试
结论
致谢
参考文献
附录(程序代码)
5.以班级为单位(文件夹),提交各组工程调试、运行代码(每组1个文件夹)。
说明:
学生完成课程设计后,提交课程设计报告及软件,要求文字通畅、字迹工整(也可以打印),文字不少于5000字,并装订成册。
版面要求
1.题目用黑体三号,段后距18磅(或1行),居中对齐;
2.标题用黑体四号,段前、段后距6磅(或0.3行);
3.正文用小四号宋体,行距为1.25倍行距;
4.标题按“一”、“㈠”、“1”、“⑴”顺序编号。
上机时间安排
星期
周次
一
二
三
四
五
第13周-
第16周
3-4节
3-4节
指导时间地点
上机时间,计算机基础实验室(B532、A502)
分工协作说明(以列表形式具体说明每个人所做的工作)
课题名称
学生姓名
学号
所做的工作
图书管理系统
团队总体分工、课程设计的整体设计、程序代码的编写、程序修改
部分代码的编写、部分资料查询、资料的收集与分析
部分课程设计说明书的书写、修改课程设计中不完善的地方
资料的收集与分析、部分课程设计说明书的书写
课程设计的总结、参考资料的查询及提取有用内容
最后总结调试。
由所有组员共同完成
蚌埠学院计算机科学与技术系本科课程设计成绩评定表
项目
权重
分值
具体要求
得分
文献阅读与调查论证
0.20
100
能独立查阅文献和从事其它调研;有收集、加工各种信息的能力
设计质量
0.30
100
设计合理、功能齐备,程序运行正常,实验数据准确可靠;有较强的实际动手能力
论文撰写质量
0.20
100
设计说明书完全符合规范化要求,用A4复印纸打印成文
学习态度
0.20
100
学习态度认真,科学作风严谨,严格按要求开展各项工作,按期完成任务
学术水平与创新
0.10
100
设计有创意,有一定的学术水平或实用价值
总分
评语:
等级:
指导教师:
年月日
二系统总体方案2
三设计思路7
㈠功能需求7
㈡数据需求7
㈢性能需求7
四各功能模块8
五流程图9
六程序类的说明11
七系统测试14
㈠运行14
㈡调试20
㈢测试21
九致谢22
十参考文献23
十一附录(程序代码)23
一引言
当今时代是飞速发展的信息时代。
在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。
计算机的最大好处在于利用它能够进行信息管理。
使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。
尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。
计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。
图书管理系统就是为了管理好图书馆信息而设计的。
图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。
根据调查得知,他们以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于图书借阅情况(如借书天数、超过限定借书时间的天数)的统计和核实等往往采用对借书卡的人工检查进行,对借阅者的借阅权限、以及借阅天数等用人工计算、手抄进行。
数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。
总的来说,缺乏系统,规范的信息管理手段。
尽管有的图书馆有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲置比较突出,这就是管理信息系统的开发的基本环境。
数据处理手工操作,工作量大,出错率高,出错后不易更改。
图书馆采取手工方式对图书借阅情况进行人工管理,由于信息比较多,图书借阅信息的管理工作混乱而又复杂;一般借阅情况是记录在借书证上,图书的数目和内容记录在文件中,图书馆的工作人员和管理员也只是当时对它比较清楚,时间一长,如再要进行查询,就得在众多的资料中翻阅、查找了,造成查询费时、费力。
如要对很长时间以前的图书进行更改就更加困难了。
基于这些问题,有必要建立一个图书管理系统,使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改图书情况。
为了联系实际,考虑各层次学校的情况,软件本身要求易学,界面友好,容易掌握,可以较简单方便的管理各种图书信息;硬件的配置要求不能太高,这样可以很好的适应当前的学校图书馆。
系统的总体特点应该是方便、简单、实用。
二系统设计方案
设计一个总菜单,1图书信息,2读者信息,3借阅图书,4归还图书。
基本功能的实现都将体现在这几个菜单选项中。
函数原型和数据结构如下:
constintMaxr=100;//最多的读者数
constintMaxb=100;//最多的图书数
constintMaxbor=5;//每位读者最多借的书
classBook//图书类,实现对图书的描述,图书的编号,书名,借出,还入等功能
classBDatabase//图书库类,实现对图书的维护,查找,删除
classReader//读者的信息描述
classRDatabase//读者类库,实现建立读者的个人资料
voidmain(){//实现程序的主界面
charbname[15];
charcname[15];
charauname[15];
charchoice4;
charchoice5;
charchoice6;
charchoice7;
intbookid,readerid;
RDatabaseReaderDB;
Reader*r;
BDatabaseBookDB;
Book*b;
cout<<"\n"<<"\n"<<"\n";
cout<<"\t\t\t\t\t欢迎光临图书馆管理系统!
"<cout<<"\t\t\t\t\t**1、读者模式**"<cout<<"\t\t\t\t\t**2、管理员模式**"<cout<<"\t\t\t\t\t**0、退出**"<cin>>choice7;
switch(choice7){
case'1':
{
cout<<"\t\t\t\t\t欢迎光临图书馆管理系统!
"<cout<<"\t\t\t\t\t**1.图书查询**"<cout<<"\t\t\t\t\t**2.退出系统**"<cin>>choice4;
switch(choice4){
case'1':
{
cout<<"\t\t\t\t\t**1.按图书编号查找**"<cout<<"\t\t\t\t\t**2.按图书书名查找**"<cout<<"\t\t\t\t\t**3.按图书作者查找**"<cout<<"\t\t\t\t\t**4.按图书出版社查找**"<cout<<"\t\t\t\t\t**0.返回**"<cout<<"\t\t\t\t\t请选择:
";
cin>>choice5;
switch(choice5){
case'1':
cout<<"请输入图书编号:
";
cin>>bookid;
b=BookDB.query1(bookid);
if(b==NULL){
cout<<"该图书不存在!
";
break;
}
cout<b->disp();
break;
case'2':
cout<<"请输入图书书名:
";
cin>>bname;
b=BookDB.query2(bname);
break;
case'3':
cout<<"请输入图书作者:
";
cin>>auname;
b=BookDB.query3(auname);
break;
case'4':
cout<<"请输入图书出版社:
";
cin>>cname;
b=BookDB.query4(cname);
break;
case'0':
break;
}
}
case'2':
exit
(1);
}
}
case'2':
{
BookDB.song();
cout<<"\n"<<"\n"<<"\n";
cout<<"\t\t\t\t\t欢迎光临图书馆管理系统!
"<while(choice5!
='0'){
cout<<"\n";
cout<<"\n\t\t\t\t\t****图书管理系统****\n\n";
cout<<"\t\t\t\t\t**1.图书信息**"<cout<<"\t\t\t\t\t**2.读者信息**"<cout<<"\t\t\t\t\t**3.借阅图书**"<cout<<"\t\t\t\t\t**4.归还图书**"<cout<<"\t\t\t\t\t**0.退出**"<cout<<"\t\t\t\t\t请选择:
";
cin>>choice6;
switch(choice6){
case'1':
BookDB.bookdata();
break;
case'2':
ReaderDB.readerdata();
break;
case'3':
cout<<"\t\t\t\t借书操作"<cout<<"请输入借书读者编号:
";
cin>>readerid;
r=ReaderDB.queryid(readerid);
if(NULL==r){//按编号查找是否有该读者
cout<<"不存在该读者,不能借书!
"<break;
}
cout<<"请输入要借图书编号:
";
cin>>bookid;
b=BookDB.query1(bookid);
if(b==NULL){//按编号查找是否有该图书
cout<<"不存在该图书,不能借书!
"<break;
}
if(b->borrowbook()==0){
cout<<"该图书已借完,不能借书!
"<break;
}
cout<<"读者借书成功!
"<r->borrowbook(b->getno());
break;
case'4':
cout<<"\t\t\t\t还书操作"<cout<<"请输入还书读者编号:
";
cin>>readerid;
r=ReaderDB.queryid(readerid);
if(r==NULL){
cout<<"不存在该读者,不能还书"<break;
}
cout<<"请输入要归还图书编号:
";
cin>>bookid;
b=BookDB.query1(bookid);
if(b==NULL){
cout<<"不存在该图书,不能还书"<break;
}
b->retbook();
r->retbook(b->getno());
break;
default:
break;
}
}
}
case'0':
break;
default:
break;
}
}
三设计思路
㈠功能需求
设计一个通过链表实现对图书信息进行管理的程序,要求完成以下功能:
1、建立图书库类,可以对图书的具体信息进行管理,例如:
图书号、书名及出版社、作者、册数;
2、将输入信息按图书号进行从小到大的排序;
3、实现查询功能—输入书名,查询输出相关信息;
4、实现修改功能—修改图书信息;
5、实现删除功能—输入书名或书号,可将其信息从图书库类中删除;
6、建立读者库类,可以对读者的具体信息进行管理,例如:
读者编号、姓名;
7、将输入信息按读者编号进行从小到大的排序;
8、实现查询功能—输入读者编号或者姓名,查询输出相关信息;
9、实现修改功能—修改读者信息;
10、实现删除功能—输入读者名或读者编号号,可将其信息从读者库类中删除;
㈡数据需求
需要向系统输入图书号、书名及出版社、作者、册数、图书位置
需要记录读者编号、姓名、班级、手机号
㈢性能需求
在运行本程序时只要按照正确的操作方法不会出现无法运行的情况,系统稳定性好,安全,可靠。
四功能模块设计
根据分析整个系统主要划分为4个大类、4个功能模块,分别执行要求中的功能。
该系统需要有图书信息管理、读者信息管理,图书借阅、图书归还等。
1、图书类(classBook)模块中,可以实现对图书信息的描述,管理图书的编号、书名、借出、归还等功能。
2、图书库类(classBDatabase)模块中,实现对图书的新增、维护、删除等功能,其中构造函数BDatabase()实现对新增图书信息的录入,并自动保存在book.txt文件中。
3、读者类(classReader)模块中,对读者信息新增、借书、还书及读出读者信息等功能。
4、读者库类(classRDatabase)模块中,实现建立读者信息,删除读者信息及查找读者,并将读者有关信息自动保存在reader.txt文件中。
5、除了图书类及读者类两大模块还有图书借阅功能,通过图书编号和读者编号记录借出图书及相关信息且图书库中库存数量自动减一。
6、图书归还功能通过读者编号及图书编号确认图书归还。
五流程图
图1图书管理系统流程图
图2图书信息管理流程图
图3图书信息流程图
六程序类的说明
6.1图书类
该类实现对图书的描述,图书的编号,书名,借出,还入等功能
Book
+tag:
int
+no:
int
+name[20]:
char
+author[20]:
char
+cbs[20]:
char
+onshelf:
int
+getname():
char
+getauthorname():
char
+getcbsname():
char
+getno():
int
+gettag():
void
+setonshelf(intoa):
void
+delbook():
void
+addbook():
void
+borrowbook():
int
+retbook():
void
+disp():
void
6.2图书库类
该类实现对图书的新增、维护、删除等功能
Database
+top:
int
+clear():
void
+addbook():
int
+query1(intbookid):
book
+query2(chara[]):
book
+query3(chara[]):
book
+query4(chara[]):
book
+bookdata():
void
+disp():
void
6.3读者类
该类实现对读者信息新增、借书、还书及读出读者信息等功能。
Reader
+tag:
int
+no:
int
+name[10]:
char
+borbook[Maxbor]:
int
+getname():
char
+gettag():
int
+getno():
int
+setname(charna[]):
void
+delbook():
void
+addreader(intn,char*na):
void
+borrowbook(intbookid):
void
+retbook(intbookid):
int
+disp():
void
6.4读者库类
该类实现建立读者信息,删除读者信息及查找读者
RDatabase
+top:
int
+read[Maxr]:
reader
+clear():
void
+addreader(intn,char*na):
int
+queryid(intreaderid):
Reader
+queryname(charreadername[10]):
Reader
+disp():
void
+readerdata():
void
七系统测试
(一)运行
1、点击运行,点击运行,首先出现的是选择登陆界面,选择界面选项进行操作,以管理员、读者的身份进入系统。
可进行如图7.1所示的系统主界面(选择数字进入,退出系统)。
图7.1选择登陆方式界面
2、选择1进入读者模式,然后进入图书管理系统读者版(功能剪切版),可以选择图书查询或者退出系统。
如图7.2所示图书信息页面。
图7.2图书信息页面
3、选择1进入图书查询,可以按照图书编号、作者、书名、出版社等方式查找。
如图7.3所示图书信息查询页面。
图7.3图书信息查询页面
4、输入2,进入管理员模式,然后提示输入管理员密码。
如图7.4所示管理员登录页面。
图7.4管理员登录页面
5、输入管理员密码后进入图书管理系统管理员模式。
如图7.5所示管理员模式页面。
图7.5管理员模式页面
6、管理员模式图书信息管理功能
⑴、选择1进入图书信息管理页面,包括新增、更改、删除、查找、全删、全显、更改等功能。
如图7.6所示图书信息管理页面。
图7.6图书信息管理页面
⑵、选择1进入新增图书页面,可以增加图书编、书名、作者、出版社、存量、图书位置等,如图7.7所示新增图书页面。
图7.7所示新增图书页面
⑶、图7.6所示图书信息管理页面除新增图书,还可以对图书存量进行更改,还可以通过输入图书编号删除特定图书,通过图书编号、图书书名、图书出版社、图书作者等对图书进行查找。
如图7.8所示图书查询页面。
图7.8图书查询页面
7、管理员模式图书信息管理功能
⑴、选择2进入读者信息管理页面,包括新增、更改、删除、查找、全删、全显、更改等功能。
如图7.9所示读者信息管理页面。
图7.9读者信息管理页面
⑵、选择1进入新增读者页面,可以增加图书编、书名、作者、出版社、存量、图书位置等,如图7.10所示新增读者页面。
图7.10新增读者页面
⑶、图7.9所示读者信息管理页面除新增读者,还可以对同编号读者信息进行更改,通过输入读者编号删除读者,通过读者编号等对图书进行查找。
8、管理员模式借阅图书功能
进入图书借阅系统后,通过管理员输入读者编号及所借书籍编号后即借书成功。
如图7.11所示借阅图书操作页面。
图7.11借阅图书操作页面
9、管理员模式归还图书功能
输入读者编号和图书编号即归还成功。
如图7.12所示归还图书操作页面。
图7.12归还图书操作页面
(二)调试
调试是软件开发过程中的一个重要环节,也是最复杂,对软件开发者者来说也是最艰巨的任务。
调试的任务是及时改正测试过程中发现的软件错误。
具体地说,调试过程由两个步骤组成,它从表示程序中存在错误的某迹象开始,首先确定错误的准确位置,也就是找出哪个模块或哪个语句引起的错误。
然后仔细研究推断代码以确定问题的原因,并设法改正。
调试过程主要是运行编制好的程序,然后遇到错误后根据系统的提示,找到相关的问题所在。
本系统调试过程中遇到问题、原因和解决方法如下面介绍。
1、程序只能在当前运行时才能实现自动生成书籍信息,而关闭系统再次打开添加新读者又从0开始与之前的读者重复,导致借还信息程序管理混乱,无法正确运行。
原因:
在执行后系统没有记录当前的读者信息,因为读者信息自动按1、2、3、4依次递增生成系统;应该记录最后所生成的读者信息,在下次运行程序时系统会接着上次记录的读者信息自动依次生成。
2、运行完程序一次有错误提醒
原因:
上次运行程序后没有关闭操作界面当点击编译时会有一个错误提示,解决方法:
将上一次运行时的操作界面关闭。
3、设计过程中的想法与程序中的不足
总的来说这个程序大致实现了题目的要求,但是这套程序仍然存在着很多的问题与不足。
比如,程序中主函数写的有点繁琐,有太多的嵌套,不是那么井然有序,条理清晰,程序注释也不是很完善,对信息处理功能还有些不足之处,提示信息不明确。
还有就是没能做到模糊查询。
系统主要是参照课本商品信息管理系统模版编写的,同时也得到了老师和同学的一些帮助。
我在做系统的过程中也遇到了很多问题,有的是知识不足,有的是考虑不够周全。
事实证明,只靠自己的知识面还是很窄,独立处理问题能力不是很强,以后还要加强对C++语言的学习。
对于C++语言编写的程序来说,使用方法大致都是一样的,如果要改进的话,就是要改进一些算法,尽量把界面