电子宠物C++程序设计报告.doc_第1页
电子宠物C++程序设计报告.doc_第2页
电子宠物C++程序设计报告.doc_第3页
电子宠物C++程序设计报告.doc_第4页
电子宠物C++程序设计报告.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

面向对象程序设计课程设计报告学 院 新媒体学院 专 业 网络工程 班 级 1班 课 题 电子宠物 学 号 _ 姓 名 _ _ 同组同学 _ 指导教师 _秦爱红_ 平时成绩 程序技能成绩 答辩成绩 报告成绩 课程设计总成绩_ 面向对象程序设计课程设计一、课程设计任务及要求:任务:针对小型信息管理系统或若干综合性设计题目,选择一种软件开发模型,完成从需求分析、系统设计、系统实现,软件测试的全过程。要求: (1) 根据软件系统开发的一般原则,完成相应系统的功能设计,完成主要功能模块的程序实现并进行测试训练,给出代码运行结果和相应的设计文档。可以分组进行,但所有学生必须经历整个系统的开发全过程,以便加深对系统开发全过程的认识。(2)提交课程设计报告。(3)指标: 要求完成课程设计报告3000字以上(约二十页);完成所设计的题目,设计题目的语句行数在200行语句以上。二、工作量1周(5个工作日)时间三、计划安排第1个工作日:查找相关资料、书籍,阅读示例文档,选择题目。第2个工作日第3个工作日:设计程序结构、模块图。第4个工作日第5个工作日:完成程序的编码,并且自己调试、测试。穿插进行课程设计报告的撰写。第5个工作日:上交课程设计报告,由教师检查软件测试效果、检查课程设计报告,给出学生成绩。目录一、课程设计目的1二、课程设计要求1三、设计题目分析13.1题目简介 13.2设计要求 1四、课程设计内容2 4.1总体设计 24.2详细设计 44.3编码 94.4调试分析134.5测试结果及运行结果134.6 系统开发所用到的技术 16五、课程设计设计心得与总结24附录 全部代码25一、 课程设计目的模拟宠物的整个生命过程。通过设计和编写计算机宠物程序,锻炼面向对象的基本编程技能,提高程序组织的合理性,体现面向对象编程更好的可读性和可维护性。二、课程设计要求1)设计一个抽象类表达宠物狗;功能包括宠物的出生、成长、死亡;以及宠物日常的吃、拉撒、玩、病、以及帮主人做事情等功能。建议采用良好的控制台人机交互界面。2)在抽象类的基础上派生出两种宠物狗:3)用主程序模拟多只宠物狗的生命过程。4)要求有文件支持宠物数据的永久保存;三、设计题目分析3.1题目简介1) 初始时具有基本的生命特征和生存条件。2) 当吃东西后,体重增加,体能增加;3) 当锻炼后,体重下降,体能下降,要求恢复体力;4) 帮主人干活后,体能下降,经验增加;5) 打工后,体能下降,经验和金钱上升;6) 没有食品,就处于饥饿状态,报警;7) 买食品,需要付出金钱;8) 其他相关问题,请设计者自行设计;3.2需求分析对系统进行可行性分析,说明研究该系统的研究意义和目的。 目前网络游戏广为流行,电子宠物也不例外,比较典型的是腾讯的QQ宠物。电子宠物都拥有一个完整的生命周期,它需要喂食、洗澡清洁等等,也可以去打工赚取金币,也可以去上学学习,甚至结婚生子,拥有真的宠物所有的行为活动,在这里我们因为时间和能力有限,我们就只选取了部分的行为活动,比如喂食、活动、看病、打工。电子宠物对于上班族的白领和小孩子,都有着极大的吸引力,因为通过领养电子宠物,可以感知宠物的生命历程,为枯燥无聊的生活增加更多乐趣。所以电子宠物的市场也是非常广大的。四、课程设计内容4.1概要设计(对系统进行的概要设计,如功能模块设计,数据库概要设计等。) 该程序主要实现以下功能:1、 主函数拥有可供选择的宠物类型,如在本程序中可领养小狗也可领养小鸟作为宠物,并可为你领养的宠物自由起名(如图a和图b); 图a 图b2、主函数中可选择想要参加的行为活动,调用不同类中函数进行喂食或是自由活动,喂食类中又可分为吃饭函数和喝水函数,而食物和水都需要花费金币购买,不同的食物所花费的金币也不同。喂食可使体力增加,体重增加,心情增加,饥饿值减少,喂水可使饥渴值减少,心情增加。(如图c和d ); 图c 图d活动类又分为打工函数、锻炼函数、帮主人干活函数和玩耍函数,打工又分为发传单、服务员和家教,打工会使体力消耗,体重减少,饥饿值和饥渴值都增加,但是能够获取经验和金币以及使宠物级别升高(如图e); 图e锻炼则分为打羽毛球、跑步和游泳,帮主人干活分为扫地、拖地和倒水,二者均使体力消耗,体重减少,饥饿值、饥渴值、经验值和心情值都相应增加。(如图f和g) 图f 图g3、宠物生病时可通过打针或吃药来进行治疗以恢复体力,同样地,打针和吃药也都需要花费金币。(如图h) 图h 4.2 详细设计1.系统执行流程 系统执行分作三步:(1)首先定义局部变量,通过switch语句使基类指针变量指向不同的派生类对象,并勾勒出所对应的图形; (2)通过switch语句让用户自行选择进入不同的板块:l 板块一:调用食品类中的函数,选择喂食或喂水,在这两种函数中又分别对应着不同种类的选项,选择后,数据成员会进行相应的改变;l 板块二:调用活动类中的选择函数,选择锻炼、打工或帮主人干活,在这三中函数中又分别对应着不同种类的选项,选择后,数据成员会进行相应的改变。(3) 执行完上述步骤以后,调用看病类中的判断函数,看它是否生病。若生病则进入治疗函数;否则回到调用后一语句。ZLT_alarm()(4) 执行完上述所有步骤后,选择是否继续进行游戏。若是则继续进行上述循环;若不是则退出。ZLT_feed()派生类PYT_Dog()2、 程序流程图ZLT_feedfood()食品类ZLT_food()ZLT_feeeddrink()CJ_xuanze()运动类CJ_huodong()基类PYT_Pet()CJ_duanlian()CJ_bangzhurenganhuo()看病类JL_kanbing()CJ_dagong()派生类PYT_Brid()JL_zhiliao()JL_judgeill() 4.3编码(应用一种主流技术及程序开发环境对所设计模块进行编码。)(1)看病类中执行函数void JL_kanbing:JL_judgeill()int s;srand(unsigned)time(NULL);s=rand()%20;if(s=20) cout由于近期环境变化过于强烈,您的宠物生病了,体力下降10n;tl6-=10;k.JL_zhiliao();cout你的宠物已恢复正常。n;void JL_kanbing:JL_zhiliao()int m2;docout您是要打针还是吃药?endl;cout1.打针(花费10个金币,增加10点体力)endl2.吃药(花费5个金币,增加5点体力)m2;while(m2=3);switch(m2)case 1:q6-=10;tl6+=10;break;case 2:q6-=5;tl6+=5;break;cout金币花费值 体力变化值endl;cout q6 tl6endl;(2)食物类中执行函数 void ZLT_food:ZLT_feedfood()int b1;docout请正确选择您需要食物的编号:endl;cout1 狗粮:(花费5个金币,增加5点体力,体重增加2点,饥饿值减少7点,心情增加4点)endl;cout2 家禽饲料:(花费3个金币,增加3点体力,体重增加1点,饥饿值减少5点,心情增加3点)endl;cout3 肉:(花费7个金币,增加8点体力,体重增加2点,饥饿值减少8点,心情增加5点)b1;while(b1=4);switch(b1)case 1:q3-=5;tl3+=5;z3+=2;e3-=7;m3+=4;break;case 2:q3-=3;tl3+=3;z3+=1;e3-=5;m3+=3;break;case 3:q3-=7;tl3+=8;z3+=2;e3-=8;m3+=5;break;cout金币减少 体力增值 体重增加 饥饿值减少 心情增加值endl;cout q3 tl3 z3 e3 m3endl;void ZLT_food:ZLT_feeddrink()int i1;docout请正确选择您需要食物的编号:endl;cout1 水:(花费3个金币,饥渴值减少7点,心情增加1点)endl;cout2 牛奶:(花费5个金币,饥渴值减少5点,体重增加1点,体力增加1点,心情增加2点)i1;while(i1=3);switch(i1)case 1:q3-=3;ke3-=7;m3+=1;break;case 2:q3-=5;ke3-=5;z3+=1;tl3+=1;m3+=2;break;cout 金币减少 体力增值 体重增加 饥渴值减少 心情增加值endl;cout q3 tl3 z3 ke3 m3=30&ke3=40)cout主人,我好渴,快给我水喝=40&ke350)cout亲爱的主人,help me!我要渴死了!=50)cout 由于您的照顾不周,您的宠物已经渴死了!=30&e3=40)cout请及时补充食物,肚子在叫了!=40&e350)cout主人,我要先走一步了,饿死了!=50)cout由于您的照顾不周,您的宠物已经饿死了!endl;cout金币 体力 体重 饥饿值 饥渴值endl;cout q3 tl3 z3 e3 ke3endl;(3)活动类中执行函数void cj_huodong:cj_dagong()int y;docout编号 名称 体力消耗 获取金币 饥饿值 饥渴值 体重下降 经验增加n;cout 1 发传单 3 3 3 1 1 2n;cout 2 服务员 2 6 2 2 1 2n;cout 3 家教 1 9 1 3 1 1n;couty;while(y=4);switch(y)case 1:tl5-=3;q5+=3;e5+=3;ke5+=1;z5-=1;ex5+=2;break;case 2:tl5-=2;q5+=6;e5+=2;ke5+=2;z5-=1;ex5+=2;break;case 3:tl5-=1;q5+=9;e5+=1;ke5+=3;z5-=1;ex5+=1;break;cout体力消耗值 体重减少值 饥饿值 饥渴值 获得金币 获得经验endl;cout tl5 z5 e5 ke5 q5 ex5endl;void cj_huodong:cj_duanlian()int z;docout编号 名称 体力消耗 经验增值 饥饿值 饥渴值 体重下降 心情增加n;cout 1 打羽毛球 2 1 1 1 1 3n;cout 2 跑步 4 3 2 2 1 2n;cout 3 游泳 6 5 3 3 1 3n;coutz;while(z=4);switch(z)case 1:tl5-=2;ex5+=1;e5+=1;ke5+=1;z5-=1;m5+=3;break;case 2:tl5-=4;ex5+=3;e5+=2;ke5+=2;z5-=1;m5+=2;break;case 3:tl5-=6;ex5+=5;e5+=3;ke5+=3;z5-=1;m5+=2;break;cout 体力消耗值 体重减少值 饥饿值 饥渴值 经验增加值 心情增加值endl;cout tl5 z5 e5 ke5 ex5 m5endl;void cj_huodong:cj_bangzhurenganhuo()int q;docout编号 名称 体力消耗 经验增值 饥饿值 饥渴值 体重下降 心情增加n;cout 1 扫地 1 1 1 1 1 2n;cout 2 拖地 2 2 2 2 1 1n;cout 3 倒水 3 3 3 3 1 2n;coutq;while(q=4);switch(q)case 1:tl5-=1;ex5+=1;e5+=1;ke5+=1;z5-=1;m5+=2;break;case 2:tl5-=2;ex5+=2;e5+=2;ke5+=2;z5-=1;m5+=1;break;case 3:tl5-=3;ex5+=3;e5+=3;ke5+=3;z5-=1;m5+=2;break;cout体力下降值 体重下降值 饥饿值 饥渴值 经验增加值 心情增加值endl;cout tl5 z5 e5 ke5 ex5 m5endl;void cj_huodong:cj_wanshua()int p1;docout编号 名称 体力消耗 心情增加 饥饿值 饥渴值 体重下降n;cout 1 野营 3 3 1 1 1n;cout 2 找朋友 2 6 2 2 1n;cout 3 旅游 1 9 3 3 1n;coutp1;while(p1=4);switch(p1)case 1:tl5-=3;m5+=3;e5+=1;ke5+=1;z5-=1;break;case 2:tl5-=2;m5+=6;e5+=2;ke5+=2;z5-=1;break;case 3:tl5-=1;m5+=9;e5+=3;ke5+=3;z5-=1;break;cout体力下降值 体重下降值 饥饿值 饥渴值 心情增加值endl;cout tl5 z5 e5 ke5 m5endl;(4)主函数void main()string name4;cout欢迎进入电子宠物,请选择你想要的类型(1.dog or 2.bird)i; while(i!=1&i!=2) couti; static int top=0; switch(i) case 1:coutJL_shape();break; case 2:coutJL_shape();break; coutname4; int w;loop: coutj; while(j!=1&j!=2) coutj; switch(j) case 1:f.ZLT_feed();break; case 2:h.cj_xuanze();break; k.JL_judgeill(); int u; if(petx-sumex()=10*petx-getji() u=petx-getji();u+;cout 级别 u;cout金钱 体力 体重 饥饿值 经验 饥渴值 心情endl;cout summo() sumtl() sumwe() sumhu() sumex() sumth() summo()endl;/qqtop.getfile();qqtop.closein(); qqtop.showfile();qqtop.closeout(); top+; coutw; while(w!=1&w!=2) coutw; cout请确认您所选的选项w; switch(w) case 2:cout你已成功退出n; break; case 1:goto loop; delete petx;4.4调试分析(调试过程中遇到的问题是如何解决的,对设计与实现的回顾讨论和分析及改进设想。)1、从上述图c至图h中发现我们所设计的宠物总是出现如下图i所示的提示,这个问题也是我们一直没有办法解决的,如何对此进行合理的改善还一直在探讨之中。 图i2、另有一处小错误如下图j所示,体能消耗值一栏与下面的数字一栏不相对应,这是由于空格数与文字所占字节数不相对应(示例:黄色标记处) 图jvoid cj_huodong:cj_duanlian()int z;docout编号 名称 体力消耗 经验增值 饥饿值 饥渴值 体重下降 心情增加n; cout 1 打羽毛球 2 1 1 1 1 3n;cout 2 跑步 4 3 2 2 1 2n;cout 3 游泳 6 5 3 3 1 3n;coutz;while(z=4);switch(z)case 1:tl5-=2;ex5+=1;e5+=1;ke5+=1;z5-=1;m5+=3;break; case 2:tl5-=4;ex5+=3;e5+=2;ke5+=2;z5-=1;m5+=2;break; case 3:tl5-=6;ex5+=5;e5+=3;ke5+=3;z5-=1;m5+=2;break; cout 体力消耗值 体重减少值 饥饿值 饥渴值 经验增加值 心情增加值endl; cout tl5 z5 e5 ke5 ex5 m52,才能使团队优势发挥到最大,同时也明白不管做什么事都要有一个清晰明了的思维,有不会的地方可以去请教他人,可求助于老师或同学。个人的能力总是有限的,我们要主动寻求与他人的合作,可与其他组成员交流意见,择其善者而改之。在编程过程中也遇到很多难题是通过翻书解决的,就是说书本上的知识还需要好好消化消化的。程序设计都是由一些小步骤集合而来最后才变成一项大的程序,牵一发而动全身,所以程序设计也要求我们要心思缜密,尽量做到能够面面俱到。 附录 全部代码#include#include#include#includeusing namespace std;class ZLT_food/璐婷private:static int m3;/心情static int q3;/钱,金币static int tl3;/体力static int z3;/体重static int e3;/饥饿值static int ke3;/饥渴值public:ZLT_food()int getm3()return m3;int getq3()return q3;int gettl3()return tl3;int getz3()return z3;int gete3()return e3;int getke3()return ke3;void ZLT_feed();void ZLT_feedfood();void ZLT_feeddrink();void ZLT_alarm();f;int ZLT_food:m3=0;int ZLT_food:q3=0;int ZLT_food:tl3=0;int ZLT_food:e3=0;int ZLT_food:ke3=0;int ZLT_food:z3=0;class cj_huodong/蔡洁private:static int tl5;/体力消耗值static int q5;/获取金币static int e5;/饥饿值static int ke5;/饥渴值static int z5;/体重减少static int ex5;/经验增加static int m5;/心情增加值public:cj_huodong()int getq5()return q5;int gettl5()return tl5;int getz5()return z5;int gete5()return e5;int getke5()return ke5;int getex5()return ex5;int getm5()return m5;void cj_xuanze();void cj_dagong();void cj_duanlian();void cj_bangzhurenganhuo();void cj_wanshua();h;int cj_huodong:tl5=0;int cj_huodong:q5=0;int cj_huodong:e5=0;int cj_huodong:ke5=0;int cj_huodong:z5=0;int cj_huodong:ex5=0;int cj_huodong:m5=0;class JL_kanbing/姬玲private:static int q6;/金币花费值static int tl6;/体力增加值public:JL_kanbing()int getq6()return q6;int gettl6()return tl6;void JL_judgeill();void JL_zhiliao();k;int JL_kanbing:q6=0;int JL_kanbing:tl6=0;/class PYT_Petprivate:int jibie;int hungry;int thirsty;int mood;int tili;int weight;/int tineng;int money;int experience;public:PYT_Pet(int ji=1,int hu=10,int th=10,int mo=30,int tl=30,int we=30,int mn=30,int ex=0)jibie=ji;hungry=hu;thirsty=th;mood=mo;weight=we;tili=tl;money=mn;experience=ex;int getji()return jibie;int gethu()return hungry;int getth()return thirsty;int getmo()return mood;int gettl()return tili;int getwe()return weight;/int gettn()return tineng;int getmn()return money;int getex()return experience;/virtual int sumji()=0;virtual int sumhu()=0;virtual int sumth()=0;virtual int summo()=0;virtual int sumtl()=0;virtual int sumwe()=0;virtual int summn()=0;virtual int sumex()=0;virtual void JL_shape()=0;void show()coutjibie hungry thirsty mood tili money experienceendl;PYT_Pet *petx;/class PYT_Dog:public PYT_Petprivate:int life;public:void JL_shape();PYT_Dog(int ji=1,int hu=10,int th=10,int mo=30,int tl=30,int we=30,int mn=30,int ex=0,int li=30):PYT_Pet(ji,hu,th,mo,tl,we,mn,ex)life=li;void show1()show();coutlifeendl;/*int getji()return jibie;int gethu()return hungry;int getth()return thirsty;int getmo()return mood;int gettl()return tili;int getwe()return weight;/int gettn()return tineng;int getmn()return money;int getex()return experience;*/int getli()return life; int sumhu()return(gethu()+f.gete3()+h.gete5();int sumth()return(getth()+f.getke3()+h.getke5();int summo()return(getmo()+f.getm3()+h.getm5();int sumtl()return(gettl()+f.gettl3()+h.gettl5()+k.gettl6();int sumex()return(getex()+h.getex5();int sumwe()return(getwe()+f.getz3()+h.getz5();int summn()return(getmn()+f.getq3()+h.getq5()+k.getq6();d;void PYT_Dog:JL_shape() cout * * endl;cout * * * endl;cout * * endl;cout * * endl;cout * = * endl;cout * * * endl;class PYT_Bird:public PYT_Petprivate:int life;public:PYT_Bird(int ji=1,int hu=10,int th=10,int mo=30,int tl=30,int we=30,int mn=30,int ex=0,int li=30):PYT_Pet(ji,hu,th,mo,tl,we,mn,ex)life=li;void show2()show();coutlifeendl;void JL_shape();int getli()return life; int sumhu()return(gethu()+f.gete3()+h.gete5();int sumth()return(getth()+f.getke3()+h.getke5();int summo()return(getmo()+f.getm3()+h.getm5();int sumtl()return(gettl()+f.gettl3()+h.gettl5()+k.gettl6();int sumex()return(getex()+h.getex5();int sumwe()return(getwe()+f.getz3()+h.getz5();int summn()return(getmn()+f.getq3()+h.getq5()+k.getq6();b;void PYT_Bird:JL_shape()cout * * endl;cout * . . * endl;cout * * endl;cout * * * endl;cout * * * endl;cout * * * endl;cout * * * endl;cout * * * petx-summo()petx-sumtl()petx-sumwe()petx-sumhu()petx-sumex()petx-sumth()petx-summo();*/void showfile()outfile.open(f1.txt,ios:out);outfile summo() sumtl() sumwe() sumhu() sumex() sumth() summo()endl;/*void closein()infile.close();*/void closeout()outfile.close();qq100;void ZLT_food:ZLT_feed()int a1;docout您是要喂食还是喂水?endl;cout1 喂食endl2 喂水a1;while(a1=3);switch(a1)case 1:ZLT_feedfood();break;case 2:ZLT_feeddrink();break;void ZLT_food:ZL

温馨提示

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

评论

0/150

提交评论