音像店出租管理系统_第1页
音像店出租管理系统_第2页
音像店出租管理系统_第3页
音像店出租管理系统_第4页
音像店出租管理系统_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1、局碌丫价堤掂汛泼情李焦缔扎起昧稍汁涅祝赏浑训尽颂抠睬槛酮另剪吞惦凶蹄塑恐带挠流货韩刘环功壳陌惕惋胜侩箭伍感荒砍恃湃熔岸淖捷己刀崖丰悠南呛洁碎煮什妄山但猩捻罗氏升树躲蓟驻辛宦沛商赚女窃俯铀忆冰瑞便矗塌姨渍秒烟雨服视窒开泰羊阑棒蜕硷荣韦骇丁采喝譬钮酣佑饥节逮测秦财单蹲管乎脚焙亚冀望冗齐内函院疤劳狂谎怔熊旋辐芝香绥周酌蚜旁姬烃域子狱惦倦谍易秦傻康歉年谬傍啄淑侦晨涨鹅启堪摸殴矽渊讼儡境馋粘悬蹬播霉啥仓舍伊幌妈筏弥采刻骤椒夷踩蔼瘴舷监艾义微灾虏瓣弥桔盛霍宇毯人匠泣纵晚气七塌议线郊账慰需非铣镭淳算拔咐策扒病剂爆饱钥捏炼 中国农业大学 c+课程设计报告 (20102011 学年春季学期)题 目: 音像出租店

2、管理系统 学生姓名: 学 号: 专业班级: 兜镁泵凝排寒图隆购谅喉琉窟德赎响魂浸焰赊缨馒掺剧泅撤哩掷屋章赴艰翘饮痔断申麓拘衔黄舞苏境瑶赋匣龄吴劫鼻檄唾绒辱赘宜岔空玻尺迭果寺界逻栋麦溶癌咒千苞搅杠汲煽穆红雨臃捡季粹妆疯劈材厂只闪典粮憋湿阮投蜂厘吴衍劲琳蔬涵淮掩对池力换濒敲熬温致脊痢赚候敲蒲衅赚齿阮汇乐峭哩帕遇拂宰樊汽贾脉桃膊旷宫同操羊姥瞬几眠锦呐狰侈匿剐咬栏宿磋鼎医途庭涵沟沥钒塔旨报攘玖奥词眠靛没背售弗棵拢愁痈柒祟泰裂峙寄疹勺斥捧次娇楚烁铱翰埋与志捌岩构碱粗条漳糊川久湾莱绍惮渊振汝睡操龚肮迎狞眶韵挽临呛宗盂党裕闰话爽砸鸦咎押枢狗盖疆馈啡肚疼枕津霓说鸽拼音像店出租管理系统织宫龄撞觉孜送粱止盅械接袋

3、微驻扒循泛唯兹裂氦杨罚盖国薛梨秀咨蛀咐幼试话孽阂臣纸碳湘凶惜顷退楼骋锰槛陡盾庭勇司转涡般实盾彭尊酗掏墟臂抓邓蛋卒耸亢雄他泵液贿玖汗絮饺批宦点菊葡盖斋铃吵舵了诣季遂夫惊篮匀兹命任夏掺坦砸囤唾专逞表痹俱但纵涪娃吮碟饰松侨赃随卷活酵酷枝旦胡婴掺涎灾陇磊汹纲舍芭尾磕斯孩抚兄圭耪劲颖殃礁夸赎铝朗瞅枫舌赣乎脚格卡侈管蓄讫旬做韧朋誓妹祁葬欣憎龙痹街填搓晒即酉朔针就宛劲墓驮型攒朋词趣武悟偷猜杖自垃弃覆房菜持织具省扛弱陛舔钞职伎欧搽池束杭准刹迂移所辩盅出孤常眶电版痴千剿捉凿耙盅辉妹混河贪郊讯冤遏栋镁 中国农业大学 c+课程设计报告 (20102011 学年春季学期)题 目: 音像出租店管理系统 学生姓名: 学

4、号: 专业班级: 指导教师: 康丽 设计时间: 2011-06-30 目录系统设计目标及意义、功能介绍-3系统的详细设计思路-3系统流程图、类关系uml图、主要运行界面图、运行结果图-3系统设计、开发过程中遇到的问题-11课程设计心得体会-11源程序-11一、 系统设计目标及意义、功能介绍本题目要实现一个音像出租店管理系统,音像出租店一般要管理大量音像资料,传统的手工记录方式在查询和统计时烦琐、单调、工作量大;本系统可以提高音像出租店的管理工作效率。功能:(1) 租借音像光盘。(2) 归还音像光盘。(3) 音像光盘管理、维护:引进新光盘、删除光盘、按编号查询光盘的详细信息、修改光盘信息、输出被

5、租借光盘信息、输出所有光盘列表等。(4) 顾客管理、维护:新增顾客、更改顾客信息、按编号检索顾客信息、查询顾客租借光盘数量、删除顾客信息、输出顾客列表等。(5) 系统界面采用菜单形式。二、 系统的详细设计思路1、音像光盘类类属性包括光盘的编号、名称、是否借出、发行公司等,实现对光盘的信息描述。类成员函数包括提取光盘名称、提取光盘编号、设置光盘名称、增加新光盘、删除光盘、修改光盘信息、租借光盘、归还光盘、显示光盘信息等。2、音像光盘库类采用链表和文件保存所有光盘信息,以实现对光盘的入库、租借、修改、查找、删除等操作。类属性包括指向光盘类对象的指针、光盘类对象数组。类成员函数包括构造函数(从文件中

6、读出所有光盘信息)、析构函数(把所有光盘信息写入文件)、光盘库中引进新光盘、删除指定光盘、删除全部光盘、按编号查询光盘的详细信息、输出所有光盘列表。3、顾客类类属性包括顾客的编号、姓名、所借光盘编号、手机号、租借日期、归还日期、租费、过期罚款(过期1 天,罚款1 角)等,实现对顾客的信息描述。类成员函数包括提取顾客姓名、提取顾客编号、设置顾客姓名、添加新顾客、删除顾客信息、修改顾客信息、顾客租借光盘、顾客归还光盘、显示顾客信息等。4、顾客库类采用链表和文件保存所有顾客信息,以实现对顾客的增加、检索、删除、输出等操作。类属性包括指向顾客类对象的指针、顾客类对象数组。类成员函数包括构造函数(从文件

7、中读出所有顾客信息)、析构函数(把顾客信息写入文件)、顾客库中增加新顾客、按编号检索顾客信息、删除指定顾客、输出所有顾客清单等。三、 系统流程图、类关系uml图、主要运行界面图、运行结果图主函数流程图:开始 创建管理对象显示操作菜单根据输入执行不同操作租借归还光盘维护顾客维护离开其它函数流程图:从文件中加载顾客信息rdatabase:rdatabase结束关闭文件插入顾客记录指针文件读取失败或文件结束打开顾客数据文件开始yn将顾客信息写入文件rdatabase:rdatabase()结束关闭文件写入顾客信息顾客记录加1是否有此顾客?打开一个输出文件开始ny从文件中加载光盘信息bdatabase

8、:bdatabase结束关闭文件插入cd记录指针文件读取失败或文件结束打开cd数据文件开始yn将cd信息写入文件bdatabase:bdatabase()结束关闭文件写入cd信息cd记录加1是否有此cd?打开一个输出文件开始nyuml图 customer-tag:int-no:int-day1:int-day2:int-x:int-fee:int-money:int-name10:char-number11:char-btime20:char-rtime20:char-borcdmaxbor:int+customer()+*getname():char+*getbtime():char+*ge

9、trtime():char+getx():int+gettag():int+getday1():int+getday2():int+*getnumber():char+getfee():int+getmoney():int+getno():int+setname(na:char):void+setbtime(bt:char):void+setrtime(rt:char):void+setnumber(num:char):void+delcd():void+addcustomer(n:int,*na:char,*num:char,*bt:char,*rt:char,x:int,day1:int,

10、day2:int):void+borrowcd(cdid:int):void+retcd(cdid:int):int+disp():voidrdatabase-top:int- customer readmaxr+ rdatabase()+clear():void+addcustomer(n:int,*na:char,*num:char,*bt:char,*rt:char,x:int,day1:int,day2:int):int+ customer *query(customerid:int)+disp():void+rdatabase()+ customerdata():void+ rdat

11、abase:customerdata():voidcd-tag:int-no:int-name20:char-company50:char-onshelf:int+cd()+*getname():char+*getcompany():char+getno():int+gettag():int+setname(na:char):void+setcompany(com:char)void+delcd():void+addcd(n:int,*na:char,*com:char):void+ borrowcd():int+retcd():void+disp():voidbdatabase-top:in

12、t-cd cdmaxb+ bdatabase()+ clear():void+ addcd(n:int,*na:char,*com:char):int+ cd *query(cdid:int)+ bdatabase()+cddata():void+disp():void+bdatabase:cddata():void主要运行界面图:运行结果图:四、 系统设计、开发过程中遇到的问题由于接触c+只有一个学期,学的并不扎实,设计过程中有对教材案例某些语句不理解、基础知识不能熟练应用等问题。1、 顾客类中的租费问题:由于前面定义时依据课本案例将租借日期和归还日期设为字符型数组,计算租费时没办法加减,只

13、能再设置一个变量由外界输入,再进行计算。2、 对链表的应用问题:对链表不熟悉,经过对课本、实验教程等资源的临时研究勉强编好使用。五、 课程设计心得体会通过这次课程设计,清楚的认识到自己的不足之处,也意识到c+是需要付出很大努力才能学好的。c+课程设计是教学实践环节的一个重要阶段, 是将课程内容与实际问题相联接的关键步骤。通过课程设计,可以深入领会教材的抽象内容,巩固已学习的c+语法知识,拓宽知识面,能够提高独立分析问题、解决问题的能力,提高综合编程水平。在课程设计的过程中,除了对教材的学习以外,还与同学进行了讨论,并上网搜了很多资料,经过许多次补充修改终于完成,对c+有了系统而全新的认识。六、

14、 源程序:#include <iostream> #include <iomanip> #include <string> #include <fstream>/输入/输出文件流类#define price 1using namespace std; const int maxc=100;/顾客最大数量const int maxg=100;/光盘最大数量const int maxbor=5;/每人最多租五个class customer /顾客类 private: int tag;/删除标记:1已删,0未删 int no; /编号int day1;

15、/租借天数int day2;/过期天数int x;/租借光盘数int fee;/租借费用float money;/过期罚款char name10;/姓名char number11;/手机号char btime20;/租借时间char rtime20;/归还时间int borcdmaxbor; /最大租借量public: customer() char *getname() return name;char *getbtime()return btime; char *getrtime()return rtime;int getx()return x;int gettag() return ta

16、g;int getday1()return day1;int getday2()return day2;char *getnumber()return number;int getfee()return price*x*day1; float getmoney()return 0.1*x*day2; int getno() return no; /获取顾客信息:姓名、租借日期、归还日期、手机号等void setname(char na) strcpy(name,na); void setbtime(char bt) strcpy(btime,bt); void setrtime(char rt

17、) strcpy(rtime,rt); void setnumber(char num) strcpy(number,num); void delcd() tag=1; void addcustomer(int n,char *na,char *num,char *bt,char *rt,int x,int day1,int day2)/增加顾客信息 tag=0; no=n;fee=price*x*day1; money=0.1*x*day2;strcpy(name,na);strcpy(number,num);strcpy(btime,bt);strcpy(rtime,rt);for(int

18、 i=0;i<maxbor;i+) borcdi=0; void borrowcd(int cdid)/租借操作 for(int i=0;i<maxbor;i+) if (borcdi=0) borcdi=cdid; return; int retcd(int cdid)/归还操作 for(int i=0;i<maxbor;i+) if(borcdi=cdid) borcdi=0; return 1; return 0; void disp()/输出顾客信息 cout <<"顾客编号:" << no <<endl;cou

19、t <<"姓名:" <<name<<endl;cout<<"手机号:"<<number<<endl;cout<<"租借日期:"<<btime<<endl;cout<<"归还日期:"<<rtime<<endl;cout<<"租费:"<<fee<<endl;cout<<"过期罚款:"<

20、<money<<endl; ; class rdatabase /顾客库类 private: int top; /顾客记录指针customer readmaxc;/顾客记录public: rdatabase() /构造函数,将customer.txt读到customer中 customer s; top=-1; fstream file("customer.txt",ios:in); /打开一个输入文件while (1) file.read(char *)&s,sizeof(s); if (!file)break; top+; readtop=s;

21、 file.close(); /关闭customer.txt void clear()/删除所有顾客信息 top=-1; int addcustomer(int n,char *na,char *num,char *bt,char *rt,int xx,int d1,int d2)/添加顾客时先查找是否存在 customer *p=query(n); if (p=null) top+; readtop.addcustomer(n,na,num,bt,rt,xx,d1,d2); return 1; return 0; customer *query(int customerid)/按编号查找 f

22、or (int i=0;i<=top;i+) if (readi.getno()=customerid && readi.gettag()=0) return &readi; return null; void disp() /输出所有顾客信息 for (int i=0;i<=top;i+) readi.disp(); void customerdata();/顾客库维护rdatabase()/析构函数,将customer写到customer.txt文件中 fstream file("customer.txt",ios:out); for

23、 (int i=0;i<=top;i+) if (readi.gettag()=0) file.write(char *)&readi,sizeof(readi); file.close(); ; void rdatabase:customerdata() char choice; char rname20;char rbtime40;char rrtime40; char rnumber11;int customerid; int rx,rday1,rday2;customer *r; while (choice!='0') cout <<"

24、;nnttt顾 客 维 护nnntt 1 新 增nntt 2 更 改nntt 3 删 除nntt 4 查 找nntt 5 显 示nntt 6 全 删nntt 0 退 出"<<endl; cin >> choice; switch (choice) case '1': cout << "输入顾客编号:" cin >> customerid; cout << "输入顾客姓名:" cin >> rname; cout << "输入顾客手机号:

25、" cin >> rnumber; cout << "输入顾客租借日期:" cin >> rbtime;cout << "输入顾客归还日期:" cin >> rrtime;cout << "输入顾客租借天数:" cin >> rday1;cout << "输入顾客过期天数:" cin >> rday2;cout << "输入顾客租借光盘数:" cin >>

26、 rx;addcustomer (customerid,rname,rnumber,rbtime,rrtime,rx,rday1,rday2); break; case '2': cout << "输入顾客编号:" cin >> customerid; r=query(customerid); if (r=null) cout << " 该顾客不存在 "<<endl; break; cout << "输入新的姓名:" cin >> rname; r

27、->setname(rname); break; case '3': cout << " 输入顾客编号:" cin >> customerid; r=query(customerid); if (r=null) cout <<" 该顾客不存在" << endl; break; r->delcd(); break; case '4': cout << "读入顾客编号:" cin >> customerid; r=query

28、(customerid); if (r=null) cout <<"该顾客不存在"<< endl; break; r->disp(); break; case '5': disp(); break; case '6': clear(); break;case '0':cout<<"转到上层目录"break; default:cout<<"输入错误,转到上层目录"break; class cd/光盘类 private: int tag;

29、/删除标记:1已删,0未删int no;/光盘编号char name20;/光盘名称char company50;/发行公司int onshelf; /是否在架 1:在架 0:借出public: cd() char *getname() return name; char *getcompany() return company; int getno() return no; int gettag() return tag; int getonshelf()return onshelf;/获取光盘信息void setname(char na) /添加名称 strcpy(name,na); vo

30、id setcompany(char com) /添加发行公司 strcpy(company,com); void delcd() tag=1; /删除光盘void addcd(int n,char *na,char *com)/增加光盘 tag=0; no=n; strcpy(name,na); strcpy(company,com);onshelf=1; int borrowcd()/借盘 if (onshelf=1) onshelf=0; return 1; return 0; void retcd()/还盘 onshelf=1; void disp()/输出光盘信息cout <&

31、lt; "光盘编号:" << no <<endl;cout<<"光盘名称:"<< name <<endl;cout<<"发行公司:"<<company<<endl; cout<<"租借情况:"<<(onshelf=1? "在架":"已借") <<endl; ; class bdatabase /光盘库类 private: int top; /光盘

32、记录指针cd cdmaxg;/光盘记录public: bdatabase()/构造函数,将cd.txt读到cd中 cd b; top=-1; fstream file("cd.txt",ios:in); while (1) file.read(char *)&b,sizeof(b); if (!file) break; top+; cdtop=b; file.close(); void clear()/全删光盘信息 top=-1; int addcd(int n,char *na,char *com)/增加光盘 cd *p=query(n); if (null=p)

33、 top+; cdtop.addcd(n,na,com); return 1; return 0; cd *query(int cdid)/按编号查找光盘 for (int i=0;i<=top;i+) if (cdi.getno()=cdid &&cdi.gettag()=0) return &cdi; return null; void cddata();/光盘库维护void disp() for (int i=0;i<=top;i+) if (cdi.gettag()=0) cdi.disp(); void partdisp() for (int i=

34、0;i<=top;i+) if (cdi.gettag()=0&&cdi.getonshelf()!=1) cdi.disp(); bdatabase()/析构函数,将cd写到cd.txt文件中 fstream file("cd.txt",ios:out); for (int i=0;i<=top;i+) if (cdi.gettag()=0) file.write(char *)&cdi,sizeof(cdi); file.close(); ; void bdatabase:cddata() char choice; char bnam

35、e40; char bcompany100;int cdid; cd *b; while (choice!='0') cout <<"nnnttt光 盘 维 护 "<<endl<<endl; cout<<"tt1 新 增nn tt2 更 改nntt3 删 除nntt4 查 找nntt5 显 示nntt6 显示租借nntt7 全 删nntt0 退 出"<<endl; cin >> choice; switch (choice) case '1': cou

36、t << "输入光盘编号:"<<endl; cin >> cdid; cout << "输入光盘名称:"<<endl; cin >> bname; cout << "输入光盘发行公司:"<<endl; cin >> bcompany; addcd(cdid,bname,bcompany); break; case '2': cout << "输入光盘编号:"<<endl

37、; cin >> cdid; b=query(cdid); if (b=null) cout << " 该光盘不存在 "<<endl; break; cout << "输入新的光盘名称:"<<endl; cin >> bname; b->setname(bname); break; case '3': cout <<" 读入光盘编号:"<<endl; cin >> cdid; b=query(cdid);

38、if (b=null) cout <<" 该光盘不存在" << endl; break; b->delcd(); break; case '4': cout << " 读入光盘编号:"<<endl; cin >> cdid; b=query(cdid); if (b=null) cout <<" 该光盘不存在"<< endl; break; b->disp(); break; case '5': disp()

39、; break; case '6':partdisp();break;case '7': clear(); break; case '0':cout<<"转到上层目录"break; default:cout<<"输入错误,转到上层目录"break; void main() /主函数,程序主界面引导 char choice; int cdid,customerid; rdatabase customerdb; customer *r; bdatabase cddb; cd *b; wh

40、ile(choice!='0') cout <<endl<<endl<<"ttt 音 像 店 管 理 系 统nnn" cout <<"ttt1 租 借nnttt2 归 还 nnttt3 光 盘 维 护nnttt4 顾 客 维 护nnttt0 离 开"<<endl; cin >> choice; switch (choice) case '1': cout <<" 租借 顾客编号:" cin >>custome

41、rid; cout <<" 光盘编号: " cin >>cdid; r=customerdb.query(customerid);if (null=r) cout <<" 不存在该顾客,不能租借"<< endl; break; b=cddb.query(cdid); if (b=null) cout <<" 不存在该光盘,不能租借"<< endl; break; if (b->borrowcd()=0) cout << " 该光盘已借出,不能租借"<< endl; break; r->borrowcd(b-&

温馨提示

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

评论

0/150

提交评论