张志勇课程设计说明书文档格式.docx

上传人:b****5 文档编号:18694667 上传时间:2022-12-31 格式:DOCX 页数:13 大小:193.33KB
下载 相关 举报
张志勇课程设计说明书文档格式.docx_第1页
第1页 / 共13页
张志勇课程设计说明书文档格式.docx_第2页
第2页 / 共13页
张志勇课程设计说明书文档格式.docx_第3页
第3页 / 共13页
张志勇课程设计说明书文档格式.docx_第4页
第4页 / 共13页
张志勇课程设计说明书文档格式.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

张志勇课程设计说明书文档格式.docx

《张志勇课程设计说明书文档格式.docx》由会员分享,可在线阅读,更多相关《张志勇课程设计说明书文档格式.docx(13页珍藏版)》请在冰豆网上搜索。

张志勇课程设计说明书文档格式.docx

第一天:

熟悉课程设计题目及具体要求,确定选择的语言开发环境,查阅资料、学习、讨论。

第二天:

根据课题给出的基本需求,进行认真分析和讨论,按照软件工程的思想,完成软件的面向对象分析工作。

第三天到第四天:

在面向对象分析的基础上,对软件进行面向对象的设计工作,完成相关设计工作。

第五天到第六天:

进行面向对象实现工作,确定需要的用户界面以及结构,完成软件的整体框架,在开发环境下,编程实现所开发的系统。

第七到第八天:

调试、测试工作,相关的后期工作。

第九和第十天:

撰写课程设计报告

五、主要参考文献

[1]钱能.C++程序设计教程(第2版)[M].北京:

清华大学出版社.2005

审核意见

系(教研室)主任(签字)

指导教师下达时间2016年1月4日

指导教师签字:

____________________

目录

引言4

第一章系统开发环境的简介和特点5

1.1开发环境的简介5

1.2开发环境的特点5

第二章系统分析6

2.1系统定位6

2.1.1系统介绍6

2.1.2系统面向的用户群体6

2.2系统需求6

2.2.1系统的功能性需求6

2.2.2系统的非功能性需求7

2.3技术可能性分析7

第三章总体结构设计7

3.1“21”点纸牌游戏简介7

3.2“21”点纸牌游戏总体功能流程图8

第四章程序设计思路及测试结果8

4.1设计步骤和关键代码8

(一)先定义全局变量:

8

(二)创建一个poker类,构造函数poker;

9

(三)新一局开始时需要洗牌,实现洗牌这个函数initPoker();

12

(四)给玩家发牌函数和给庄家发牌函数的实现getPokerF();

getPokerL();

(五)玩家总点数的函数和庄家总点数函数的实现getSumF();

getSumL();

13

(六)main函数;

14

4.2测试15

引言

本次课程设计利用计算机高级语言C++进行简单编程,实现简易的C++程序计算器的编程和运行。

通过MicrosoftVisualC++6.0软件可以进行C++程序编译,通过模块之间关系的确定及各模块功能,最后设计一个简单的操作界面实现游戏。

本系统通过C++高级语言进行编程,并设计了简单明了的操作界面。

简单的界面能给用户更好的操作体验,更直接而充分的掌握本程序的一些应用和功能。

通过直观的方式,最终实现C++设计的应用程序——“21点”纸牌游戏。

本次课设所做程序虽然只是一个简单的C++计算器程序,但是基本的应用功能都已具备,可以更好的用在实际应用中。

C++这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“Cplusplus”,“CPP”。

它是一种使用非常广泛的计算机编程语言。

C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。

它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格。

本学期我们开设了“C++语言程序设计”这门课程。

随着老师的讲解及对这门语言的深入认识和学习,我们已经对这门计算机语言有了一定的理解。

而C++作为一种较为普遍的计算机语言,已经被大多数程序员所采用。

随着这么语言的普及应用,生活中各种软件都会用到这种语言。

如生活中的一些应用软件、管理软件等。

例如:

万年历程序,“21点”纸牌游戏程序„„本次课程设计,我做的是一个简单的计算器程序集,他是利用C++的文件处方式实现一个“21点”纸牌游戏的程序。

在现代社会中,随着社会的快速发展,人们对休闲娱乐越来越重视,又由于电脑的快速发展,“21点”纸牌游戏逐渐成为人们的娱乐的一种方式,编写程序实现游戏,该程序是模拟古老21点扑克牌游戏,实现1对1的人机大战。

要求游戏过程中任意一方牌的点数之和超过21点,则自动出局;

在不超过21点的情况下,玩家下注由电脑随机发牌与庄家比累积牌的点数的大小,大者为赢家。

第一章系统开发环境的简介和特点

1.1开发环境的简介

MicrosoftVisualC++6.0,简称VC6.0,是微软推出的一款C++编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。

VisualC++是一个功能强大的可视化软件开发工具。

自1993年Microsoft公司推出VisualC++1.0后,随着其新版本的不断问世,VisualC++已成为专业程序员进行软件开发的首选工具。

虽然微软公司推出了VisualC++.NET(VisualC++7.0),但它的应用的很大的局限性,只适用于Windows2000、WindowsXP和WindowsNT4.0。

所以实际中,更多的是以VisualC++6.0为平台。

VisualC++6.0不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrateddevelopmentenvironment,IDE)。

VisualC++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导ClassWizard等开发工具。

这些组件通过一个名为DeveloperStudio的组件集成为和谐的开发环境。

1.2开发环境的特点

由于C++是由C语言发展起来的,也支持C语言的编译。

6.0版本是使用最多的版本,很经典。

最大的缺点是对于模版的支持比较差。

现在最新补丁为SP6,推荐安装,否则易出现编译时假死状态和有些功能不可用的情况。

同时,6.0版本对windows7和windows8的兼容性较差

第二章系统分析

2.1系统定位

2.1.1系统介绍

本系统定位简单的“21点”纸牌游戏小应用程序,暂时只考虑单机环境下的实现;

操作系统选择目前常用的Windows 

7。

系统界面力求简洁、易用,在标准化的基础上考虑界面的美观和新颖

2.1.2系统面向的用户群体

系统面向所有人群,凡是懂得计算机基本操作的人都可以对本程序进行应用。

简单明了的操作界面能够让用户迅速的适应并掌握。

2.2系统需求

2.2.1系统的功能性需求

(1)系统启动后,出现欢迎界面,满足人机交互的命令行设计。

(2)能实现基本信息的输入与游戏开始分开。

(3)能实现开始后显示每一个玩家的牌点大小,当然庄家的首张牌是隐藏的。

(4)能实现决定是否要继续发牌。

通过(1,2)?

问题选项的提问与回答,来完成是否继续发牌的游戏要求

(5)能实现自主完成庄家的发牌与显示最终大小工作。

通过所有玩家都已决定是否要发牌后,最终可以完成对庄家的是否发牌和显示最终牌点大小。

(6)能实现系统自动比较大小,并通过界面最终显示到屏幕上

(7)能实现在游戏结束后提示游戏结束界面。

2.2.2系统的非功能性需求

(1)用户界面需求:

简洁、易用、易懂,美观、大方、标准,具备一定的兼容性。

(2)系统开发平台:

Windows 

7Microsoft 

Visual 

C++ 

6.0 

(3)软件质量需求:

易用、健壮、兼容性好、运行稳定、有一定安全保障

2.3技术可能性分析

本系统设计的核心部分就是通过C++语言的文件处理模块,通过相应代码、类实现游戏,该程序是模拟古老的21点扑克牌游戏,实现1对1的人机大战。

可以得出结论:

该系统的实现在技术上是可行的。

第三章总体结构设计

3.1“21”点纸牌游戏简介

21点一般用到1-8副牌。

庄家给每个玩家发两张牌,牌面朝上;

给自己发两张牌,一张牌面朝上,一张牌面朝下。

K、Q、J和10牌都算作10点。

其余所有2至9牌均按其原面值计算。

如果玩家拿到的前两张牌是一张A和一张10点牌,就拥有天生21点(Blackjack);

此时,如果庄家没有黑杰克,玩家就能赢得1.5倍的赌金(2赔3)。

没有黑杰克的玩家可以继续拿牌,以使总点数尽可能接近但不超过21点;

如果超过21点,玩家就会“爆(Bust)”并输掉赌金。

如果庄家的总点数等于或少于16点,则必须拿牌(Hit);

如果庄家的总点数等于或多于17点,则必须停牌(Stand)。

3.2“21”点纸牌游戏总体功能流程图

游戏界面——》输入赌注——》选择要牌——》开始游戏——》退出

第四章程序设计思路及测试结果

4.1设计步骤和关键代码

第一步:

首先创建项目名称(game2);

第二步:

往项目中添加需要的源文件,和头文件;

#include<

iostream>

string>

time.h>

usingnamespacestd;

#defineNUM1000

intj=2;

//定义为全局变量

intrandNum[NUM];

//因为rand()函数有一定的缺陷,所以在程序中定义了randNum数组来存放随机数

//即使使用了种子函数srand(),由于程序运行时间比较短,也不太好设置种子。

因此使用数组来存放随机数

classPoker

{private:

intpoker[53];

//扑克

intpokerValue[53];

//扑克代表的数值

stringpokerName[53];

//扑克名

intmoney;

//玩家钱数

intbet;

//玩家的赌注

intpokerF[5];

//玩家手中的牌F:

FarmerL:

Landlord

intpokerL[5];

//庄家手中的牌F:

intpokerNumF;

//玩家手中的牌数

intpokerNumL;

//庄家手中的牌数

public:

Poker();

//构造函数,对牌初始化

voidinitPoker();

//洗牌,在每轮游戏开始前进行

stringgetPokerF();

//用字符串的形式返回玩家的牌

stringgetPokerL();

//用字符串的形式返回庄家的牌

intgetSumF();

//返回玩家牌的点数,用以判断是否超过21点

intgetSumL();

//返回庄家牌的点数

voidfarmerAsk();

//玩家要牌

voidlandlordAsk();

//庄家要牌

voidinputBet();

//玩家输入赌注

voidnewGame();

//开始新游戏

voidlandlordProcess();

//在玩家不要牌时进行处理

};

Poker:

:

Poker()

{poker[0]=0;

for(inti=1;

i<

=13;

i++)//|

{poker[i]=i;

//|用构造函数对牌初始化

poker[i+13]=i;

//|

poker[i+26]=i;

poker[i+39]=i;

}//for结束

pokerValue[0]=0;

for(i=1;

=52;

i++)

{if(poker[i]<

=10)pokerValue[i]=poker[i];

elsepokerValue[i]=10;

}pokerName[0]="

"

;

for(i=0;

4;

{pokerName[1+13*i]="

A"

pokerName[2+13*i]="

2"

pokerName[3+13*i]="

3"

pokerName[4+13*i]="

4"

pokerName[5+13*i]="

5"

pokerName[6+13*i]="

6"

pokerName[7+13*i]="

7"

pokerName[8+13*i]="

8"

pokerName[9+13*i]="

9"

pokerName[10+13*i]="

10"

pokerName[11+13*i]="

J"

pokerName[12+13*i]="

Q"

pokerName[13+13*i]="

K"

}money=200;

//玩家开始玩游戏时钱数是200

bet=0;

5;

{pokerF[i]=0;

//|对pokerOfFarmer初始化

pokerL[i]=0;

//|对pokerOfLandlord初始化

}pokerNumF=0;

//玩家手中的牌数初始化为0

pokerNumL=0;

//庄家手中的牌数初始化为0

srand((int)time(0));

NUM;

{randNum[i]=rand()*51/32767+1;

//产生随机数数组

}

}//构造函数Poker()结束

voidPoker:

initPoker()

{cout<

<

新一局游戏开始,开始洗牌>

>

endl;

pokerF[0]=randNum[j++];

//产生1-52的随机数

pokerF[1]=randNum[j++];

pokerL[0]=randNum[j++];

pokerL[1]=randNum[j++];

pokerNumF=2;

pokerNumL=2;

cout<

洗牌完成,你的牌为:

getPokerF()<

}//voidPoker:

initPoker()结束

stringPoker:

getPokerF()//用字符串的形式返回玩家的牌

{

inti;

stringresult="

for(i=0;

pokerNumF;

result=result+pokerName[pokerF[i]]+"

"

returnresult;

}//stringPoker:

getPokerF()结束

getPokerL()//用字符串的形式返回庄家的牌

pokerNumL;

result=result+pokerName[pokerL[i]]+"

returnresult;

getPokerL()结束

intPoker:

getSumF()//返回玩家的总点数

intresult=0;

for(inti=0;

result=result+pokerValue[pokerF[i]];

}

getSumL()//返回庄家的总点数

result=result+pokerValue[pokerL[i]];

intmain()

intchoose=1;

Pokerpoker;

cout<

******************欢迎玩二十一点游戏******************"

endl<

poker.inputBet();

poker.initPoker();

//洗牌

while(choose==1||choose==2||choose==3||choose==4)

{

1.要牌2.不要牌3.重新开始4.退出>

请输入数字选择操作:

cin>

choose;

if(choose==1)poker.farmerAsk();

elseif(choose==2)poker.landlordProcess();

elseif(choose==3)poker.newGame();

elseif(choose==4)exit(0);

return0;

}//main函数结束

4.2测试

开始洗牌,输入赌注;

当小于21点大于15点时应选择继续要牌;

当你超过21点时系统会提示你撑死了,也就是说你输了

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 教育学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1