C++课程设计报告影碟出租管理系统_第1页
C++课程设计报告影碟出租管理系统_第2页
C++课程设计报告影碟出租管理系统_第3页
C++课程设计报告影碟出租管理系统_第4页
C++课程设计报告影碟出租管理系统_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、成绩课程设计报告 题 目 影碟出租管理系统 课 程 名 称 面向对象程序设计课程设计 院 部 名 称 计算机工程学院 专 业 计算机科学与技术 班 级 学 生 姓 名 学 号 课程设计地点 A101 课程设计学时 20学时 指 导 教 师 李尤丰 金陵科技学院教务处制1需求分析1.1设计要求1. 影碟信息:碟片名称、国家、类型、导演、主演影星、库存量等 2. 出租信息:顾客账号、碟片名称、借阅日期、归还日期、租金等3顾客信息:账号、姓名、资金余额、所租影碟列表4影碟维护:添加、删除、修改5顾客维护:添加、删除、修改6碟片查询:按片名查询某片是否可借阅,结果有三种可借阅、已借出、无此片。7碟片借

2、阅:输入顾客账号、碟片名称、借阅日期,修改资金余额每片押金20元,以防止不归还8碟片归还:输入顾客账号、碟片名称、归还日期,修改碟资金余额,先返该片还押金,计算每片租金每三天的租金为1元,不满三天的按三天计算。因为每个顾客一次可借阅多片,所以也可能一次归还多片。在该操作结束前,应输出该会员此次归还所需支付的总租金。9统计:某类型影碟的清单1.2需到达的功能1. 影碟信息的维护:在该功能中可以实现对影碟信息的增加、删除、更新。2. 会员信息的维护:在该功能中可以实现对会员信息的增加、删除、修改,同时另外新增一会员费充值功能。3. 信息查询系统:碟片信息查询:当顾客查询某碟片时,可以被告知该碟片库

3、存及租借信息、是否可借。会员信息查询:查询某会员的信息,主要用来查看会员的余额。查看所有碟片信息:查看库存中所有的碟片情况。查看所有会员信息:查看已注册的所有会员信息情况。4. 碟片租赁系统:实现会员的碟片租赁功能。5. 碟片归还系统:实现会员的归还碟片功能。6. 类型统计:统计某类型的碟片清单。7. 存储功能:实现对程序内数据的存储功能。2概要设计2.1功能图该影碟出租管理系统共有七大功能,分别为信息存储、影碟租借、影碟归还、影碟维护、会员维护、信息查询、类型统计。信息存储功能主要就是在系统中,只要涉及到系统内数据的改变,就会自动把新数据保存到文件中,并且在下次翻开程序时自动把文件上的数据读

4、入系统内存中。影碟的租借和归还是该程序的主要功能,影碟和会员维护系统主要实现对影碟和会员的增删改。信息查询功能主要实现对指定信息的查找。统计功能主要实现对影碟类型的统计。翻开程序读取文件信息主菜单类型统计信息查询会员维护影碟维护碟片归还碟片借阅全部会员信息全部碟片信息会员信息会员费充值会员删除会员注册会员更新碟片信息更新影碟删除影碟增加影碟信息存储到文件中主菜单否是否退出?是退出程序2.2类 1.CD类:该类拥有私有数据成员CDID碟片编号、CDname碟片名称、mainstar主演明星、country国家、style碟片类型、director导演、company制作公司、lend借出数量、i

5、nventory库存量。成员函数包含有参构造函数、重载流插入提取运算符、拷贝复制构造函数以及获取私有成员函数和更改私有成员函数,具体类信息如下:class CDprivate:string CDID; /碟片编号string CDname; /碟片名称string mainstar; /主演明星string country; /国家string style; /碟片类型string director; /导演string company; /制作公司int lend; /借出数量int inventory; /库存量public:CD(string ci="无",strin

6、g cna="无",string mst="无",string cot="无",string sty="无",string dir="无",string com="无",int le=0,int inv=0);friend istream& operator>>(istream &is,CD &die); /重载输入运算符friend ostream& operator<<(ostream &os,CD &

7、;die); /重载输出运算符friend ofstream &operator<<(ofstream &ofs,CD&die); /重载文件插入运算符CD(const CD &c); /复制构造函数CD(CD &c,const CD &d); /复制构造函数string getCDID()return CDID;string getCDname()return CDname;获取私有成员string getmainstar()return mainstar;string getcountry()return country;stri

8、ng getstyle()return style;string getdirector()return director;string getcompany()return company;int getlend()return lend;int getinventory()return inventory;void setCDID(string ci)CDID=ci;void setCDname(string cna)CDname=cna;void setmainstar(string mst)mainstar=mst;更改私有成员void setcountry(string cot)co

9、untry=cot;void setstyle(string sty)style=sty;void setdirector(string dir)director=dir;void setcompany(string com)company=com;void setlend(int le)lend=le;void setinventory(int inv)inventory=inv;2.member类:该类拥有私有成员memberID会员号、membername会员姓名、sex性别、money会费剩余。成员函数包含有参构造函数、流重载插入运算符、拷贝构造函数以及获取私有成员函数和更改私有成员函

10、数,具体类信息如下:class memberfriend istream& operator>>(istream& is,member &me);/重载插入运算符friend ostream& operator<<(ostream& os,member &me);/重载提取运算符friend ofstream& operator<<(ofstream& ofs,member &me);/重载文件插入运算符private:string memberID; /会员号string member

11、name; /会员名字string sex; /会员性别float money; /会费剩余public:member(string mid="无",string mna="无",string se="无",float mon=0.0);/带参默认构造函数member(const member &m); /拷贝构造函数string getmemberID()return memberID;获取私有成员string getmembername()return membername;string getsex()return se

12、x;float getmoney()return money;void setmemberID(string mid)memberID=mid;更改私有成员void setmembername(string mna)membername=mna;void setsex(string se)sex=se;void setmoney(float mon)money=mon;3.caozuo类:该类私有成员分别为:member hy100能存100个会员信息、CD zu_dip10010每个会员租借的碟片信息,且规定每人最多只能租借10种影碟、CD dip100定义能存100种碟片信息、int ca

13、tegory用来做影碟的下标、int kind用来做会员的下标、int lendnumber100记录每个会员租借的碟片种类、string time1001020用来记录每个会员租借的每一种碟片对应的租借时间信息。成员函数主要有有参构造函数以及各种功能函数,详细信息如下所示:class caozuoprivate:member hy100; /定义能存100个会员信息CD zu_dip10010; /每个会员对应租借的碟片信息,且规定最多只能租10种影碟CD dip100; /定义能存100种碟片信息int category; /用来做影碟的下标int kind; /用来做会员的下标int l

14、endnumber100; /记录每个会员租借的碟片种类string time1001020; /用来记录每个会员租借的每张碟片的租借时间信息public:caozuo(int c=0,int k=0) /初始化category和kindcategory=c;kind=k;void aiddp();/增加影碟信息void gxdp();/更新影碟信息void find_dp();/查询影碟信息void delete_dp();/删除碟片信息void put_all_dp();/输出全部影碟信息void aidhy();/注册新会员void gxhy();/更新会员信息void find_hy(

15、);/查询会员信息void aid_money();/会员费充值void delete_hy();/删除会员信息void put_all_hy();/输出全部会员信息void rent_cd();/租赁影碟void back_cd();/归还影碟void dp_statistics();/统计影碟种类清单void read_cd();/读取影碟文件上的信息void read_hy();/读取会员文件上的信息void read_lendcdcategory();/读取借碟片种类数据void read_rent_cd();/读取已租出碟片的信息void read_rent_time();/读取已租

16、碟片的时间信息;2.3类图在CD类中,主要就是碟片的根本信息,包括碟片的编号、名称、导演等等。在member类中就是会员的根本信息,主要就是会员的ID、姓名、性别和账户余额这些信息。在caozuo类中就是把CD类和member类作为它的私语成员然后集中处理他们之间的关系,主菜单里的各种功能也全部在该类中定义实现。在caozuo类中,定义了类数组member hy100,其功能作用是可以存储100个会员信息。CD类数组 CD dip100,其功能作用是可以存储100种碟片信息。另一个CD类二维数组CD zu_dip10010;其是与会员类数组绑定在一起的。例如hy5对应着zu_dip5i,i代表

17、会员hy5借的第几种碟片,且其上线是10张。Member类中的私有成员category是用来标记当前共入库的碟片的种类,用来做影碟CD类数组的下标。私有成员函数kind是用来标记当前已注册的会员数量,即用来做会员类数组的下标。类中定义的整形数组int lendnumber100,是用来记录每个会员租借的碟片种类,例如lendnumber5=4,就是会员hy5租借了4种碟片。并且lendnumber10也就是用来标记zu_dip10010中的列数的,即做列的下标。在caozuo类数组中还定义了一个string字符型二维数组string time1001020,其中100是和会员hy100中的10

18、0是一一对应的,10是和zu_dip10010中的10是一一对应的,20是字符长度。该string字符型二维数组主要是用来记录每个会员租借的每种碟片的租借时间信息。caozuo类组合了CD类和member类,使程序可以灵活地处理会员和碟片之间的关系。而该类中的成员函数也主要都是在处理CD类和member之间的关系,最具有表达性的就 是租赁函数和碟片归还函数。3详细设计 1.类型统计功能:进入该功能,程序使用者可以查看某种类型的碟片信息。信息存储功能:凡在执行程序中涉及到系统内存改变的地方都要把改变的信息写入文件保存起来,以到达存储功能。例如碟片的写入文件操作ofstream ofile; of

19、ile.open("碟片信息.txt");for(int j=0;j<category;j+)if(j=0)ofile.setf(ios:left);ofile<<setw(10)<<"碟片编号"<<setw(10)<<"碟片名称"<<setw(10)<<"主演明星"<<setw(10)<<"国家"<<setw(10)<<"碟片类型"<<s

20、etw(10)<<"导演"<<setw(10)<<"制作公司"<<setw(10)<<"已借出"<<setw(10)<<"库存量"<<endl;ofile.setf(ios:left);ofile<<dipj; ofile.close();cout<<"添加成功!"<<endl; 2.主函数和菜单 inline void menu() cout<<&qu

21、ot;*"<<endl;cout<<"*-影碟出租管理系统 -*"<<endl;cout<<"* - 主菜单 - *"<<endl;cout<<"* 1租赁影碟 *"<<endl;cout<<"* 2归还影碟 *"<<endl;cout<<"* 3影碟信息维护 *"<<endl;cout<<"* 4会员信息维护 *"<

22、<endl;cout<<"* 5信息查询系统 *"<<endl;cout<<"* 6影碟类型统计 *"<<endl;cout<<"* 7退出系统 *"<<endl;cout<<"*-*"<<endl;cout<<"*"<<endl;inline void menu3()cout<<"*"<<endl;cout<<&q

23、uot;*-影碟信息维护系统-*"<<endl;cout<<"* 1添加新影碟 *"<<endl;cout<<"* 2删除影碟信息 *"<<endl;cout<<"* 3更新影碟信息 *"<<endl;cout<<"* 4返回主菜单 *"<<endl;cout<<"*-*"<<endl;cout<<"*"<<en

24、dl;inline void menu4()cout<<"*"<<endl;cout<<"*-会员信息维护系统-*"<<endl;cout<<"* 1注册新会员 *"<<endl;cout<<"* 2删除会员信息 *"<<endl;cout<<"* 3更新会员信息 *"<<endl;cout<<"* 4会员费充值 *"<<endl;c

25、out<<"* 5返回主菜单 *"<<endl;cout<<"*-*"<<endl;cout<<"*"<<endl;inline void menu5()cout<<"*"<<endl;cout<<"*-信息查询系统-*"<<endl;cout<<"* 1查询影碟信息 *"<<endl;cout<<"* 2查询会

26、员信息 *"<<endl;cout<<"* 3查看所有影碟信息 *"<<endl;cout<<"* 4查看所有会员信息 *"<<endl;cout<<"* 5返回主菜单 *"<<endl;cout<<"*-*"<<endl;cout<<"*"<<endl;void main()caozuo a; a.read_cd(); /系统自动读取文件中的碟片信息,并

27、放到系统内存中a.read_hy(); /系统自动读取文件中的会员信息,并放到系统内存中a.read_lendcdcategory(); /系统自动读取文件中每个会员借的碟片种类信息,并放到系统内存中a.read_rent_cd(); /系统自动读取文件中的已租出碟片信息,并放到系统内存中a.read_rent_time(); /系统自动读取文件中的已租出的每张碟片对应租借的时间信息,并放到系统内存中menu();cout<<"请选择主菜单功能:"<<endl;while(1)start:char ch;cin>>ch;if(ch=

28、9;1')a.rent_cd();cout<<"按任意键继续!"system("pause>nul");system("cls");menu();cout<<"请选择主菜单功能:"<<endl;else if(ch='2')a.back_cd();cout<<"按任意键继续!"system("pause>nul");system("cls");menu();cout<

29、<"请选择主菜单功能:"<<endl;else if(ch='3')system("cls");menu3();cout<<"请选择菜单功能:"<<endl;while(1)char ch1;cin>>ch1;if(ch1='1')a.aiddp();cout<<"按任意键继续!"system("pause>nul");system("cls");menu3();cout&

30、lt;<"请选择菜单功能:"<<endl;else if(ch1='2')a.delete_dp();cout<<"按任意键继续!"system("pause>nul");system("cls");menu3();cout<<"请选择菜单功能:"<<endl;else if(ch1='3')a.gxdp();cout<<"按任意键继续!"system("paus

31、e>nul");system("cls");menu3();cout<<"请选择菜单功能:"<<endl;else if(ch1='4')system("cls");menu();cout<<"请选择主菜单功能:"<<endl;goto start;elsecout<<" 输入错误,请重新输入!"<<endl;cout<<endl;cout<<"请选择菜单功能

32、:"<<endl;else if(ch='4')system("cls");menu4();cout<<"请选择菜单功能:"<<endl;while(1)char ch2;cin>>ch2;if(ch2='1')a.aidhy();cout<<"按任意键继续!"system("pause>nul");system("cls");menu4();cout<<"请选择菜单

33、功能:"<<endl;else if(ch2='2')a.delete_hy();cout<<"按任意键继续!"system("pause>nul");system("cls");menu4();cout<<"请选择菜单功能:"<<endl;else if(ch2='3')a.gxhy();cout<<"按任意键继续!"system("pause>nul");sy

34、stem("cls");menu4();cout<<"请选择菜单功能:"<<endl;else if(ch2='4')a.aid_money();cout<<"按任意键继续!"system("pause>nul");system("cls");menu4();cout<<"请选择菜单功能:"<<endl;else if(ch2='5')system("cls"

35、);menu();cout<<"请选择主菜单功能:"<<endl;goto start;elsecout<<" 输入错误,请重新输入!"<<endl;cout<<endl;cout<<"请选择菜单功能:"<<endl;else if(ch='5')system("cls");menu5();cout<<"请选择菜单功能:"<<endl;while(1)char ch3;ci

36、n>>ch3;if(ch3='1')a.find_dp();cout<<"按任意键继续!"system("pause>nul");system("cls");menu5();cout<<"请选择菜单功能:"<<endl;else if(ch3='2')a.find_hy();cout<<"按任意键继续!"system("pause>nul");system("cl

37、s");menu5();cout<<"请选择菜单功能:"<<endl;else if(ch3='3')a.put_all_dp();cout<<"按任意键继续!"system("pause>nul");system("cls");menu5();cout<<"请选择菜单功能:"<<endl;else if(ch3='4')a.put_all_hy();cout<<"按

38、任意键继续!"system("pause>nul");system("cls");menu5();cout<<"请选择菜单功能:"<<endl;else if(ch3='5')system("cls");menu();cout<<"请选择主菜单功能:"<<endl;goto start;elsecout<<" 输入错误,请重新输入!"<<endl;cout<<e

39、ndl;cout<<"请选择菜单功能:"<<endl;else if(ch='6')a.dp_statistics();cout<<"按任意键继续!"system("pause>nul");system("cls");menu();cout<<"请选择主菜单功能:"<<endl;else if(ch='7')cout<<" *Thankyou* "<<en

40、dl;cout<<" *GoodBye* "<<endl;break;elsecout<<" error,请重新输入!"<<endl;cout<<endl;cout<<"请选择主菜单功能:"<<endl;4.调试分析4.1调试中遇到的问题及解决方案问题1:租赁碟片时,如果没有在库存中查找到要租的碟片,虽提示该碟片不存在,却在结束时把押金扣掉了,其显示窗口如下问题分析解决:该漏洞主要是因为收取押金的代码放到了最后,因而无乱是否租赁成功,都会收取押金20元

41、,解决的方法就是找到要租赁的碟片并且确定要租赁时,这时再写收取押金的代码,问题就得到了解决。问题2:注册一个新会员时,该会员没有租借碟片,归还碟片功能中输入该会员的ID,程序中应该提示“该会员无租借记录,但在该处却要输出归还碟片信息。其显示窗口如下问题分析解决:该漏洞主要是无法判断会员是否有租借记录造成的,问题解决的方法就是在caozuo类中添加私有成员int型lendnumber100并初始化为0来记录每个成员是否有租借记录。当会员hui归还碟片时,首先判断lendnumberi是否为0,假设为0,那么显示“该会员无租借记录,否那么就可以进行归还碟片功能。问题3:当库存数量只有20张时,会员

42、输入租借数量180,却成功了!而在随后输出全部碟片信息时,库存数量也由原来的20变成了-160,其显示窗口如下问题分析解决:该漏洞主要是在会员租借碟片时缺少对会员租借数量的判断,然后继续进行租借,改变系统内存,继而导致了输出的错误。问题的解决方法就是在会员输入租借数量时进行判断,如果该数量不在碟片库存范围之内,那么输出“租借数量错误,否那么再继续进行租借操作。问题4:当输出全部会员信息时,每输出一个会员,就会输出一行标题,标题行太多,其显示窗口如下问题分析解决:该漏洞主要是因为把输出标题行放在了输出会员的循环了,因而每输出一个会员就会输出一行标题,解决该问题的方法就是把输出标题行的代码放到循环

43、外面,只输出一次,这样标题行太多的问题就得到了解决。问题5:当会员去归还碟片时,只能一次性全部归还,无法实现局部归还的功能。其显示窗口如下问题分析解决:该漏洞主要是没有从用户角度考虑问题,没能是功能完善。问题的解决方法就是在会员归还碟片时,提示会员是全部归还还是局部归还,然后分两种情况进行归还碟片的功能。问题6:此处日期的输入格式出错,没有提示用户正确的日期输入格式,在日期输入过后,提示是否继续租赁,此处无法接受命令,一直提示输入有误!其显示窗口如下问题分析解决:该漏洞主要是界面不友好和输入菜单项选择项接受数字出错所致。解决该漏洞的方法就是在请输入租赁日期后面友好提示用户“日期的格式为:202

44、1年4月12日,这样就不会出现这样的错误了。4.2经验和体会在调试分析和测试结果这个过程中,首先就是要使用程序里的每一个功能,在涉及到输入时,要想到各种可能去输入,继而找出程序中的漏洞,找到漏洞以后,可以截屏保存下来留作更改代码的依据。在更改代码时,要能够根据漏洞找到出错的函数以及函数里的具体位置。找到后根据截屏上的漏洞来修改代码。假设是在函数里找不到漏洞的地方,那么可以通过调语句调过程,在监视窗口中一步一步查找漏洞,继而慢慢修改代码,完善程序功能。5用户使用说明进入主菜单:顾客可以选择租赁影碟、归还影碟、影碟维护、顾客维护、信息查询和类型统计这几种功能。碟片借阅:顾客输入会员ID,输入需租碟片,输入数量及租借日期碟片归还:输入会员ID,选择是全

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论