C++课程设计报告影碟出租管理系统.docx
《C++课程设计报告影碟出租管理系统.docx》由会员分享,可在线阅读,更多相关《C++课程设计报告影碟出租管理系统.docx(38页珍藏版)》请在冰点文库上搜索。
C++课程设计报告影碟出租管理系统
成绩
课程设计报告
题目影碟出租管理系统
课程名称面向对象程序设计课程设计
院部名称计算机工程学院
专业计算机科学与技术
班级
学生XX
学号
课程设计地点A101
课程设计学时20学时
指导教师尤丰
金陵科技学院教务处制
1.需求分析
1.1设计要求
1.影碟信息:
碟片名称、国家、类型、导演、主演影星、库存量等
2.出租信息:
顾客账号、碟片名称、借阅日期、归还日期、租金等
3.顾客信息:
账号、、资金余额、所租影碟列表
4.影碟维护:
添加、删除、修改
5.顾客维护:
添加、删除、修改
6.碟片查询:
按片名查询某片是否可借阅,结果有三种(可借阅、已借出、无此片)。
7.碟片借阅:
输入顾客账号、碟片名称、借阅日期,修改资金余额(每片押金20元,以防止不归还)
8.碟片归还:
输入顾客账号、碟片名称、归还日期,修改碟资金余额,先返该片还押金,计算每片租金(每三天的租金为1元,不满三天的按三天计算)。
因为每个顾客一次可借阅多片,所以也可能一次归还多片。
在该操作结束前,应输出该会员此次归还所需支付的总租金。
9.统计:
某类型影碟的清单
1.2需达到的功能
1.影碟信息的维护:
在该功能中可以实现对影碟信息的增加、删除、更新。
2.会员信息的维护:
在该功能中可以实现对会员信息的增加、删除、修改,同时另外新增一会员费充值功能。
3.信息查询系统:
①碟片信息查询:
当顾客查询某碟片时,可以被告知该碟片库存及租借信息、是否可借。
②会员信息查询:
查询某会员的信息,主要用来查看会员的余额。
③查看所有碟片信息:
查看库存中所有的碟片情况。
④查看所有会员信息:
查看已注册的所有会员信息情况。
4.碟片租赁系统:
实现会员的碟片租赁功能。
5.碟片归还系统:
实现会员的归还碟片功能。
6.类型统计:
统计某类型的碟片清单。
7.存储功能:
实现对程序数据的存储功能。
2.概要设计
2.1功能图
该影碟出租管理系统共有七大功能,分别为信息存储、影碟租借、影碟归还、影碟维护、会员维护、信息查询、类型统计。
信息存储功能主要就是在系统中,只要涉及到系统数据的改变,就会自动把新数据保存到文件中,并且在下次打开程序时自动把文件上的数据读入系统存中。
影碟的租借和归还是该程序的主要功能,影碟和会员维护系统主要实现对影碟和会员的增删改。
信息查询功能主要实现对指定信息的查找。
统计功能主要实现对影碟类型的统计。
2.2类
1.CD类:
该类拥有私有数据成员CDID(碟片编号)、CDname(碟片名称)、mainstar(主演明星)、country(国家)、style(碟片类型)、director(导演)、pany(制作公司)、lend(借出数量)、inventory(库存量)。
成员函数包含有参构造函数、重载流插入提取运算符、拷贝复制构造函数以及获取私有成员函数和更改私有成员函数,具体类信息如下:
classCD{
private:
stringCDID;//碟片编号
stringCDname;//碟片名称
stringmainstar;//主演明星
stringcountry;//国家
stringstyle;//碟片类型
stringdirector;//导演
stringpany;//制作公司
intlend;//借出数量
intinventory;//库存量
public:
CD(stringci="无",stringa="无",stringmst="无",stringcot="无",stringsty="无",stringdir="无",string="无",intle=0,intinv=0);
friendistream&operator>>(istream&is,CD&die);//重载输入运算符
friendostream&operator<<(ostream&os,CD&die);//重载输出运算符
friendofstream&operator<<(ofstream&ofs,CD&die);//重载文件插入运算符
CD(constCD&c);//复制构造函数
CD(CD&c,constCD&d);//复制构造函数
stringgetCDID(){returnCDID;}
stringgetCDname(){returnCDname;}
stringgetmainstar(){returnmainstar;}
stringgetcountry(){returncountry;}
stringgetstyle(){returnstyle;}
stringgetdirector(){returndirector;}
stringgetpany(){returnpany;}
intgetlend(){returnlend;}
intgetinventory(){returninventory;}
voidsetCDID(stringci){CDID=ci;}
voidsetCDname(stringa){CDname=a;}
voidsetmainstar(stringmst){mainstar=mst;}
voidsetcountry(stringcot){country=cot;}
voidsetstyle(stringsty){style=sty;}
voidsetdirector(stringdir){director=dir;}
voidsetpany(string){pany=;}
voidsetlend(intle){lend=le;}
voidsetinventory(intinv){inventory=inv;}
};
2.member类:
该类拥有私有成员memberID(会员号)、membername(会员)、sex(性别)、money(会费剩余)。
成员函数包含有参构造函数、流重载插入运算符、拷贝构造函数以及获取私有成员函数和更改私有成员函数,具体类信息如下:
classmember
{
friendistream&operator>>(istream&is,member&me);//重载插入运算符
friendostream&operator<<(ostream&os,member&me);//重载提取运算符
friendofstream&operator<<(ofstream&ofs,member&me);//重载文件插入运算符
private:
stringmemberID;//会员号
stringmembername;//会员名字
stringsex;//会员性别
floatmoney;//会费剩余
public:
member(stringmid="无",stringmna="无",stringse="无",floatmon=0.0);//带参默认构造函数
member(constmember&m);//拷贝构造函数
stringgetmemberID(){returnmemberID;}
stringgetmembername(){returnmembername;}
stringgetsex(){returnsex;}
floatgetmoney(){returnmoney;}
voidsetmemberID(stringmid){memberID=mid;}
voidsetmembername(stringmna){membername=mna;}
voidsetsex(stringse){sex=se;}
voidsetmoney(floatmon){money=mon;}
};
3.caozuo类:
该类私有成员分别为:
memberhy[100](能存100个会员信息)、CDzu_dip[100][10](每个会员租借的碟片信息,且规定每人最多只能租借10种影碟)、CDdip[100](定义能存100种碟片信息)、intcategory(用来做影碟的下标)、intkind(用来做会员的下标)、intlendnumber[100](记录每个会员租借的碟片种类)、stringtime[100][10][20](用来记录每个会员租借的每一种碟片对应的租借时间信息)。
成员函数主要有有参构造函数以及各种功能函数,详细信息如下所示:
classcaozuo
{
private:
memberhy[100];//定义能存100个会员信息
CDzu_dip[100][10];//每个会员对应租借的碟片信息,且规定最多只能租10种影碟
CDdip[100];//定义能存100种碟片信息
intcategory;//用来做影碟的下标
intkind;//用来做会员的下标
intlendnumber[100];//记录每个会员租借的碟片种类
stringtime[100][10][20];//用来记录每个会员租借的每碟片的租借时间信息
public:
caozuo(intc=0,intk=0)//初始化category和kind
{
category=c;
kind=k;
}
voidaiddp();//增加影碟信息
voidgxdp();//更新影碟信息
voidfind_dp();//查询影碟信息
voiddelete_dp();//删除碟片信息
voidput_all_dp();//输出全部影碟信息
voidaidhy();//注册新会员
voidgxhy();//更新会员信息
voidfind_hy();//查询会员信息
voidaid_money();//会员费充值
voiddelete_hy();//删除会员信息
voidput_all_hy();//输出全部会员信息
voidrent_cd();//租赁影碟
voidback_cd();//归还影碟
voiddp_statistics();//统计影碟种类清单
voidread_cd();//读取影碟文件上的信息
voidread_hy();//读取会员文件上的信息
voidread_lendcdcategory();//读取借碟片种类数据
voidread_rent_cd();//读取已租出碟片的信息
voidread_rent_time();//读取已租碟片的时间信息
};
2.3类图
在CD类中,主要就是碟片的基本信息,包括碟片的编号、名称、导演等等。
在member类中就是会员的基本信息,主要就是会员的ID、、性别和账户余额这些信息。
在caozuo类中就是把CD类和member类作为它的私语成员然后集中处理他们之间的关系,主菜单里的各种功能也全部在该类中定义实现。
在caozuo类中,定义了类数组memberhy[100],其功能作用是可以存储100个会员信息。
CD类数组CDdip[100],其功能作用是可以存储100种碟片信息。
另一个CD类二维数组CDzu_dip[100][10];其是与会员类数组绑定在一起的。
例如hy[5]对应着zu_dip[5][i],i代表会员hy[5]借的第几种碟片,且其上线是10。
Member类中的私有成员category是用来标记当前共入库的碟片的种类,用来做影碟CD类数组的下标。
私有成员函数kind是用来标记当前已注册的会员数量,即用来做会员类数组的下标。
类中定义的整形数组intlendnumber[100],是用来记录每个会员租借的碟片种类,例如lendnumber[5]=4,就是会员hy[5]租借了4种碟片。
并且lendnumber[10]也就是用来标记zu_dip[100][10]中的列数的,即做列的下标。
在caozuo类数组中还定义了一个string字符型二维数组stringtime[100][10][20],其中100是和会员hy[100]中的100是一一对应的,10是和zu_dip[100][10]中的10是一一对应的,20是字符长度。
该string字符型二维数组主要是用来记录每个会员租借的每种碟片的租借时间信息。
caozuo类组合了CD类和member类,使程序可以灵活地处理会员和碟片之间的关系。
而该类中的成员函数也主要都是在处理CD类和member之间的关系,最具有体现性的就是租赁函数和碟片归还函数。
3详细设计
1.类型统计功能:
进入该功能,程序使用者可以查看某种类型的碟片信息。
信息存储功能:
凡在执行程序中涉及到系统存改变的地方都要把改变的信息写入文件保存起来,以达到存储功能。
例如碟片的写入文件操作
ofstreamofile;
ofile.open("碟片信息.txt");
for(intj=0;jif(j==0){
ofile.setf(ios:
:
left);
ofile<ofile.setf(ios:
:
left);
ofile<}
ofile.close();
cout<<"添加成功!
"<2.主函数和菜单
inlinevoidmenu()
{
cout<<"********************************************************"<cout<<"**----------------影碟出租管理系统-------------------**"<cout<<"**----主菜单----**"<cout<<"**
(1)租赁影碟**"<cout<<"**
(2)归还影碟**"<cout<<"**(3)影碟信息维护**"<cout<<"**(4)会员信息维护**"<cout<<"**(5)信息查询系统**"<cout<<"**(6)影碟类型统计**"<cout<<"**(7)退出系统**"<cout<<"**----------------------------------------------------**"<cout<<"********************************************************"<}
inlinevoidmenu3()
{
cout<<"********************************************************"<cout<<"**-------------------影碟信息维护系统-----------------**"<cout<<"**
(1)添加新影碟**"<cout<<"**
(2)删除影碟信息**"<cout<<"**(3)更新影碟信息**"<cout<<"**(4)返回主菜单**"<cout<<"**----------------------------------------------------**"<cout<<"********************************************************"<}
inlinevoidmenu4()
{
cout<<"********************************************************"<cout<<"**------------------会员信息维护系统------------------**"<cout<<"**
(1)注册新会员**"<cout<<"**
(2)删除会员信息**"<cout<<"**(3)更新会员信息**"<cout<<"**(4)会员费充值**"<cout<<"**(5)返回主菜单**"<cout<<"**----------------------------------------------------**"<cout<<"********************************************************"<}
inlinevoidmenu5()
{
cout<<"********************************************************"<cout<<"**-----------------信息查询系统-----------------------**"<cout<<"**
(1)查询影碟信息**"<cout<<"**
(2)查询会员信息**"<cout<<"**(3)查看所有影碟信息**"<cout<<"**(4)查看所有会员信息**"<cout<<"**(5)返回主菜单**"<cout<<"**----------------------------------------------------**"<cout<<"********************************************************"<}
voidmain()
{
caozuoa;
a.read_cd();//系统自动读取文件中的碟片信息,并放到系统存中
a.read_hy();//系统自动读取文件中的会员信息,并放到系统存中
a.read_lendcdcategory();//系统自动读取文件中每个会员借的碟片种类信息,并放到系统存中
a.read_rent_cd();//系统自动读取文件中的已租出碟片信息,并放到系统存中
a.read_rent_time();//系统自动读取文件中的已租出的每碟片对应租借的时间信息,并放到系统存中
menu();
cout<<"请选择主菜单功能:
"<while
(1)
{
start:
charch;
cin>>ch;
if(ch=='1')
{
a.rent_cd();
cout<<"按任意键继续!
";
system("pause>nul");
system("cls");
menu();
cout<<"请选择主菜单功能:
"<}
elseif(ch=='2')
{
a.back_cd();
cout<<"按任意键继续!
";
system("pause>nul");
system("cls");
menu();
cout<<"请选择主菜单功能:
"<}
elseif(ch=='3')
{
system("cls");
menu3();
cout<<"请选择菜单功能:
"<while
(1)
{
charch1;
cin>>ch1;
if(ch1=='1')
{
a.aiddp();
cout<<"按任意键继续!
";
system("pause>nul");
system("cls");
menu3();
cout<<"请选择菜单功能:
"<}
elseif(ch1=='2')
{
a.delete_dp();
cout<<"按任意键继续!
";
system("pause>nul");
system("cls");
menu3();
cout<<"请选择菜单功能:
"<}
elseif(ch1=='3')
{
a.gxdp();
cout<<"按任意键继续!
";
system("pause>nul");
system("cls");
menu3();
cout<<"请选择菜单功能:
"<}
elseif(ch1=='4')
{
system("cls");
menu();
cout<<"请选择主菜单功能:
"<gotostart;
}
else
{
cout<<"输入错误,请重新输入!
"<cout<cout<<"请选择菜单功能:
"<}
}
}
elseif(ch=='4')
{
system("cls");
menu4();
cout<<"请选择菜单功能:
"<while
(1)
{
charch2;
cin>>ch2;
if(ch2=='1')
{
a.aidhy();
cout<<"按任意键继续!
";
system("pause>nul");
system("cls");
menu4();
cout<<"请选择菜单功能:
"<}
elseif(ch2=='2')
{
a.delete_hy();
cout<<"按任意键继续!
";
system("pause>nul");
system("cls");
menu4();
cout<<"请选择菜单功能:
"<}
elseif(ch2=='3')
{
a.gxhy();
cout<<"按任意键继续!
";
system("pause>nul");
system("cls");
menu4();
cout<<"请选择菜单功能:
"<}