




免费预览已结束,剩余17页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录一、设计任务与要求11.1 设计任务与要求11.2 选题目的与意义2二、需求分析22.1 用户需求分析22.2 开发环境分析3三、系统设计43.1 系统总体设计43.2 功能模块设计43.3 类的设计5四、程序实现84.1程序流程图84.2 关键算法与技术实现94.2.1 游戏菜单设置的具体算法94.2.2 生成随机数的具体算法94.2.3 比较数字大小的具体算法104.2.4 记录与清除成绩的具体算法114.2.5 清空成绩的具体算法124.2.6 错误跳转的具体算法13五、测试运行185.1 系统测试方案185.2 运行结果分析18六、设计体会22一、设计任务与要求1.1 设计任务与要求通过本课程设计实践,达到以下目的:(1)培养学生严谨务实的工作态度,并在老师的指导下,提高分析问题和解决问题的能力,促进理论联系实际学风养成。(2)巩固和加深对面向对象程序设计的基本概念、基本理论和实现技术的理解。(3)掌握Java开发的主要环境与工具,掌握面向对象的常用控件的使用方法。(4)初步掌握面向对象系统分析与设计的基本方法和步骤,并能针对简单的实际应用问题进行初步地分析和设计。(5)掌握Java编程语言,并针对具体应用问题进行编程实现。(6)通过撰写课程设计论文,锻炼学生科技论文写作能力。具体任务如下:设计一个猜数字游戏,使该游戏实现比较数字大小等功能,并给予用户游戏的喜悦感。具体的游戏规则如下:1). 输入一个数字,数字的范围再0-99之间,系统随机生成数也在此范围内.2).如果玩家输入的不是系统要求的数字,系统将报错,并继续提示用户:请输入在099之间的数字.3).如果玩家输入的数字与随机生成数相比较,比随机生成数小.系统提示您:您输入的数字偏小,请您重新输入.4). 如果玩家输入的数字与随机生成数相比较,比随机生成数大.系统提示您:你输入的数字偏大,请您重新输入.5).系统根据您猜数字的次数,自动计数,并在用户完成游戏时显示该次游戏的猜数次数和游戏评语.6).除了猜数过程,用户可以在想退出的情况下之间输入退出口令,或者显示答案口令来完成该次游戏,亦可查询以往的游戏记录并清除游戏记录。1.2 选题目的与意义 Java语言作为当今 INTERNET上最流行的编程语言,它的产生自然与游戏密切相关. 本课程设计是为了配合Java程序设计课程,帮助学生深入学习掌握Java语言,熟练运用这个工具而设立的课程。通过课程设计各个项目的综合训练,加强学生对JAVA语言的理解,检验学生对专业理论知识理解与掌握的程度,锻炼学生综合运用JAVA程序设计处理所学的知识实际分析问题、解决问题的能力。通过对猜数游戏程序设计的学习,使学生掌握网络编程的基本方法,能够根据现实生活实践编制出一些实用的小程序.为进一步学习网站信息的建设打下基础.此学习过程中,一方面巩固了学生的JAVA程序设计的应用,加深对JAVA语言的掌握及对面向对象程序设计基本思想的理解,提高对面向对象技术的具体应用;另一方面,猜数游戏可以通过JAVA设计展现其娱乐性,游戏简单易懂,容易操作上手。二、需求分析2.1 用户需求分析游戏随机自动生成一个随机数random number即099(包括0和99)的整数字,然后让用户猜是什么数字。用户可以随便猜一个数字,游戏会提示太大还是太小,从而缩小猜数范围。经过几次猜测与提示后,直至猜到,给出所用猜数次数和评语最终退出游戏。在游戏过程中。记录用户最终猜对时所需要的次数。游戏结束后公布结果。具体要求:通过菜单栏里提供的选项,进入游戏界面。系统提示猜数字游戏的运行情况,一般情况下为正常,随即游戏者可以输入自己的猜数结果,可以通过按回车键完成输入。每次完成一次游戏时,给出猜测的次数的统计。按其他选项还可以选择退出游戏,查询答案,查询游戏记录,清除游戏记录。游戏中要求完成一下内容:1)要求记录产生的随机数并计算用户猜数次数、并完成提示玩家游戏信息等功能;2)要求在玩家输入不是数字或输入范围不符合时会提示错误信息;3)要求能判断程序随机生成数字与用户猜的数字的大小,玩家猜的数字偏大于随机生成数就提示“您猜的数字偏大,请重新输入”或玩家猜的数字偏小于随机生成数就提示“您猜的数字偏小,请重新输入”; 4)要求在玩家猜对的时候,提示信息“猜对啦!”,并统计玩家猜数次数,反馈给玩家;5)要求在玩家发出“enter”口令时能进入游戏;6)要求在玩家发出“answer”口令时能显示该次游戏的答案;7)要求在玩家发出“record”口令时能显示以往游戏中的最好成绩;8)要求在玩家发出“clear”口令时能清除以往的游戏记录,并显示记录已被清除;9)要求在玩家发出“exit”口令时能退出游戏。2.2 开发环境分析 本软件的组成程序为JAVA程序设计语言,组够均较简单,直观意义上的较独立。因此,给予电子化的所构成的硬件的简单的可维护性的特点,决定该软件的简单可维护性。 在装载程序时,正常就运行,异常就停止;JAVA编程系统出现错误,将会产生不可预见的问题,热启,整个终端程序就会再次启动;程序出现错误,重新装载。若依然有错,按照提示逐渐装载。程序开发中会使用到MyEclipse软件,它是一个十分优秀的用于开发Java, J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开元产品的支持十分不错。MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对Eclipse IDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSF, CSS, Javascript, SQL, Hibernate。表2.2.1游戏运行环境分析表:操作系统Windows/xp/2003内存容量1G外用设备鼠标 键盘CPU奔腾133光驱4倍速磁盘空间250G开发软件MyEclipse (8.0 GA)中央处理器双核1.6GHZ三、系统设计3.1 系统总体设计本系统总共分为:进入游戏系统、退出游戏系统、记录成绩系统、清除成绩系统,和显示答案功能系统。 进入游戏系统包括游戏提示、游戏时间计算、游戏次数计算、生成随机数、用户猜数、显示状态、显示记录、清除记录等功能; 开发整个系统具备了周期时间短、简单易用、休闲益智等几大类显著的特性。本次系统开发设计出了界面大方简洁美化的游戏模式。游戏规则如下:1). 输入一个数字,数字的范围再0-99之间,系统随机生成数也在此范围内.2).如果玩家输入的不是系统要求的数字,系统将报错,并继续提示用户:请输入在099之间的数字.3).如果玩家输入的数字与随机生成数相比较,比随机生成数小.系统提示您:您输入的数字偏小,请您重新输入.4). 如果玩家输入的数字与随机生成数相比较,比随机生成数大.系统提示您:你输入的数字偏大,请您重新输入.5).系统根据您猜数字的次数,自动计数,并在用户完成游戏时显示该次游戏的猜数次数和游戏评语.6).除了猜数过程,用户可以在想退出的情况下之间输入退出口令,或者显示答案口令来完成该次游戏,亦可查询以往的游戏记录并清除游戏记录。3.2 功能模块设计猜数游戏的功能模块包含进入游戏模块,用来初始游戏,并记录用户猜测的数据与游戏随机产生的随机数;成绩记录模块用来将用户游戏数据记录在计算机中,以便随时调用。答案显示模块用来提供用户正确的答案。记录清空模块用来将用户之前的游戏成绩记录删除清空。退出游戏模块可以使用户在后悔进入游戏的情况下,立即结束游戏。猜数游戏系统功能模块图如下:猜数游戏 进入游戏模块答案显示模块成绩记录模块记录清空模块退出游戏模块图3.2.1 猜数游戏功能模块图3.3 类的设计 游戏中,game作为类,负责创建游戏系统的运行,记忆测试系统由该类开始执行。其中定义int i 为猜数次数,定义n 为用户猜的数字,定义number为一个随机数math random,用于产生随机的数字,范围要求在099之间;程序中运用方法system.in,用于记录用户输入的数据,使用if语句判断数字的大小,使用while语句循环判断数字大小,并逐个与其后的值相比较,当表达式的值与随机数字值相等时, 即执行其后的语句,若程序中出现错误,则可通过try catch语句来跳出错误,继续执行下面的语句。使用System.out.println方法输出语句,给出数字判断或评价。程序中设置了printStackTrace()方法来打印异常信息在程序中出错的位置及原因。具体的成员方法说明及个别实现语句说明请见下表: 表3.3.1 成员方法说明表方法功能Math.random():随机产生一个数System.in():输入消息对话框System.out.println():输出消息对话框printStackTrace()在命令行打印异常信息在程序中出错的位置及原因。表3.3.2 实现语句说明表finallyfinally中的代码无论出现什么状况都会运行到。即使出现异常。所以finally一般都是处理对资源的释放等操作。try catchtry catch 成对出现的,一个try就一定要有catch,被try包裹的代码说明,如果这些代码中只要抛出异常的话,就会停止当前的代码运行,而跳到catch中,对于异常进行处理。try中没有发生异常,所以catch中的代码是执行不到的.while程序中不知道循环的次数,使用我还while语句进行动作的循环类与成员变量成员方法及语句之间的关系图如下:+game成语变量+i :int+number :int+n :int成员方法Math.random()System.in()System.out.println()printStackTrace()语句+while+for+if else+finaly+try.catch图3.1.1类与成员变量成员方法及语句之间的关系图用户可通过输入框选择任务,如:开始游戏,退出游戏,显示答案,成绩记录,清除记录等。进入游戏后,程序自动生成随机数,并发送请求用户输入数字,通过else if语句判断数字与生成数的大小,并弹出对话框,输出信息。之后再重新输入直到猜对,程序可以无限次的输入数字。猜数正确后,会弹出对话框,输出信息,给出游戏最新记录,然后自动退出游戏。该游戏记录存档在D盘,以记录猜数成绩信息,若输入clear,可清除记录,显示记录空。Answer口令以显示系统自动生成的随机数。Exit口令以直接退出游戏。游戏中,最重要的部分是判断数字大小,该过程中将定义好的n与随机生成的数字number比较,运用到if else语句。猜对后,运用break语句跳转到评价语句,显示游戏记录。Try catch语句用于输入错误时跳出语句。四、程序实现开始4.1程序流程图 Record Answer Clear Exit系统随机产生数字A显示答案显示记录直接退出清除记录重新输入数字重新输入数字 请求玩家输入数字B 判断数字A与B的大小AB你猜的数字偏小!AB你猜的数字偏大!A=B猜对啦,恭喜你!结束显示猜数次数图4.1.1系统程序流程图4.2 关键算法与技术实现4.2.1 游戏菜单设置的具体算法import java.io.BufferedReader;import java.io.File;import java.io.IOException;import java.io.InputStreamReader;import java.io.RandomAccessFile;public class gameint i = 0;/ 记录猜数字的次数void operate() System.out.println(欢迎来到 蔡馨颜 开发的猜数字小游戏 +n+输入“enter”进入游戏; +n + 输入“exit”退出游戏; + n+ 输入“record”最新的游戏记录; + n + 输入“answer”显示该次游戏的正确答案; + n+ 输入“clear”清除记录+n);System.out.println(请选择上面的选项:);以上程序段通过定义int变量来记录猜数字的次数,并通过输出语句,来显示游戏的菜单。4.2.2 生成随机数的具体算法void playGame(int number) / int number = (int) (Math.random() * 100);System.out.println(游戏开始,请猜数,输入0-100之间的一个数:);InputStreamReader isr = new InputStreamReader(System.in);BufferedReader br = new BufferedReader(isr);String str = ;int n;RandomAccessFile raf = null;try while (br != null & !str.equals(exit) str = br.readLine();n = Integer.parseInt(str);i+;/ i记录输入数字的次数以上程序段通过定义变量int来生成随机数,定义变量int来记录用户的猜测的数字,通过while语句实现退出。4.2.3 比较数字大小的具体算法if (a number) System.out.println(你猜的数字偏大!);/ break; else if (a = number) System.out.println(猜对啦,恭喜你!);System.out.println(你输入了+ i + 次);以上程序段通过ifelse语句实现生成随机数与用户猜数之间的比较,并通过输出语句显示相关评价。4.2.4 记录与清除成绩的具体算法File f = new File(d:RandomAccessFile.txt);raf = new RandomAccessFile(f, rw);/ raf.seek(0);/ while(f.length()!=raf.setLength(0);/ 写之前先将文件清空raf.writeInt(i);/ 输入数字的次数写入文件raf.seek(0);/ 定位到文件头/ raf.seek(raf.length()-1);/定位到文件尾System.out.println(最新的游戏记录: + raf.readInt() + 次);/ 打印最新的猜数字记录File f = new File(d:RandomAccessFile.txt);RandomAccessFile raf = new RandomAccessFile(f, rw);if (raf.length() 0)/ 如果文件中有记录,则输出此数,否则显示“记录空”的提示int i = raf.readInt();System.out.println(最新的猜数字记录: + i + 次); elseSystem.out.println(无记录); else if (s.equals(answer) / 输入“answer”显示该次游戏的正确答案;System.out.println(该次游戏的正确答案: + number);r.playGame(number);/ 进入游戏 else if (s.equals(clear) 以上程序段将游戏中记录成绩的文件自动存档在D盘里,便于游戏中用户查询成绩记录,除了成绩的查询,程序段还具有清除记录的功能。4.2.5 清空成绩的具体算法File f = new File(d:RandomAccessFile.txt); RandomAccessFile raf = new RandomAccessFile(f, rw);/ raf.seek(0); raf.setLength(0);/ 写之前先将文件清空 / raf.writeInt(i);/ 输入数字的次数写入文件 / raf.seek(0);/ 定位到文件头System.out.println(记录已被清空);/ 打印最新的猜数字记录 catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();以上程序段可以实现将记录在D盘里的游戏记录清除的功能,寻找处于D盘的文件,将其内记录的成绩清除,随后用System.out.println输出语句将记录已被清空的口令告知用户。4.2.6 错误跳转的具体算法try if (raf != null)raf.close();catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();以上程序段通过trycatch语句实现错误状态下的跳出动作。猜数游戏源程序如下:import java.io.BufferedReader;import java.io.File;import java.io.IOException;import java.io.InputStreamReader;import java.io.RandomAccessFile;public class gameint i = 0;/ 记录猜数字的次数void operate() System.out.println(欢迎来到 蔡馨颜 开发的猜数字小游戏 +n+输入“enter”进入游戏; +n + 输入“exit”退出游戏; + n+ 输入“record”最新的游戏记录; + n + 输入“answer”显示该次游戏的正确答案; + n+ 输入“clear”清除记录 + n);System.out.println(请选择上面的选项:);void playGame(int number) / int number = (int) (Math.random() * 100);System.out.println(游戏开始,请猜数,输入0-100之间的一个数:);InputStreamReader isr = new InputStreamReader(System.in);BufferedReader br = new BufferedReader(isr);String str = ;int n;RandomAccessFile raf = null;try while (br != null & !str.equals(exit) str = br.readLine();n = Integer.parseInt(str);i+;/ i记录输入数字的次数if (n number) System.out.println(你猜的数字偏大);/ break; else if (n = number)System.out.println(恭喜你,猜对啦!);System.out.println(你输入了 + i + 次);File f = new File(d:RandomAccessFile.txt);raf = new RandomAccessFile(f, rw);/ raf.seek(0);/ while(f.length()!=raf.setLength(0);/ 写之前先将文件清空raf.writeInt(i);/ 输入数字的次数写入文件raf.seek(0);/ 定位到文件头/ raf.seek(raf.length()-1);/定位到文件尾System.out.println(最新的游戏记录: + raf.readInt() + 次);/ 打印最新的猜数字记录System.exit(0); catch (IOException e)/ TODO Auto-generated catch blocke.printStackTrace(); Finally try if (raf != null)raf.close(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();public static void main(String args) int number = (int) (Math.random() * 100);game r = new game();r.operate();InputStreamReader isr = new InputStreamReader(System.in);BufferedReader br = new BufferedReader(isr);String s = ;Trywhile (s != null)s = br.readLine();if (s.equals(enter)/ 输入“enter”进入游戏;r.playGame(number);else if (s.equals(exit)/ 输入“exit”退出游戏;System.exit(0);else if (s.equals(record)/输入“record”打印最新的猜数字记录;File f = new File(d:RandomAccessFile.txt);RandomAccessFile raf = new RandomAccessFile(f, rw);if (raf.length() 0)/ 如果文件中有记录,则输出此数,否则显示“记录空”的提示int i = raf.readInt();System.out.println(最新的猜数字记录: + i + 次); elseSystem.out.println(无记录); else if (s.equals(answer) / 输入“answer”显示该次游戏的正确答案;System.out.println(该次游戏的正确答案: + number);r.playGame(number);/ 进入游戏 else if (s.equals(clear) / 输入“clear”清除记录File f = new File(d:RandomAccessFile.txt);RandomAccessFile raf = new RandomAccessFile(f, rw);/ raf.seek(0);raf.setLength(0);/ 写之前先将文件清空/ raf.writeInt(i);/ 输入数字的次数写入文件/ raf.seek(0);/ 定位到文件头System.out.println(记录已被清空);/ 打印最新的猜数字记录 catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace(); finally try if (br != null)br.close(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();五、测试运行5.1 系统测试方案1游戏功能测试:运行程序,显示游戏菜单栏。菜单应显示游戏作者,进入游戏,退出游戏,显示游戏记录,清除游戏记录,以及显示答案各选项; 若无显示则程序错误。 2查询功能测试:进入游戏菜单栏后,输入answer口令,应显示该次游戏的答案;若无显示则程序出错。 3极限测试:由于该游戏的数字设置在099范围内,如用户输入超过99的数字,则游戏永远提示数字大于答案,直至用户的数字在游戏允许范围内,游戏继续运行。 4记录功能测试:显示游戏菜单栏后,输入record口令,程序应该输出以往游戏中的最好成绩;若还未进行游戏就选择输出记录,则显示无记录;若未显示,则程序出错。5清除功能测试:显示游戏菜单栏后,输入clear口令,程序应该将文件内记录的成绩自动清除,并显示记录已被清除;若未显示则程序出错。6退出功能测试:显示游戏菜单栏后,输入exit口令,程序应该退出游戏,否则程序出错。5.2 运行结果分析图5.2.1 游戏初始状态图图5.2.2 游戏开始状态图 图5.2.3 游戏猜数过程图图5.2.4 查询游戏记录状态图
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河北省任丘市2025年上半年公开招聘村务工作者试题含答案分析
- 河北省清苑县2025年上半年公开招聘村务工作者试题含答案分析
- 2025版企业员工薪酬福利管理合同
- 2025年度房地产项目代办手续专项服务与支持合同
- 2025年度豪华车队雇用与品牌推广服务合同范本
- 2025版配电箱进出口贸易合同范本解析
- 2025年度砂石资源开采与运输安全合作协议
- 2025年度土方资源开发与保护合作合同范本
- 2025标准商铺租赁合同附带商业数据分析与市场调研服务
- 2025版劳动法培训与劳动法规解读合同
- 2025年科研项目经理专业知识考试题目答案解析
- 2025广东肇庆市怀集县卫生事业单位招聘102人笔试模拟试题及答案解析
- 青马考试题目及答案
- 2024-2025学年广东省深圳市南山区四年级(下)期末数学试卷
- 2025秋数学(新)人教五年级(上)第1课时 小数乘整数
- 算力中心计算任务优化方案
- 劳务派遣工作知识培训课件
- AutoCAD电气工程制图 课件 项目1 低压配电柜的绘制与识图
- 无人机反制设备原理课件
- 2024年全国工会财务知识大赛备赛试题库500(含答案)
- 《采购4 0 采购系统升级 降本 增效实用指南 第2版 》读书笔记思维导图PPT模板下载
评论
0/150
提交评论