c++课设.docx
- 文档编号:10665681
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:19
- 大小:177.54KB
c++课设.docx
《c++课设.docx》由会员分享,可在线阅读,更多相关《c++课设.docx(19页珍藏版)》请在冰豆网上搜索。
c++课设
存档资料成绩:
华东交通大学
课程设计报告书
所属课程名称
C++语言及程序设计
题目
院(系)
班级
学 号
学生姓名
指导教师
宋岚
辅导教师
宋岚
不必打印此页,由学校的封面替代,但内容一定要填写完整
2014年6月26日
课程设计(论文)任务书
电气学 院 电气专 业13-8 班
一、课程设计(论文)题目:
石头、剪子、布游戏
二、课程设计(论文)工作自2014年6月23日起至2014年6月27日止
三、课程设计(论文)地点:
8-501
四、课程设计(论文)内容要求:
1.本课程设计的目的
(1)进一步巩固和加深对“C++程序设计”课程基本知识的理解和掌握,了解C++语言在项目开发中的应用。
(2)学习程序设计开发的一般方法,了解和掌握项目开发过程及方式,培养正确的设计思想和分析问题、解决问题的能力,特别是项目设计能力。
(3)通过对标准化、规范化文档的掌握并查阅有关技术资料等,培养项目设计开发
能力,同时提倡团队合作精神。
2.课程设计的任务及要求
1)基本要求:
(1)对系统功能进行需求分析;
(2)使用VisualC++编译器进行程序编译;
(3)提出系统的设计方案;
(4)编写源程序代码并进行调试。
2)创新要求
在基本要求达到后,可进行创新设计。
3)课程设计报告撰写及装订要求
课程设计报告的撰写要求表述简明,图表准确。
报告按如下内容和顺序用A4纸进行打印并装订成册。
(1)封面
采用统一的课程设计封面,并按要求填写好封面要求的个人信息和选题。
(2)设计任务书
(3)评阅书
(4)目录
(5)正文
(6)主要参考文献
4)课程设计评分标准:
每人按指定题目进行设计,严禁抄袭,要求每人自己动手编写程序,采取同一组同时检查程序及运行结果,检查时同组成员每人陈述自己的分工,同一选题不同组如发现代码完全一样,则双方都作不及格处理。
(1)达到课程设计的目的与要求,程序的可读性较好,并调试正确,60分;
(2)能正确回答设计的中老师所提问题,可增加10分;
(3)课程设计报告书写规范整齐,可增加10分;
(4)心得体会认真总结,可增加10分;
(5)程序有创新性,可增加10分;
成绩评定实行优秀、良好、中等、及格和不及格五个等级。
不及格者需重做。
5)课程设计进度安排
(1)准备阶段(3学时):
选择设计题目、了解设计目的要求、查阅相关资料。
(2)程序模块设计分析阶段(4学时):
程序总体设计、详细设计。
(3)代码编写调试阶段(10学时):
程序模块代码编写、调试、测试。
(4)撰写论文阶段(3学时):
总结课程设计任务和设计内容,撰写课程设计论文。
6)课程设计题目具体要求:
在游戏中,孩子们用手表示石头、剪刀或布中的一个,出拳头表示石头,伸出两根手指表示剪刀,伸手表示布,孩子们面对面地从1数到3时做出他们的选择,如果所作的选择是一样的,则表示平局,否则就按如下规则决定胜负:
(1)石头砸坏剪刀;
(2)剪刀剪碎布;(3)布覆盖石头。
编写程序实现计算机与人进行游戏。
学生签名:
2014年6月28日
课程设计(论文)评阅意见
序号
项目
等 级
优秀
良好
中等
及格
不及格
1
课程设计态度评价
2
出勤情况评价
3
任务难度评价
4
工作量饱满评价
5
设计中创新性评价
6
论文书写规范化评价
综合评定等级
评阅人宋岚职称讲师
2014年6月29日
目 录
一、需求分析1
二、概要设计2
三、详细设计5
四、设计和调试分析8
五、课程设计心得11
六、参考文献12
第1章需求分析
(1)用户输入石头、剪子或布,机器随机出石头、剪子或布,机器要能够判断谁赢谁输,或者平局。
(2)进行游戏的次数可能不止一次,如果进行很多局游戏,电脑要能够自动统计各玩家赢的次数,最后通过比较谁赢的次数多,输出最后赢家。
(3)为了机器更加智能化,还要给玩家提供游戏帮助菜单,以及退出菜单,和游戏介绍。
(4)为了让玩家随时停止游戏,知道游戏结果,还应该提供一个游戏结果选项。
第2章概要设计
1、用户选择模块,程序流程图如下所示:
图1:
用户选择模块流程图
2、机器选择模块,程序流程图如下所示:
图2:
机器选择模块流程图
3、
游戏结果模块,程序流程图如下所示:
2、
图3:
游戏结果模块流程图
4、判断结果模块,程序流程图如下所示:
图4:
判断结果模块流程图
5、每局游戏结果模块,程序流程图如下所示:
第3章详细设计
//head.h
enumc_h_s{cloth,hammer,scissors,game,help,instructions,quit};
classGame//Game类
{
public:
Game();//构造函数
enumc_h_sselect();//选择命令函数
enumc_h_smach();//机器选择函数
voidgamehelp();//帮助函数
intWin_lose(enumc_h_splayer,enumc_h_smachine);//判断输赢
函数
voidgameshow(int,int,int);//游戏结果函数
voidsolution();//游戏结果函数
voidinstruct();//游戏说明函数
private:
intwin;//赢的次数
intlose;//输的次数
inttie;//平局次数
enumc_h_splayer;//玩家的选择
enumc_h_smachine;//机器的选择
};
//head.cpp
#include
#include"head.h"
#include
#include
Game:
:
Game()
{
win=0;
lose=0;
tie=0;
}
enumc_h_sGame:
:
select()
{
charc;
enumc_h_sp;
cout<<"请选择"<<'c'<<'h'<<"或"<<'s'<<":
";
cin>>c;
switch(c)
{
case'c':
p=cloth;break;
case'h':
p=hammer;break;
case's':
p=scissors;break;
case'g':
p=game;break;
case'p':
p=help;break;
case'i':
p=instructions;break;
case'q':
p=quit;break;
default:
cout<<"输入有误,请重新输入:
"< } returnp; } enumc_h_sGame: : mach() { inti; srand((unsigned)time(NULL)); i=rand(); i=i%3; if(i==0) returncloth; else { if(i==1) returnhammer; else returnscissors; } } voidGame: : gameshow(intwin,intlose,inttie) { cout<<"游戏结果如下: "< <<"玩家获胜的次数是: "< <<"电脑获胜的次数是: "< <<"平局的次数是: "< <<"游戏的总次数是: "< } voidGame: : gamehelp() { cout<<"玩家可以输入下列的字符: "< <<"c表示布"< <<"h表示锤子"< <<"s表示剪刀"< <<"g查看游戏结果"< <<"p可获得游戏帮助"< <<"i游戏指导信息"< <<"q退出游戏"< } intGame: : Win_lose(enumc_h_splayer,enumc_h_smachine) { intvictory; if(player==cloth) victory=machine==hammer; else { if(player==hammer) victory=machine==scissors; else victory=machine==cloth; } returnvictory; } voidGame: : instruct() { cout<<"****剪刀锤子布****"< <<"在这个游戏中"< <<"c表示布"< <<"h表示锤子"< <<"s表示剪刀."< <<"游戏者和机器都只选择c,h,s中的一个.如果二者的选择相同,那么这一局就是平局.此外: "< <<"\"布包锤子\"(布获胜)."< <<"\"锤子打烂剪刀\"(锤子获胜)."< <<"\"剪刀剪布\"(剪刀获胜)."< <<"还有其它的选择是: "< <<"g表示游戏的结果(至今获胜的次数)"< <<"p可获得帮助"< <<"i可获得游戏方法的指导信息"< <<"q表示退出游戏"< <<"这个游戏一直重复到游戏者选择q为止."< <<"祝你好运! "< } voidGame: : solution() { Game: : instruct(); while((player=select())! =quit) { switch(player) { casecloth: casehammer: casescissors: { machine=mach(); if(player==machine) { tie=tie+1; cout<<"平局"< } else { if(Win_lose(player,machine)){win=win+1; cout<<"玩家获胜"< } else { lose=lose+1; cout<<"电脑获胜"< }}} casegame: Game: : gameshow(win,lose,tie);break; caseinstructions: Game: : instruct();break; casequit: gameshow(win,lose,tie);break; casehelp: Game: : gamehelp();break; }} Game: : gameshow(win,lose,tie); cout<<"bye"< //game.cpp #include #include"head.h" voidmain() { Gameg; g.solution(); } 第四章运行结果及分析 1、游戏规则及说明截图: 图1: 游戏规则及说明 2、游戏运行及统计结果截图: 图2: 游戏运行及统计结果 3、查看游戏结果截图: 图3: 查看游戏结果 4、游戏帮助截图: 图4: 游戏帮助 5、游戏指导说明截图: 图5: 游戏指导说明 6、退出游戏截图: 图6: 退出游戏 第5章 课程设计心得 在设计石头-剪刀-布游戏的程序过程中,我们用到了面向对象的类、成员函数、结构函数、随机函数、枚举类型、break语句、for语句、if语句、while循环、函数调用机制、参数的传递、switch语句等。 本设计基本完成了设计的要求,测试结果是正确的。 如需完善的话可以把游戏所做的选择可以弄成图像,让程序变的更加直观。 在此次课程设计中,我编写了一个程序实现计算机与人进行游戏——石头-剪刀-布的游戏。 在这个程序中让我了解了什么是类,类所包含的对象怎么去调用,对于它的保护对象和公有对象理解了其中的作用和效果。 补充了一个随机函数,让我知道到了随机种子的生成,与应用的技巧。 总之这个实训让我得到了很多重要的编译技巧和思考的路线方向。 在设计这个小游戏过程中,我遇到了很多问题: 1、枚举类型的定义和做参数的使用,随机函数的头文件和初始化化随机函数,上网收集错误,分析自己的不足处,然后加以改正。 2、调用类里面的函数要用到区域符“: : ”,会常常忘记,还有使用类的私有成员时只有类里面的对象可以调用和定义。 3、文件的调用是一个难题,我的这个程序由三个cpp文件共同组成,所以必须调用自己编写的函数。 比如自己编写了一个名为1.cpp的文件,想在2.cpp里调用它,就要在头文件里用#include“1.cpp”调用。 总之想要学会一门语言,就必须实践。 第六章参考文献 [1]《C++程序设计》精品课程 [2]柴欣,张红梅.VisualC++程序设计基础(第二版)[M].中国铁道出版社.2007.8 [3]吕凤翥.C++语言基础教程[M].清华大学出版社.2007.2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+