桂林电子科技大学《面向对象程序设计》课程设计(论文)题目:教学游戏院(系):数学与计算科学学院专业班级:信息与计算科学专业学号:1200710222学生姓名:李卫康指导教师:宁黎华教师职称:讲师目录第1章课程设计目的与要求..................................错误!未定义书签。1.1课程设计目的........................................错误!未定义书签。1.2课程设计的实验环境..................................错误!未定义书签。1.3课程设计的预备知识..................................错误!未定义书签。1.4课程设计要求........................................错误!未定义书签。第2章设计思路与算法......................................错误!未定义书签。2.1题目分析.........................................错误!未定义书签。a)使用的库函数...................................错误!未定义书签。b)类的设计......................................错误!未定义书签。c)算法设计.......................................错误!未定义书签。2.2程序源代码.......................................错误!未定义书签。第3章运行结果以及分析....................................错误!未定义书签。3.1)等级1测试....................................................3.2)等级2测试....................................................3.3)等级3测试....................................................3.4)等级4测试....................................................第4章课设总结.............................................错误!未定义书签。第一章课程设计的目的与要求1.1课程设计目的将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生专业课程《面向对象的程序设计》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。(2)熟练掌握C++语言的基本语法,灵活运用各种数据类型(3)利用所学知识,开发小型应用系统,掌握运用C++语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。1.2课程设计的实验环境Windows操作系统下Dev-c++下运行代码1.3课程设计的预备知识熟悉使用C语言,熟悉c++面向对象的基本知识以及会使用Dev-c++软件的方法,可以使用其进行编译运行调试等操作1.4课程设计题目以及要求编写一个教学游戏,教授学生学习算术计算。程序将对加法和减法进行测试。程序共有三个难度级别,第1级测试两个小于10并且和也小于10的数字加法;第2级进行任何两个1位数字的加法;第3级是差为非负的两个1位数的减法。程序将随机产生问题并读取游戏参与者输入的答案。对于每一个问题,游戏参与者都有两次回答问题的机会。在得到5分后游戏进入下一级。利用CRC卡片设计类和类中的方法,同时给出UML类图并实现该程序。(参考附录C.1源代码)(1人/组)扩展功能:1)增加第四个难度级别,执行一个两位数的加法2)能够查询游戏参与者的等级。第二章设计思路与算法2.1题目分析a)使用的库函数:因为要系统随机产生数字,所以这里需要引入相应的类库函数#includecstdlib(不同的软件类库都是不相同的)参考相应的被给的代码需要使用的是两个随机函数crand()和rand()函数:srand初始化随机种子,rand产生随机数b)类的设计:玩家类(Player)的设计:属性:名字Stringname;玩游戏获得的分数intscore玩家所处的等级intlevel构造函数:空参数的构造方法用于初始化参数Player()有参的构造方法用于获得玩家的姓名,等级Player(name,level)方法:玩家自定义姓名stringget_name()玩家获得的分数get_score()玩家玩的过程奖励的分数(两次机会回答正确)increment_score();玩家玩的过程所处的等级get_level()游戏类(Game)的设计:属性:具体的玩家类Playerplayer构造函数:用于建立一个玩家player=Player();方法:玩的方法:play()读取玩家的信息:read_player_information()电脑为玩家随机产生随机数;play_round();c)算法设计:根据题目要求添加第四个难度设计:if(player.get_level()==1)//等级一do{i1=rand_int(1,9);i2=rand_int(1,9);answer=i1+i2;}while(answer9);elseif(player.get_level()==2)//等级二{i1=rand_int(1,9);i2=rand_int(1,9);answer=i1+i2;}elseif(player.get_level()==3)//等级三do{i1=rand_int(1,9);i2=rand_int(1,9);answer=i1-i2;}while(answer0);elseif(player.get_level()==4)//等级四{i1=rand_int(10,99);i2=rand_int(10,99);answer=i1+i2;}2.2程序源代码#includeiostream#includestring#includectime#includecstdlibusingnamespacestd;voidrand_seed(){intseed=static_castint(time(0));srand(seed);}intrand_int(inta,intb){returna+rand()%(b-a+1);}classPlayer{public:Player();Player(stringplayer_name,intinitial_level);voidincrement_score();intget_score()const;intget_level()const;stringget_name()const;private:stringname;intscore;intlevel;};Player::Player(){name=;score=0;level=1;}Player::Player(stringplayer_name,intinitial_level){name=player_name;score=0;level=initial_level;}voidPlayer::increment_score(){score++;if(score%5==0&&level4)//等级为4了level++;}intPlayer::get_level()const{returnlevel;}intPlayer::get_score()const{returnscore;}stringPlayer::get_name()const{returnname;}classGame{public:Game();voidplay();voidread_player_information();voidplay_round();intget_guess(intv1,intv2,intanswer,stringoperation);private:Playerplayer;};Game::Game(){player=Player();}voidGame::play(){read_player_information();stringresponse;do{play_round();coutDoyouwanttoplayagain?(y/n);cinresponse;}while(response==y);}voidGame::read_player_information(){coutWhatisyourname?;stringname;cinname;intinitial_level=0;do{coutAtwhatleveldoyouwanttostart?(1-4);cininitial_level;}while(initial_level1||initial_level4);player=Player(name,initial_level);}voidGame::play_round(){inti1=0;inti2=0;intanswer=0;if(player.get_level()==1)do{i1=rand_int(1,9);i2=rand_int(1,9);//产生1到10的随机数answer=i1+i2;}while(answer9);elseif(player.get_level()==2){i1=rand_int(1,9);i2=rand_int(1,9);answer=i1+i2;}elseif(player.get_level()==3)do{i1=rand_int(1,9);i2=rand_int(1,9);answer=i1-i2;}while(answer0);elseif(player.get_level()==4){i1=rand_int(10,99);i2=rand_int(10,99);answer=i1+i2;}intguess;if(player.get_level()!=3)//改为不等于3guess=get_guess(i1,i2,answer,+);elseif(player.get_level()==3)guess=get_guess(i1,i2,answer,difference);elseguess=get_guess(i1,i2,answer,sum);if(answer==guess){player.increment_score();coutCongratulations,player.get_name()!Thatiscorrect.\n;}else{coutSorry,player.get_name().Thecorrectanswerisanswer.\n;}coutYourscoreisplayer.get_score()\n;coutYourlevelisplayer.get_level()endl;//输出当前等级}intGame::get_guess(intv1,intv2,intanswer,stringoperation){intguess;inttries=2;do{coutPleaseentertheoperationofv1andv2\n;cinguess;if(answer==guess)returnguess;elsecoutOops.Thatwasno