书店租赁管理系统设计说明书.docx

上传人:b****5 文档编号:5142848 上传时间:2022-12-13 格式:DOCX 页数:16 大小:122.18KB
下载 相关 举报
书店租赁管理系统设计说明书.docx_第1页
第1页 / 共16页
书店租赁管理系统设计说明书.docx_第2页
第2页 / 共16页
书店租赁管理系统设计说明书.docx_第3页
第3页 / 共16页
书店租赁管理系统设计说明书.docx_第4页
第4页 / 共16页
书店租赁管理系统设计说明书.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

书店租赁管理系统设计说明书.docx

《书店租赁管理系统设计说明书.docx》由会员分享,可在线阅读,更多相关《书店租赁管理系统设计说明书.docx(16页珍藏版)》请在冰豆网上搜索。

书店租赁管理系统设计说明书.docx

书店租赁管理系统设计说明书

第一章开发背景

书店从事出租图书、影碟服务,需实现图书和影碟信息的输入、查询、显示,书(碟)借、还等管理,归还时计算租金,并支付租金,书店用户分为会员用户和一般用户,会员用户和一般用户包含姓名、电话等信息,图书和影碟也包含许多的基本信息,对于每次的租赁都要记录租赁物的信息以及借书人等情况,非常麻烦,书店租赁管理系统就是为了解决这些问题而被开发出来的,书店租赁管理系统完全能够满足书店的功能需求,并能方便的管理好书店的信息。

第二章系统需求

2.1系统总需求

书店租赁管理系统需要满足来自两方面的需求,这两个方面分别是借书人者、借出人。

借书人的需求是查询借的租赁物的信息以及什么时候借的,然后再支付租金,借出人需要对书店租赁物的状态进行查询,如果是在店状态时就能执行借出操作,并且借书人也需要查询借出的租赁物的信息,还要能够对还书进行信息输入,通过系统最终得出租金,借书人还需要对营业的情况进行分析,以做出正确的决策。

2.2功能需求

书店租赁管理系统能够为管理人员提供最及时的经营数据,包括当前书店中租赁物是否在店,书店中需要添加哪些比较热门的租赁物,为在激烈竞争市场中提供更加精确、及时的数据供决策层参考。

整个系统共分六个模块:

租赁物信息的输入、查询、显示所有租赁物的信息、借出、归还、租金。

租赁物信息的输入:

输入商店中所有图书和影碟的信息,并把租赁物的借出时间和归还时间都赋值为零,借出时间为零表示该租赁物还在店内。

查询:

查询该租赁物的状态,共有三种状态,即:

在店内,被借出,不存在。

显示所有租赁物的信息:

显示所有图书和影碟的信息。

借出:

输入借出信息,并进行相关的操作。

归还:

输入归还信息,并进行相关的操作。

租金:

计算租金。

2.3数据需求

一般用户信息=用户类的信息+押金

会员用户信息=用户类的信息+入会费用+入会时间+折扣

图书=租赁物类的信息+价格+作者

影碟=租赁物类的信息+出版公司+影片数量

租金=折扣*天数*每天的租金*数量

第三章系统设计

3.1系统总功能模块设计

书店租赁管理系统是对租赁物的情况进行综合的管理。

包括租赁物信息的输入、查询、显示所有租赁物的信息、借出、归还、租金等六个功能。

书店租赁管理系统的软件结构如图3.1所示。

分工:

莫雁滔:

借出、归还、租金。

邹海屏:

输入、查询、显示。

 

3.2各子功能模块设计

3.2.1借出

(1)功能:

查询想要借的租赁物的当前状态,当图书在店内是执行借书操

作并输入借出时间以及借书人的信息。

(2)程序流程图:

借出模块的程序流程图如下图3.2所示。

3.2.2归还

(1)功能:

查询想要还的租赁物的当前状态,当租赁物被借出时执行还书操作,并输入归还时间。

(2)程序流程图:

借出模块的程序流程图如下图3.3所示。

3.2.3租金

(1)功能:

计算租赁物的租赁。

(2)程序流程图:

租金模块的程序流程图如下图3.4所示。

3.3.1租赁物信息

不同租赁物公有信息为:

租赁物编号,名称,购买时间,租金,借出时间,归还时间。

用类表示租赁基类信息,用类表示图书派生类和影碟派生类的信息,如下面定义。

classzulinwu

{public:

intnumber;//租赁物的编号

stringmc;//名称

floattime;//购买时间

floatzujin;//租金

floattime1;//借出时间;

floattime2;//归还时间;

};

3.3.2图书信息

图书信息包括从租赁物类继承来的信息和价格、作者。

classbook:

virtualpubliczulinwu//书籍类

{

public:

floatjiage;//价格

stringwriter;//作者

};

3.3.3影碟信息

影碟信息包括从租赁物类继承来的信息和出版公司、影片数量

classfilm:

virtualpubliczulinwu//影碟类

{public:

stringcompany;//出版公司

intnum;//影片数量

};

第四章系统测试

4.1测试的目的

通过测试发现软件错误:

功能的完备性:

检验程序功能是否达到用户预先制定的需求

错误检查:

检查程序潜在的错误,为软件可靠性与安全性的评估提供依据

4.2测试手段

人工测试技术

4.3测试用例

序号

测试子项

输入/动作

期望输出

实际情况

 

1

 

借出

①输入编号为“1”的图书,该图书能查找到,当借出时间为零时,输出“你要借的书已找到,还在店内”,并对该图书进行借出操作;当借出时间不为零时输出“你找的书已被借出”,并结束。

②输入编号为“2”的图书,该编号不能找到,就直接结束。

条件满足时能执行借出操作;不满足时输出相应的提示。

符合

 

2

归还

①输入编号为“1”的图书,该图书能找到,当借出时间为零时,输出“该书还在商店,不能执行还操作”;当借出时间不为零时输出“你要还的书已被借出,可执行还操作”,并对该图书进行归还操作。

②输入编号为“2”的图书,编号不能找到,就直接结束。

条件满足时能执行归还操作;不满足时输出相应的提示。

符合

3

租金

①判断是否为会员,是会员输入“1”,不是会员输入“0”,不是会员不打折;如果是会员则根据充值的会费打折。

②从归还模块调用接触时间和归还时间,得到出租时间,再由计算租金的公式得出租金,并显示租金。

正确输出租金

符合

第五章系统特点及关键技术

5.1系统特点

5.2.1输入模块

本模块的特点是租赁物的信息进行输入,首先输入图书的信息,继续就输“y”,结束就输“n”;然后输入影碟的信息,继续就输“y”,结束就输“n”,比较方便。

case1:

{

cout<<"输入图书信息:

"<

for(i=0;i<=99;i++)

{

ts[i].inputAllinfo();

a++;

cout<<"继续请输入'y'or'Y',否则输入'n'or'N'"<

cin>>flag;

if(flag=='y'||flag=='Y')continue;

if(flag=='n'||flag=='N')break;

}

temp3.writefile("E:

\\data1.txt");

cout<<"输入影碟信息:

"<

for(i=0;i<=99;i++)

{

yd[i].inputAllinfo();//输入影碟信息

b++;

cout<<"继续请输入'y'or'Y',否则输入'n'or'N'"<

cin>>flag;

if(flag=='y'||flag=='Y')continue;

if(flag=='n'||flag=='N')break;

}

}

temp4.writefile("E:

\\data2.txt");

5.2.2查询

本模块的特点是要查找图书时输入“t”,查找影碟输入“y”,然后输入编号,对该租赁物进行查找,找到时有分为在店内和被借出两种状态;没找到时会输出“你找的图书不存在”。

case2:

{cout<<"\n";

cout<<"请输入flag的值,flag='t'时,查找图书:

";

cin>>flag;

if(flag=='t')

{cout<<"请输入图书的编号:

";

cin>>bh;

for(i=0;i

{if(bh==ts[i].number)

{cout<<"图书显示为:

"<

ts[i].showAllinfo();

p++;

symbol=ts[i].time1;

if(symbol!

=0)cout<<"你找的书已被借出:

";

elsecout<<"你找的书在店内:

";

break;

}

}

if(p==0)printf("你找的图书不存在:

");

}

cout<<"flag='d'时,查找影碟:

";

cin>>flag;

if(flag=='d')

{cout<<"请输入影碟的编号:

";

cin>>bh;

for(i=0;i

{if(bh==yd[i].number)

{cout<<"影碟显示为:

"<

yd[i].showAllinfo();

q++;

symbol=yd[i].time1;

if(symbol!

=0)cout<<"你找的影碟已被借出:

";

elsecout<<"你找的书在店内:

";

break;

}

}

if(q==0)printf("你找的影碟不存在:

");

}

break;

}

5.2.3借出操作

本模块的特点是输入想要借的租赁物的编号,如果编号不存在就结束;如果存在,且借出时间为零,则执行借出操作;借出时间不为零就输出“你找的租赁物被借出”并结束。

case4:

{cout<<"\n";

cout<<"请输入flag的值,flag='t'时,查找图书:

";

cin>>flag;

if(flag=='t')

{cout<<"请输入图书的编号:

";

cin>>bh;

for(i=0;i

{if(bh==ts[i].number)

{

symbol=ts[i].time1;

if(symbol==0)

{cout<<"你要借的书已找到,还在店内:

\n";

cout<<"输入借书日期:

";

cin>>r;

ts[i].time1=r;

temp2[i].inputNewinfo();

cout<<"输入借书人信息:

"<

cout<<"普通用户输'p',会员用户输入'h':

";

cin>>flag;

if(flag=='p')

{py.inputAllinfo();

d=1;

}

if(flag=='h')

{

hy.inputAllinfo();

d=hy.discount;

}

g++;

break;

}

elsecout<<"你找的书已被借出:

"<

}

}

}

cout<<"请输入flag的值,flag='d'时,查找影碟:

";

cin>>flag;

if(flag=='d')

{cout<<"请输入影碟的编号:

";

cin>>bh;

for(i=0;i

{if(bh==yd[i].number)

{

symbol=yd[i].time1;

if(symbol==0)

{cout<<"你要借的影碟已找到,在店内:

\n";

cout<<"输入借影碟的日期:

";

cin>>r;

yd[i].time1=r;

temp2[i].inputNewinfo();

if(g==0)

{cout<<"输入借影碟人的信息:

"<

cout<<"普通用户输'p',会员用户输入'h':

";

cin>>flag;

if(flag=='p')

{py.inputAllinfo();

d=1;

}

if(flag=='h')

{

hy.inputAllinfo();

d=hy.discount;

}

}

break;

}

elsecout<<"你找的已影碟被借出:

"<

}

}

}

break;

}

5.2.4归还操作

本模块的特点是输入想要归还的租赁物的编号,如果编号不存在就结束;如果存在,且借出时间不为零,则执行归还操作;归还时间为零就输出“你找的租赁物还在店内,不能执行归还操作”并结束。

case5:

{cout<<"\n";

cout<<"请输入flag的值,flag='t'时,查找图书:

";

cin>>flag;

if(flag=='t')

{cout<<"请输入要还的图书的编号:

";

cin>>bh;

for(i=0;i

{if(bh==ts[i].number)

{

symbol=ts[i].time1;

if(symbol!

=0)

{cout<<"你要还的书已被借出,可执行还操作:

\n";

cout<<"请输入还书日期:

";

cin>>r;

ts[i].time2=r;

t1=ts[i].time1;//借出时间

t2=ts[i].time2;//归还时间

ts[i].time1=0;

ts[i].time2=0;

break;

}

else

{cout<<"该书还在商店,不能执行还操作:

"<

break;

}

}

}

}

cout<<"请输入flag的值,flag='d'时,查找影碟:

";

cin>>flag;

if(flag=='d')

{cout<<"请输入要还影碟的编号:

";

cin>>bh;

for(i=0;i

{if(bh==yd[i].number)

{

symbol=yd[i].time1;

if(symbol!

=0)

{cout<<"你要还的影碟已被借出,可执行还操作:

"<

cout<<"请输入还碟日期:

";

cin>>r;

yd[i].time2=r;

t3=yd[i].time1;//借出时间

t4=yd[i].time2;//归还时间

yd[i].time1=0;

yd[i].time2=0;

break;

}

else

{cout<<"该影碟还在商店,不能执行还操作:

"<

break;

}

}

}

}

break;

}

5.2.5租金的计算

本模块的特点是判断是否为会员,不是会员时不折;如果是会员则根据充值的会费打折;然后通过归还模块调用接触时间和归还时间,得到出租时间,再由计算租金的公式得出租金。

case6:

{

if((t2-t1)<=0)m1=0;

else

{

t=t1;//计算图书的租金

t5=t*30+(t1-t)*100;

t=t2;

t6=t*30+(t2-t)*100;

m1=d*e1*(t6-t5);

}

if((t4-t3)<=0)m2=0;

else

{

t=t3;//计算影碟的租金

t5=t*30+(t3-t)*100;

t=t4;

t6=t*30+(t4-t)*100;

m2=d*e2*(t6-t5);

}

m=m1+m2;//总租金

cout<<"租金为:

"<

break;

}

}

结论

本系统是一个面向书店管理,具有一定实用性的面向对象管理系统。

它主要完成了书店功能,包括租赁物信息的输入、查询显示所有租赁物的信息、借出、归还、以及计算租金等。

本系统采用当前流行的面向对象来完成整个系统的设计。

系统在设计过程中不可避免地遇到了各种各样的问题,由于整个系统完全都是由个人设计的,由于本人水平有限,还存在着许多不足之处。

需要进行不断地补充和完善。

参考文献

[1]马石安魏文平.面相对象程序设计教程:

c++语言描述.清华大学出版社.2007.8

[2]杨路明.C语言程序设计教程.北京邮电大学出版社.2010.12

[3]张乃孝.算法与数据结构.高等教育出版社.2006.1

结束语

这次这次课程设计让我熟练掌握了类的继承,派生,初步掌握了文件的读写,并且让我对与编写大程序的能力有较大的提升,同时也提高了我编写大程序时的全局思想能力,这次编程,我发现编写一些大程序对于提高编程能力有很大的帮助,能够把平时所学联系起来,对所学知识的真正理解有很大的帮助,这是我最大的收获。

同时,这次编程让我发现自己还有不足之处,编写的程序比较乱,没有领会类的精髓,代码可读性不强,这是我目前需要改进的。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1