《Java课程设计:猜数.doc》由会员分享,可在线阅读,更多相关《Java课程设计:猜数.doc(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、课 程 设 计 报 告 课程设计名称 Java程序设计-猜数游戏 专 业 计算机科学与技术 班 级 4 班 学 号 姓 名 指导教师 成 绩 2011年3月10日目 录一、设计任务与要求11.1 设计任务与要求11.2 选题目的与意义1二、需求分析12.1 用户需求分析12.2 开发环境分析1三、系统设计23.1 系统总体设计23.2 功能模块设计23.3 类的设计3四、程序实现44.1 程序流程图44.2 关键算法与技术实现4五、测试运行75.1 系统测试方案75.2 运行结果分析7六、设计体会9主要参考文献9附录:10一、设计任务与要求1.1 设计任务与要求课程设计的任务是:根据所选课题“
2、猜数游戏”,完成课程设计的分析、设计和编码,并用字符界面或图形界面实现。且写出课程设计报告。1.2 选题目的与意义通过猜数游戏的设计过程,深刻了解掌握面向对象程序设计语言Java的核心概念和特性;了解编程技术知识,会处理异常情况。学会制作图形界面;掌握Java应用软件的开发环境和开发过程;灵活选择程序设计思想。通过撰写课程设计论文,锻炼科技论文写作能力。二、需求分析2.1 用户需求分析小明看了电视上的价格竞猜节目后想自己创建一个类似的模拟软件练习,于是要求做一个程序实现以下功能:(1) 使用者可自行输入一个110之间的正整数;例如:1、3、5、7(2) 计算机在程序运行后随机生成一个110之间
3、的正整数;(3) 比较上述二者大小,并从游戏开始时开始计时。若使用者所选数大于机器随机值,则提示“高了!”;反之提示“低了!”;直到二者相等时停止计时并根据使用时间的长短给出相应评语。例如:用户输入值为5,机器随机值为10,则输出“低了!”;若用户输入值为15,则输出“高了!”;直到二者同时为10时,停止计时并输出之前总共所用次数及时间(即评语)。2.2 开发环境分析本程序使用WINDOWS环境下的Myeclipse8.6软件开发。MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对Eclipse IDE的扩展,利用它我
4、们可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。三、系统设计3.1 系统总体设计 该软件功能分析说明图如所示:猜数游戏系统计时模块数值输入输出模块数值比较模块图3.1 功能分析说明3.2 功能模块设计(1)输入输出模块进入游戏系统后,提示输入数值;在游戏结束阶段输出游戏所用时间、评语等信息。(2)数值比较模块图3.2.1(3)计时模块图3.2.23.3 类的设计类名Cshuyouxi猜数游戏属性times统计次数,系统根据您猜数字的次数,自动计数并显示剩余次数。Start Time获取开始时间Real Number电脑给出的数字,随即生成数Your G
5、uess您猜的数字,机器输入的数字End Time获取结束时间,程序运行结束时的计时Random系统产生随机生成数BufferedReader字符输入流,缓冲各个字符,从而实现字符数组和行的高效读取方法Main (String)创建猜数游戏构造方法guess实现猜数游戏方法四、程序实现4.1 程序流程图 图4.1 程序流程图4.2 关键算法与技术实现游戏随即给出一个0-10(不包括0和10)的数字,然后让你猜是什么数字。你可以随便猜一个数字,游戏会提示太大还是太小,从而缩小结果范围。经过几次猜测与提示后,最终退出答案。在游戏过程中。记录你最终猜对时所需要的次数。游戏结束后公布结果。public
6、 class Zu_guess public static void main(String args) System.out.println(欢迎进入猜数字游戏!+ n + 请输1个入0到10之间的正整数: ); Zu_guess ch = new Zu_guess(); ch.guess(); public void guess() int realNumber = 0;/ 电脑给出的数字。 int yourGuess = 0;/ 你猜的数字。 Random rand = new Random(); realNumber = rand.nextInt(10) + 1; long start
7、Time = System.currentTimeMillis(); / 获取开始时间 BufferedReader br = new BufferedReader(new InputStreamReader(System.in);/ 从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。 while (yourGuess != realNumber) try yourGuess = Integer.parseInt(br.readLine(); catch (Exception e) System.out.println(请输入一个1至10之间的整数); continue;
8、 在if-else语句中,如果玩家输入不合法,提示以后用continue语句从头重新执行循环语句,等待玩家输入。从而,guess变量一定包含一个合法的整数,之后对玩家输入的整数尽心判断。 if (yourGuess 10) System.out.println(请输入一个1至10之间的整数:);continue;二分法:如果已知X在L,R之内,那么令Y=(L+R)/2,如果YX则可以确定X在L, Mid-1之内,Y=X,则表示已经猜出来了。如果玩家的猜测数太大或太小,都作出提示,接着把计算器增加一,表示玩家做过一次猜测。 else if (yourGuess realNumber) Syste
9、m.out.println(您猜大了再来,加油哦!); else if (yourGuess realNumber) System.out.println(您猜小了再来,要继续努力哦!); long endTime = System.currentTimeMillis(); / 获取结束时间 if (yourGuess = realNumber) System.out.println(恭喜您猜中了! + n + 程序运行时间: + (endTime - startTime) / 1000 + s); 五、测试运行5.1 系统测试方案 本次设计采用WINDOWS环境下的MyEclipse,MyE
10、clipse包括了完备的编码、调试、测试和发布功能,极大的提高了工作效率。(1) 运行程序检测程序是否可以运行,程序运行成功图5.1程序运行成功(2) 游戏结束,程序对运行时间进行统计并进行那个显示图5.2 时间统计5.2 运行结果分析(1).进入游戏字符界面。图5.4进入游戏 (2).输入非数字后运行结果.图5.5 非数字运行结果(3).输入的数字不在1-10之间图5.6 数字大于10运行结果图5.7 数字小于0运行结果(4).输入的数字偏大或输入的数字偏小图5.8 数字大于或小于随机生成数运行结果计算机输入的数字大与系统给出的数字,系统提示输入数字偏大,计算机输入的数字小与系统给出的数字,
11、系统提示输入数字偏小,请重新输入。(6).程序运行成功图5.9 程序运行成功六、设计体会游戏设计最重要的不是创意,而是游戏设计。设计游戏是对一个人整体思维能力和想象力的一个挑战自己大脑极限的工作,总是伴着某种痛苦,因为很多你想加入的游戏系统和特色,经过自己检验和想象式测试,就会发现存在很多问题,于是不断的改,直到最后才发现,最简单的设定往往最有效最合理,然后再以此追加更高级的复杂设定。希望进行更多的探讨和交流.这次游戏设计中遇到了一些问题,比如游戏运行过程中如何完成计时操作,经过查阅资料和编程测试最终解决,这些都是通过开发设计所获得的收获,古人云:“业精于勤,而荒于嬉”,讲的就是为人处事要脚踏
12、实地,专心积极地去做,这才能做出好成绩;而整天无所事事,三天打渔,两天晒网是做不好的,只会荒废了自己的青春。主要参考文献1 丁新民.Java程序设计教程M. 北京:人民邮电出版社. 2006. 2 郑阿奇.Java EE基础实用教程M.北京:电子工业出版社.2009 3百度文库 EB/OL附录:package guess;import java.util.*;import java.io.*;public class Zu_guess public static void main(String args) System.out.println(欢迎进入猜数字游戏!+ n + 请输入1个0到1
13、0之间的正整数: ); Zu_guess ch = new Zu_guess(); ch.guess(); public void guess() int realNumber = 0;/ 电脑给出的数字。 int yourGuess = 0;/ 你猜的数字。 Random rand = new Random(); realNumber = rand.nextInt(10) + 1; long startTime = System.currentTimeMillis(); / 获取开始时间 BufferedReader br = new BufferedReader(new InputStre
14、amReader(System.in);/ 从字符输入流中读取文本,缓冲各个字符 while (yourGuess != realNumber) try yourGuess = Integer.parseInt(br.readLine(); catch (Exception e) System.out.println(请输入一个1至10之间的整数); continue; if (yourGuess 10) System.out.println(请输入一个1至10之间的整数:); continue; else if (yourGuess realNumber) System.out.println(您猜大了再来,加油哦!); else if (yourGuess realNumber) System.out.println(您猜小了再来,要继续努力哦!); long endTime = System.currentTimeMillis(); / 获取结束时间 if (yourGuess = realNumber) System.out.println(恭喜您猜中了! + n + 程序运行时间: + (endTime - startTime) / 1000 + s); 指导教师签字: 年 月 日