C专业课程设计方案报告影碟出租标准管理系统_第1页
C专业课程设计方案报告影碟出租标准管理系统_第2页
C专业课程设计方案报告影碟出租标准管理系统_第3页
C专业课程设计方案报告影碟出租标准管理系统_第4页
C专业课程设计方案报告影碟出租标准管理系统_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

成绩课程设计汇报题目影碟出租管理系统

课程名称面向对象程序设计课程设计院部名称计算机工程学院专业计算机科学和技术班级学生姓名学号课程设计地点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(导演)、company(制作企业)、lend(借出数量)、inventory(库存量)。组员函数包含有参结构函数、重载流插入提取运算符、拷贝复制结构函数和获取私有组员函数和更改私有组员函数,具体类信息以下:classCD{private: stringCDID;//碟片编号 stringCDname;//碟片名称 stringmainstar;//主演明星 stringcountry;//国家 stringstyle;//碟片类型 stringdirector;//导演 stringcompany;//制作企业 intlend;//借出数量 intinventory;//库存量public: CD(stringci="无",stringcna="无",stringmst="无",stringcot="无",stringsty="无",stringdir="无",stringcom="无",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;} stringgetcompany(){returncompany;} intgetlend(){returnlend;} intgetinventory(){returninventory;} voidsetCDID(stringci){CDID=ci;} voidsetCDname(stringcna){CDname=cna;} voidsetmainstar(stringmst){mainstar=mst;}更改私有组员 voidsetcountry(stringcot){country=cot;}更改私有组员 voidsetstyle(stringsty){style=sty;} voidsetdirector(stringdir){director=dir;} voidsetcompany(stringcom){company=com;} 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;j<category;j++) { if(j==0){ ofile.setf(ios::left); ofile<<setw(10)<<"碟片编号"<<setw(10)<<"碟片名称"<<setw(10)<<"主演明星"<<setw(10)<<"国家"<<setw(10)<<"碟片类型"<<setw(10)<<"导演"<<setw(10)<<"制作企业"<<setw(10)<<"已借出"<<setw(10)<<"库存量"<<endl;} ofile.setf(ios::left); ofile<<dip[j]; } ofile.close(); cout<<"添加成功!"<<endl;2.主函数和菜单inlinevoidmenu(){ cout<<"********************************************************"<<endl; cout<<"**----------------影碟出租管理系统-------------------**"<<endl; cout<<"**----主菜单----**"<<endl; cout<<"**(1)租赁影碟**"<<endl; cout<<"**(2)归还影碟**"<<endl; cout<<"**(3)影碟信息维护**"<<endl; cout<<"**(4)会员信息维护**"<<endl; cout<<"**(5)信息查询系统**"<<endl; cout<<"**(6)影碟类型统计**"<<endl; cout<<"**(7)退出系统**"<<endl; cout<<"**----------------------------------------------------**"<<endl; cout<<"********************************************************"<<endl;}inlinevoidmenu3(){ cout<<"********************************************************"<<endl; cout<<"**-------------------影碟信息维护系统-----------------**"<<endl; cout<<"**(1)添加新影碟**"<<endl; cout<<"**(2)删除影碟信息**"<<endl; cout<<"**(3)更新影碟信息**"<<endl; cout<<"**(4)返回主菜单**"<<endl; cout<<"**----------------------------------------------------**"<<endl; cout<<"********************************************************"<<endl;}inlinevoidmenu4(){ cout<<"********************************************************"<<endl; cout<<"**------------------会员信息维护系统------------------**"<<endl; cout<<"**(1)注册新会员**"<<endl; cout<<"**(2)删除会员信息**"<<endl; cout<<"**(3)更新会员信息**"<<endl; cout<<"**(4)会员费充值**"<<endl; cout<<"**(5)返回主菜单**"<<endl; cout<<"**----------------------------------------------------**"<<endl; cout<<"********************************************************"<<endl;}inlinevoidmenu5(){ cout<<"********************************************************"<<endl; cout<<"**-----------------信息查询系统-----------------------**"<<endl; cout<<"**(1)查询影碟信息**"<<endl; cout<<"**(2)查询会员信息**"<<endl; cout<<"**(3)查看全部影碟信息**"<<endl; cout<<"**(4)查看全部会员信息**"<<endl; cout<<"**(5)返回主菜单**"<<endl; cout<<"**----------------------------------------------------**"<<endl; cout<<"********************************************************"<<endl;}voidmain(){ caozuoa; a.read_cd();//系统自动读取文件中碟片信息,并放到系统内存中 a.read_hy();//系统自动读取文件中会员信息,并放到系统内存中 a.read_lendcdcategory();//系统自动读取文件中每个会员借碟片种类信息,并放到系统内存中 a.read_rent_cd();//系统自动读取文件中已租出碟片信息,并放到系统内存中 a.read_rent_time();//系统自动读取文件中已租出每张碟片对应租借时间信息,并放到系统内存中 menu(); cout<<"请选择主菜单功效:"<<endl;while(1){start: charch; cin>>ch; if(ch=='1') { a.rent_cd(); cout<<"按任意键继续!"; system("pause>nul"); system("cls"); menu(); cout<<"请选择主菜单功效:"<<endl; } elseif(ch=='2') { a.back_cd(); cout<<"按任意键继续!"; system("pause>nul"); system("cls"); menu(); cout<<"请选择主菜单功效:"<<endl; } elseif(ch=='3') { system("cls"); menu3(); cout<<"请选择菜单功效:"<<endl; while(1) { charch1; cin>>ch1; if(ch1=='1') { a.aiddp(); cout<<"按任意键继续!"; system("pause>nul"); system("cls"); menu3(); cout<<"请选择菜单功效:"<<endl; } elseif(ch1=='2') { a.delete_dp(); cout<<"按任意键继续!"; system("pause>nul"); system("cls"); menu3(); cout<<"请选择菜单功效:"<<endl; } elseif(ch1=='3') { a.gxdp(); cout<<"按任意键继续!"; system("pause>nul"); system("cls"); menu3(); cout<<"请选择菜单功效:"<<endl; } elseif(ch1=='4') { system("cls"); menu(); cout<<"请选择主菜单功效:"<<endl; gotostart; } else { cout<<"输入错误,请重新输入!"<<endl; cout<<endl; cout<<"请选择菜单功效:"<<endl; } } } elseif(ch=='4') { system("cls"); menu4(); cout<<"请选择菜单功效:"<<endl; while(1) { charch2; cin>>ch2; if(ch2=='1') { a.aidhy(); cout<<"按任意键继续!"; system("pause>nul"); system("cls"); menu4(); cout<<"请选择菜单功效:"<<endl; } elseif(ch2=='2') { a.delete_hy(); cout<<"按任意键继续!"; system("pause>nul"); system("cls"); menu4(); cout<<"请选择菜单功效:"<<endl; } elseif(ch2=='3') { a.gxhy(); cout<<"按任意键继续!"; system("pause>nul"); system("cls"); menu4(); cout<<"请选择菜单功效:"<<endl; } elseif(ch2=='4') { a.aid_money(); cout<<"按任意键继续!"; system("pause>nul"); system("cls"); menu4(); cout<<"请选择菜单功效:"<<endl; } elseif(ch2=='5') { system("cls"); menu(); cout<<"请选择主菜单功效:"<<endl; gotostart; } else { cout<<"输入错误,请重新输入!"<<endl; cout<<endl; cout<<"请选择菜单功效:"<<endl; } } } elseif(ch=='5') { system("cls"); menu5(); cout<<"请选择菜单功效:"<<endl; while(1) { charch3; cin>>ch3; if(ch3=='1') { a.find_dp(); cout<<"按任意键继续!"; system("pause>nul"); system("cls"); menu5(); cout<<"请选择菜单功效:"<<endl; } elseif(ch3=='2') { a.find_hy(); cout<<"按任意键继续!"; system("pause>nul"); system("cls"); menu5(); cout<<"请选择菜单功效:"<<endl; } elseif(ch3=='3') { a.put_all_dp(); cout<<"按任意键继续!"; system("pause>nul"); system("cls"); menu5(); cout<<"请选择菜单功效:"<<endl; } elseif(ch3=='4') { a.put_all_hy(); cout<<"按任意键继续!"; system("pause>nul"); system("cls"); menu5(); cout<<"请选择菜单功效:"<<endl; } elseif(ch3=='5') { system("cls"); menu(); cout<<"请选择主菜单功效:"<<endl; gotostart; } else { cout<<"输入错误,请重新输入!"<<endl; cout<<endl; cout<<"请选择菜单功效:"<<endl; } } } elseif(ch=='6') { a.dp_statistics(); cout<<"按任意键继续!"; system("pause>nul"); system("cls"); menu(); cout<<"请选择主菜单功效:"<<endl; } elseif(ch=='7') { cout<<"*****Thankyou*****"<<endl; cout<<"*****GoodBye******"<<endl; break; } else { cout<<"error,请重新输入!"<<endl; cout<<endl; cout<<"请选择主菜单功效:"<<endl; }}}4.调试分析4.1调试中碰到问题及处理方案问题1:租赁碟片时,假如没有在库存中查找到要租碟片,虽提醒该碟片不存在,却在结束时把押金扣掉了,其显示窗口以下问题分析处理:该漏洞关键是因为收取押金代码放到了最终,所以无乱是否租赁成功,全部会收取押金20元,处理措施就是找到要租赁碟片而且确定要租赁时,这时再写收取押金代码,问题就得到了处理。问题2:注册一个新会员时,该会员没有租借碟片,归还碟片功效中输入该会员ID,程序中应该提醒“该会员无租借统计”,但在该处却要输出归还碟片信息。其显示窗口以下问题分析处理:该漏洞关键是无法判定会员是否有租借统计造成,问题处理方法就是在caozuo类中添加私有组员int型lendnumber[100]并初始化为0来统计每个组员是否有租借统计。当会员hu[i]归还碟片时,首先判定lendnumber[i]是否为0,若为0,则显示“该会员无租借统计”,不然就能够进行归还碟片功效。问题3:当库存数量只有20张时,会员输入租借数量180,却成功了!而在随即输出全部碟片信息时,库存数量也由原来20变成了-160,其显示窗口以下问题分析处理:该漏洞关键是在会员租借碟片时缺乏对会员租借数量判定,然后继续进行租借,改变系统内存,继而造成了输犯错误。问题处理方法就是在会员输入租借数量时进行判定,假如该数量不在碟片库存范围之内,则输出“租借数量错误”,不然再继续进行租借操作。问题4:当输出全部会员信息时,每输出一个会员,就会输出一行标题,标题行太多,其显示窗口以下问题分析处理:该漏洞关键是因为把输出标题行放在了输出会员循环了,所以每输出一个会员就会输出一行标题,处理该问题方法就是把输出标题行代码放到循环外面,只输出一次,这么标题行太多问题就得到了处理。问题5:当会员去归还碟片时,只能一次性全部归还,无法实现部分归还功效。其显示窗口以下问题分析处理:该漏洞关键是没有从用户角度考虑问题,没能是功效完善。问题处理方法就是在会员归还碟片时,提醒会员是全部归还还是部分归还,然后分两种情况进行归还碟片功效。问题6:此处日期输入格式犯错,没有提醒用户正确日期输入格式,在日期输入过后,提醒是否继续租赁,此处无法接收命令,一直提醒输入有误!其显示窗口以下问题分析处理:该漏洞关键是界面不友好和输入菜单选项接收数字犯错所致。处理该漏洞方法就是在请输入租赁日期后面友好提醒用户“日期格式为:4月12日”,这么就不会出现这么错误了。4.2经验和体会在调试分析和测试结果这个过程中,首先就是要使用程序里每一个功效,在包含到输入时,要想到多种可能去输入,继而找出程序中漏洞,找到漏洞以后,能够截屏保留下来留作更改代码依据。在更改代码时,要能够依据漏洞找到犯错函数和函数里具体位置。找到后依据截屏上漏洞来修改代码。若是在函数里找不到漏洞地方,则能够经过调语句调过程,在监视窗口中一步一步查找漏洞,继而慢慢修改代码,完善程序功效。5.用户使用说明进入主菜单:用户能够选择租赁影碟、归还影碟、影碟维护、用户维护、信息查询和类型统计这多个功效。碟片

温馨提示

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

评论

0/150

提交评论