福建农林大学计算机与信息学院
计算机类
课程设计报告
课程名称:
面向对象程序设计课程设计
课程设计题目:
21 点扑克牌游戏
姓
名:
谢飞乐
系:
计算机科学与信息
专
年
学
业:
级:
号:
指导教师:
职
称:
计算机科学与技术
2007 级
071152032
李丽珊
讲师
2009 年 1 月 10 日
福建农林大学计算机与信息学院计算机类
课程设计结果评定
评语:
评分项目
分值
得分
① 课程设计报告符合规范
② 类层次结构图和用例图合理
③ 主要技术路线正确
④ 设计报告条理清晰,重点突出
⑤ 有一定的创新性,难易程度
10
30
30
20
10
成绩:
指导教师签字:
任务下达日期:2008 年 12 月 日
评定日期:
目
录
1 课 程 设 计 目 的 … … … … … … … … … … … … … … … … … … … … … … … 4
2 课 程 设 计 要 求 … … … … … … … … … … … … … … … … … … … … … … … 4
3 运 行 环 境 … … … … … … … … … … … … … … … … … … … … … … … 4
4 设 计 内 容 … … … … … … … … … … … … … … … … … … … … … … … 4
4.1 程序说明………………………………………………………………………4
4 . 2 设 计 内 容 及 功 能 … … … … … … … … … … … … … … … … … … … … 4
4.3 题目分析及算法描述…………………………………………………………5
4.4 系统程序流程图及层次模块图………………………………………………6
4.5 系统测试………………………………………………………………………6
5 总 结 … … … … … … … … … … … … … … … … … … … … … … … … … … … 9
6 参 考 文 献 … … … … … … … … … … … … … … … … … … … … … … … … … 9
7 源 代 码…… …… …… …… ……… …… …… …… ……… …… …… …… … 9
3
21 点扑克牌游戏
1.课程设计目的
《面向对象程序设计课程设计》是计算机科学与技术专业和软件工程专业集
中实践性环节之一,是学习完《面向对象程序设计》课程后进行的一次全面的综
合练习。其目的在于加深对面向对象程序设计中基础理论和基本知识的理解,培
养学生的实践能力,促进理论与实践的结合。通过课程设计,让学生能够熟练运
用 C++进行面向对象编程,建立对象模型,降低软件的复杂性,改善软件的重用
性和维护性,提高软件的生产效率,全面掌握面向对象编程技术。
2.课程设计要求
1、掌握使用一种面向对象程序设计语言如 Borland C++或 Visual C++等。
2、培养调查研究、查阅技术文献、资料、手册以及编写技术文献的能力。
3、通过课程设计,要求学生在指导教师的指导下,独立完成实习课题的全
部内容,包括:
⑴ 通过调查研究和上机实习,收集和调查有关技术资料。
⑵ 掌握设计课题的基本步骤和方法。
⑶ 根据课题的要求进行上机实验调试。
4、课程设计完成后,提交课程设计报告
3.运行环境
联想计算机,WindowsXP 操作系统,Microsoft Visual C++ 6.0
4.设计内容
4.1 程序说明
该程序是模拟 21 点扑克牌游戏,玩家最多可以要 5 张牌,但如果牌的点数
之和超过 21 点,则自动出局;在不超过 21 点的情况下,玩家与庄家比牌的点数
的大小,大者为赢家。
4.2 设计内容及功能
(1)将大于 10 点的点数改为半点(修改点数的类型)。
(2)高级玩家(经理级)可以查看下一张牌,即按H键,然后按要求输入密码,
密码正确可以看牌,并决定是否要牌。
(3)超级玩家(总经理级)可以查看庄家(计算机)的所有牌面,并任意输入自
4
己想要的牌,有赢无输,为保密起见,输入自己想要的牌后应立刻屏。
(4)每次要完牌后可以重新设定赔率,只能回流。也就是说如果牌好,可以
加大赌注。
4.3 题目分析及算法描述
类 class CCard
该程序只需要一个 CCard 类,其中有表格如下:
class CCard
private:
int m_Pip[5];//一共五张牌
int m_Number;//发了多少张牌
int m_Dollar;//赌本
int m_Gamble;//赌注
int m_Win;//赢局数
int m_Lose;//输局数
int m_Draw;//平局数
public:
CCard();//构造函数。
void FirstPlayTwo();//最初的两张牌
int GetNumber();//返回牌张
int GetPip();//返回点数
void DisplayPip();//依次全部显示牌面的点数
void DisplayPip(int);//除了第一张牌,依次显示全部牌面点数(针对计
算机牌的显示)
void TurnPlay();//出一张牌。
void Win();//赢了计算赌注
void Lose();//输了
void Draw();//平局
int SetGamble(int);//设置赌本,赌本不够返回-1
int GetMoney();//返回钱数
5
void DisplayInfo();//打印必要的信息
int GetCurrentCard();//返回当前的牌点
4.4 系统程序流程图及层次模块图
(1)程序的 N-S 流程图如下图所示:
初始化随机种子
显示游戏规则
While(chChoice)
判断 chChoice,(必须是 Y/N)
Y/y
Do{……}
N/y
您的选择是明智的,赌博有碍家庭和睦!
While(blLogic)
欢迎再次使用此程序!
(2)do 的模块 N-S 流程图
输出“您现在有的赌本:$100”
输出下注的赌本
执行 Player.SetGamble(nMoney)
判断 If(blLogic)
Y/y
N/y
您的赌本不够,请重新下注! PlayTurn(cpu,player)
4.5 系统测试
(1)运行 Microsoft Visual C++ 6.0,新建一个工程文件,立即保存在自己建
的一个文件夹中,再建一个为 21point.cpp。
(2)单击“save”按钮,出现 21point.cpp 的文件编辑窗口,输入附录的程序
代码;再单击“save all”按钮保存文件。
(3)执行 Microsoft Visual C++快捷菜单中的编译、连接。
6
(4)21point.cpp 文件编译成功,如下图所示:
输入 y,回车开始游戏。如下图所示:
输入赌本 10 回车。如下图所示:
7
输入 y,回车。如下图所示:
输入 y,回车后继续游戏。如下图所示:
当你输入错误的信息的时候如:1000。出现如下图:
8