java猜数字游戏课程设计
欠条怎么打-我是一名警察
目录
一、设计任务与要求......................
..................................................
............................ 1
1.1 设计任务与要求....
..................................................
........................................ 1
1.2
选题目的与意义...........................................
..................................................
. 2
二、需求分析....................................
..................................................
.......................... 2
2.1 用户需求分析.......
..................................................
......................................... 2
2.2 开发环境分析....................................
..................................................
............ 3
三、系统设计.........................
..................................................
..................................... 4
3.1 系统
总体设计..............................................
..................................................
.. 4
3.2 功能模块设计...............................
..................................................
................. 4
3.3 类的设计..................
..................................................
...................................... 5
四、程序实
现.................................................
..................................................
............. 8
4.1程序流程图......................
..................................................
............................... 8
4.2 关键算法与技术实
现.................................................
..................................... 9
4.2.1
游戏菜单设置的具体算法.......................................
............................. 9
4.2.2 生成随机数的具体
算法................................................
........................ 9
4.2.3 比较数字大小的具体算法..
..................................................
.............. 10
4.2.4 记录与清除成绩的具体算法..........
..................................................
.. 11
4.2.5 清空成绩的具体算法.........................
.................................................
12
4.2.6 错误跳转的具体算法............................
.............................................. 13
五、测试运行........................................
..................................................
.................... 18
5.1 系统测试方案............
..................................................
.................................. 18
5.2 运行结果
分析................................................
................................................
18
六、设计体会.....................................
..................................................
....................... 22
一、设计任务与要求
1.1
设计任务与要求
通过本课程设计实践,达到以下目的:
(1)培养学生严谨务实的工作态度
,并在老师的指导下,提高分析问题和解
决问题的能力,促进理论联系实际学风养成。
(2)巩固和加深对面向对象程序设计的基本概念、基本理论和实现技术的理
解。
(3)掌握Java开发的主要环境与工具,掌握面向对象的常用控件的使用方
法。
(4)初步掌握面向对象系统分析与设计的基本方法和步骤,并能针对简单的
实际应用问题进行初步地分
析和设计。
(5)掌握Java编程语言,并针对具体应用问题进行编程实现。
(6)通过撰写课程设计论文,锻炼学生科技论文写作能力。
具体任务如下:
设计一个猜数字游戏,使该游戏实现比较数字大小等功能,并给予用户游戏
的喜悦感。
具体的游戏规则如下:
1).
输入一个数字,数字的范围再0-99之间,系统随机生成数也在此范围
内.
2).如果玩家
输入的不是系统要求的数字,系统将报错,并继续提示用户:
请输入在0~99之间的数字.
3).如果玩家输入的数字与随机生成数相比较,比随机生成数小.系统提示
您:您输入的数字偏小,请
您重新输入.
4). 如果玩家输入的数字与随机生成数相比较,比随机生成数大.系统提示
您:你输入的数字偏大,请您重新输入.
5).系统根据您猜数字的次数,自动计数,并在用户完成游
戏时显示该次游
戏的猜数次数和游戏评语.
6).除了猜数过程,用户可以在想退出的情况下
之间输入退出口令,或者显
示答案口令来完成该次游戏,亦可查询以往的游戏记录并清除游戏记录。
1.2 选题目的与意义
Java语言作为当今
INTERNET上最流行的编程语言,它的产生自然与游戏
密切相关. 本课程设计是为了配合Jav
a程序设计课程,帮助学生深入学习掌握
Java语言,熟练运用这个工具而设立的课程。通过课程设计
各个项目的综合训练,
加强学生对JAVA语言的理解,检验学生对专业理论知识理解与掌握的程度,锻
炼学生综合运用JAVA程序设计处理所学的知识实际分析问题、解决问题的能力。
通过对猜
数游戏程序设计的学习,使学生掌握网络编程的基本方法,能够根
据现实生活实践编制出一些实用的小程
序.为进一步学习网站信息的建设打下基
础.
此学习过程中,一方面巩固了学生的JAVA程
序设计的应用,加深对JAVA
语言的掌握及对面向对象程序设计基本思想的理解,提高对面向对象技术
的具体
应用;另一方面,猜数游戏可以通过JAVA设计展现其娱乐性,游戏简单易懂,
容易操
作上手。
二、需求分析
2.1 用户需求分析
游戏随机自动生成一个随机数random number即0~99(包括0和99)的整
数
字,然后让用户猜是什么数字。用户可以随便猜一个数字,游戏会提示太大还
是太小,从而缩小猜数范围
。经过几次猜测与提示后,直至猜到,给出所用猜数
次数和评语最终退出游戏。在游戏过程中。记录用户
最终猜对时所需要的次数。
游戏结束后公布结果。
具体要求:通过菜单栏里提供的选项,进入
游戏界面。系统提示猜数字游戏
的运行情况,一般情况下为正常,随即游戏者可以输入自己的猜数结果,
可以通
过按回车键完成输入。每次完成一次游戏时,给出猜测的次数的统计。按其他选
项还可以
选择退出游戏,查询答案,查询游戏记录,清除游戏记录。
游戏中要求完成一下内容:
1)要求记录产生的随机数并计算用户猜数次数、并完成提示玩家游戏信息
等功能;
2)要求在玩家输入不是数字或输入范围不符合时会提示错误信息;
3)要求能判断程序随机
生成数字与用户猜的数字的大小,玩家猜的数字偏
大于随机生成数就提示“您猜的数字偏
大,请重新输入”或玩家猜的数字偏小于
随机生成数就提示“您猜的数字偏小,请重新输入”;
4)要求在玩家猜对的时候,提示信息“猜对啦!”,并统计玩家猜数次数,
反馈给玩家;
5)要求在玩家发出“enter”口令时能进入游戏;
6)要求在玩家发出“answer”口令时能显示该次游戏的答案;
7)要求在玩家发出“record”口令时能显示以往游戏中的最好成绩;
8)要求在玩家发出“clear”口令时能清除以往的游戏记录,并显示记录已
被清除;
9)要求在玩家发出“exit”口令时能退出游戏。
2.2 开发环境分析
本软件的组成程序为JAVA程序设计语言,组够均较简单,直观意义上的较
独立。因
此,给予电子化的所构成的硬件的简单的可维护性的特点,决定该软件
的简单可维护性。
在装载程序时,正常就运行,异常就停止;JAVA编程系统出现错误,将会
产生不可预见的问题,热启
,整个终端程序就会再次启动;程序出现错误,重新
装载。若依然有错,按照提示逐渐装载。
程序开发中会使用到MyEclipse软件,它是一个十分优秀的用于开发Java,
J2
EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其
是对各种
开元产品的支持十分不错。MyEclipse企业级工作平台(MyEclipse
Enterprise Workbench ,简称MyEclipse)是对Eclipse ID
E的扩展,利用它我们
可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大
的
提高工作效率。它是功能丰富的JavaEE集集成开发环境,包括了完备的编码、
调试、测
试和发布功能,完整支持HTML, Struts, JSF, CSS, Javascript,
SQL,
Hibernate。
表2.2.1游戏运行环境分析表:
操作系统
内存容量
外用设备
CPU
光驱
磁盘空间
开发软件
中央处理器
Windowsxp2003
1G
鼠标 键盘
奔腾133
4倍速
250G
MyEclipse (8.0 GA)
双核1.6GHZ
三、系统设计
3.1 系统总体设计
本系统总共分为:进入游戏系统、退出游戏系统、记录成绩系统、清除成绩
系统,和显示答案功
能系统。
进入游戏系统包括游戏提示、游戏时间计算、游戏次数计算、生成随机
数、
用户猜数、显示状态、显示记录、清除记录等功能;
开发整个系统具备了周期时间短、简单易
用、休闲益智等几大类显著的特性。
本次系统开发设计出了界面大方简洁美化的游戏模式。
游戏规则如下:
1).
输入一个数字,数字的范围再0-99之间,系统随机生成数也在此范围
内.
2).如果玩家
输入的不是系统要求的数字,系统将报错,并继续提示用户:
请输入在0~99之间的数字.
3).如果玩家输入的数字与随机生成数相比较,比随机生成数小.系统提示
您:您输入的数字偏小,请
您重新输入.
4). 如果玩家输入的数字与随机生成数相比较,比随机生成数大.系统提示
您:你输入的数字偏大,请您重新输入.
5).系统根据您猜数字的次数,自动计数,并在用户完成游
戏时显示该次游
戏的猜数次数和游戏评语.
6).除了猜数过程,用户可以在想退出的情况下
之间输入退出口令,或者显
示答案口令来完成该次游戏,亦可查询以往的游戏记录并清除游戏记录。
3.2 功能模块设计
猜数游戏的功能模块包含进入游戏模块,用来初
始游戏,并记录用户猜测的
数据与游戏随机产生的随机数;成绩记录模块用来将用户游戏数据记录在计算
机
中,以便随时调用。答案显示模块用来提供用户正确的答案。记录清空模块用来
将用户之前的
游戏成绩记录删除清空。退出游戏模块可以使用户在后悔进入游戏
的情况下,立即结束游
戏。
猜数游戏系统功能模块图如下:
猜数游戏
答
案
显
示
模
块
进
入
游
戏
模
块
成
绩
记
录
模
块
记
录
清
空
模
块
退
出
游
戏
模
块
图3.2.1
猜数游戏功能模块图
3.3 类的设计
游戏中,game作为类,负责创建游戏系统的运行,记忆测试系统由该类开
始执行。其中定义int
i 为猜数次数,定义n 为用户猜的数字,定义number
为一个随机数math random,
用于产生随机的数字,范围要求在0~99之间;程
序中运用方法,用于记录用户输入的数据,使用if
语句判断数字的大
小,使用while语句循环判断数字大小,并逐个与其后的值相比较,当表达式的<
br>值与随机数字值相等时, 即执行其后的语句,若程序中出现错误,则可通过try
catch
语句来跳出错误,继续执行下面的语句。使用n方法输
出语句,给出数字判断或评价。程序中设置了pr
intStackTrace()方法来打印异
常信息在程序中出错的位置及原因。
具体的成员方法说明及个别实现语句说明请见下表:
表3.3.1 成员方法说明表
方法
():
():
n():
printStackTrace()
表3.3.2 实现语句说明表
finally
try catch
finally中的代码无论出现什么状况都会运行到。即使出现异常。
所以finally一
般都是处理对资源的释放等操作。
try catch 成对出现的,一个try就一定要有catc
h,被try包裹的
代码说明,如果这些代码中只要抛出异常的话,就会停止当前的
代码运行,
而跳到catch中,对于异常进行处理。try中没有发生
异常,所以catch中的代码是执行不到
的.
程序中不知道循环的次数,使用我还while语句进行动作的循环
功能
随机产生一个数
输入消息对话框
输出消息对话框
在命令行打印异常信息在程序中出错的
位置及原因。
while
类与成员变量成员方法及语句之间的关系图如下:
+game
成语变量
+i :int
+number
:int
+n :int
成员方法
()
()
n()
printStackTrace()
语句
+while
+for
+if else
+finaly
+try...catch
图3.1.1类与成员变量成员方法及语句之间的关系图
用户可通过输入框选择任务,如:开始游戏,退出游戏,显示答案,成绩记
录,清除记录等。进入游戏
后,程序自动生成随机数,并发送请求用户输入数字,
通过else if语句判断数字与生成数的大小
,并弹出对话框,输出信息。之后再
重新输入直到猜对,程序可以无限次的输入数字。猜数正确后,会弹
出对话框,
输出信息,给出游戏最新记录,然后自动退出游戏。该游戏记录存档在D盘,以
记录
猜数成绩信息,若输入clear,可清除记录,显示记录空。Answer口令以显
示系统自动生成的
随机数。Exit口令以直接退出游戏。
游戏中,最重要的部分是判断数字大小,该过程中将定义好的
n与随机生成
的数字number比较,运用到if
else语句。猜对后,运用break语句跳转到评
价语句,显示游戏记录。Try
catch语句用于输入错误时跳出语句。
四、程序实现
4.1程序流程图
开始
Record Answer Clear
Exit
显示记录 显示答案 清除记录 直接退出
系统随机产生数字A
重新输入数字 重新输入数字
请求玩家输入数字B
判断数字A
与B的大小
A=B
A>B A
猜对啦,恭喜你!
你猜的数字偏
你猜的数字偏小!
显示猜数次数
结束
图4.1.1系统程序流程图
4.2 关键算法与技术实现
4.2.1 游戏菜单设置的具体算法
import edReader;
import
import ption;
import
treamReader;
import AccessFile;
public class game
{
int i = 0;
记录猜数字的次数
void operate()
{
System.
out
.println(欢迎来到 蔡馨颜
开发的猜数字小游戏
输入“enter”进入游戏;
输入“exit”退出游戏;
输入“record”最新的游戏记录;
输入“answer”显示该次游戏的正确答案;
输入“clear”清除记录
Syste
m.
out
.println(请选择上面的选项:
以上程序段通过定义int变量来记录猜数字的次数,并通过输出语句,来显示游
戏的菜单。
4.2.2 生成随机数的具体算法
void playGame(int
number)
{
int number = (int) (() * 100);
n(游戏开始,请猜数,输入0-100之间的一个数:
InputStreamReader
isr = new InputStreamReader();
BufferedReader
br = new BufferedReader(isr);
String str =
int n;
RandomAccessFile raf = null;
try
{
while (br != null && !(
{
str = ne();
n = nt(str);
i++;
i记录输入数字的次数}}
以上程序段通过定义变量int来生成随机数,定义变量int
来记录用户的猜测的
数字,通过while语句实现退出。
4.2.3
比较数字大小的具体算法
if (a < number) {
n(你猜的数字偏小!
break;
}
else if (a >
number) {
n(你猜的数字偏大!
break;
}
else if (a == number) {
n(猜对啦,恭喜你!
n(你输入了次
以上程序段通过ifelse语句实
现生成随机数与用户猜数之间的比较,并通过输
出语句显示相关评价。
4.2.4 记录与清除成绩的具体算法
File f = new
File(
raf = new RandomAccessFile(f,
(0);
while(()!=
gth(0); 写之前先将文件清空
nt(i);
输入数字的次数写入文件
(0); 定位到文件头
(()-1);定位到文件尾
n(最新的游戏记录:次
打印最新的猜数字记录
………
File f = new File(
RandomAccessFile
raf = new RandomAccessFile(f,
if (() > 0)
如果文件中有记录,则输出此数,否则显示“记
录空”的提示
{
int i =
t();
n(最新的猜数字记录: 次
}
else
n(无记录
}
else if
((输入“answer”显示该次游戏的正
确答案;
n(该次游戏的正确答案:
me(number); 进入游戏
}
else if
((
……
以上程序段将游戏中记录成绩的文件自动存档在D盘里,便于游戏中用户
查
询成绩记录,除了成绩的查询,程序段还具有清除记录的功能。
4.2.5
清空成绩的具体算法
File f = new File(
RandomAccessFile raf = new RandomAccessFile(f,
(0);
gth(0); 写之前先将文件清空
nt(i); 输入数字的次数写入文件
(0); 定位到文件头
n(记录已被清空打印最新的猜数字记录
}
}
} catch (IOException e) {
TODO
Auto-generated catch block
tackTrace();
}
以上程序段可以实现将记录在D盘里的游戏记录清除的功能,寻找处于D盘的文
件,将其内
记录的成绩清除,随后用n输出语句将记录已
被清空的口令告知用户。
4.2.6 错误跳转的具体算法
try {
if (raf
!= null)
();
}
catch (IOException e)
{
TODO Auto-generated catch block
tackTrace();
}
以上程序段通过try…catch语句实现错误状态下的跳出动作。
猜数游戏源程序如下:
import edReader;
import
import
ption;
import treamReader;
import
AccessFile;
public class game
{
int i = 0; 记录猜数字的次数
void operate()
{
n(欢迎来到 蔡馨颜 开发的猜数字小游戏
输入“enter”进入游戏;输入“exit”退出游戏;
输入“record”最新的游戏记录;
输入“answer
”显示该次游戏的正确答案;
输入“clear”清除记录
n(请选择上面的选项:
);
}
void playGame(int number)
{
int number = (int) (() * 100);
n(游戏开始,请猜数,输入0-100之间的一个数:
InputStreamReader isr = new InputStreamReader();
BufferedReader br = new BufferedReader(isr);
String str =
int n;
RandomAccessFile raf = null;
try
{
while (br != null && !(
str = ne();
n = nt(str);
i++; i记录输入数字的次数
if (n < number) {
n(你猜的数字偏小
break;
}
else if (n > number) {
n(你猜的数字偏大
break;
}
else if (n == number)
{
n(恭喜你,猜对啦!
n(你输入了次
File f = new File(
raf = new RandomAccessFile(f,
(0);
while(()!=
gth(0); 写之前先将文件清空
nt(i);
输入数字的次数写入文件
(0); 定位到文件头
(()-1);定位到文件尾
n(最新的游戏记录:次
打印最新的猜数字记录
(0);
}
}
}
catch
(IOException e)
{
TODO Auto-generated
catch block
tackTrace();
}
Finally
{
try {
if (raf != null)
();
}
catch (IOException e)
{
TODO
Auto-generated catch block
tackTrace();
}
}
}
public static void
main(String[] args)
{
int number = (int)
(() * 100);
game r = new game();
e();
InputStreamReader isr = new
InputStreamReader();
BufferedReader br
= new BufferedReader(isr);
String s =
Try
{
while (s != null)
{
s = ne();
if ((输入“enter”进入游戏;
me(number);
else
if ((输入“exit”退出游戏;
(0);
else if
((输入“record”打印最新的猜数字记
录;
{
File f = new
File(
RandomAccessFile raf = new
RandomAccessFile(f,
if (() > 0)
如果文件中有记录,则输出此数,否则显示“记
录空”的提示
{
int i =
t();
n(最新的猜数字记录: 次
}
else
n(无记录
}
else if
((输入“answer”显示该次游戏的正
确答案;
n(该次游戏的正确答案:
me(number); 进入游戏
}
else if
((
{
输入“clear”清除记录
File f
= new File(
RandomAccessFile raf = new
RandomAccessFile(f,
(0);
gth(0);
写之前先将文件清空
nt(i); 输入数字的次数写入文件
(0);
定位到文件头
n(记录已被清空打印最新的猜数字记录
}
}
}
catch (IOException e) {
TODO Auto-generated catch block
tackTrace();
}
finally {
try {
if (br !=
null)
();
}
catch (IOException e) {
TODO Auto-generated catch block
tackTrace();
}
}
}
}
五、测试运行
5.1 系统测试方案
1.游
戏功能测试:运行程序,显示游戏菜单栏。菜单应显示游戏作者,进入
游戏,退出游戏,显示游戏记录,
清除游戏记录,以及显示答案各选项; 若
无显示则程序错误。
2.查询功能测
试:进入游戏菜单栏后,输入answer口令,应显示该次游戏的
答案;若无显示则程序出错。
3.极限测试:由于该游戏的数字设置在0~99范围内,如用户输入超过99的
数
字,则游戏永远提示数字大于答案,直至用户的数字在游戏允许范围内,
游戏继续运行。
4.记录功能测试:显示游戏菜单栏后,输入record口令,程序应该输出以往
游戏中的最
好成绩;若还未进行游戏就选择输出记录,则显示无记录;若
未显示,则程序出错。
5.清除功能测试:显示游戏菜单栏后,输入clear口令,程序应该将文件内记
录的成绩自动清除
,并显示记录已被清除;若未显示则程序出错。
6.退出功能测试:显示游戏菜单栏后,输
入exit口令,程序应该退出游戏,
否则程序出错。
5.2 运行结果分析
图5.2.1 游戏初始状态图
图5.2.2 游戏开始状态图
图5.2.3 游戏猜数过程图
图5.2.4 查询游戏记录状态图
图5.2.5 查询游戏答案状态图
图5.2.6 游戏记录清空状态图
图5.2.7 退出游戏状态图
程序运行时,显示菜单栏,供用户选择将要进行的
工作。有四种选择:record
指令用于显示游戏成绩记录,answer指令用于显示该次游戏中的
正确答案,clear
指令用于清除系统记录的成绩,exit指令用于选择直接退出游戏。进入游戏时
,
计算机产生一个随机数,系统请求用户输入猜的数字,当输入的数比随机数小
时
弹出对话框提示“小了”,当输入的数比随机数大时弹出对话框提示“大
了”,要求玩家
再次输入数字直到输入的数和随机数一样时退出循环,并弹出成
功对话框,给出评语“恭喜你猜对了”,
随即显示该次游戏中用户猜数字的次数。
结束任务。
六、设计体会
本
次课程设计定为任选一题进行设计。思考一段时间后,我决定做猜数游戏
的课程设计。主要考虑到以前时
间少课程内容多,JAVA课程基础内容掌握并不
是很抓实,而对于设计一个猜数游戏程序,由于其功能
简单设计也相对较易,对
于我个人的学习情况比较合适,并且通过设计这样的一个猜数程序,也能使自己
对JAVA的一些基础知识掌握的更加牢固。
从这次实验中的学到了许多。比如:try…
catch语句就妙不可言。想尽办法
没能实现的功能,它竟然能实现了!除此之个还由许多个方法也得
到了巩固。以
前总是模模糊糊的,现在心里十分清楚了。
平时的学习自身只注意到了书本上
面的知识,对一些类及方法的运用显得稚
嫩,这次的学习让我从纸上谈兵逐渐的过渡到实践出真知。经过
了长时间的反复
编写调试,课本和网上查阅相关资料相关文章,终于完成了整个课程设计。在这
个过程中,在把书本上的知识给系统的复习了一下的同时,同时也发现了自己的
太多不足,对JAVA语
言整体知识构架不够熟悉,不能灵活地运用所学的知识点。
自己的编程方式也不是太标准,经常出现代码
写错而调试很久的低级错误情况出
现。
通过这次课程设计,我明白了编写程序,不仅要求对
课本知识有较深刻的了
解,同时要求程序设计者有较强的思维和动手能力。还要熟悉常用的编程技巧和<
br>编程思想,不能只关心程序的运行结果,更要注重程序代码的结构,编程者更要
有严谨地态度。
还有通过设计过程中大量地查阅网络文章,对一些关键知识点逐个地了解并
解决相关问题。所
以网络这个强大的工具,确实是我们学习之中可以借助的一个
很好的帮手。终于可以自己设计程序了,以
前感觉学的都用不到,现在才知以前
学的用途真大,想学编程是少不了的。以前感觉,编程是多么的神秘
,现在通过
自己实践,才知道,编程也没那么神秘,但却很有乐趣的。那种看到自己亲手编
的程
序运行出结果的感觉是无法用言语表达的
因此我建议,以后多组织一些这方面的实验,有一个挑战自己的机会。
指导教师签字:
年
月 日