课程设计任务书2015-2016学年第一学期面向对象程序设计(Java)课程设计说明书班级名称:2014计算机科学与技术(对口)学生姓名:徐竹青学号:2014214190题目:猜数字游戏指导教师:徐志红起止日期:2015年12月25日至2015年12月31日计算机与信息工程学院目录1.选题背景 (1)2.设计思路 (1)2.1 课程设计思想 (1)2.1.1设计内容 (1)2.1.2设计要求 (1)2.2功能需求 (1)2.3软硬件运行环境及开发工具 (1)3.过程论述 (2)3.1需求分析 (2)3.1.1系统功能图 (2)3.1.2知识点 (2)3.2程序代码分析 (2)4.结果分析 (7)4.1测试与操作说明 (7)4.2测试数据及程序运行情况 (7)4.2.1猜数游戏结果 (7)5.结论 (8)参考文献 (8)致谢 (8)1.选题背景Java语言作为当今Internet上最流行的编程语言,它的产生自然与游戏密切相关。
本次课程设计是为了配合Java程序设计课程,帮助学生深入学习和掌握Java语言,熟练运用这个工具而设立的课程。
通过课程设计的综合训练,加强学生对Java语言的理解,检验学生对专业理论知识的理解与掌握程度,锻炼学生综合运用Java程序设计所学的知识,实际分析问题、解决问题的能力。
通过对猜数字游戏程序设计的学习,使学生掌握编程的基本方法,能够根据现实生活实践编制出一些使用的小程序,为以后学习其他相关课程打下基础。
2.设计思路2.1 课程设计思想2.1.1设计内容设计一个猜数字游戏程序,要求具体如下特性:(1) 输入任意一个数字。
数字的要求是0-1000的自然数即可。
(2)系统对您输入的数字进行判断。
如果玩家输入的数字与计算机随机生成的数相比较, 如果输入的数字和位置都正确。
则提示为A,如果数字正确,位置错误,则提示为B。
(3)每猜测一次,系统会记录下来。
显示剩余的猜数次数。
2.1.2设计要求设计一个猜数字游戏程序,该游戏可以由程序随机产生整数,玩游戏者通过由用户输入数字来匹配上面所产生的数字。
用户随机输入数字,当与计算机产生的随机数相符合时,计算机将提醒用户,游戏成功的信息,当有偏差时,将会提醒偏差,如0A1B,0A 表示用户没有猜对一个数字和位置都正确的数,1B 表示用户猜对了一个数字,但数字的位置是错的。
2.2功能需求一个较完善的猜数字游戏的程序功能,应该具有产生随机数、用户输入数字、如何猜数等功能。
所以要求完成以下功能:(1)首先计算机内部产生一个随机数。
(2)由用户输入数字,根据程序的格式限制,来判断用户输入的数格式是否正确。
(3)如何进行猜数,并显示出猜数的次数以及剩余的次数。
2.3软硬件运行环境及开发工具(1)编成语言:Java语言。
(2)开发环境:Microsoft Windows 7、JDK,Eclispse。
3.过程论述3.1需求分析3.1.1系统功能图猜数字游戏的几个功能可将本游戏程序分为三大模块:(1)由电脑随机产生一个随(2)用户输入几位数并判断数的格式;(3)显示提示信息及用户所剩余的机会。
各功能模块如图3-1所示。
图3-1功能模块图 3.1.2知识点本程序是一个简单的记事本程序,涉及到了以下知识点:(1)类的继承。
(2)图形化用户界面。
(3)事件处理,如:事件源、监听器、事件处理器。
3.2程序代码分析(1)将用户输入的四位数与计算机产生的随机数匹配,如果数字和位置完全正确A++;如果位置错误则B++;界面的显示情况如图3-2所示。
图3-2猜数界面提示信息图猜数字游戏 由电脑随机产生一个随机数用户输入几位数并判断数的格式 显示提示信息及用户所剩余的机会代码如下:public void peidui(){A=0;B=0;for(i=0;i<4;i++)for(j=0;j<4;j++)if (Random[i]==Enter[j]){if (i==j)A++;elseB++;}ta.append("\n"+A+"A"+B+"B "+Enter[0]+Enter[1]+Enter[2]+Enter[3]);while(true){if(y!=0){ta.append("你还有"+y+"次机会!"+"\n");y--;}elseta.append("你猜错了,请重新游戏!"+"\n"+"\n正确结果是:"+Random[0]+Random[1]+Random[2]+Random[3]);break ;}if (A==4&&B==0){ta.append("\n"+"恭喜你猜对了!");}}(2)图形用户界面的设计与布局。
如图3-2所示图3-3猜数字游戏开始状态图3-2猜数字游戏界面代码如下:public Game(){super("猜数字游戏");Randomnum();Container n=this.getContentPane();n.setLayout(new BorderLayout());jlb1=new JLabel("请输入");bt=new JButton("确定");JPanel jp1=new JPanel();JPanel jp2=new JPanel();JPanel jp3=new JPanel();n.add("North",jp1);n.add("South",jp3);jp1.setLayout(new FlowLayout());jp1.add(jlb1);jp1.add(tf);jp1.setVisible(true);getContentPane().add(scp);jp3.setLayout(new FlowLayout());bt.setBounds(140, 170, 80, 30);jp3.add(bt);jp3.setVisible(true);mit1.addActionListener(this);mit2.addActionListener(this);menu1.add(mit1);menu1.add(mit2);bt.addActionListener(this);jmb.add(menu1);this.setSize(300, 300);this.setJMenuBar(jmb);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置窗口可关闭}(3)在游戏界面单击“游戏”菜单下的“规则”子菜单,将会出现如图3-3所示。
图3-3游戏规则对话框代码如下:public void actionPerformed (ActionEvent n){if(n.getActionCommand().equals("规则")){dlg.setBounds(600, 350, 300, 150);dlg.setLayout(new BorderLayout());dlg.setTitle("游戏规则");dlg.add("North",jlb);dlg.add("Center",jlb2);dlg.add("South",jlb3);dlg.setVisible(true);}if(n.getActionCommand().equals("退出")){System.exit(0);}(3)输入的数字格式不正确,单击确定按钮时,出现在“文本域”中的提示信息,如图3-4所示。
图3-4数字格式匹配信息提示图代码如下:if(n.getActionCommand().equals("确定")) {try {x=0;int z=Integer.valueOf(tf.getText()); //获取文本中的值,将它转换for(int i=3;i>=0;i--){ //成整型Enter[i]=z%10;z=z/10;}} catch (Exception m) {ta.append("\n"+"请检查输入值的格式!");x=1;}if (tf.getText().length()!=4){ta.append("\n"+"请输入四位数字!");}else if (x==0){for (i=0;i<4;i++)for(j=0;j<4;j++){if (Enter[i]==(Enter[j])&&i!=j){ta.append("\n"+"请输入4不同的数字!");break ;}else if (i==3&&j==3)peidui();}}}}4.结果分析4.1测试与操作说明使用Eclipse,打开猜数字游戏.Java文件,接着纠正错误,无错误,最后执行该文件。
要求用户在请输入后的文本框中输入数字,如果输入格式不正确会出现“请输入正确的格式”的提示信息;如果输入的不是四位数会出现“请输入四位数的提示信息”;如果输入的数字格式是正确的,那么将根据提示信息进行猜数,直到猜出正确结果。
4.2测试数据及程序运行情况4.2.1猜数游戏结果如图4-4所示图4-1猜数游戏结果5.结论猜数字是一款非常经典的脑力游戏,游戏规则简单,但是玩起来难度较大,是消磨时间、锻炼脑力的好选择。
通过选择猜数字游戏这个题目,可以让我掌握Java中的包和类,并且可以灵活的使用Eclipse软件。
同时更加深入的了解字符界面的编程过程。
使我更熟练的掌握Java程序框架的搭建和类的创建格式。
在分析阶段,要进行面向对象的需求分析、系统设计、画出相应的需求分析图、系统设计模型图,这些工作更能锻炼我的逻辑思维,更能培养我思考的全面性。
让我学会了多角度思考问题,对我以后的编程奠定了更好的基础。
参考文献[1] 赵生慧. Java面向对象程序设计.中国水利水电出版社[2] 赵生慧. Java面向对象程序设计实训与考试指导.中国水利水电出版社致谢在此向所有关心我及帮助我的老师和同学致以最真诚的感谢。