《C++》21点扑克牌游戏程序 - 图文

更新时间:2024-06-13 12:00:02 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

课 程 设 计 报 告

课程名称 C++语言课程设计 课题名称 21点扑克牌游戏程序

专 业 电气工程及其自动化 班 级 学 号

姓 名 指导教师 余新宇 谌新年 郭芳

2009年 6 月 19 日

1

湖南工程学院 课 程 设 计 任 务 书

课程名称 C++语言课程设计 课 题 21点扑克牌游戏程序

专业班级

学生姓名 学 号

指导老师 余新宇 谌新年 郭芳 审 批

任务书下达日期 2009年 6 月 15 日 任务完成日期 2009年 6 月 19 日

2

任务书

一、设计内容 1、问题描述:

“21点”扑克牌游戏:编写程序实现游戏,计算机作为庄家,1~4人作为普通玩家参与游戏。各个参与者设法使自己的牌达到总分21而不超过这个数值。扑克牌的分值取它们的面值。A 充当1分或11分(由玩家自己选择),其他花牌都是10分。在一局开始时,包括庄家在内的所有参与者都有两张牌。玩家可以看到他们的所有牌以及总分,而庄家有一张牌暂时隐藏。接下来,只要愿意。各个玩家都有机会依次再拿一张牌。如果某个玩家的总分超过了21(称为“引爆”),则这个玩家就输了。在所有玩家都拿了额外的牌后,庄家将显示隐藏的牌。只要庄家的总分等于或小于16分,那么庄家必须再拿牌。如果庄家引爆了,那么还没有引爆的所有玩家都将获胜,引爆的玩家达成平局。否则,将余下的各玩家与庄家的总分做比较,如果玩家的总分大于庄家的总分,则玩家获胜,如果相同,则玩家与庄家达成平局。

2、功能要求:

(1)本系统采用一个包含N个结构的数组,每个数据结构应当包括:牌的面值,牌的花色,持牌者以及发牌的顺序。另外还定义了一个结构体用来记录玩家的金钱总额、每局中玩家所押的钱及玩家的战绩。 (2)本系统显示这样的菜单: a.多少人加入游戏? b.输入第i位玩家的姓名: c. 你带了多少钱? d. 你押多少钱? e.你想再要一张牌吗? f.你想再玩一次吗?

(3)在游戏过程中,程序会按规则提示菜单项。 (4)显示游戏结果。

3、算法提示:

(1)数据结构:数组,结构体。

3

(2)数据库结构:下表构成该系统的基本数据库。 玩家人数 玩家姓名 牌的面值 牌的花色 玩家的金钱总数 玩家押的金钱数 一盘游戏中玩家赢的次数 一盘游戏中玩家得平局的次数

int char int char int int int int 4、测试数据:

(1)玩家数:1~4 (2)纸牌数:13*4-2=52 (3)每个玩家最多发牌数:21

5、其他

本系统在完成了系统基本功能的实现后,进行了一定的改进:

(1)增加了记录并计算玩家总金钱数的功能,游戏开始前玩家要输入所带来 的金钱数,而且玩家每局都可以自己输入该局想要押的金额,每局结束后, 系统会自动输出各位玩家的余额。

(2)为提高游戏的可行性,系统默认游戏开始时庄家(电脑)的金钱总数 是各玩家金钱数的平均值。

(3)一盘游戏结束,系统会自动显示出该盘游戏中各玩家赢的局数和平局的 局数。

(4)添加了幽默搞笑的输出语言,提高了游戏的趣味性。

(5)修改了输出界面的背景和字体颜色,提高了程序得美观度。

4

二、设计要求:

1,学生选择并完成一个题目。要求每个学生能独立思考认真并按时完成本课程设计所包含的所有内容。

2,要求学生必须按照课程设计报告的完整格式说明设计内容,设计任务分析过程和算法,给全部源程序,并做出总结。

3.设计报告的完整格式应包括以下部分的内容: ? 课题设计内容与主要功能

? 课题分析:分析课程设计项目的实现方法 ? 程序实现步骤

? 程序测试结果与结论 ? 程序清单 ? 总结与体会

三、进度安排

6月15日到 6 月19日 上午 时 间 1-4节(四小时) 6月15号 6月16号 6月17号 附:

课程设计报告装订顺序:封面、任务书、目录、正文、附件(A4大小的图纸及程序清单)、评分表。 正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。

正文的内容:一、课题设计内容与主要功能;二、课题分析;分析课程设计项目的实现方法,并写出类声明与核心算法实现代码。三、主要功能的实现步骤;四、程序测试与结论;应包括课程设计程序的屏幕显示,并加以简单的文字说明。五、总结;六、附件(所有程序的原代码,要求对程序写出必要的注释)。

下午 5,6,7,8节(四小时) 上机编程 上机编程 上机编程 布置课题,题目讲解 上机编程

5

目 录

1、课题设计内容与主要功能···························(1)

2、课题分析·································(1)—(7) (1)项目实现方法··························(1)--(2) (2)类声明······································(3) (3)核心算法代实现代码····················(3)--(7)

3、实现步骤··································(7)—(8)

4、测试与结论·······························(9)—(11)

5、总结····································(11)—(12)

6、参考书目········································(12)

7、附件····································(13)—(28)

6

一、课题设计内容与主要功能

(1)定义一副扑克牌(不包括两个王),四种花色十三个点数共52张牌,游戏过程中系统自动随机从这52张牌中抽牌发给参与者。

(2)将J、Q、K的点数改为10点,A的点数可由系统自动在1和11之间选择最佳的点数。 (3)系统提示输入玩家数(1 ~4)、玩家姓名以及玩家所带的金钱数。

(4)系统提示各玩家输入所押的金钱数,新的一局开始时可以重新设定押的金钱数。

(5)游戏开始,系统先自动给每位参与者发两张牌,并且隐藏庄家的第一张牌,然后依次询问玩家是否需要继续发牌,玩家输入“Y”,则再发一张牌给该玩家,玩家输入“N”,则跳过该玩家。

(6)当所有玩家都不再要牌,输出玩家总分值、胜负情况,并输出各参与者的余额。 (7)玩家再押钱,新的一局游戏开始。

(8)当有玩家的金钱等于0时,该盘游戏结束,统计各位玩家胜的局数和平局的局数,输出统计结果。提示玩家是否选择重新再来一盘。

二、课题分析

1、项目实现方法 (1)函数调用关系 主函数Main game_of_21_point。头函数 实用程序包utility.h头函数 定义52张牌的头函数card.h 游戏运行函数Game( ) 状态显示函数ShowStatus() 数据初始化函数GameOf21Point( ) 洗牌函数Shuffle( ) 点数计算函数GetTotalScore( )

7

(2)游戏过程示意图

开始界面 选择1~4位玩家并输入各玩家的姓名及金钱数 开始游戏 玩家输入押的金钱数,给每位参与者随机发两张牌 给该玩家发一张牌 显示庄家及玩家状态是 判断各参与者点数是否大于21 否 是 问玩家是否还要牌 否 显示各参与者状态,统计总点数.输出胜负情况并计算输出金钱余额 是否有玩家金钱为0 否 是 输出各玩家战绩 是 提问是否再来一盘 否 退出游戏 8

2、类声明

class GameOf21Point {

private:

// 数据成员:

Card deck[52]; // 一副扑克牌 int dealPos; // 发牌位置

Card hands[4][21]; // hand[0]存储庄家手中的牌, hand[1~4]存储玩家手中的牌

int numOfCard[4]; // 庄家(numOfCard[0])及玩家(numOfCard[1~4])手中的牌数 char name[4][LEN_OF_MAX_NAME]; // 庄家与玩家姓名 int numOfPlayer; // 玩家人数

// 辅助函数

void Shuffle( ); // 洗牌, 将扑克牌混在一起以便产生一种随机的排列 int GetTotalScore(Card hand[21], int n); // 返回一手扑克牌的总分值 void ShowStatus(int num, bool hideFirstCardAndTotalScore = false); // 显示庄家(对应num=0)或玩家(对应num=1~4)的当前状态 Card DealOneCard( ){ return deck[dealPos++]; } // 发一张扑克牌

public:

// 方法声明

GameOf21Point( ); // 无参数的构造函数

virtual ~GameOf21Point( ){ } // 析构函数,当一盘游戏结束时,清空数据。 void Game( ); // 运行游戏 };

3、核心算法及实现代码 (1)枚举结构体

typedef enum {

A,2,3,4,5,6,7,8,9,10,J,Q,K十三张牌; } RankType; // 扑克牌面值

typedef enum {

梅花,红桃,黑桃,方块 四种花色; } SuitType; // 扑克牌花色

9

(2)数据结构体

struct Card // 扑克牌结构体 {

前面枚举的十三张牌的面值; 前面枚举的四种花色; };

struct Player // 玩家金钱和战绩结构体 {

玩家金钱总数; 玩家押的金钱数; 玩家赢的局数; 玩家打平局的局数; };

(3)功能函数模块

数据初始化函数GameOf21Point()//初始化扑克牌,各参与者手中的牌数、姓名和金钱等 GameOf21Point::GameOf21Point( ) {

当前扑克牌位置在庄家;

for (int 牌花色= 0; 牌花色< 4; 牌花色++) {

for (int 牌面值= 1; 牌面值<= 13; 牌面值++) {

给curPos位置的牌赋花色; 给curPos位置的牌赋面值; 牌的位置移到下一个; } }

输出提示 \多少人加入游戏?(1~4):\ 输入玩家人数;

while (玩家人数小于1或者大于4) {

输出玩家人数不合格\人数只能在1~4之间, 请重新输入人数:\ 重新输入玩家人数; }

初始化发牌位置,从庄家开始发牌; 定义临时变量i;

for (i = 0; i <=玩家人数; i++) 初始化参与者手中的扑克牌数为0;

让庄家name[0]的输出名为“庄家”; for (i = 1; i <= 玩家人数; i++) {

提示输入玩家姓名 \输入第\位玩家的姓名:\ 输入玩家姓名;

10

提示输入玩家金钱数\你带了多少钱啊?\ 输入玩家金钱数; }

定义一个变量z等于0; 初始化庄家的金钱为0;

for (i = 1; i <= 玩家人数; i++) {

z的值等于所有玩家的金钱之和; }

定义庄家的金钱数为所有玩家金钱的平均值;

洗牌函数Shuffle( ) // 洗牌, 将扑克牌混在一起以便产生一种随机的排列组合 void GameOf21Point::Shuffle( ) {

设置当前时间为随机数种子

for(int 牌的位置=51; 牌的位置>0; 牌的位置--)//产生随机的位置为curPos的扑克牌 {

int pos=Rand::GetRand(牌的位置+1); //生成0~curPos之间的随机数 调用swap()函数; //交换deck[pos]与deck[curPos]

} }

点数计算函数GetTotalScore( )

int GameOf21Point::GetTotalScore(Card hand[21], int n) // 返回一手扑克牌的总分值 {

定义临时变量pos; 初始化总分值为0;

for(pos=0;pos<手中的牌数;pos++) { 如果手中有张A,总分加11; 如果手中有牌J或Q或K,总分加10; 如果手中的牌是2~10中的,总分加上对应的2~10; }

for(pos=0;总分大于21且pos<手中的牌数;pos++) {

如果手中有张A,总分减10;

} 用return返回总分 }

状态显示函数ShowStatus( ) // 显示各玩家手中的牌和总分值

void GameOf21Point::ShowStatus(int 参与者数,bool hideFirstCardAndTotalScore) {

如果hideFirstCardAndTotalScore为真,隐藏庄家首张牌,输出“不让你看”代替;

否则输出各参与者首张牌; for(int i=1;i<第num位玩家手中的牌;i++)

11

输出各参与者手中其他的牌;

如果hideFirstCardAndTotalScore为假; 输出各参与者的总分;

如果第num位玩家的总分大于21; 输出玩家爆了; }

游戏运行函数Game( ) // 运行游戏 void GameOf21Point::Game( ) {

定义临时变量p和记录局数的变量s; for(p=1;p<=玩家数;p++) {

初始化赢局数为0; 初始化平局数为0; }

定义goto语句的标识符ks,定义s++记录该盘游戏进行的局数; 洗牌;

for(p=1;p<=玩家数;p++) {

输入玩家押的钱; 当玩家押的钱大于余额; {

重新输入玩家押的钱; } }

定义临时变量i,j; 清零庄家手中的牌;

for(i=1;i<=玩家数;i++) 初始化参与者手中的 清零玩家手中的牌; 牌和发牌的位置

复位发牌位置到庄家;

for(i=0;i<2;i++)

调用DealOneCard( )函数,为庄家发两张牌;

调用ShowStatus()函数,显示庄家的状态,隐藏首张牌和总分值。 for (i=1;i<=玩家数;i++) {

for(j=0;j<2;j++)

调用DealOneCard( )函数,为第i位玩家发两张牌; 调用ShowStatus()函数,显示第i位玩家手中的牌和总分值 } 换行;

for(i=1;i<=玩家数r;i++) {

定义goto的标识符Pai,问玩家是否继续要牌; 如果玩家输入“Y” ; {

12

调用DealOneCard()函数,为第i位玩家再发一张牌; 调用ShowStatus(),显示第i位玩家手中的牌; 如果第i位玩家得总分小于21; {

跳转到标识符Pai; } } }

显示庄家手中的牌和总分;

当庄家的点数不大于16; 当庄家的点数不大

{ 于16,庄家必须 调用DealOneCard()函数,给庄家再发一张牌; 再要牌直到大于 显示庄家手中的牌和总分; 16并决定不再要牌 }

输出游戏结果余额; 当各参与者都还有钱; 跳转到标识符ks;

当其中有参与者没有钱了; 输出游戏结果、余额和战绩; }

三、实现步骤

(1)创建card.h头函数

? 定义_CARD_H_

? 定义牌面值和花色为枚举常量并初始化 typedef enum { ??.. } RankType; typedef enum { ???. } SuitType;

? 定义一个结构体表示牌面值和花色

Struct Card {

RankType rank; SuitType suit;

};

(2)创建game_of_21_point.h头函数

? 定义_GAME_OF_21_POINT_H_

13

? 包含头函数card.h

? 定义结构体表示玩家的金钱数、玩家押的金钱数、玩家赢的局数和玩家平的局

struct Player {

int money; int yq; int sl; int pj;

};

? 声明类GameOf21Point

? 编写实体部分,包含功能函数: 1) GameOf21Point() 2) Shuffle()

3) GetTotalScore(Card hand[21], int n)

4) ShowStatus(int num,bool hideFirstCardAndTotalScore) 5) Game()

(3)创建实用程序工具包utility.h

? 定义__UTILITY_H__ ? 包含各类头文件

? 包含几个有用的实用函数模块

(4)创建主程序函数main.cpp

? 包含utility.h

? 包含game_of_21_point.h ? 编写main函数主体 {

system(\输出窗口颜色 do

{

GameOf21Point objGame; // 21点游戏对象 objGame.Game(); // 运行游戏 if(Pla[0].money<=0) cout<<\.\ else

cout <<\ } while (UserSaysYes()); // 肯定回符循环, 直到得到否定回答为止

system(\ // 调用库函数system() return 0; // 返回值0, 返回操作系统

}

(5)在vc++ 6.0环境下运行,进行测试、修改。

14

四、测试与结论

运行程序得到如下界面

输入玩家数为6,系统提示错误,重新输入2,然后根据系统提示输入相应内容,得下界面:

输入Y,程序继续运行,按照提示输入相应内容,完成一局游戏。

15

由上图可看到一局游戏的整个过程:押钱 发牌 要牌 输出结果 输出余额 。

有一名玩家没钱了,一盘游戏结束,输出统计的战绩。 输入Y可进入新的一盘游戏。

16

庄家输光了,这盘游戏运行完毕,输出战绩。 输入N,退出游戏。

五、总结

通过此次课程设计,进一步掌握和巩固使用面向对象程序设计语言C++,对面向对象设计程序的设计方法和思想有了一定的了解,初步能应用面向对象设计程序的设计方法及思想解决实际问题的能力;培养了查阅文献资料的好习惯和能力;具备了完成编写任务并对任务加以提升、对程序加以改进的能力。 对系统进行的改进:

(1)增加了记录并计算玩家总金钱数的功能,玩家每局都要输入想要押的金

额。每局结束,系统自动输出各位玩家的余额。 Struct Player {

Int money; Int yq; ?? }

(2)一盘游戏结束,系统会自动输出该盘游戏中各玩家赢的局数和平局的

局数。

17

Struct Player {

?? Int sl; Int pj; }

(4)添加了幽默搞笑的输出语句,提高了游戏的趣味性。如:“你带了多少钱啊?”“你这个笨蛋,你已经只有¥_了! 少押点 :”“ 你这个化生子,你已经把钱输得精光了。”等。 (5)修改了输出界面的背景和字体颜色,提高了程序得美观度。 同时,还发现许多不足:

1、对以前所学的C++内容遗忘过多,不能灵活地运用C++知识解决问题;

2、独立解决问题的能力不强,无法完全独立完成设计,需要求助于老师同学以及文献资料。例如:在设计中参考了许多案例,向同学请教了一些函数的用法;

4、对设计系统界面的知识完全不熟悉,所以在系统界面上没有什么设计,影响了美观度。

参考书目:吕凤翥《C++语言程序设计教程》——人民邮电出版社

杨路明《C语言程序设计》—— 北京邮电大学出版社

钱 能《C++程序设计教程》——清华大学出版社

18

附件:

附件一: 源代码清单:

main.cpp

#include \

#include \ int main(void) {

do {

GameOf21Point objGame;

objGame.Game(); if(Pla[0].money<=0)

cout<<\我没钱了,但兄弟我讲义气,还要玩的话我就去拿钱,还玩不玩?\

else

cout <<\你想回去问妈妈要钱来再玩一次吗?\

} while (UserSaysYes()); system(\

return 0;

} card.h

#ifndef __CARD_H__ #define __CARD_H__ typedef enum {

ACE = 1, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING

} RankType; typedef enum {

19

CLUBS, DIAMONDS, HEARTS, SPADES

} SuitType; struct Card { RankType rank; SuitType suit;

};

ostream& operator<<(ostream& outStream, const Card &card) { if (card.suit == CLUBS) outStream << char(005);

else if (card.suit == DIAMONDS) outStream <

if (card.rank == ACE) outStream << \

else if (card.rank == JACK) outStream << \ else if (card.rank == QUEEN) outStream << \ else if (card.rank == KING) outStream << \ else cout << (int)card.rank;

return outStream;

} #endif

game_of_21_point.h

#ifndef __GAME_OF_21_POINT_H__ #define __GAME_OF_21_POINT_H__

#include \

#define LEN_OF_MAX_NAME 21 struct Player {

int money;

20

}

}

}

ShowStatus(0); while(GetTotalScore(hands[0],numOfCard[0])<=16) { hands[0][numOfCard[0]++]=DealOneCard(); ShowStatus(0);

}

cout<

if(GetTotalScore(hands[0],numOfCard[0])>21) { for (i=1;i<=numOfPlayer;i++) { if(GetTotalScore(hands[i],numOfCard[i])<=21) {

cout<

Pla[i].sl++;

Pla[i].money=Pla[i].money+Pla[i].yq;

Pla[0].money=Pla[0].money-Pla[i].yq; } else { cout<

}

}

} else {

for (i=1;i<=numOfPlayer;i++)

26

if(GetTotalScore(hands[i],numOfCard[i])<=21 &&

GetTotalScore(hands[i],numOfCard[i])>GetTotalScore(hands[0],numOfCard[0]))

{

cout<

Pla[i].sl++;

Pla[i].money=Pla[i].money+Pla[i].yq;

Pla[0].money=Pla[0].money-Pla[i].yq; }

else

(GetTotalScore(hands[i],numOfCard[i])==GetTotalScore(hands[0],numOfCard[0])) { cout<

} else { cout<

Pla[i].money=Pla[i].money-Pla[i].yq;

Pla[0].money=Pla[0].money+Pla[i].yq;

}

}

int bz=0,k=0;

for(i=1;i<=numOfPlayer;i++) { if(Pla[i].money<=0) {

bz=1;

k=i;

cout<

}

27

if

if(Pla[0].money>0) { if(bz==0) { for(int x=0;x<=numOfPlayer;x++)

cout<

goto ks;

}

if(bz==1)

{

for(int x=0;x<=numOfPlayer;x++) { cout<

}

for(int p=1;p<=numOfPlayer;p++) { cout<

}

}

} else { for(int x=0;x<=numOfPlayer;x++) { cout<

cout<<\我是特意输给你们的,就当叔叔我给你们的压岁钱!\

{

cout<

28

for(int p=1;p<=numOfPlayer;p++)

cout<<\局\平了\局\ } #endif

utility.h // 实用程序工具包 }

}

#ifndef __UTILITY_H__ #define __UTILITY_H__ #ifdef _MSC_VER

#if _MSC_VER == 1200

// 标准库头文件 #include #include #include #include

#include #include

#include

#include #include

#include #include #include

#else

// ANSI C++标准库头文件 #include

#include #include #include

// 表示是Visual C++

表示Visual C++6.0

// 标准串和操作 // 标准流操作 // 极限

数据函数 文件输入输出 // 字符处理

日期和时间函数 // 标准库 // 标准输入输出

输入输出流格式设置 支持变长函数参数 // 支持断言

其它版本的Visual C++

标准串和操作 // 标准流操作

极限 数据函数

29

//

// // //

// //

// //

// // #include #include

// 文件输入输出

// 字符处理

// 日期和时间函数 // 标准库

#include #include

#include #include

// 标准输入输出

// 输入输出流格式设置 // 支持变长函数参数 // 支持断言

#include #include

using namespace std; #endif #else

// 标准库包含在命名空间std中 // _MSC_VER == 1200

// 非Visual C++

// ANSI C++标准库头文件 #include

// 标准串操作

// 标准流操作

#include #include #include #include #include

// 极限 // 数据函数

// 文件输入输出

// 字符处理

// 日期和时间函数 // 标准库

#include #include

#include #include

// 标准输入输出

// 输入输出流格式设置 // 支持变长函数参数 // 支持断言

#include #include

using namespace std; #endif

// 实用函数

// 标准库包含在命名空间std中 // _MSC_VER

char GetChar(istream &inStream = cin);// 从输入流inStream中跳过空格及制表符获取一字符

30

bool UserSaysYes();//当用户肯定回答(yes)时,返回true,用户否定回答(no)时,返回false // 函数模板

template

void Swap(ElemType &e1, ElemType &e2); // 交换e1, e2之值 template

void Display(ElemType elem[], int n); // 显示数组elem的各数据元素值 // 实用类 class Timer; class Error; class Rand;

// 计时器类Timer // 通用异常类

// 随机数类Rand

// 从输入流in中跳过空格及制表符获取一字符

char GetChar(istream &in) {

char ch;

// 临时变量

&& ((ch = in.get()) == ' '|| ch == '\\t'));

while ((ch = in.peek()) != EOF

// 文件结束符(peek()函数从输入流中接受1字符,流的当前位置不变); 空格(get()函数从输入流中接受1字符,流的当前位置向后移1个位置);制表符 }

bool UserSaysYes() // 当用户肯定回答(yes)时, 返回true, 用户否定回答(no)时,返回false {

char ch;

// 用户回答字符

// 初始回答

return ch;

// 返回字符

bool initialResponse = true; do

{ // 循环直到用户输入恰当的回答为止

if (initialResponse) cout << \初始回答 else cout << \用y或n回答:\

// 非初始回答

while ((ch = GetChar()) == '\\n'); // 跳过空格,制表符及换行符获取一字符 initialResponse = false;

// 非初始回答

} while (ch != 'y' && ch != 'Y' && ch != 'n' && ch != 'N'); while (GetChar() != '\\n');

// 跳过当前行后面的字符

31

}

if (ch == 'y' || ch == 'Y') return true; // 肯定回答返回true else return false;

// 否定回答返回false

template

void Swap(ElemType &e1, ElemType &e2) // 交换e1, e2之值 { }

template

void Show(ElemType elem[], int n) { }

class Timer // 计时器类Timer { private:

clock_t startTime; // 数据成员 for (int i = 0; i < n; i++) { // 显示数组elem }

cout << endl;

// 换行

cout << elem[i] << \

// 显示elem[i]

// 显示数组elem的各数据元素值

ElemType temp;

// 临时变量

// 循环赋值实现交换e1, e2

temp = e1; e1 = e2; e2 = temp;

public: // 方法声明

Timer(){ startTime = clock(); }

// 构造函数, 由当前时间作为开始时间

构造对象

double ElapsedTime() const { }

// 返回已过的时间

clock_t endTime = clock(); // 结束时间

return (double)(endTime - startTime) / (double)CLK_TCK; // 计算已过时间

void Reset(){ startTime = clock(); } // 重置开始时间

32

};

#define MAX_ERROR_MESSAGE_LEN 100 class Error // 通用异常类Error {

private: // 数据成员 char message[MAX_ERROR_MESSAGE_LEN];

public: // 方法声明 };

class Rand // 随机数类Rand {

public: // 方法声明

static void SetRandSeed(){ srand((unsigned)time(NULL)); } // 设置时间为随机数种子static int GetRand(int n){ return rand() % n; } }; #endif

33

// 异常信息

Error(char mes[] = \一般性异常!\ // 构造函数 void Show() const{ cout << message << endl; }

// 显示异常信息

// 生成0 ~ n-1之间的随机数 // 生成0 ~ n-1之间的随机数

static int GetRand(){ return rand(); }

附件二:

计算机与通信学院C++语言课程设计评分表

课程名称: C++ 语言课程设计

项 目 评 价 设计方案的合理性与创造性 设计与调试结果 设计说明书的质量 答辩陈述与回答问题情况 课程设计周表现情况 综合成绩

教师签名:

日 期:

(注:1.此页附在课程设计报告后;2.综合成绩按优、良、中、及格和不及格五级评定。)

34

本文来源:https://www.bwwdw.com/article/9d66.html

Top