java课设.docx

上传人:b****6 文档编号:8487837 上传时间:2023-01-31 格式:DOCX 页数:15 大小:312.63KB
下载 相关 举报
java课设.docx_第1页
第1页 / 共15页
java课设.docx_第2页
第2页 / 共15页
java课设.docx_第3页
第3页 / 共15页
java课设.docx_第4页
第4页 / 共15页
java课设.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

java课设.docx

《java课设.docx》由会员分享,可在线阅读,更多相关《java课设.docx(15页珍藏版)》请在冰豆网上搜索。

java课设.docx

java课设

猜数游戏

1.课程设计的目的

通过课程设计把课堂上讲的内容融会贯通,学会设计程序、开发应用软件等工作。

经过实习掌握语言的语法结构,理解类和对象的概念,准确的使用各种数据类型,对面向对象中的继承和多态的概念会使用,在程序中提高代码的重用性,使设计的程序结构清晰、易于维护。

本设计将一个猜数字游戏作为研究对象。

设计出一个由系统随机选出一个1-100的数字不显示出来,由玩家猜这个数字,直到猜中为止,并显示出玩家猜中数字所用时间和次数对玩家做出评判,并对所涉及的相关技术进行初步的探讨。

 

2.设计方案论证

2.1设计思路

设计一个猜数字游戏程序,该游戏可以由程序随机产生整数,玩游戏者通过由用户输入数字来匹配上面所产生的数字。

用户随机输入数字,当与计算机产生的随机数相符合时,计算机将提醒用户,游戏成功的信息,当有偏差时,将会提醒偏差,如偏大或者是偏小。

设计一个猜数字游戏程序,其具有如下特性:

 

(1)趣味性

要求游戏内容丰富多彩,语言风趣幽默。

 

(2)大众性

要求游戏界面操作简单,游戏规则简单易懂。

(3)合理性

游戏设计严谨,有条理,具体需求如下:

 

① 游戏开始时,自动显示游戏规则,系统自动记录并显示您猜数字的时间。

② 每猜测一次,系统会记录下来,游戏结束后,显示共猜测多少次。

  

③ 在游戏结束时,可以选择关闭游戏,或者再来一局。

2.2设计方法

2.2.1系统总体设计 

猜数字游戏—游戏随机给出一个1—100 (包括1和100) 之间的数字,然后让你猜是什么数字。

你可以随便猜一个数字,游戏会提示太大还是太小,从而缩小结果范围。

经过几次猜测与提示后,最终推出答案。

(如图1) 

图1系统设计结构图 

2.2.2游戏界面

采用图形界面显示。

页面有如下功能:

开始,结束,重来。

 

游戏开始后,由计算机产生一个1-100的随机数,不显示在图形界面,但显示在字符界

面。

用户只需输入所猜想的数字,打印在输入框内,按“确定”按钮表示确定,游戏返回提示语句,按照提示语句操作,直至游戏结束。

 

         同时,计算机开始对游戏进行计时和计数功能。

 

游戏过程中,如果不想继续玩了,可以直接退出,想重新开局,按“重新开始”按钮即

可。

想控制界面大小只需拖拽图形界面边框即可。

 

游戏结束后,可以选择“关闭”游戏,或者是“重新开始”。

功能模块设计(如图2)

图2 功能模块图 

2.2.3随机数的获取 

功能描述:

玩家输入一个数字,数字的范围在1-100之间,系统获取随机数。

2.2.4输入输出模块 

功能描述:

对玩家输入的数字进行判断和提示。

如果玩家输入的不是系统要求的数字,系统将提示您,您输入的不是数字请重新输入.。

如果玩家输入的数字与随机生成数相比较,比随机生成数小.系统提示您,数字太小请您重新输入。

如果玩家输入的数字与随机生成数相比较,比随机生成数大.系统提示您,数字太大请您重新输入。

(如图3)

图3 输入输出模块图

2.2.5判断模块 

功能描述:

算出所用时间在玩家猜中时给出其所用时间,系统给出对其水平的判断和是否继续的提示;对玩家要求判断执行。

(如图4)

图4 判断模块图 

2.2.6自动计数模块 

功能描述:

系统根据您猜数字的次数,自动计数. (如图5)

  

图5 自动计数模块图

2.2.7结果输出模块 

功能描述:

直到用户猜到数字为止,提示信息是否重新猜数字,如果重新开始将进入下一次游戏,如果关闭将退出游戏系统。

3.设计结果与分析

(1)开始运行程序时图形界面的显示(如图7)

图7 图形显示界面

(2)玩家输入一个数“25”后,点击“确定”,系统提示“猜的有点小了,再大一点!

”。

(如图8)

图8系统提示

(3)玩家再次输入一个数“70”后,点击“确定”,系统提示您“猜的有点大了,再小一点!

”。

(如图9) 

        

图9系统提示 

  

(4)玩家再次输入一个数“32”,点击“确定”,系统提示“猜了半天才猜出来,小同志,尚须努力”,单击确定显示“您总共猜了8次,您猜数字总共花了33秒”。

(如图10 11) 

图10  图形界面结果输出图a

     图11 图形界面结果输出图b

(5)玩家再重新玩一次,获取随机数后,玩家输入一个随机数“90”,点击“确定”,系统提示“正确”!

您总共猜了2次,您猜数字总共花了14秒”。

(如图12) 

   

图12图形界面结果输出图c 

(6)如果玩家输入数字不再1到100以内数字系统提示错误!

(如图13) 

       

                         图13图形界面提示输入错误

4.设计体会

通过这次课程设计,使我对JAVA这门课又做了一次系统的复习,对各个知识点也都有了更深刻的理解,让我掌握的更扎实,同时也增强了实际操作能力,另一方面也对编程语言有了新的认识,为以后的学习打下了基础。

在本次试验中,给我印象最为深刻的是程序的编译过程中,从中我学到了许多以前学有学会和没有学到的函数。

这次的学习让我从纸上谈兵逐渐的过渡到实践出真知。

自己动手,自己发现和解决问题。

发现了自己的许多不足。

平时没有掌握好的知识在这次实验中彻底暴露出来,经过不断思考,不断查阅资料和上机运行,解决其中大部分问题,还有的现在不能解决,我相信在以后的学习中能够解决好它们。

 

5.参考文献

[1]丁振凡.《Java语言实用教程》[M].北京:

北京邮电大学出版社2005

[2]耿祥义.《Java2实用教程》[M].北京:

清华大学出版社2006

[3]赵付青.《Java面向对象程序设计》[M].北京:

国防工业出版社2005 

[4]耿祥义.《Java课程设计》[M].北京:

清华大学出版社2005

 

 

附录

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

 */ 

import java.awt.event.ActionEvent;

 import java.awt.event.ActionListener; 

import java.awt.event.KeyAdapter; 

import java.awt.event.KeyEvent; 

import java.util.Random;

 import javax.swing.*; 

public class GuessNum extends javax.swing.JFrame {   { 

  //Set Look & Feel 

  try { //设置窗口外观为windows外观   

 javax.swing.UIManager.setLookAndFeel ("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");   } 

catch(Exception e) {    e.printStackTrace();  

 }

  }  

 private JLabel jLabel1; 

 private JTextField jTextField1; 

 private JButton jButton1;  

 private JButton jButton2;  

private int number=0; 

private int counter=0; 

 long startTime = System.currentTimeMillis();  

long endTime;  /  * Auto-generated main method to display this JFrame  */ 

 public static void main(String[] args) { 

  GuessNum inst = new GuessNum();

 inst.setVisible(true); //显示窗口 

 }   / *新建一个随机数产生器,然后生成一个1到100之间的整数 */ 

 public GuessNum() {  

 super();   

initGUI(); 

  Random random = new Random(); 

  number = random.nextInt(100); //产生一个1-100间的随机数  

}    /  *初始化窗口组件   */ 

 private void initGUI() {   

try { 

   setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);//窗口关闭时销毁窗口 

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

    jLabel1 = new JLabel(); 

    getContentPane().add(jLabel1); 

    jLabel1.setText("欢迎进入有趣的猜数字游戏;


"+ 

      "  1到100之间的整数,你猜是什么?

快来猜猜看(^.^)


"+

   "请输入你想猜的数:

"); 

    jLabel1.setBounds(45, 0, 420, 150);//设置标签位置    

}  

  { 

jTextField1 = new JTextField();   

  getContentPane().add(jTextField1); 

    jTextField1.setBounds(42, 168, 112, 28);//输入窗口大小 

    jTextField1.addKeyListener(new KeyAdapter(){//文本框添加键盘按键监听-监听回车键 

     public void keyPressed(KeyEvent evt) {   

    jTextField1KeyPressed(evt);      }     });    

}   

 { 

jButton1 = new JButton();

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

    

JOptionPane.showMessageDialog(null, "数字不合法,请输入一个1-100之间的整数!

"); //显示一 个对话框 

   jTextField1.setText("");//清空文本框内容 

   jTextField1.requestFocus();//文本框获取输入焦点    

return   

 }  

// 对玩家的输入进行判断。

  

 if (guess > number){ 

  JOptionPane.showMessageDialog(null, "猜的有点大了⊙﹏⊙!

,再小一点吧!

"); 

   jTextField1.setText("");    

jTextField1.requestFocus();   

 return   

 } 

  if (guess < number){ 

  JOptionPane.showMessageDialog(null, "猜的一有点小了⊙﹏⊙!

,再大一点吧!

");  

  jTextField1.setText("");   

 jTextField1.requestFocus();  

  return   

 }  

  if (guess == number) { 

   endTime=System.currentTimeMillis();  

   // 判断成绩。

    

switch (counter) { 

   case 1:

 JOptionPane.showMessageDialog(null,"好厉害,真棒!

 ?

(′▽`)");     break;  

   case 2:

     

case 3:

    

 case 4:

    

 case 5:

     

case 6:

 

    case 7:

 JOptionPane.showMessageDialog(null,"这么快就猜对了,好厉害哦!

  ↖(^ω^)↗");     break; 

    default:

JOptionPane.showMessageDialog(null,"猜了半天才猜出来,小同志,尚须努力啊!

  ╮(╯_╰)╭");     break;    }

 JOptionPane.showMessageDialog(null,"您总共猜了"+counter+"次   共花了

"+(endTime- startTime)/1000+"秒的时间答对正确答案!

");   } 

  jTextField1.setText("");   jTextField1.requestFocus();  }   

 private void jButton2ActionPerformed(ActionEvent evt) {

// 重新开始   Random random = new Random(); // 重新生成随机数 

  number = random.nextInt(100); // 产生一个1-100间的随机数  

 counter=0; // 记录玩家猜测的次数  

 jTextField1.setText(""); 

  startTime = System.currentTimeMillis(); 

 }   

 private void jTextField1KeyPressed(KeyEvent evt) {   

// 监听文本框回车 

  if (evt.getKeyCode()==KeyEvent.VK_ENTER) { 

   jButton1.doClick();// 文本框按回车键 执行“确定”按钮的事件

   }

 }

 }   

(2)记录猜测次数模块 记录玩家猜测的次数 

counter = 0; 

//计数器增加一 

counter++; 

(3)输入输出模块 

// 获取玩家的输入 

   guess=Integer.parseInt(jTextField1.getText());  

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

   JOptionPane.showMessageDialog(null, "数字不合法,请输入一个1-100之间的整数!

"); 

   jTextField1.setText(""); 

   jTextField1.requestFocus();    

Return

    }  

// 对玩家的输入进行判断。

  if (guess > number){ 

   JOptionPane.showMessageDialog(null, "猜的有点大了⊙﹏⊙!

,再小一点吧!

");   

 jTextField1.setText("");   

 jTextField1.requestFocus();  

  return   

 } 

  if (guess < number){ 

   JOptionPane.showMessageDialog(null, "猜的一有点小了⊙﹏⊙!

,再大一点吧!

"); 

   jTextField1.setText("");  

  jTextField1.requestFocus();    return    } 

if (guess == number) { 

   endTime=System.currentTimeMillis(); 

 (4)判定成绩模块

 // 判断成绩。

 

  switch (counter) { 

   case 1:

 JOptionPane.showMessageDialog(null,"好厉害,真棒!

 (′▽`)");     break;  

   case 2:

 

    case 3:

    case 4:

   case 5:

   case 6:

 

    case 7:

 JOptionPane.showMessageDialog(null,"这么快就猜对了,好厉害哦!

  ↖(^ω^)↗");     break; 

    default:

JOptionPane.showMessageDialog(null,"猜了半天才猜出来,小同志,尚须努力啊!

  ╮(╯_╰)╭");     break;    

   JOptionPane.showMessageDialog(null,"您总共猜了"+counter+"次共花了"+(endTime- startTime)/1000+"秒的时间答对正确答案!

"); 

  } 

  jTextField1.setText("");   jTextField1.requestFocus(); 

 }      

(5)计时模块 

//计时模块的代码分别写在游戏的开始和游戏的结束,取得时间差,以毫秒为单位。

 long startTime = System.currentTimeMillis(); 

long endTime = System.currentTimeMillis(); 

 (6)异常处理 

 //一个典型的异常处理如下:

 try { statement(s); 

 } catch (exceptiontype1 name) {

 statement(s); 

 } 

catch (exceptiontype2 name) {

statement(s);

 }

 finally { 

statement(s); 

 } 

 // 编写如下代码:

 

  //Set Look & Feel   try {    

javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); 

  } 

catch(Exception e) {  

  e.printStackTrace();  

 }  

}   // try,catch的异常管理。

 

  try { 

   guess=Integer.parseInt(jTextField1.getText());   

// 新建一个随机数产生器,然后生成一个1到100之间的整数。

 Random random = new Random(); int num = random.nextInt(100); 

 

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

当前位置:首页 > 解决方案 > 学习计划

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

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