猜数字游戏课程设计完整版

绝世美人儿
653次浏览
2021年01月01日 02:46
最佳经验
本文由作者推荐

承德避暑山庄旅游-幸福是什么课文

2021年1月1日发(作者:梁毅苗)


北京邮电大学世纪学院
实验、实习、课程设计报告撰写格式与要求
(试行)
一、实验报告格式要求
1、有实验教学手册,按手册要求填写,若无则采用统一实验报告封面。
2、报告一律用钢笔 书写或打印,打印要求用A4纸;页边距要求如下:页
边距上下各为2.5厘米,左右边距各为2.5厘 米;行间距取固定值(设置值为
20磅);字符间距为默认值(缩放100%,间距:标准)。
3、统一采用国家标准所规定的单位与符号,要求文字书写工整,不得潦
草;作图规范,不得随手勾画 。
4、实验报告中的实验原始记录,须经实验指导教师签字或登记。
二、实习报告、课程设计报告格式要求
1、采用统一的封面。
2、根据教学大纲的 要求手写或打印,手写一律用钢笔书写,统一采用国
家标准所规定的单位与符号,要求文字书写工整,不 得潦草;作图规范,不得
随手勾画。打印要求用A4纸;页边距要求如下:页边距上下各为2.5厘米, 左
右边距各为2.5厘米;行间距取固定值(设置值为20磅);字符间距为默认值
(缩放10 0%,间距:标准)。
三、报告内容要求
1、实验报告内容包括:实验目的、实验原理、实 验仪器设备、实验操作
过程、原始数据、实验结果分析、实验心得等方面内容。
2、实习报告 内容包括:实习题目、实习任务与要求、实习具体实施情况
(附上图表、原始数据等)、实习个人总结等 内容。
3、课程设计报告或说明书内容包括:课程设计任务与要求、总体方案、
方案设计与分 析、所需仪器设备与元器件、设计实现与调试、收获体会、参考
资料等方面内容。
四、课内实践课报告撰写要求
1、大型作业类的按课程设计要求撰写;
2、带实习性质的按实习要求撰写;


3、其余的按实验要求撰写。
五、其它
由于存档的需要,所有报告必须双面打印,请教师做好把关工作。


北京邮电大学世纪学院
教务处
2005、12







课 程 设 计 报 告

课程设计名称 Java程序设计

专 业 计算机科学与技术

班 级 2 班

学 号 08030212

姓 名 陈雪莹

指导教师 陈 志 成

成 绩



2011年3月10日




目 录

目录根据word生成




一、设计任务与要求
1.1 设计任务与要求
程序设计专题的任务与要求:
课程设计的任务:
根据所选题目,完成课程设计的分析、设计和编码,写出课程设计报告。
(1)掌握Java的语言规范,面向对象的核心概念和特性;
(2)掌握Java的编程技术,包括异常处理,图形界面设计,多线程,网络通信程序等;
(3)掌握Java应用软件的开发环境和开发过程;
(4)掌握面向对象的思想和程序设计方法。
课程设计的要求:
设计一个猜数字游 戏程序,该游戏可以由程序随机产生整数,玩游戏者通过由用户输
入数字来匹配上面所产生的数字。用户 随机输入数字,当与计算机产生的随机数相符合时,
计算机将提醒用户,游戏成功的信息,当有偏差时, 将会提醒偏差,如偏大或者是偏小。

1.2 选题目的与意义
通过选择猜数字游戏这个题目,可以让我掌握Java中的包和类,并且可以灵活的使
用my eclipse软件。同时更加深入的了解字符界面的编程过程。使我更熟练的掌握Java
程序框架的 搭建和类的创建格式。在分析阶段,要进行面向对象的需求分析、系统设计、
画出相应的需求分析图、系 统设计模型图,这些工作更能锻炼我的逻辑思维,更能培养我
思考的全面性。让我学会了多角度思考问题 ,对我以后的编程奠定了更好的基础。


二、需求分析
2.1 用户需求分析


设计一个猜数字游戏程序,要求具体如下特性:
(1) 趣味性:要求游戏内容丰富多彩,语言风趣幽默。
(2) 大众性:要求游戏界面操作简单,游戏规则简单易懂。
(3) 合理性:游戏设计严谨,有条理,具体需求如下
① 输入任意一个数字。数字的要求是1—100的自然数即可。
② 系统对您输入的数字进行判断。 < br>如果玩家输入的数字与计算机随机生成数相比较,输入的数字比随机生成数
小.系统将提示您,数 字太小请您重新输入。
如果玩家输入的数字与计算机随机生成数相比较,如果输入的数字比随机生成数大。系统将提示您,数字太大请您重新输入。
如果玩家输入的字符不是合法字符,系统将提示您,您输入的数字不合法,
请从新输入。
③ 游戏开始时,系统自动记录您猜数字的时间,结束后显示游戏共花费的时间。
④ 每猜测一次,系统会记录下来,游戏结束后,显示共猜测多少次。
⑤ 在游戏开始时,自动显示游戏规则。
⑥ 在游戏结束时,可以选择关闭游戏,或者再来一局。

2.2 开发环境分析
硬件要求能运行Windows 9.X操作系统的微机系 统。JAVA程序设计语言及相应的集
成开发环境,J2SDK和eclipse开发工具。
J2SDK简介:j2sdk是就阿Java的开发环境包。它包含JDK(开发工具包)和JRE(运
行时环境包) 。JDK包含JRE ,JDK是开发人员必装软件,JRE是客户端运行时必装
软件 ,J2SDK就是JDK,J2JRE就是JRE。Jcreator是开发JAVA的软件。开发JAVA也可以用记事本开发原程序
eclipse简介:Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发 环境。幸
运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java
Development Tools,JDT)。Eclipse的设计思想是:一切皆为插件。它自 身的核心是非
常小的,其它所有的功能都以插件的形式附加到该核心上。Eclipse中三个最吸引人 的地
方:一是它创新性的图形API,即SWTJFace,在此之前,我曾经用过Java 的AWT SWING
来开发Windows应用程序,AWTSWING其界面客观地讲不够美观,而且界面响应 速度比较
慢;而SWTJFace则大大改善了Java在这方面的能力。二是它的插件机制。三是利用 它的
插件机制开发的众多功能强大的插




三、系统设计
3.1 系统总体设计
猜数字游戏—游戏随机给出一个1—100 (包括1和100) 之 间的数字,然后让你猜是
什么数字。你可以随便猜一个数字,游戏会提示太大还是太小,从而缩小结果范 围。经过
几次猜测与提示后,最终推出答案。(系统设计如图3.1)


游戏界面
游戏开始 游戏说明 重新开始 关闭游戏
产生随机


输出字符 记录次数 记录时间


图3.1

游戏界面:采用图形界面显示。页面有如下功能:开始,结束,重来,帮助。
游戏开始后,由 计算机产生一个1-100的随机数,不显示在图形界面,但显示在字符界面。
用户只需输入所猜想的数 字,打印在输入框内,按“确定”按钮表示确定,
游戏返回提示语句,按照提示语句操作,直至游戏结束 。
同时,计算机开始对游戏进行计时和计数功能。
游戏过程中, 如果不想继续玩了,可以直接退出,想重新开局,按“重新开始”按钮即可。
想控制界面大小只需拖拽图 形界面边框即可。
游戏结束后,可以选择“关闭”游戏,或者是“重新开始”。

3.2 功能模块设计


(模块功能设计如图3.2)










开始前
显示规


游戏说
明模块
输入输
出模块

模块
的组

计时模

猜数次
数模块
成绩判
定模块


产生随
机数
判断该
数是否
合法
开始时
记录初
始时间
猜中后初始值
为零
记录结
束时间
每猜测
一次自
加1
由猜测
次数决



输出猜
测的数

给出提
示语言

图3.2

3.3 类的设计
3.3.1 类的定义
类是把具有相同属性的事物划分为一类,从而得出抽象的概念。在面 向对象程序设计
中,类是一个独立的程序单位,是具有相同属性和方法的一组对象的集合,它为属于该类
的全部对象提供了抽象描述。类的概念使我们能对属于该类的全部对象进行统一的描述。
在定义 对象之前应先定义类。
描述一个类需要指明下述三个方面内容:
类标识:类的一个有别于其他类的名字。
属性说明:用来描述相同对象的静态特征。


方法说明:用来描述相同对象的动态特征。
3.3.2 定义类的格式
class 类名
数据成员
成员方法
类的结构是由类说明和类体两部分组成的。
类的说明部分由关键字 class 与类名组成,类名的命名遵循 Java 标识符的定义规
则。
类体是类声明中花括号所包括 的全部内容,它又是由数据成员(属性)和成员方法(方
法)两部分组成。
数据成员描述对象 的属性;成员方法则刻画对象的行为或动作,每一个成员方法确定
一个功能或操作。

3.3.3 类的分类
从用户的角度看,Java 源程序中的类分为两种:
系统定义的类:即 Java 类库,它是系统定义好的类。Java 语言由语法规则和类库两
部分组成,语法规则确定 Java 程序的书写规范;类库则提供了 Java 程序与运行它的系
统软件(Java 虚拟机)之间的接口。
用户自定义类:系统 定义的类虽然实现了许多常见的功能,但是用户程序仍然需要针
对特定问题的特定逻辑来定义自己的类。
进行 Java 程序设计,实际上就是定义类的过程。一个 Java 源程序文件往往是由许
多个类组成的。

3.3.4类的搭建
首先,搭建 Java程序框架。打开Eclipse,新建名为GuessNumberGame的项目,然后
新建 名为GuessNumber的Java类。给GuessNumber加上合适的javadoc。
(1)Random(随机数)
Random(随机数)的功能就是借助Java API提 供的Random类来产生一个随机数。定
义一个整型变量number来保存随机产生的整数,并且用 直接初始化的方法把random产生
的随机数赋给number变量。
Random类是在这个包中。建立时可以手动在源程序顶部输入import


;语句来申明该程序将要使用包中的Random类。也可以运用
Eclipse,把光标移动到有红 色波浪线的Random上,然后按下Ctrl+Shift+M,Eclipse
会自动完成导入的工 作。此时保存一下源代码,警告就会消失。


四、程序实现
4.1 程序流程图(如图4.1)


开 始
由计算机产生随机数x
系统开始计时
由用户输入一个数y
x>y
N
输入的大了,再小一点吧
Y
输入的小了,再大一点吧
x=y
系统结束计时
系统统计猜数次数

结 束



图4.1


4.2 关键算法与技术实现
4.2.1源程序


* 程序运行时自动产生1-100的随机数
* 接受用户键盘输入数据并给出指示信息
* 直至猜对,游戏者猜对后,显示猜对次数
* 并且供计时功能
*
import Event;
import Listener;
import pter;
import nt;
import

import n;
import
import nPane;
import ield;
import Constants;

**
* @author 陈雪莹
*
* 有趣的猜数字游戏
*

public class GuessNumber extends {

{
Set Look & Feel
try { 设置窗口外观为windows外观

kAndFeel(
ookAndFeel
} catch(Exception e) {
tackTrace();
}
}



private JLabel jLabel1;
private JTextField jTextField1;
private JButton jButton1;
private JButton jButton2;
private int number=0;
private int counter=0;
long startTime = tTimeMillis();
long endTime;
**
* Auto-generated main method to display this JFrame
*
public static void main(String[] args) {
GuessNumber inst = new GuessNumber();
ible(true); 显示窗口
}


**
*新建一个随机数产生器,然后生成一个1到100之间的整数
*
public GuessNumber() {
super();
initGUI();
Random random = new Random();
number = t(100); 产生一个1-100间的随机数
}


**
*初始化窗口组件
*

private void initGUI() {
try {
setDefaultCloseOperation(E_ON_CLOSE); 窗口关闭时销
毁窗口

getContentPane().setLayout(null); 设置窗口布局为绝对布局


{
jLabel1 = new JLabel();
getContentPane().add(jLabel1);
t(欢迎进入有趣的猜数字游戏,游戏规则如下:

游戏随机产生1-100的整数,玩家通过输入数字来匹配所产生的数字。

用户随 机输入数字,当与计算机产生的随机数相符合时,计算机将提醒用户,游
戏成功的信息

当有偏差时,将会提醒偏差,如偏大或者是偏小。结束后记录游戏时间和猜测次


我心里有一个1到100之间的整数,你猜是什么?
nds(7, 0, 420, 147); 设置标签位置
}
{
jTextField1 = new JTextField();
getContentPane().add(jTextField1);
nds(42, 168, 112, 28);

Listener(new KeyAdapter(){文本框添加键盘按键监听-监听回
车键
public void keyPressed(KeyEvent evt) {
jTextField1KeyPressed(evt);
}
});
}
{
jButton1 = new JButton();
getContentPane().add(jButton1);
t(确定
nds(182, 168, 77, 28);
ionListener(new ActionListener(){ 按钮添加监听
public void actionPerformed(ActionEvent evt) {
jButton1ActionPerformed(evt); 按钮被点击时 执行该方法
}
});
}
{


jButton2 = new JButton();
getContentPane().add(jButton2);
t(重新开始
nds(280, 168, 91, 28);
ionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
}
pack();
e(442, 265); 设置窗口大小
setLocationRelativeTo(null); 设置窗口在显示器居中显示
} catch (Exception e) {
tackTrace();
}
}

**
* “确定”按钮事件监听
* @param evt
*

private void jButton1ActionPerformed(ActionEvent evt) {
int guess=0;

记录玩家所猜测的数字
counter++; 计数器增加一。


try,catch的异常管理。
try {

获取玩家的输入
guess=nt(t());
} catch (Exception e) {

如果玩家不是输入一个合法的整数,则让他重新输入。

ssageDialog(null, 数字不合法,请输入一个1-100之间的整数!
显示一个对话框


t(清空文本框内容

tFocus();文本框获取输入焦点
return
}

对玩家的输入进行判断。
if (guess > number){
ssageDialog(null, 输入的大了,再小一点吧!
t(
tFocus();
return
}
if (guess < number){
ssageDialog(null, 输入的小了,再大一点吧!
t(
tFocus();
return
}
if (guess == number) {
endTime=tTimeMillis();

判断成绩。
switch (counter) {
case 1: ssageDialog(null,你是神么?? 这也太给力了吧!!

break;
case 2:
case 3:
case 4:
case 5:
case 6:
case 7: ssageDialog(null,这么快就猜对了,你很smart啊!

break;


default:ssageDialog(null,猜了半 天才猜出来,小同志,尚须
努力啊!
break;
}
ssageDialog(null,您总共猜了次 共花了
秒的时间答对正确答案!
}
t(
tFocus();
}

private void jButton2ActionPerformed(ActionEvent evt) { 重新开始
Random random = new Random(); 重新生成随机数
number = t(100); 产生一个1-100间的随机数
counter=0; 记录玩家猜测的次数
t(
startTime = tTimeMillis();
}

private void jTextField1KeyPressed(KeyEvent evt) {
监听文本框回车
if (Code()==_ENTER) {
k(); 文本框按回车键 执行“确定”按钮的事件
}
}

}
4.2.2关键算法
(1)记录猜测次数模块
记录玩家猜测的次数
counter = 0;

计数器增加一
counter++;


首先定义了一个counter变量来记录玩家猜测的次数,并直接初始化为 0。在打印一
行游戏提示以后,便开始一个do-while语句。
在do-while语句 中,首先用异常处理语句获取玩家的输入,如果玩家输入不合法,提
示以后用continue语句从头 重新执行循环语句,等待玩家的输入。从而,guess变量一定
包含一个合法的整数。之后要对玩家的 输入进行判断。
如果玩家的猜测太大或者太小,都做出提示。接着把计数器增加1,表示玩家做过一
次猜测。
最后便是do-while语句的判断:当玩家猜测的数字和随机产生的答案不同,则再次进
入 循环,否则便结束循环,执行下面的代码。 (用Eclipse的Alt+快捷键帮助编写
do- while语句。)

(2)输入输出模块
获取玩家的输入
guess=nt(t());

如果玩家不是输入一个合法的整数,则让他重新输入
ssageDialog(null, 数字不合法,请输入一个1-100之间的整
数!
t(
tFocus();
return
}

对玩家的输入进行判断。
if (guess > number){
ssageDialog(null, 输入的大了,再小一点吧!
t(
tFocus();
return
}
if (guess < number){
ssageDialog(null, 输入的小了,再大一点吧!
t(
tFocus();
return


}
if (guess == number) {
endTime=tTimeMillis();
(3)判定成绩模块
判断成绩。
switch (counter) {
case 1: ssageDialog(null,你是神么?? 这也太给力了吧!!

break;
case 2:
case 3:
case 4:
case 5:
case 6:
case 7: ssageDialog(null,这么快就猜对了,你很smart啊!

break;
default:ssageDialog(null,猜了半天才猜出来,小 同志,尚须
努力啊!
break;
}
ssageDialog(null,您总共猜了次 共花了
秒的时间答对正确答案!
}
t(
tFocus();
}

switch语句 是基于整型表达式的条件判断语句,猜数字用它来进行成绩判断。可以看
出,switch语句是和若干 case语句和一个default语句搭配使用的。代码中的switch语
句用counter变量 的值进行判断。
当counter的值为1时,便执行case 1里面的语句,即打印“你是神么?? 这也太
给力了吧!!”的字样,随后的break语句表示整个switch语句执行到这里结束了。


当counter的值为2时,便执行case 2里面的语句。可以发现case 2到case 6都没
有break语句,这表示依次执行下面的语句,从而counter的值为2至 7时,都打印“这
么快就猜对了,你很smart啊!”字样。
当counter的值不是1 至7时,便执行default语句,打印“猜了半天才猜出来,小
同志,尚须努力啊!”的字样。

(4)计时模块
计时模块的代码分别写在游戏的开始和游戏的结束,取得时间差,以毫秒为单位。
long startTime = tTimeMillis();
long endTime = tTimeMillis();

(5)异常处理
Java语言提供了异常(Ex ception)处理机制帮助程序员发现并处理异常。所谓异常,
就是在程序执行过程中能干扰程序正 常流程的事件。导致异常的原因很多,比如文件找不
到、数组越界、除以零等。当异常出现时,一个异常 对象将被自动生成并传递给Java“运
行时环境”(runtime system),说得专业一点 ,就是抛出一个异常。异常对象包含了异常
类型、程序运行状态等信息。“运行时环境”得到异常对象后 便打断程序的正常流程,自
动寻找一个专门处理该异常的代码块来解决问题。这样的代码块称作异常句柄 (Exception
Handler)。你可以在异常句柄中尝试修复错误、重试或者报错,或者实 在无法进行下去的
时候来个自我了断。如果“运行时环境”找不到异常句柄,Java程序便会自行中断 。
一个典型的异常处理如下:
try {
statement(s);
} catch (exceptiontype1 name) {
statement(s);
} catch (exceptiontype2 name) {
statement(s);
} finally {
statement(s);
}
其中:
try语句括起来的语 句可能抛出异常。try语句至少要搭配一个catch语句或finally
语句,不能单独使用。


catch语句必须和一个try语句配套使用,根据异常类型(exception type)分别处理不同的异常。也就是说,Java有许多预先定义的异常,你可以通过多个catch语句对它们
分 门别类地处理。你还可以自己定义异常类型。如果try语句块中没有抛出异常,这里自
然不会被执行。
finally语句也必须和一个try语句配套使用,与catch语句不同,无论try语句块
中是否抛出异常,finally所包括的语句块都会被执行
我设计的猜数字游戏需要从控制台获取玩家输入的数字,有多个异常处理
可以编写如下代码:
{
Set Look & Feel
try {

kAndFeel(
ookAndFeel
} catch(Exception e) {
tackTrace();
}
}

try,catch的异常管理。
try {
guess=nt(t());
} catch (Exception e) {
使用异常机制的诸多好处









使得程序更健壮,界面更友善。
把程序的业务逻辑与错误处理分开,代码更合理,更美观。
异常可以分层次处理,使得代码更简洁。
同类的异常可以归到一类一起处理,处理更方便。
4.3 类与数据结构实现


首先搭建Java程序框架。打开Eclipse ,新建名为GuessNumberGame的项目,然后新
建名为GuessNumber的Java 类。GuessNumber加上合适的javadoc。
(1)随机数的产生
我们可以借助Java API提供的Random类来产生一个随机数。
首先在main函数中加入以下三行代码:
新建一个随机数产生器,然后生成一个1到100之间的整数。
Random random = new Random();
int number = t(100);
第一句定义了一 个类型是Random类的变量random(Java语言区分大小写,所以Random
和rand om是不同意思),并且用new操作符生成一个Random类的实例赋给random变量。
ran dom变量实际上是一个参照,指向内存中用new操作符新建的Random类的实大多数情
况下可以 把random直接看做是一个Random类的实例,可以通过“random”加上“.操作
符”来 调用Random类的方法,用t(100)来获取一个1至100之间的随机数。
第二句语句定义一 个整型变量number来保存随机产生的整数,并且用直接初始化的方
法把random产生的随机数 赋给number变量。(如图4.3.1)


图4.3.1



(2)输入输出界面
标准输入输出(Standard IO)是指可以被应用程序使用的信息流。比如,应用程序
可以从标准输入(Standard input)读取数据,向标准输出(Standard output)写数据,把出
错信息发送到标准错误(Standard error)。猜数字游戏主 要用到标准输入,即控制台输入。
用n进行控制台输出,用进行控制台输入。它是一个纯粹的
输 入流,而猜数字游戏主要是通过控制台获取玩家的字符输入,则需要把它包装成一个
BufferedR eader实例来使用
BufferedReader input = new BufferedReader(
new InputStreamReader());
这时,input就是一个能处理来自控制台输入的、支持Unicode的、可以整行读取的
一个Bu fferedReader实例,比如能通过ne()方法获取玩家在控制台整整一
行的输入。(如图4 .3.2)
















图4.3.2



五、测试运行
5.1 系统测试方案
5.2 运行结果分析
编译成功,进入游戏,显示游戏说明









输入所猜测的数字,系统会自动提示
下面是输入过大,输入过小,输入错误,三种情况:




















当输入正确时,游戏结束,显示如下提示
当counter的值为1时,便执行case 1里面的语句,即打印“你是神么?? 这也太给力
了吧!!”的字样

当counter的值为2至7时,都打印“这么快就猜对了,你很smart啊!”字样。
当counter的值不是1至7时,便执行default语句,打印猜了半天才猜出来,小同志,
尚 须努力啊!














点击确定后,系统自动弹出计时功能和计数功能的消息框。







六、设计体会
C语言是一种计算机程序设计语言。它既具有 高级语言的特点,又具有汇编
语言的特点。它由美国贝尔研究所的e于1972年推出。1978后,C
语言已先后被移植到大、中、小及微型机上。它可以作为工作系统设计语言,
编写系统应用程序 ,也可以作为应用程序设计语言,编写不依赖计算机硬件的
应用程序。它的应用范围广泛,具备很强的数 据处理能力,不仅仅是在软件开
发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维 图形
和动画。具体应用比如单片机以及嵌入式系统开发
以前上课时有许多的问题并没有
真正的认识到,但通过这次试验的制作,使我掌握了许多更重要的知识点。
在本次试验中,给我印象最 为深刻的是程序的编译过程中,从中我学到了许多以前学
有学会和没有学到的函数

比 如do-while语句的判断,控制台输入的概念和方法。除此
之个还不其它一些函数也得到了巩固。 以前总是模模糊糊的,现在心里十分清楚了。平时
的学习自身只注意到了书本上面的知识,对一些类及方 法的运用显得只能,这次的学习让
我从纸上谈兵逐渐的过渡到实践出真知。老师先是要我们找可以运行的 小游戏的代码,才
可以做模板,就这样我找了许多次,最后终于找到了一个,程序就将是我成功的关键。


最后我的课程设计结束了,但是它留给我的印象是不可磨灭的。以前感觉学的都用不到,现在才知以前学的用途真大,想学编程是少不了的。以前感觉,编程是多么的神秘,
现在通过自 己实践,才知道,编程也没那么神秘,但却很有乐趣的。那种看到自己亲手编
的程序运行出结果的感觉是 无法用言语表达的。











银行个人理财-初中毕业生登记表


焦仲卿和刘兰芝-浑水摸鱼造句


车载mp3-专业技术工作总结


好烦好烦-爱一回伤一回歌词


如何激发学生的学习兴趣-普通话练习mp3下载


北京大宝化妆品有限公司-招聘会计要求


关凤-我会很想你


公平的反义词-二年级日记大全