版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课 程 设 计 报 告 课程设计名称 java程序设计 专 业 计算机科学与技术 班 级 2 班 学 号 08030212 姓 名 指导教师 成 绩 2011年3月10日目 录目录根据word生成一、设计任务与要求1.1 设计任务与要求程序设计专题的任务与要求:课程设计的任务:根据所选题目,完成课程设计的分析、设计和编码,写出课程设计报告。(1)掌握java的语言规范,面向对象的核心概念和特性;(2)掌握java的编程技术,包括异常处理,图形界面设计,多线程,网络通信程序等;(3)掌握java应用软件的开发环境和开发过程;(4)掌握面向对象的思想和程序设计方法。课程设计的要求:设计一个猜数字游
2、戏程序,该游戏可以由程序随机产生整数,玩游戏者通过由用户输入数字来匹配上面所产生的数字。用户随机输入数字,当与计算机产生的随机数相符合时,计算机将提醒用户,游戏成功的信息,当有偏差时,将会提醒偏差,如偏大或者是偏小。1.2 选题目的与意义通过选择猜数字游戏这个题目,可以让我掌握java中的包和类,并且可以灵活的使用my eclipse软件。同时更加深入的了解字符界面的编程过程。使我更熟练的掌握java程序框架的搭建和类的创建格式。在分析阶段,要进行面向对象的需求分析、系统设计、画出相应的需求分析图、系统设计模型图,这些工作更能锻炼我的逻辑思维,更能培养我思考的全面性。让我学会了多角度思考问题,
3、对我以后的编程奠定了更好的基础。二、需求分析2.1 用户需求分析设计一个猜数字游戏程序,要求具体如下特性:(1) 趣味性:要求游戏内容丰富多彩,语言风趣幽默。(2) 大众性:要求游戏界面操作简单,游戏规则简单易懂。(3) 合理性:游戏设计严谨,有条理,具体需求如下 输入任意一个数字。数字的要求是1100的自然数即可。 系统对您输入的数字进行判断。如果玩家输入的数字与计算机随机生成数相比较,输入的数字比随机生成数小.系统将提示您,数字太小请您重新输入。如果玩家输入的数字与计算机随机生成数相比较,如果输入的数字比随机生成数大。系统将提示您,数字太大请您重新输入。如果玩家输入的字符不是合法字符,系统
4、将提示您,您输入的数字不合法,请从新输入。 游戏开始时,系统自动记录您猜数字的时间,结束后显示游戏共花费的时间。 每猜测一次,系统会记录下来,游戏结束后,显示共猜测多少次。 在游戏开始时,自动显示游戏规则。 在游戏结束时,可以选择关闭游戏,或者再来一局。2.2 开发环境分析硬件要求能运行windows 9.x操作系统的微机系统。java程序设计语言及相应的集成开发环境,j2sdk和eclipse开发工具。j2sdk简介:j2sdk是就阿java的开发环境包。它包含jdk(开发工具包)和jre(运行时环境包) 。jdk包含jre ,jdk是开发人员必装软件,jre是客户端运行时必装软件 ,j2s
5、dk就是jdk,j2jre就是jre。jcreator是开发java的软件。开发java也可以用记事本开发原程序eclipse简介:eclipse 是一个开放源代码的、基于 java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,eclipse 附带了一个标准的插件集,包括 java 开发工具(java development tools,jdt)。eclipse的设计思想是:一切皆为插件。它自身的核心是非常小的,其它所有的功能都以插件的形式附加到该核心上。eclipse中三个最吸引人的地方:一是它创新性的图形api,即swt/jface,在
6、此之前,我曾经用过java 的awt/swing来开发windows应用程序,awt/swing其界面客观地讲不够美观,而且界面响应速度比较慢;而swt/jface则大大改善了java在这方面的能力。二是它的插件机制。三是利用它的插件机制开发的众多功能强大的插三、系统设计3.1 系统总体设计猜数字游戏游戏随机给出一个1100 (包括1和100) 之间的数字,然后让你猜是什么数字。你可以随便猜一个数字,游戏会提示太大还是太小,从而缩小结果范围。经过几次猜测与提示后,最终推出答案。(系统设计如图3.1)游戏界面游戏开始游戏说明产生随机数输出字符记录次数记录时间重新开始关闭游戏图3.1游戏界面:采用
7、图形界面显示。页面有如下功能:开始,结束,重来,帮助。游戏开始后,由计算机产生一个1-100的随机数,不显示在图形界面,但显示在字符界面。用户只需输入所猜想的数字,打印在输入框内,按“确定”按钮表示确定,游戏返回提示语句,按照提示语句操作,直至游戏结束。 同时,计算机开始对游戏进行计时和计数功能。游戏过程中,如果不想继续玩了,可以直接退出,想重新开局,按“重新开始”按钮即可。想控制界面大小只需拖拽图形界面边框即可。游戏结束后,可以选择“关闭”游戏,或者是“重新开始”。3.2 功能模块设计(模块功能设计如图3.2)模块的组成游戏说明模块输入输出模块计时模块产生随机数判断该数是否合法输出猜测的数字
8、给出提示语言开始前显示规则开始时记录初始时间猜中后记录结束时间猜数次数模块初始值为零每猜测一次自加1成绩判定模块由猜测次数决定图3.23.3 类的设计3.3.1 类的定义类是把具有相同属性的事物划分为一类,从而得出抽象的概念。在面向对象程序设计中,类是一个独立的程序单位,是具有相同属性和方法的一组对象的集合,它为属于该类的全部对象提供了抽象描述。类的概念使我们能对属于该类的全部对象进行统一的描述。在定义对象之前应先定义类。描述一个类需要指明下述三个方面内容:类标识:类的一个有别于其他类的名字。属性说明:用来描述相同对象的静态特征。方法说明:用来描述相同对象的动态特征。3.3.2 定义类的格式c
9、lass 类名数据成员成员方法类的结构是由类说明和类体两部分组成的。类的说明部分由关键字 class 与类名组成,类名的命名遵循 java 标识符的定义规则。类体是类声明中花括号所包括的全部内容,它又是由数据成员(属性)和成员方法(方法)两部分组成。数据成员描述对象的属性;成员方法则刻画对象的行为或动作,每一个成员方法确定一个功能或操作。3.3.3 类的分类从用户的角度看,java 源程序中的类分为两种:系统定义的类:即 java 类库,它是系统定义好的类。java 语言由语法规则和类库两部分组成,语法规则确定 java 程序的书写规范;类库则提供了 java 程序与运行它的系统软件(java
10、 虚拟机)之间的接口。用户自定义类:系统定义的类虽然实现了许多常见的功能,但是用户程序仍然需要针对特定问题的特定逻辑来定义自己的类。进行 java 程序设计,实际上就是定义类的过程。一个 java 源程序文件往往是由许多个类组成的。3.3.4类的搭建首先,搭建java程序框架。打开eclipse,新建名为guessnumbergame的项目,然后新建名为guessnumber的java类。给guessnumber加上合适的javadoc。(1)random(随机数)random(随机数)的功能就是借助java api提供的random类来产生一个随机数。定义一个整型变量number来保存随机产
11、生的整数,并且用直接初始化的方法把random产生的随机数赋给number变量。random类是在java.util这个包中。建立时可以手动在源程序顶部输入import java.util.random;语句来申明该程序将要使用java.util包中的random类。也可以运用eclipse,把光标移动到有红色波浪线的random上,然后按下ctrlshiftm,eclipse会自动完成导入的工作。此时保存一下源代码,警告就会消失。四、程序实现4.1 程序流程图(如图4.1)开 始系统开始计时由用户输入一个数yxy输入的大了,再小一点吧输入的小了,再大一点吧yn由计算机产生随机数xx=y系统结
12、束计时系统统计猜数次数结 束图4.14.2 关键算法与技术实现4.2.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.jbutton;imp
13、ort javax.swing.jlabel;import javax.swing.joptionpane;import javax.swing.jtextfield;import javax.swing.windowconstants;/* author 陈雪莹 * 有趣的猜数字游戏*/public class guessnumber extends javax.swing.jframe /set look & feel try /设置窗口外观为windows外观 javax.swing.uimanager.setlookandfeel(com.sun.java.swing.plaf.win
14、dows.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 ma
15、in method to display this jframe */ public static void main(string args) guessnumber inst = new guessnumber(); inst.setvisible(true); /显示窗口 /* *新建一个随机数产生器,然后生成一个1到100之间的整数*/ public guessnumber() super(); initgui(); random random = new random(); number = random.nextint(100); /产生一个1-100间的随机数 /* *初始化窗口
16、组件 */ private void initgui() try setdefaultcloseoperation(windowconstants.dispose_on_close);/窗口关闭时销毁窗口 getcontentpane().setlayout(null);/设置窗口布局为绝对布局 jlabel1 = new jlabel(); getcontentpane().add(jlabel1); jlabel1.settext(欢迎进入有趣的猜数字游戏,游戏规则如下: + 游戏随机产生1-100的整数,玩家通过输入数字来匹配所产生的数字。+ 用户随机输入数字,当与计算机产生的随机数相符
17、合时,计算机将提醒用户,游戏成功的信息+ 当有偏差时,将会提醒偏差,如偏大或者是偏小。结束后记录游戏时间和猜测次数+ 我心里有一个1到100之间的整数,你猜是什么?); jlabel1.setbounds(7, 0, 420, 147);/设置标签位置 jtextfield1 = new jtextfield(); getcontentpane().add(jtextfield1); jtextfield1.setbounds(42, 168, 112, 28); jtextfield1.addkeylistener(new keyadapter()/文本框添加键盘按键监听-监听回车键 pub
18、lic void keypressed(keyevent evt) jtextfield1keypressed(evt); ); jbutton1 = new jbutton(); getcontentpane().add(jbutton1); jbutton1.settext(确定); jbutton1.setbounds(182, 168, 77, 28); jbutton1.addactionlistener(new actionlistener()/按钮添加监听 public void actionperformed(actionevent evt) jbutton1actionper
19、formed(evt);/按钮被点击时 执行该方法 ); jbutton2 = new jbutton(); getcontentpane().add(jbutton2); jbutton2.settext(重新开始); jbutton2.setbounds(280, 168, 91, 28); jbutton2.addactionlistener(new actionlistener() public void actionperformed(actionevent evt) jbutton2actionperformed(evt); ); pack(); this.setsize(442,
20、 265); / 设置窗口大小 setlocationrelativeto(null); / 设置窗口在显示器居中显示 catch (exception e) e.printstacktrace(); /* * “确定”按钮事件监听 * param evt */ private void jbutton1actionperformed(actionevent evt) int guess=0; / 记录玩家所猜测的数字 counter+; / 计数器增加一。/ try,catch的异常管理。 try / 获取玩家的输入 guess=integer.parseint(jtextfield1.ge
21、ttext(); catch (exception e) / 如果玩家不是输入一个合法的整数,则让他重新输入。 joptionpane.showmessagedialog(null, 数字不合法,请输入一个1-100之间的整数!); /显示一个对话框 jtextfield1.settext();/清空文本框内容 jtextfield1.requestfocus();/文本框获取输入焦点 return ; / 对玩家的输入进行判断。 if (guess number) joptionpane.showmessagedialog(null, 输入的大了,再小一点吧!); jtextfield1.s
22、ettext(); jtextfield1.requestfocus(); return ; if (guess number) joptionpane.showmessagedialog(null, 输入的大了,再小一点吧!); jtextfield1.settext(); jtextfield1.requestfocus(); return ; if (guess number) joptionpane.showmessagedialog(null, 输入的小了,再大一点吧!); jtextfield1.settext(); jtextfield1.requestfocus(); retu
23、rn ; if (guess = number) endtime=system.currenttimemillis();(3)判定成绩模块/ 判断成绩。 switch (counter) case 1: joptionpane.showmessagedialog(null,你是神么? 这也太给力了吧!); break; case 2: case 3: case 4: case 5: case 6: case 7: joptionpane.showmessagedialog(null,这么快就猜对了,你很smart啊!); break; default:joptionpane.showmessa
24、gedialog(null,猜了半天才猜出来,小同志,尚须努力啊!); break; joptionpane.showmessagedialog(null,您总共猜了+counter+次 共花了+(endtime-starttime)/1000+秒的时间答对正确答案!); jtextfield1.settext(); jtextfield1.requestfocus(); switch语句是基于整型表达式的条件判断语句,猜数字用它来进行成绩判断。可以看出,switch语句是和若干case语句和一个default语句搭配使用的。代码中的switch语句用counter变量的值进行判断。当coun
25、ter的值为1时,便执行case 1里面的语句,即打印“你是神么? 这也太给力了吧!”的字样,随后的break语句表示整个switch语句执行到这里结束了。当counter的值为2时,便执行case 2里面的语句。可以发现case 2到case 6都没有break语句,这表示依次执行下面的语句,从而counter的值为2至7时,都打印“这么快就猜对了,你很smart啊!”字样。当counter的值不是1至7时,便执行default语句,打印“猜了半天才猜出来,小同志,尚须努力啊!”的字样。(4)计时模块计时模块的代码分别写在游戏的开始和游戏的结束,取得时间差,以毫秒为单位。long start
26、time = system.currenttimemillis();long endtime = system.currenttimemillis();(5)异常处理java语言提供了异常(exception)处理机制帮助程序员发现并处理异常。所谓异常,就是在程序执行过程中能干扰程序正常流程的事件。导致异常的原因很多,比如文件找不到、数组越界、除以零等。当异常出现时,一个异常对象将被自动生成并传递给java“运行时环境”(runtime system),说得专业一点,就是抛出一个异常。异常对象包含了异常类型、程序运行状态等信息。“运行时环境”得到异常对象后便打断程序的正常流程,自动寻找一个专门
27、处理该异常的代码块来解决问题。这样的代码块称作异常句柄(exception handler)。你可以在异常句柄中尝试修复错误、重试或者报错,或者实在无法进行下去的时候来个自我了断。如果“运行时环境”找不到异常句柄,java程序便会自行中断。一个典型的异常处理如下:try statement(s); catch (exceptiontype1 name) statement(s); catch (exceptiontype2 name) statement(s); finally statement(s);其中:try语句括起来的语句可能抛出异常。try语句至少要搭配一个catch语句或fina
28、lly语句,不能单独使用。catch语句必须和一个try语句配套使用,根据异常类型(exception type)分别处理不同的异常。也就是说,java有许多预先定义的异常,你可以通过多个catch语句对它们分门别类地处理。你还可以自己定义异常类型。如果try语句块中没有抛出异常,这里自然不会被执行。finally语句也必须和一个try语句配套使用,与catch语句不同,无论try语句块中是否抛出异常,finally所包括的语句块都会被执行我设计的猜数字游戏需要从控制台获取玩家输入的数字,有多个异常处理可以编写如下代码: /set look & feel try javax.swing.uim
29、anager.setlookandfeel(com.sun.java.swing.plaf.windows.windowslookandfeel); catch(exception e) e.printstacktrace(); / try,catch的异常管理。 try guess=integer.parseint(jtextfield1.gettext(); catch (exception e) 使用异常机制的诸多好处使得程序更健壮,界面更友善。把程序的业务逻辑与错误处理分开,代码更合理,更美观。异常可以分层次处理,使得代码更简洁。同类的异常可以归到一类一起处理,处理更方便。4.3 类与
30、数据结构实现首先搭建java程序框架。打开eclipse,新建名为guessnumbergame的项目,然后新建名为guessnumber的java类。guessnumber加上合适的javadoc。(1)随机数的产生我们可以借助java api提供的random类来产生一个随机数。首先在main函数中加入以下三行代码:/ 新建一个随机数产生器,然后生成一个1到100之间的整数。random random = new random();int number = random.nextint(100);第一句定义了一个类型是random类的变量random(java语言区分大小写,所以rando
31、m和random是不同意思),并且用new操作符生成一个random类的实例赋给random变量。random变量实际上是一个参照,指向内存中用new操作符新建的random类的实大多数情况下可以把random直接看做是一个random类的实例,可以通过“random”加上“.操作符”来调用random类的方法,用random.nextint(100)来获取一个1至100之间的随机数。第二句语句定义一个整型变量number来保存随机产生的整数,并且用直接初始化的方法把random产生的随机数赋给number变量。(如图4.3.1)图4.3.1(2)输入输出界面标准输入输出(standard i/o)是指可以被应用程序使用的信息流。比如,应用程序可以从标准输入(standard input)读取数据,向标准输出(standard output)写数据,把出错信息发送到标准错误(standard error)。猜数字游戏主要用到标准输入,即控制台输入。用system.out.println进行控制台输出,用system.in进行控制台输入。它是一个纯粹的输入流,而猜数字游戏主要是通过控制台获取玩家的字符输入,则需要把它包装成一个bufferedreader实例来使用bufferedreader input = new bufferedreader(new input
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度公益慈善晚会活动策划与实施合同4篇
- 2025年度互联网内容提供商ICP证年审全权委托服务合同3篇
- 二零二五年度生物科技研发农民工就业服务合同4篇
- 电子商务平台消费者权益保护2025年度国际协调合同2篇
- 2025年度牛肝菌有机认证与市场拓展合同
- 二零二五版昆明滇池度假区酒店管理合同3篇
- 二零二五年度农业种植劳务作业承包合同范本3篇
- 2025年度塑料管材国际贸易争端解决合同
- 2025年度私立学校校长任期教育科研成果转化合同
- 二零二五年度企业员工期权激励合同范本
- 广东省佛山市2025届高三高中教学质量检测 (一)化学试题(含答案)
- 人教版【初中数学】知识点总结-全面+九年级上册数学全册教案
- 四川省成都市青羊区成都市石室联合中学2023-2024学年七上期末数学试题(解析版)
- 2024-2025学年人教版七年级英语上册各单元重点句子
- 2025新人教版英语七年级下单词表
- 公司结算资金管理制度
- 2024年小学语文教师基本功测试卷(有答案)
- 未成年入职免责协议书
- 项目可行性研究报告评估咨询管理服务方案1
- 5岁幼儿数学练习题
- 2024年全国体育单招英语考卷和答案
评论
0/150
提交评论