1、北京邮电大学世纪学院实验、实习、课程设计报告撰写格式与要求(试行)一、实验报告格式要求1、有实验教学手册,按手册要求填写,假设无那么采用统一实验报告封面。2、报告一律用钢笔书写或打印,打印要求用A4纸;页边距要求如下:页边距上下各为2.5厘米,左右边距各为2.5厘米;行间距取固定值(设置值为20磅);字符间距为默认值(缩放100%,间距:标准)。3、统一采用国家标准所规定的单位与符号,要求文字书写工整,不得潦草;作图标准,不得随手勾画。4、实验报告中的实验原始记录,须经实验指导教师签字或登记。二、实习报告、课程设计报告格式要求1、采用统一的封面。2、根据教学大纲的要求手写或打印,手写一律用钢笔
2、书写,统一采用国家标准所规定的单位与符号,要求文字书写工整,不得潦草;作图标准,不得随手勾画。打印要求用A4纸;页边距要求如下:页边距上下各为2.5厘米,左右边距各为2.5厘米;行间距取固定值(设置值为20磅);字符间距为默认值(缩放100%,间距:标准)。三、报告内容要求1、实验报告内容包括:实验目的、实验原理、实验仪器设备、实验操作过程、原始数据、实验结果分析、实验心得等方面内容。2、实习报告内容包括:实习题目、实习任务与要求、实习具体实施情况(附上图表、原始数据等)、实习个人总结等内容。3、课程设计报告或说明书内容包括:课程设计任务与要求、总体方案、方案设计与分析、所需仪器设备与元器件、
3、设计实现与调试、收获体会、参考资料等方面内容。四、课内实践课报告撰写要求1、大型作业类的按课程设计要求撰写;2、带实习性质的按实习要求撰写;3、其余的按实验要求撰写。五、其它由于存档的需要,所有报告必须双面打印,请教师做好把关工作。北京邮电大学世纪学院教务处2005、12课程设计报告课程设计名称JaVa程序设计计算机科学与技术2班08030212陈雪莹陈志成业级号名师 教 导绩 专班学姓指成2011年3月10日目录目录根据word生成一、设计任务与要求1.1设计任务与要求程序设计专题的任务与要求:课程设计的任务:根据所选题目,完成课程设计的分析、设计和编码,写出课程设计报告。(1)掌握JaVa
4、的语言标准,面向对象的核心概念和特性;(2)掌握JaVa的编程技术,包括异常处理,图形界面设计,多线程,网络通信程序等;(3)掌握Java应用软件的开发环境和开发过程;(4)掌握面向对象的思想和程序设计方法。课程设计的要求:设计一个猜数字游戏程序,该游戏可以由程序随机产生整数,玩游戏者通过由用户输入数字来匹配上面所产生的数字。用户随机输入数字,当与计算机产生的随机数相符合时,计算机将提醒用户,游戏成功的信息,当有偏差时,将会提醒偏差,如偏大或者是偏小。1.2选题目的与意义通过选择猜数字游戏这个题目,可以让我掌握JaVa中的包和类,并且可以灵活的使用myeclipse软件。同时更加深入的了解字符
5、界面的编程过程。使我更熟练的掌握JaVa程序框架的搭建和类的创立格式。在分析阶段,要进行面向对象的需求分析、系统设计、画出相应的需求分析图、系统设计模型图,这些工作更能锻炼我的逻辑思维,更能培养我思考的全面性。让我学会了多角度思考问题,对我以后的编程奠定了更好的根底。二、需求分析2.1 用户需求分析设计一个猜数字游戏程序,要求具体如下特性:(1) 趣味性:要求游戏内容丰富多彩,语言幽默幽默。(2) 群众性:要求游戏界面操作简单,游戏规那么简单易懂。(3) 合理性:游戏设计严谨,有条理,具体需求如下输入任意一个数字。数字的要求是1100的自然数即可。系统对您输入的数字进行判断。如果玩家输入的数字
6、与计算机随机生成数相比拟,输入的数字比随机生成数小.系统将提示您,数字太小请您重新输入。如果玩家输入的数字与计算机随机生成数相比拟,如果输入的数字比随机生成数大。系统将提示您,数字太大请您重新输入。如果玩家输入的字符不是合法字符,系统将提示您,您输入的数字不合法,请从新输入。游戏开始时,系统自动记录您猜数字的时间,结束后显示游戏共花费的时间。每猜测一次,系统会记录下来,游戏结束后,显示共猜测多少次。在游戏开始时,自动显示游戏规那么。在游戏结束时,可以选择关闭游戏,或者再来一局。2. 2开发环境分析硬件要求能运行WirIdOWS9.X操作系统的微机系统。JAVA程序设计语言及相应的集成开发环境,
7、J2SDK和eclipse开发工具。J2SDK简介:j2sdk是就阿Java的开发环境包。它包含JDK(开发工具包)和JRE(运行时环境包)。JDK包含JRE,JDK是开发人员必装软件,JRE是客户端运行时必装软件,J2SDK就是JDK,J2JRE就是JRE。JCreator是开发JAVA的软件。开发JAVA也可以用记事本开发原程序eclipse简介:Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组效劳,用于通过插件组件构建开发环境。幸运的是,Eclipse附带了一个标准的插件集,包括JaVa开发工具(JavaDevelopmentTools,
8、JDT)OECIiPSe的设计思想是:一切皆为插件。它自身的核心是非常小的,其它所有的功能都以插件的形式附加到该核心上。Eclipse中三个最吸引人的地方:一是它创新性的图形API,即SWT/JFace,在此之前,我曾经用过JaVa的AwT/SWING来开发Windows应用程序,AWT/SWING其界面客观地讲不够美观,而且界面响应速度比拟慢;而SWT/JFace那么大大改善了JaVa在这方面的能力。二是它的插件机制。三是利用它的插件机制开发的众多功能强大的插三、系统设计2.1 系统总体设计猜数字游戏一游戏随机给出一个1100(包括1和IOo)之间的数字,然后让你猜是什么数字。你可以随便猜一
9、个数字,游戏会提示太大还是太小,从而缩小结果范围。经过几次猜测与提示后,最终推出答案。(系统设计如图3.1)游戏界面游戏开始游戏说明重新开始关闭游戏产生随机数输出字符记录次数记录时间图aI模块游戏界面:采用图形界面显示。台,结束,重来,帮助。页面有如下Z的组成游戏开始后,由计算机产生个IJOO的随机数,不显示在图形界面,但显示在字符界面。同时用户只需输入所猜测的数字,印在输入框内,按“确定”按钮表示确定游戏说公I输入输I Iff Xj, A ULq明模块出模块明模块示语句,按照腐那 块7进行计时和计游戏过场开始前显示规那么X合法解始时间缶足束时间成绩判 定模块由猜测次数决 定J每猜测 一次自
10、加JJ噪作,宜至游!?数模块性以直解山 开始时-IzI 记录初3.2功能(模块功能务测的数3给出提2示语言图3.23. 3类的设计类的定义类是把具有相同属性的事物划分为一类,从而得出抽象的概念。在面向对象程序设计中,类是一个独立的程序单位,是具有相同属性和方法的一组对象的集合,它为属于该类的全部对象提供了抽象描述。类的概念使我们能对属于该类的全部对象进行统一的描述。在定义对象之前应先定义类。描述一个类需要指明下述三个方面内容:类标识:类的一个有别于其他类的名字。属性说明:用来描述相同对象的静态特征。方法说明:用来描述相同对象的动态特征。定义类的格式class类名数据成员成员方法类的结构是由类说
11、明和类体两局部组成的。类的说明局部由关键字class与类名组成,类名的命名遵循JaVa标识符的定义规那么。类体是类声明中花括号所包括的全部内容,它又是由数据成员(属性)和成员方法(方法)两局部组成。数据成员描述对象的属性;成员方法那么刻画对象的行为或动作,每一个成员方法确定一个功能或操作。类的分类从用户的角度看,Java源程序中的类分为两种:系统定义的类:即JaVa类库,它是系统定义好的类。Java语言由语法规那么和类库两局部组成,语法规那么确定Java程序的书写标准;类库那么提供了Java程序与运行它的系统软件(Java虚拟机)之间的接口。用户自定义类:系统定义的类虽然实现了许多常见的功能,
12、但是用户程序仍然需要针对特定问题的特定逻辑来定义自己的类。进行Java程序设计,实际上就是定义类的过程。一个Java源程序文件往往是由许多个类组成的。3.3.4类的搭建首先,搭建JaVa程序框架。翻开EeliPSe,新建名为GUeSSNUmberGame的工程,然后新建名为GuessNumber的Java类。给GuessNumber加上适宜的javadocoRandom(随机数)Random(随机数)的功能就是借助JaVaAPl提供的Randonl类来产生一个随机数。定义一个整型变量number来保存随机产生的整数,并且用直接初始化的方法把random产生的随机数赋给number变量。Rand
13、om类是在java,util这个包中。建立时可以手动在源程序顶部输入importjava.util.Random;语句来申明该程序将要使用java.util包中的RandOnl类。也可以运用Eclipse,把光标移动到有红色波浪线的RandOm上,然后按下CtrI+Shift+M,Eclipse会自动完成导入的工作。此时保存一下源代码,警告就会消失。四、程序实现3.1 程序流程图如图4.1图4.14. 2关键算法与技术实现源程序/*程序运行时自动产生1-100的随机数* 接受用户键盘输入数据并给出指示信息* 直至猜对,游戏者猜对后,显示猜对次数* 并且供计时功能* /importjava.aw
14、t.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.KeyAdapter;importjava.awt.event.KeyEvent;importjava.util.Random;importjavax.swing.JButton;importjavax.swing.JLabel;importjavax.swing.JOptionPane;importjavax.swing.JTextField;importjavax.swing.WindowConstants;*author陈雪莹*有趣的猜
15、数字游戏*/publicclassGuessNumberextendsjavax.swing.JFrame/SetLook&Feeltry/设置窗口外观为windows外观javax.swing.UIManager.SetLookAndFeel(com.sun.java,swing,plaf.windows.WindowsLOokAndFeeK);catch(Exceptione)e.PrintStackTraceO;)privateJLabeljLabell;privateJTextFieldJTextFieldl;privateJButtonjButtonl;privateJButtonj
16、Button2;privateintnumber=0;privateintcounter=0;longStartTime=System.CurrentTimeMiHisO;longendTime;*Auto-generatedmainmethodtodisplaythisJFrame*/publicstaticvoidmain(Stringargs)GuessNumberinst=newGuessNumberO;inst.setVisible(true);显示窗口*新建一个随机数产生器,然后生成一个1到100之间的整数*/publicGuessNumberOsuper();initGUI();
17、Randomrandom=newRandom();number=random,nextInt(100);产生一个ITOO间的随机数*初始化窗口组件7privatevoidinitGUI()try(SetDefaultcioseOperation(WindowConstants.DISPOSEoNCLOSE)J窗口关闭时销毁窗口getContentPane().SetLayoUt(nul1);设置窗口布局为绝对布局(jLabe11=newJLabel();getContentPane().add(jLabell);jLabell.setText(欢送进入有趣的猜数字游戏,游戏规那么如下:+游戏随
18、机产生1-100的整数,玩家通过输入数字来匹配所产生的数字。+用户随机输入数字,当与计算机产生的随机数相符合时,计算机将提醒用户,游戏成功的信息+当有偏差时,将会提醒偏差,如偏大或者是偏小。结束后记录游戏时间和猜测次数+我心里有一个1到100之间的整数,你猜是什么?O;jLabel1.setBounds(7,0,420,147);设置标签位置)(JTextFieldl=newJTextFieldO;getContentPane().add(JTextFieldl);jTextFieldl.SetBounds(42,168,112,28);jTextFielcll.addKeyListoner(
19、newKeyAdaPtCr()文本框添加键盘按键监听-监听回车键publicvoidkeyPressed(KeyEventevt)JTextFielcilKeyPressed(evt););(jButtonl=newJButtonO;getContentPane().add(jButtonl);jButtonl.SetTeXt(“确定);jButtonl.SetBounds(182,168,77,28);jButtonl.addActionListener(newActionListenerO按钮添加监听publicvoidactIonPerformed(ActionEventevt)JBut
20、ton1ActiOnPerformed(evt);/按钮被点击时执行该方法);(jButton2=newJButtonO;getContentPane().add(jButton2);jButton2.SetTeXt(重新开始”);jButton2.SetBounds(280,168,91,28);jButton2.addActionListener(newActionListenerOpublicvoidactionPerformed(ActionEventevt)jButton2ActionPerformed(evt););)pack();this.setSize(442,265);设置窗
21、口大小SetLocationRelativeTo(null);设置窗口在显示器居中显示catch(Exceptione)e.PrintStackTrace();)* “确定”按钮事件监听* (g)paramevt*/privatevoidJButtonlActionPerformed(ActionEventevt)intguess=O;/记录玩家所猜测的数字counter+;/计数器增加一。/try,catch的异常管理。try(/获取玩家的输入guess=Integer.parselnt(jTextFieldl.getText();catch(Exceptione)/如果玩家不是输入一个合法
22、的整数,那么让他重新输入。JoPtiOnPane.showMessageDialog(null,数字不合法,请输入一个I-100之间的整数!);显示一个对话框jTextFieldl.SetTeXt()/清空文本框内容JTextFieldl.requestFocus();文本框获取输入焦点return;)/对玩家的输入进行判断。if(guessnumber)JOptionPane.ShowMessageDialog(null,”输入的大了,再小一点吧!”);jTextFieldl.SetTeXt();jTextFieldl.requestFocus();return;if(guessnumber
23、)JOptionPane.ShowMessageDialog(null,”输入的大了,再小一点吧!”);JTextFieldl.SetTeXt();JTextFieldl.requestFocus0;return;)if(guessnumber)JOptionPane.ShowMessageDialog(null,“输入的小了,再大一点吧!”);JTextFieldl.SetTeXt();JTextFieldl.requestFocus0;return;)if(guess=number)endTime=System.CurrentTimeMillis();判定成绩模块/判断成绩。switch(
24、counter)case 1: JOPtionPane.ShowMessageDialog(null,“你是神么?这也太给力了吧!);break;case 2:case 3:case 4:case 5:case 6:case 7: JoPIiOnPane.ShowMessageDialog(null,“这么快就猜对了,你很SnIart啊!);break;default:JOptionPane.ShoWMeSSageDiaIOg(null,“猜了半天才猜出来,小同志,尚须努力啊!);break;JOptionPane.ShoWMeSSageDiaIOg(null,“您总共猜了“+counter+
25、次共花了+SndTime-StartTime)/1000+秒的时间答对正确答案!);)JTextFieldl.SetTeXt();JTextFieldl.requestFocus();SWitCh语句是基于整型表达式的条件判断语句,猜数字用它来进行成绩判断。可以看出,switch语句是和假设干CaSe语句和一个default语句搭配使用的。代码中的switch语句用counter变量的值进行判断。当counter的值为1时,便执行case1里面的语句,即打印“你是神么?这也太给力了吧!”的字样,随后的break语句表示整个SWitCh语句执行到这里结束了。当counter的值为2时,便执行c
26、ase2里面的语句。可以发现case2到case6都没有break语句,这表示依次执行下面的语句,从而c。Unter的值为2至7时,都打印“这么快就猜对了,你很Smart啊!”字样。当COUnter的值不是1至7时,便执行加fault语句,打印“猜了半天才猜出来,小同志,尚须努力啊!”的字样。(4)计时模块计时模块的代码分别写在游戏的开始和游戏的结束,取得时间差,以毫秒为单位。longStartTime=System.CurrentTimeMillisO;longendTime=System.CurrentTimeMillisO;(5)异常处理JaVa语言提供了异常(EXCePtion)处理机
27、制帮助程序员发现并处理异常。所谓异常,就是在程序执行过程中能干扰程序正常流程的事件。导致异常的原因很多,比方文件找不到、数组越界、除以零等。当异常出现时,一个异常对象将被自动生成并传递给JaVa“运行时环境(runtimesystem),说得专业一点,就是抛出一个异常。异常对象包含了异常类型、程序运行状态等信息。“运行时环境”得到异常对象后便打断程序的正常流程,自动寻找一个专门处理该异常的代码块来解决问题。这样的代码块称作异常句柄(EXCePtiorIHandler)o你可以在异常句柄中尝试修复错误、重试或者报错,或者实在无法进行下去的时候来个自我了断。如果“运行时环境”找不到异常句柄,Jav
28、a程序便会自行中断。一个典型的异常处理如下:try(statement(s);catch(exceptiontypelname)statement(s);catch(exceptiontype2name)statement(s);finallystatement(s);其中:try语句括起来的语句可能抛出异常。try语句至少要搭配一个catch语句或finally语句,不能单独使用。catch语句必须和一个try语句配套使用,根据异常类型(exceptiontype)分别处理不同的异常。也就是说,JaVa有许多预先定义的异常,你可以通过多个CatCh语句对它们分门别类地处理。你还可以自己定义异
29、常类型。如果Iry语句块中没有抛出异常,这里自然不会被执行。finally语句也必须和一个try语句配套使用,与CatCh语句不同,无论try语句块中是否抛出异常,finalIy所包括的语句块都会被执行我设计的猜数字游戏需要从控制台获取玩家输入的数字,有多个异常处理可以编写如下代码:/SetLook&Feeltry(javax.swing.UTManager.SetLookAndFeel(com.sun.java,swing,plaf.windows.WindowsLOokAndFeeK);catch(Exceptione)e.PrintStackTraceO;)/try,catch的异常管理
30、try(guess=Integer.parselnt(JTextFieldl.getText();catch(Exceptione)使用异常机制的诸多好处使得程序更健壮,界面更友善。把程序的业务逻辑与错误处理分开,代码更合理,更美观。异常可以分层次处理,使得代码更简洁。同类的异常可以归到一类一起处理,处理更方便。4. 3类与数据结构实现首先搭建JaVa程序框架。翻开ECliPSe,新建名为GUeSSNUnlberGanIe的工程,然后新建名为GuessNumber的Java类。GuessNumber加上适宜的javadoc(1)随机数的产生我们可以借助JavaAPI提供的Randonl类来产
31、生一个随机数。首先在main函数中参加以下三行代码:/新建一个随机数产生器,然后生成一个1到lOO之间的整数。Randomrandom=newRandom0;intnumber=random,nextlnt(100);第一句定义了一个类型是Random类的变量random(JaVa语言区分大小写,所以Random和random是不同意思),并且用new操作符生成一个Random类的实例赋给random变量。random变量实际上是一个参照,指向内存中用new操作符新建的Random类的实大多数情况下可以把random宜接看做是一个Randonl类的实例,可以通过“random”加上”.操作符”
32、来调用RandOm类的方法,用random,nextInt(100)来获取一个1至100之间的随机数。第二句语句定义一个整型变量number来保存随机产生的整数,并且用直接初始化的方法把random产生的随机数赋给number变量。(如图4.3.1)图4.3.1(2)输入输出界面标准输入输出(StandardI/O)是指可以被应用程序使用的信息流。比方,应用程序可以从标准输入(Slandardinput)读取数据,向标准输出(SIandardOUIPUI)写数据,把出错信息发送到标准错误(Standarderror)o猜数字游戏主要用到标准输入,即控制台输入。用SyStem.out.print
33、in进行控制台输出,用System.in进行控制台输入。它是一个纯粹的输入流,而猜数字游戏主要是通过控制台获取玩家的字符输入,那么需要把它包装成一个BufferedReader实例来使用BufferedReaderinput=newBufferedReader(newInputStreamReader(System,in);这时,input就是一个能处理来自控制台输入的、支持UniCode的、可以整行读取的一个BufferedReader实例,比方能通过inpul.readLine()方法获取玩家在控制台整整一行的输入。(如图)图五、测试运行4.1 系统测试方案5. 2运行结果分析编译成功,进
34、入游戏,显示游戏说明输入所猜测的数字,系统会自动提示下面是输入过大,输入过小,输入错误,三种情况:当输入正确时,游戏结束,显示如下提示当COlInter的值为1时,便执行CaSeI里面的语句,即打印“你是神么?这也太给力了吧!”的字样.当CoUnter的值为2至7时,都打印“这么快就猜对了,你很SnIart啊!”字样。当counter的值不是1至7时,便执行default语句,打印猜了半天才猜出来,小同志,尚须努力啊!点击确定后,系统自动弹出计时功能和计数功能的消息框。六、设计体会经过这几天努力终于完成了这份课设,虽然在操作的过程中我都遇到了许多的困难,但是却使我得到了许多的意外收获。在选题初
35、期时,我很拿不定主意,不知道选什么题比拟好,后来衡量了一下自己在学习过程中的强势和劣势,最终敲定的题目是猜数字游戏。平时学习的时候总觉得内容挺多的,可是当我自己为了完成要完成一个JAVA小游戏而在图书馆翻阅资料时候才发现自己所学的只是皮毛,所以我决定以后一定要多学一点。JaVa是一种简单的,面向对象的,分布式的,解释型的,健壮平安的,结构中立的,可移植的,性能优异、多线程的动态语言。老师刚把题目公布的时候,看到这些题目确实感到有些得陌生,于是我便到图书馆收集有关的书籍,在书中我了解到了相关的知识,便按着书上的内容进行编写相关的代码。在写代码的过程中我们也遇到了一些的困难,就是对一些有关JaVa
36、语言的不理解,我便又到课本中去查找。一个工程的成败关键不全在于技术。要想在一个愉快的气氛里边以轻松的心情来完成紧张的工作,严谨的态度和工作的热情都是必不可少的。在我制作的过程中,我在教室里用eclipse里编写相关的代码,并运行出来,在其中我也犯了一些常见的毛病,,publicstaticvoidmain(Stringargs)中的大小写问题,还有计时模块的编写,总是找不到好的方法,最后在我的努力下,终于找到一个简便的方法显示游戏用时,还有很多问题就不一一列举了,但在eclipse下划红线的帮助下,终于将困难迎刃而解,于是我便将运行出来的结果截图,安排在报告中。以前上课时有许多的问题并没有真正
37、的认识到,但通过这次试验的制作,使我掌握了许多更重要的知识点。在本次试验中,给我印象最为深刻的是程序的编译过程中,从中我学到了许多以前学有学会和没有学到的函数。比方do-while语句的判断,控制台输入的概念和方法。除此之个还不其它一些函数也得到了稳固。以前总是模模糊糊的,现在心里十分清楚了。平时的学习自身只注意到了书本上面的知识,对一些类及方法的运用显得只能,这次的学习让我从纸上谈兵逐渐的过渡到实践出真知。老师先是要我们找可以运行的小游戏的代码,才可以做模板,就这样我找了许屡次,最后终于找到了一个,程序就将是我成功的关键。最后我的课程设计结束了,但是它留给我的印象是不可磨灭的。以前感觉学的都
38、用不到,现在才知以前学的用途真大,想学编程是少不了的。以前感觉,编程是多么的神秘,现在通过自己实践,才知道,编程也没那么神秘,但却很有乐趣的。那种看到自己亲手编的程序运行出结果的感觉是无法用言语表达的。主要参考文献1耿祥义.JAVA大学实用教程电子工业出版社20052耿祥义.JAVA大学实用教程实验指导电子工业出版社20053张广彬,孟红蕊,张永宝.Java课程设计案例精编清华大学出版社20074黄晓东.Java课程设计案例精编(第一版)中国水利水电出版社20045美CayS.Horstmann程峰等译.JAVA2核心技术机械工业出版社20036黄明等,梁旭,周绍斌.Java课程设计电子工业出
39、版社20067杨昭.二级JaVa语言程序设计教程中国水利水电出版社20068赵文靖.Java程序设计根底与上机指导清华大学出版社20069赵毅主.跨平台程序设计语言一Java西安电子科技大学出版社200610王路群.Java高级程序设计中国水利水电出版社2006口1夏宽理.Java语言程序设计机械工业出版社.2008.12丁新民.Java程序设计教程人民邮电出版社.2006.13(美)AnilHeInrajani(著),韩坤、徐琦(译).Java敏捷开发一使用SPring、Hibernate和ECliPSe人民邮电出版社.2007.14北京邮电大学世纪学院实验、实习、课程设计报告撰写格式与要求,2005.指导教师签字:年月日