图书管理系统程序设计Word文件下载.docx
- 文档编号:18082598
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:31
- 大小:87.77KB
图书管理系统程序设计Word文件下载.docx
《图书管理系统程序设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《图书管理系统程序设计Word文件下载.docx(31页珍藏版)》请在冰豆网上搜索。
4)、罚款管理系统
(1)罚款管理员通过罚款管理员身份认证进入罚款管理系统;
(2)罚款处理可以读取借阅信息表再生成超时罚款信息表,通过超时罚款信息表可
以生成罚款单给罚款管理员;
(3)图书管理员告知罚款系统图书超时未还,经罚款管理员鉴定后,对图书进行注销处理且罚款管理员对借阅者进行罚款处理。
3、DFD顶层流程图
4、细化的数据流图
三、数据定义:
1)ER模型图
2)数据定义:
读者的基本属性:
classStudent
{
private:
inttag;
intnumber;
charname[10];
intborbook[Bor];
public:
.....
图书的基本属性:
classBook
charname[20];
intonshelf;
四、总结结构和模块接口
五、程序流程图
六、测试和结果
1)单元测试:
采用白盒测试法
针对用户还书、预约、借书、查询等功能模块进行测试
(1)对于还书功能模块,模块的程序流程图如下:
判定节点为2,环形复杂度为:
2+1=3
采用路径覆盖法,测试用例为:
1、测试路径:
0-5输入条件:
retno不存在预期输出:
无该图书
2、测试路径:
0-1-4-5输入条件:
retno存在,borday>
90预期输出:
接受违约惩罚
3、测试路径:
0-1-2-3输入条件:
retno存在,borday<
=90预期输出:
成功还书
(2)对于预约功能模块,模块的程序流程图如下:
图中判定节点为:
2,环形复杂度为:
2+1+3
采用路径覆盖法,测试用例如下:
0-1-6-9输入条件:
borday>
接受违约处罚
0-1-2-7输入条件:
borday<
=90,borno不存在预期输出:
不存在该图书
0-1-2-3-8输入条件:
=90,borno存在,onself不存在预期输出:
图书已借出
4、测试路径:
0-1-2-3-4-5输入条件:
=90,borno存在,onself存在预期输出:
预约成功
(3)对于借书功能模块,模块的程序流程图如下:
图中判定节点为4,环形复杂度为:
4+1=5
采用路径覆盖测试法,测试用例如下:
0-7输入条件:
0-1-8输入条件:
=90,borno>
5预期输出:
超出所借数目的最大
0-1-2-3-9输入条件:
5,bookno不存在预期输出:
所借图书编号不存在
0-1-2-3-4-10输入条件:
5,bookno存在,onshelf不存在预期输出:
书不在架
5、测试路径:
0-1-2-3-4-5-6输入条件:
5,bookno存在,onshelf存在预期输出:
借书成功
(4)对于查询功能模块,模块的程序流程图如下:
流程图中判定节点为2,环形复杂度为:
0-1-6输入条件:
bookno不存在预期输出:
要查找的图书不存在
bookno存在,onself=1预期输出:
要查找的图书已被借走
0-1-2-4-5输入条件:
bookno存在,onself=0预期输出:
返回查找图书信息
2.)确认测试:
采用黑盒测试法测试
确认测试,主要是为了检测接口功能应对的各种非预期性输入时系统的可靠性和容错性等性能。
本小型图书管理系统将对用户和管理员与图书管理系统之间的交互接口进行测试,所以测试的主要内容有2个:
图书管理系统和管理员接口,图书管理系统和读者接口。
(1)读者与图书管理系统之间的接口
读者登陆图书管理系统,应受到系统如下的约束:
用户名需要以字母开头,后面是数字和字母组合,不能超过最大长度为10,密码长度不超过6
划分了等价类,情况如下所示:
输入条件
有效等价类
编号
无效等价类
用户名开头
字母(a-z)
1
非字母
4
余下字符
数字和字母组合
2
非数字和字母
5
字符数
小于10
3
大于10
6
有效等价类的测试用例:
测试编号
输入条件
预期输出
覆盖等价类
开头
个数
T1
a
dd32323
8
add32323
1、2、3
无效等价类的测试用例:
输入错误
2、3、4
T2
*>
<
?
1、3、5
T3
1234567899
11
1、2、6
(2)管理员与图书管理系统之间的接口
管理员与图书管理系统之间的接口和用户相同,所以对其测试仍然和用户与图书管理系统的测试一样的等价类和测试用例,不再详细介绍。
7、总结与展望
在此次小型图书管理系统的开发试验中,我获益匪浅。
自从上大学学习计算机来,我对编程也相对比较熟悉和了解,但是,每天编写的程序是毫无头绪和没有什么计划。
学习软件工程以来,对于软件项目的建立和开发有了一个系统的认识,软件开发分为七个方面:
问题定义,可行性分析、需求分析、总体设计、详细设计、编码、软件测试和维护。
在每一个阶段都有明确的目标和开发的过程。
本文档主要介绍了图书信息管理系统,根据学校图书馆的实际情况进行了需求分析,并对数据的结构设计进行了分析,初步设计出了系统的总体结构,此后对整个系统的功能和设计实现作出了详细的介绍。
由于设计时间仓促,对各个方面考虑的还不够全面,系统设计难免存在欠缺,有很多模块操作还不够人性化,对很多错误的信息处理还不够全面,包括数据的格式错误,数据的录入是否合乎实际要求等等。
对于一个完整的图书信息管理系统的功能实现还不够完整,很多功能还没有考虑到,还需要添加个别的功能模块,以达到系统的完整性。
由于设计时间的短暂,对于该系统的开发已经基本达到了最初的设计要求,能够基本满足用户的需求。
在以后的系统完善中还需对系统应用中遇到的错误进行处理,并检验数据的合法性,并做出相应的处理。
而且还要考虑到数据的完整性和安全性。
根据学校图书馆的实际需求再添加相应的功能模块,完成一个完整的实用的图书信息管理系统。
#include<
iostream>
iomanip>
string>
fstream>
usingnamespacestd;
constintReader=100;
constintMaxb=100;
constintBor=5;
Student(){}
char*getname()
returnname;
}
intgettag()
returntag;
intgetnumber()
returnnumber;
voidsetname(char*na)
strcpy(name,na);
voiddelbook()
tag=1;
voidaddStudent(intn,char*na)
tag=0;
number=n;
for(inti=0;
i<
Bor;
i++)
borbook[i]=0;
voidborrowbook(intbookid)//借书操作
for(inti=0;
if(borbook[i]==0)
{
borbook[i]=bookid;
return;
}
intretbook(intbookid)//还书操作
if(borbook[i]==bookid)
return1;
return0;
voidoutput()//读出读者信息
cout<
setw(5)<
number<
setw(10)<
name<
"
借书编号:
["
;
if(borbook[i]!
=0)
borbook[i]<
"
|"
]"
endl;
};
classRData
inttop;
//读者记录指针
Studentread[Reader];
RData()//构造函数,将Student.txt读到read[]中
{
Students;
top=-1;
fstreamfile("
Student.txt"
ios:
:
in);
//打开一个输入文件
while
(1)
file.read((char*)&
s,sizeof(s));
if(!
file)break;
top++;
read[top]=s;
file.close();
voidclear()
intaddStudent(intn,char*na)//查找是否存在
Student*p=equal(n);
if(p==NULL)
read[top].addStudent(n,na);
Student*equal(intStudentid)//按编号查找
for(inti=0;
=top;
if(read[i].getnumber()==Studentid&
&
read[i].gettag()==0)
return&
read[i];
returnNULL;
voidoutput()
for(inti=0;
read[i].output();
voidStudentdata();
//读者库维护
~RData()//析构函数,将read[]写到Student.txt文件中
out);
if(read[i].gettag()==0)
file.write((char*)&
read[i],sizeof(read[i]));
file.close();
voidRData:
Studentdata()
charchoice;
charrname[20];
intStudentid;
Student*r;
while(choice!
='
0'
)
cout<
┏━━━━━━━━━━━━━┓\n"
┃读者维护┃\n"
┃━━━━━━━━━━━━━┃\n"
┃1.新增┃\n"
┃2.更改┃\n"
┃3.删除┃\n"
┃4.查找┃\n"
┃5.显示┃\n"
┃6.全删┃\n"
┃0.退出┃\n"
┗━━━━━━━━━━━━━┛\n"
//cout<
cin>
>
choice;
switch(choice)
case'
1'
输入读者编号:
Studentid;
输入读者姓名:
rname;
addStudent(Studentid,rname);
break;
2'
r=equal(Studentid);
if(r==NULL)
该读者不存在"
输入新的姓名:
r->
setname(rname);
3'
输入读者编号:
该读者不存在"
<
endl;
delbook();
4'
读入读者编号:
该读者不存在"
output();
5'
output();
6'
clear();
default:
cout<
退出:
\n"
system("
cls"
);
break;
Book(){}
char*getname()
intgetnumber()
intgettag()
voidsetname(charna[])
voiddelbook()
voidaddbook(intn,char*na)
onshelf=1;
intborrowbook()//借书操作
if(onshelf==1)
onshelf=0;
voidretbook()//还书操作
voidoutput()//输出图书
setw(6)<
setw(18)<
name<
setw(10)
(onshelf==1?
在架"
已借"
)<
classBDatabase
Bookbook[Maxb];
//图书记录
BDatabase()//构造函数,将book.txt读到book[]中
Bookb;
book.txt"
b,sizeof(b));
file)break;
book[top]=b;
intaddbook(intn,char*na)
Book*p=equal(n);
if(NULL==p)
book[top].addbook(n,na);
Book*equal(intbookid)
if(book[i].getnumber()==bookid&
book[i].gettag()==0)
book[i];
returnNULL;
voidbookdata();
if(book[i].gettag()==0)
book[i].output();
~BDatabase()//析构函数,将book[]写到book.txt文件中
book[i],sizeof(book[i]));
voidBDatabase:
bookdata()
charbname[40];
intbookid;
Book*b;
┃图书维护┃\n"
cin>
switch(choice)
输入图书编号:
bookid;
输入图书书名:
bname;
addbook(bookid,bname);
case'
b=equal(bookid);
if(b==NULL)
该图书不存在"
输入新的书名:
b->
setname(bname);
读入图书编号:
该图书不存在"
co
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 管理 系统 程序设计
![提示](https://static.bdocx.com/images/bang_tan.gif)