北京邮电大学世纪学院
实验、实习、课程设计报告撰写格式与要求
(试行)
一、实验报告格式要求
1、有实验教学手册,按手册要求填写,若无则采用统一实验报告封面。
2、报告一律用钢笔书写或打印,打印要求用A4纸;页边距要求如下:页边距上下各为2.5厘米,左右边距各为2.5厘米;行间距取固定值(设置值为20磅);字符间距为默认值(缩放100%,间距:标准)。
3、统一采用国家标准所规定的单位与符号,要求文字书写工整,不得潦草;作图规范,不得随手勾画。
4、实验报告中的实验原始记录,须经实验指导教师签字或登记。
二、实习报告、课程设计报告格式要求
1、采用统一的封面。
2、根据教学大纲的要求手写或打印,手写一律用钢笔书写,统一采用国家标准所规定的单位与符号,要求文字书写工整,不得潦草;作图规范,不得随手勾画。打印要求用A4纸;页边距要求如下:页边距上下各为2.5厘米,左右边距各为2.5厘米;行间距取固定值(设置值为20磅);字符间距为默认值(缩放100%,间距:标准)。
三、报告内容要求
1、实验报告内容包括:实验目的、实验原理、实验仪器设备、实验操作过程、原始数据、实验结果分析、实验心得等方面内容。
2、实习报告内容包括:实习题目、实习任务与要求、实习具体实施情况(附上图表、原始数据等)、实习个人总结等内容。
3、课程设计报告或说明书内容包括:课程设计任务与要求、总体方案、方案设计与分析、所需仪器设备与元器件、设计实现与调试、收获体会、参考资料等方面内容。
四、课内实践课报告撰写要求
1、大型作业类的按课程设计要求撰写;
2、带实习性质的按实习要求撰写;
3、其余的按实验要求撰写。
五、其它
由于存档的需要,所有报告必须双面打印,请教师做好把关工作。
北京邮电大学世纪学院
教务处
2005、12
课程设计报告
课程设计名称专班
学姓业级号名指导教师
成绩
2011年3月10日
目录
目录根据word 生成
一、设计任务与要求
1.1设计任务与要求
程序设计专题的任务与要求:
课程设计的任务:
根据所选题目,完成课程设计的分析、设计和编码,写出课程设计报告。
(1)掌握Java 的语言规范,面向对象的核心概念和特性;
(2)掌握Java 的编程技术,包括异常处理,图形界面设计,多线程,网络通信程序等;
(3)掌握Java 应用软件的开发环境和开发过程;
(4)掌握面向对象的思想和程序设计方法。
课程设计的要求:
设计一个猜数字游戏程序,该游戏可以由程序随机产生整数,玩游戏者通过由用户输入数字来匹配上面所产生的数字。用户随机输入数字,当与计算机产生的随机数相符合时,计算机将提醒用户,游戏成功的信息,当有偏差时,将会提醒偏差,如偏大或者是偏小。
1.2选题目的与意义
通过选择猜数字游戏这个题目,可以让我掌握Java 中的包和类,并且可以灵活的使用my eclipse 软件。同时更加深入的了解字符界面的编程过程。使我更熟练的掌握Java 程序框架的搭建和类的创建格式。在分析阶段,要进行面向对象的需求分析、系统设计、画出相应的需求分析图、系统设计模型图,这些工作更能锻炼我的逻辑思维,更能培养我思考的全面性。让我学会了多角度思考问题,对我以后的编程奠定了更好的基础。
二、需求分析
2.1用户需求分析
设计一个猜数字游戏程序,要求具体如下特性:
(1)趣味性:要求游戏内容丰富多彩,语言风趣幽默。
(2)大众性:要求游戏界面操作简单,游戏规则简单易懂。
(3)合理性:游戏设计严谨,有条理,具体需求如下
①输入任意一个数字。数字的要求是1—100的自然数即可。
②系统对您输入的数字进行判断。
如果玩家输入的数字与计算机随机生成数相比较,输入的数字比随机生成数
小. 系统将提示您,数字太小请您重新输入。
如果玩家输入的数字与计算机随机生成数相比较,如果输入的数字比随机生
成数大。系统将提示您,数字太大请您重新输入。
如果玩家输入的字符不是合法字符,系统将提示您,您输入的数字不合法,
请从新输入。
③游戏开始时,系统自动记录您猜数字的时间,结束后显示游戏共花费的时间。④每猜测一次,系统会记录下来,游戏结束后,显示共猜测多少次。
⑤在游戏开始时,自动显示游戏规则。
⑥在游戏结束时,可以选择关闭游戏,或者再来一局。
2.2开发环境分析
硬件要求能运行Windows 9.X 操作系统的微机系统。JAV A 程序设计语言及相应的集成开发环境,J2SDK 和eclipse 开发工具。J2SDK 简介:j2sdk 是就阿Java 的开发环境包。它包含JDK(开发工具包)和JRE(运行时环境包)。JDK包含JRE ,JDK是开发人员必装软件,JRE是客户端运行时必装软件,J2SDK就是JDK,J2JRE就是JRE。Jcreator是开发JAVA 的软件。开发JAVA 也可以用记事本开发原程序
eclipse 简介:Eclipse是一个开放源代码的、基于Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java 开发工具(Java Development Tools,JDT)。Eclipse的设计思想是:一切皆为插件。它自身的核心是非常小的,其它所有的功能都以插件的形式附加到该核心上。Eclipse中三个最吸引人的地方:一是它创新性的图形API,即SWT/JFace,在此之前,我曾经用过Java 的AWT/SWING来开发Windows 应用程序,AWT/SWING其界面客观地讲不够美观,而且界面响应速度比较慢;而SWT/JFace则大大改善了Java 在这方面的能力。二是它的插件机制。三是利用它的插件机制开发的众多功能强大的插
三、系统设计
3.1系统总体设计
猜数字游戏—游戏随机给出一个1—100(包括1和100) 之间的数字,然后让你猜是什么数字。你可以随便猜一个数字,游戏会提示太大还是太小,从而缩小结果范围。经过几次猜测与提示后,最终推出答案。(系统设计如图3.1)游戏界面
游戏开始游戏说明重新开始关闭游戏
产生随机
数输出字符记录次数记录时间
图3.1
游戏界面:采用图形界面显示。页面有如下功能:开始,结束,重来,帮助。
游戏开始后,由计算机产生一个1-100的随机数,不显示在图形界面,但显示在字符界面。
用户只需输入所猜想的数字,打印在输入框内,按“确定”按钮表示确定,
游戏返回提示语句,按照提示语句操作,直至游戏结束。
同时,计算机开始对游戏进行计时和计数功能。
游戏过程中,如果不想继续玩了,可以直接退出,想重新开局,按“重新开始”按钮即可。
想控制界面大小只需拖拽图形界面边框即可。
游戏结束后,可以选择“关闭”游戏,或者是“重新开始”。
3.2功能模块设计
(模块功能设计如图3.2) 模块
的组
成
游戏说
明模块输入输出模块计时模块猜数次数模块成绩判定模块开始前
显示规
则产生随机数判断该数是否合法开始时记录初始时间猜中后记录结束时间初始值为零每猜测一次自加1由猜测次数决定
输出猜
测的数
字给出提示语言
图3.2
3.3类的设计
3.3.1类的定义
类是把具有相同属性的事物划分为一类,从而得出抽象的概念。在面向对象程序设计中,类是一个独立的程序单位,是具有相同属性和方法的一组对象的集合,它为属于该类的全部对象提供了抽象描述。类的概念使我们能对属于该类的全部对象进行统一的描述。在定义对象之前应先定义类。
描述一个类需要指明下述三个方面内容:
类标识:类的一个有别于其他类的名字。
属性说明:用来描述相同对象的静态特征。
方法说明:用来描述相同对象的动态特征。
3.3.2定义类的格式
class 类名
数据成员
成员方法
类的结构是由类说明和类体两部分组成的。
类的说明部分由关键字class 与类名组成,类名的命名遵循Java 标识符的定义规则。
类体是类声明中花括号所包括的全部内容,它又是由数据成员(属性)和成员方法(方法)两部分组成。
数据成员描述对象的属性;成员方法则刻画对象的行为或动作,每一个成员方法确定一个功能或操作。
3.3.3类的分类
从用户的角度看,Java 源程序中的类分为两种:
系统定义的类:即Java 类库,它是系统定义好的类。Java 语言由语法规则和类库两部分组成,语法规则确定Java 程序的书写规范;类库则提供了Java 程序与运行它的系统软件(Java 虚拟机)之间的接口。
用户自定义类:系统定义的类虽然实现了许多常见的功能,但是用户程序仍然需要针对特定问题的特定逻辑来定义自己的类。
进行Java 程序设计,实际上就是定义类的过程。一个Java 源程序文件往往是由许多个类组成的。
3.3.4类的搭建
首先,搭建Java 程序框架。打开Eclipse,新建名为GuessNumberGame 的项目,然后新建名为GuessNumber 的Java 类。给GuessNumber 加上合适的javadoc。
(1)Random(随机数)
Random(随机数)的功能就是借助Java API 提供的Random 类来产生一个随机数。定义一个整型变量number 来保存随机产生的整数,并且用直接初始化的方法把random 产生的随机数赋给number 变量。
Random 类是在java.util 这个包中。建立时可以手动在源程序顶部输入import
java.util.Random;语句来申明该程序将要使用java.util 包中的Random 类。也可以运用Eclipse,把光标移动到有红色波浪线的Random 上,然后按下Ctrl+Shift+M,Eclipse会自动完成导入的工作。此时保存一下源代码,警告就会消失。
四、程序实现
4.1程序流程图(如图4.1)
开始
由计算机产生随机数x
系统开始计时
由用户输入一个数y
x>y
N
输入的大了,再小一点吧Y 输入的小了,再大一点吧
x=y
系统结束计时
系统统计猜数次数
结束
图4.1
4.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;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
/**
*@author陈雪莹
*
*有趣的猜数字游戏
*/public class GuessNumber extends javax.swing.JFrame {
{
//SetLook &Feel
try {//设置窗口外观为windows 外观
javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
}catch(Exceptione) {
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 main 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间的随机数
}
/**
*初始化窗口组件
*/
private void initGUI(){
try {
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
毁窗口
getContentPane().setLayout(null); //设置窗口布局为绝对布局//窗口关闭时销
{
jLabel1=new JLabel();
getContentPane().add(jLabel1);
jLabel1.setText("欢迎进入有趣的猜数字游戏,游戏规则如下:
"+"游戏随机产生1-100的整数,玩家通过输入数字来匹配所产生的数字。
"+" 用户随机输入数字,当与计算机产生的随机数相符合时,计算机将提醒用户,游戏成功的信息
"+
" 当有偏差时,将会提醒偏差,如偏大或者是偏小。结束后记录游戏时间和猜测次数
"+
"我心里有一个1到100之间的整数,你猜是什么?");
jLabel1.setBounds(7,0, 420, 147);
}
{
jTextField1=new JTextField();
getContentPane().add(jTextField1);
jTextField1.setBounds(42,168, 112, 28);
jTextField1.addKeyListener(newKeyAdapter(){//文本框添加键盘按键监听-监听回车键
public void keyPressed(KeyEventevt) {
jTextField1KeyPressed(evt);
}
});
}
{
jButton1=new JButton();
getContentPane().add(jButton1);
jButton1.setText("确定");
jButton1.setBounds(182,168, 77, 28);
jButton1.addActionListener(newActionListener(){
public void actionPerformed(ActionEventevt) {
jButton1ActionPerformed(evt);
}
});
}
{//按钮被点击时执行该方法//按钮添加监听//设置标签位置
jButton2=new JButton();
getContentPane().add(jButton2);
jButton2.setText("重新开始");
jButton2.setBounds(280,168, 91, 28);
jButton2.addActionListener(newActionListener(){
public void actionPerformed(ActionEventevt) {
jButton2ActionPerformed(evt);
}
});
}
pack();this.setSize(442,265); //设置窗口大小
setLocationRelativeTo(null);//设置窗口在显示器居中显示
}catch (Exceptione) {
e.printStackTrace();
}
}
/**
*“确定”按钮事件监听
*@paramevt
*/
private void jButton1ActionPerformed(ActionEventevt) {
int guess=0;//记录玩家所猜测的数字
counter++;//计数器增加一。
//try,catch的异常管理。
try {
//获取玩家的输入
guess=Integer.parseInt(jTextField1.getText());
}catch (Exceptione) {
//如果玩家不是输入一个合法的整数,则让他重新输入。
JOptionPane.showMessageDialog(null," 数字不合法,请输入一个1-100之间的整数!"); //显示一个对话框
jTextField1.setText("");//清空文本框内容jTextField1.requestFocus();//文本框获取输入焦点
return ;
}//对玩家的输入进行判断。
if (guess>number){
JOptionPane.showMessageDialog(null,"输入的大了,再小一点吧!");
jTextField1.setText("");
jTextField1.requestFocus();
return ;
}
if (guess
JOptionPane.showMessageDialog(null,"输入的小了,再大一点吧!");
jTextField1.setText("");
jTextField1.requestFocus();
return ;
}
if (guess==number) {
endTime=System.currentTimeMillis();
//判断成绩。
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.showMessageDialog(null,"猜了半天才猜出来,小同志,尚须努力啊!");
break;
}
JOptionPane.showMessageDialog(null,"您总共猜了"+counter+"次
"+(endTime-startTime)/1000+"秒的时间答对正确答案!");
}
jTextField1.setText("");
jTextField1.requestFocus();
}共花了
private void jButton2ActionPerformed(ActionEventevt) {//重新开始
Random random =new Random();//重新生成随机数
number =random.nextInt(100);//产生一个1-100间的随机数
counter=0;//记录玩家猜测的次数
jTextField1.setText("");
startTime =System.currentTimeMillis();
}
private void jTextField1KeyPressed(KeyEventevt) {
//监听文本框回车
if (evt.getKeyCode()==KeyEvent.VK_ENTER){
jButton1.doClick();//文本框按回车键执行“确定”按钮的事件
}
}
}
4.2.2关键算法
(1)记录猜测次数模块
//记录玩家猜测的次数
counter =0;
//计数器增加一
counter++;
首先定义了一个counter 变量来记录玩家猜测的次数,并直接初始化为0。在打印一行游戏提示以后,便开始一个do-while 语句。
在do-while 语句中,首先用异常处理语句获取玩家的输入,如果玩家输入不合法,提示以后用continue 语句从头重新执行循环语句,等待玩家的输入。从而,guess变量一定包含一个合法的整数。之后要对玩家的输入进行判断。
如果玩家的猜测太大或者太小,都做出提示。接着把计数器增加1,表示玩家做过一次猜测。
最后便是do-while 语句的判断:当玩家猜测的数字和随机产生的答案不同,则再次进入循环,否则便结束循环,执行下面的代码。(用Eclipse 的Alt+/快捷键帮助编写do-while 语句。)
(2)输入输出模块//获取玩家的输入
guess=Integer.parseInt(jTextField1.getText());
//如果玩家不是输入一个合法的整数,则让他重新输入
JOptionPane.showMessageDialog(null,"数字不合法,请输入一个1-100之间的整数!");jTextField1.setText("");
jTextField1.requestFocus();
return ;
}//对玩家的输入进行判断。
if (guess>number){
JOptionPane.showMessageDialog(null,"输入的大了,再小一点吧!");
jTextField1.setText("");
jTextField1.requestFocus();
return ;
}
if (guess
JOptionPane.showMessageDialog(null,"输入的小了,再大一点吧!");
jTextField1.setText("");
jTextField1.requestFocus();
return ;
}
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.showMessageDialog(null,"猜了半天才猜出来,小同志,尚须努力啊!");
break;
}
JOptionPane.showMessageDialog(null,"您总共猜了"+counter+"次
"+(endTime-startTime)/1000+"秒的时间答对正确答案!");
}
jTextField1.setText("");
jTextField1.requestFocus();
}共花了这也太给力了吧!!
switch 语句是基于整型表达式的条件判断语句,猜数字用它来进行成绩判断。可以看出,switch语句是和若干case 语句和一个default 语句搭配使用的。代码中的switch 语句用counter 变量的值进行判断。
当counter 的值为1时,便执行case 1里面的语句,即打印“你是神么??这也太给力了吧!!”的字样,随后的break 语句表示整个switch 语句执行到这里结束了。
当counter 的值为2时,便执行case 2里面的语句。可以发现case 2到case 6都没有break 语句,这表示依次执行下面的语句,从而counter 的值为2至7时,都打印“这么快就猜对了,你很smart 啊!”字样。
当counter 的值不是1至7时,便执行default 语句,打印“猜了半天才猜出来,小同志,尚须努力啊!”的字样。
(4)计时模块
计时模块的代码分别写在游戏的开始和游戏的结束,取得时间差,以毫秒为单位。long startTime =System.currentTimeMillis();
long endTime =System.currentTimeMillis();
(5)异常处理
Java 语言提供了异常(Exception)处理机制帮助程序员发现并处理异常。所谓异常,就是在程序执行过程中能干扰程序正常流程的事件。导致异常的原因很多,比如文件找不到、数组越界、除以零等。当异常出现时,一个异常对象将被自动生成并传递给Java“运行时环境”(runtimesystem),说得专业一点,就是抛出一个异常。异常对象包含了异常类型、程序运行状态等信息。“运行时环境”得到异常对象后便打断程序的正常流程,自动寻找一个专门处理该异常的代码块来解决问题。这样的代码块称作异常句柄(ExceptionHandler)。你可以在异常句柄中尝试修复错误、重试或者报错,或者实在无法进行下去的时候来个自我了断。如果“运行时环境”找不到异常句柄,Java程序便会自行中断。一个典型的异常处理如下:
try {
statement(s);
}catch (exceptiontype1name) {
statement(s);
}catch (exceptiontype2name) {
statement(s);
}finally {
statement(s);
}
其中:
try 语句括起来的语句可能抛出异常。try 语句至少要搭配一个catch 语句或finally 语句,不能单独使用。
catch 语句必须和一个try 语句配套使用,根据异常类型(exceptiontype)分别处理不同的异常。也就是说,Java有许多预先定义的异常,你可以通过多个catch 语句对它们分门别类地处理。你还可以自己定义异常类型。如果try 语句块中没有抛出异常,这里自然不会被执行。
finally 语句也必须和一个try 语句配套使用,与catch 语句不同,无论try 语句块中是否抛出异常,finally所包括的语句块都会被执行
我设计的猜数字游戏需要从控制台获取玩家输入的数字,有多个异常处理
可以编写如下代码:{
//SetLook &Feel
try {javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
}catch(Exceptione) {
e.printStackTrace();
}
}
//try,catch的异常管理。
try {
guess=Integer.parseInt(jTextField1.getText());
}catch (Exceptione) {
使用异常机制的诸多好处
使得程序更健壮,界面更友善。
把程序的业务逻辑与错误处理分开,代码更合理,更美观。
异常可以分层次处理,使得代码更简洁。
同类的异常可以归到一类一起处理,处理更方便。
4.3类与数据结构实现
首先搭建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语言区分大小写,所以Random 和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)输入输出界面
标准输入输出(StandardI/O)是指可以被应用程序使用的信息流。比如,应用程序可以从标准输入(Standardinput)读取数据,向标准输出(Standardoutput)写数据,把出错信息发送到标准错误(Standarderror)。猜数字游戏主要用到标准输入,即控制台输入。用System.out.println 进行控制台输出,用System.in 进行控制台输入。它是一个纯粹的输入流,而猜数字游戏主要是通过控制台获取玩家的字符输入,则需要把它包装成一个BufferedReader 实例来使用
BufferedReader input =new BufferedReader(
new InputStreamReader(System.in));
这时,input就是一个能处理来自控制台输入的、支持Unicode 的、可以整行读取的一个BufferedReader 实例,比如能通过input.readLine()方法获取玩家在控制台整整一行的输入。(如图
4.3.2)
图4.3.2
五、测试运行
5.1系统测试方案
5.2运行结果分析
编译成功,进入游戏,显示游戏说明
输入所猜测的数字,系统会自动提示
下面是输入过大,输入过小,输入错误,三种情况:
当输入正确时,游戏结束,显示如下提示
当counter 的值为1时,便执行case 1里面的语句,即打印“你是神么??
了吧!!”的字样
当counter 的值为2至7时,都打印“这么快就猜对了,你很smart 啊!”字样。
当counter 的值不是1至7时,便执行default 语句,打印猜了半天才猜出来,小同志,
尚须努力啊!这也太给力
点击确定后,系统自动弹出计时功能和计数功能的消息框。
六、设计体会
C 语言是一种。它既具有的特点,又具有的特点。它由美国贝尔研究所的D.M.Ritchie 于1972年推出。1978后,C语言已先后被移植到大、中、小及微型机上。它可以作为工作系统设计语言,编写系统,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C 语言,适于编写系统软件,三维,二维图形和动画。具体应用比如单片机以及以前上课时有许多的问题并没有真正的认识到,但通过这次试验的制作,使我掌握了许多更重要的知识点。
在本次试验中,给我印象最为深刻的是程序的编译过程中,从中我学到了许多以前学有学会和没有学到的函数。比如do-while 语句的判断,控制台输入的概念和方法。除此之个还不其它一些函数也得到了巩固。以前总是模模糊糊的,现在心里十分清楚了。平时的学习自身只注意到了书本上面的知识,对一些类及方法的运用显得只能,这次的学习让我从纸上谈兵逐渐的过渡到实践出真知。老师先是要我们找可以运行的小游戏的代码,才可以做模板,就这样我找了许多次,最后终于找到了一个,程序就将是我成功的关键。
最后我的课程设计结束了,但是它留给我的印象是不可磨灭的。以前感觉学的都用不到,现在才知以前学的用途真大,想学编程是少不了的。以前感觉,编程是多么的神秘,现在通过自己实践,才知道,编程也没那么神秘,但却很有乐趣的。那种看到自己亲手编的程序运行出结果的感觉是无法用言语表达的。
北京邮电大学世纪学院
实验、实习、课程设计报告撰写格式与要求
(试行)
一、实验报告格式要求
1、有实验教学手册,按手册要求填写,若无则采用统一实验报告封面。
2、报告一律用钢笔书写或打印,打印要求用A4纸;页边距要求如下:页边距上下各为2.5厘米,左右边距各为2.5厘米;行间距取固定值(设置值为20磅);字符间距为默认值(缩放100%,间距:标准)。
3、统一采用国家标准所规定的单位与符号,要求文字书写工整,不得潦草;作图规范,不得随手勾画。
4、实验报告中的实验原始记录,须经实验指导教师签字或登记。
二、实习报告、课程设计报告格式要求
1、采用统一的封面。
2、根据教学大纲的要求手写或打印,手写一律用钢笔书写,统一采用国家标准所规定的单位与符号,要求文字书写工整,不得潦草;作图规范,不得随手勾画。打印要求用A4纸;页边距要求如下:页边距上下各为2.5厘米,左右边距各为2.5厘米;行间距取固定值(设置值为20磅);字符间距为默认值(缩放100%,间距:标准)。
三、报告内容要求
1、实验报告内容包括:实验目的、实验原理、实验仪器设备、实验操作过程、原始数据、实验结果分析、实验心得等方面内容。
2、实习报告内容包括:实习题目、实习任务与要求、实习具体实施情况(附上图表、原始数据等)、实习个人总结等内容。
3、课程设计报告或说明书内容包括:课程设计任务与要求、总体方案、方案设计与分析、所需仪器设备与元器件、设计实现与调试、收获体会、参考资料等方面内容。
四、课内实践课报告撰写要求
1、大型作业类的按课程设计要求撰写;
2、带实习性质的按实习要求撰写;
3、其余的按实验要求撰写。
五、其它
由于存档的需要,所有报告必须双面打印,请教师做好把关工作。
北京邮电大学世纪学院
教务处
2005、12
课程设计报告
课程设计名称专班
学姓业级号名指导教师
成绩
2011年3月10日
目录
目录根据word 生成
一、设计任务与要求
1.1设计任务与要求
程序设计专题的任务与要求:
课程设计的任务:
根据所选题目,完成课程设计的分析、设计和编码,写出课程设计报告。
(1)掌握Java 的语言规范,面向对象的核心概念和特性;
(2)掌握Java 的编程技术,包括异常处理,图形界面设计,多线程,网络通信程序等;
(3)掌握Java 应用软件的开发环境和开发过程;
(4)掌握面向对象的思想和程序设计方法。
课程设计的要求:
设计一个猜数字游戏程序,该游戏可以由程序随机产生整数,玩游戏者通过由用户输入数字来匹配上面所产生的数字。用户随机输入数字,当与计算机产生的随机数相符合时,计算机将提醒用户,游戏成功的信息,当有偏差时,将会提醒偏差,如偏大或者是偏小。
1.2选题目的与意义
通过选择猜数字游戏这个题目,可以让我掌握Java 中的包和类,并且可以灵活的使用my eclipse 软件。同时更加深入的了解字符界面的编程过程。使我更熟练的掌握Java 程序框架的搭建和类的创建格式。在分析阶段,要进行面向对象的需求分析、系统设计、画出相应的需求分析图、系统设计模型图,这些工作更能锻炼我的逻辑思维,更能培养我思考的全面性。让我学会了多角度思考问题,对我以后的编程奠定了更好的基础。
二、需求分析
2.1用户需求分析
设计一个猜数字游戏程序,要求具体如下特性:
(1)趣味性:要求游戏内容丰富多彩,语言风趣幽默。
(2)大众性:要求游戏界面操作简单,游戏规则简单易懂。
(3)合理性:游戏设计严谨,有条理,具体需求如下
①输入任意一个数字。数字的要求是1—100的自然数即可。
②系统对您输入的数字进行判断。
如果玩家输入的数字与计算机随机生成数相比较,输入的数字比随机生成数
小. 系统将提示您,数字太小请您重新输入。
如果玩家输入的数字与计算机随机生成数相比较,如果输入的数字比随机生
成数大。系统将提示您,数字太大请您重新输入。
如果玩家输入的字符不是合法字符,系统将提示您,您输入的数字不合法,
请从新输入。
③游戏开始时,系统自动记录您猜数字的时间,结束后显示游戏共花费的时间。④每猜测一次,系统会记录下来,游戏结束后,显示共猜测多少次。
⑤在游戏开始时,自动显示游戏规则。
⑥在游戏结束时,可以选择关闭游戏,或者再来一局。
2.2开发环境分析
硬件要求能运行Windows 9.X 操作系统的微机系统。JAV A 程序设计语言及相应的集成开发环境,J2SDK 和eclipse 开发工具。J2SDK 简介:j2sdk 是就阿Java 的开发环境包。它包含JDK(开发工具包)和JRE(运行时环境包)。JDK包含JRE ,JDK是开发人员必装软件,JRE是客户端运行时必装软件,J2SDK就是JDK,J2JRE就是JRE。Jcreator是开发JAVA 的软件。开发JAVA 也可以用记事本开发原程序
eclipse 简介:Eclipse是一个开放源代码的、基于Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java 开发工具(Java Development Tools,JDT)。Eclipse的设计思想是:一切皆为插件。它自身的核心是非常小的,其它所有的功能都以插件的形式附加到该核心上。Eclipse中三个最吸引人的地方:一是它创新性的图形API,即SWT/JFace,在此之前,我曾经用过Java 的AWT/SWING来开发Windows 应用程序,AWT/SWING其界面客观地讲不够美观,而且界面响应速度比较慢;而SWT/JFace则大大改善了Java 在这方面的能力。二是它的插件机制。三是利用它的插件机制开发的众多功能强大的插
三、系统设计
3.1系统总体设计
猜数字游戏—游戏随机给出一个1—100(包括1和100) 之间的数字,然后让你猜是什么数字。你可以随便猜一个数字,游戏会提示太大还是太小,从而缩小结果范围。经过几次猜测与提示后,最终推出答案。(系统设计如图3.1)游戏界面
游戏开始游戏说明重新开始关闭游戏
产生随机
数输出字符记录次数记录时间
图3.1
游戏界面:采用图形界面显示。页面有如下功能:开始,结束,重来,帮助。
游戏开始后,由计算机产生一个1-100的随机数,不显示在图形界面,但显示在字符界面。
用户只需输入所猜想的数字,打印在输入框内,按“确定”按钮表示确定,
游戏返回提示语句,按照提示语句操作,直至游戏结束。
同时,计算机开始对游戏进行计时和计数功能。
游戏过程中,如果不想继续玩了,可以直接退出,想重新开局,按“重新开始”按钮即可。
想控制界面大小只需拖拽图形界面边框即可。
游戏结束后,可以选择“关闭”游戏,或者是“重新开始”。
3.2功能模块设计
(模块功能设计如图3.2) 模块
的组
成
游戏说
明模块输入输出模块计时模块猜数次数模块成绩判定模块开始前
显示规
则产生随机数判断该数是否合法开始时记录初始时间猜中后记录结束时间初始值为零每猜测一次自加1由猜测次数决定
输出猜
测的数
字给出提示语言
图3.2
3.3类的设计
3.3.1类的定义
类是把具有相同属性的事物划分为一类,从而得出抽象的概念。在面向对象程序设计中,类是一个独立的程序单位,是具有相同属性和方法的一组对象的集合,它为属于该类的全部对象提供了抽象描述。类的概念使我们能对属于该类的全部对象进行统一的描述。在定义对象之前应先定义类。
描述一个类需要指明下述三个方面内容:
类标识:类的一个有别于其他类的名字。
属性说明:用来描述相同对象的静态特征。
方法说明:用来描述相同对象的动态特征。
3.3.2定义类的格式
class 类名
数据成员
成员方法
类的结构是由类说明和类体两部分组成的。
类的说明部分由关键字class 与类名组成,类名的命名遵循Java 标识符的定义规则。
类体是类声明中花括号所包括的全部内容,它又是由数据成员(属性)和成员方法(方法)两部分组成。
数据成员描述对象的属性;成员方法则刻画对象的行为或动作,每一个成员方法确定一个功能或操作。
3.3.3类的分类
从用户的角度看,Java 源程序中的类分为两种:
系统定义的类:即Java 类库,它是系统定义好的类。Java 语言由语法规则和类库两部分组成,语法规则确定Java 程序的书写规范;类库则提供了Java 程序与运行它的系统软件(Java 虚拟机)之间的接口。
用户自定义类:系统定义的类虽然实现了许多常见的功能,但是用户程序仍然需要针对特定问题的特定逻辑来定义自己的类。
进行Java 程序设计,实际上就是定义类的过程。一个Java 源程序文件往往是由许多个类组成的。
3.3.4类的搭建
首先,搭建Java 程序框架。打开Eclipse,新建名为GuessNumberGame 的项目,然后新建名为GuessNumber 的Java 类。给GuessNumber 加上合适的javadoc。
(1)Random(随机数)
Random(随机数)的功能就是借助Java API 提供的Random 类来产生一个随机数。定义一个整型变量number 来保存随机产生的整数,并且用直接初始化的方法把random 产生的随机数赋给number 变量。
Random 类是在java.util 这个包中。建立时可以手动在源程序顶部输入import
java.util.Random;语句来申明该程序将要使用java.util 包中的Random 类。也可以运用Eclipse,把光标移动到有红色波浪线的Random 上,然后按下Ctrl+Shift+M,Eclipse会自动完成导入的工作。此时保存一下源代码,警告就会消失。
四、程序实现
4.1程序流程图(如图4.1)
开始
由计算机产生随机数x
系统开始计时
由用户输入一个数y
x>y
N
输入的大了,再小一点吧Y 输入的小了,再大一点吧
x=y
系统结束计时
系统统计猜数次数
结束
图4.1
4.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;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
/**
*@author陈雪莹
*
*有趣的猜数字游戏
*/public class GuessNumber extends javax.swing.JFrame {
{
//SetLook &Feel
try {//设置窗口外观为windows 外观
javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
}catch(Exceptione) {
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 main 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间的随机数
}
/**
*初始化窗口组件
*/
private void initGUI(){
try {
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
毁窗口
getContentPane().setLayout(null); //设置窗口布局为绝对布局//窗口关闭时销
{
jLabel1=new JLabel();
getContentPane().add(jLabel1);
jLabel1.setText("欢迎进入有趣的猜数字游戏,游戏规则如下:
"+"游戏随机产生1-100的整数,玩家通过输入数字来匹配所产生的数字。
"+" 用户随机输入数字,当与计算机产生的随机数相符合时,计算机将提醒用户,游戏成功的信息
"+
" 当有偏差时,将会提醒偏差,如偏大或者是偏小。结束后记录游戏时间和猜测次数
"+
"我心里有一个1到100之间的整数,你猜是什么?");
jLabel1.setBounds(7,0, 420, 147);
}
{
jTextField1=new JTextField();
getContentPane().add(jTextField1);
jTextField1.setBounds(42,168, 112, 28);
jTextField1.addKeyListener(newKeyAdapter(){//文本框添加键盘按键监听-监听回车键
public void keyPressed(KeyEventevt) {
jTextField1KeyPressed(evt);
}
});
}
{
jButton1=new JButton();
getContentPane().add(jButton1);
jButton1.setText("确定");
jButton1.setBounds(182,168, 77, 28);
jButton1.addActionListener(newActionListener(){
public void actionPerformed(ActionEventevt) {
jButton1ActionPerformed(evt);
}
});
}
{//按钮被点击时执行该方法//按钮添加监听//设置标签位置
jButton2=new JButton();
getContentPane().add(jButton2);
jButton2.setText("重新开始");
jButton2.setBounds(280,168, 91, 28);
jButton2.addActionListener(newActionListener(){
public void actionPerformed(ActionEventevt) {
jButton2ActionPerformed(evt);
}
});
}
pack();this.setSize(442,265); //设置窗口大小
setLocationRelativeTo(null);//设置窗口在显示器居中显示
}catch (Exceptione) {
e.printStackTrace();
}
}
/**
*“确定”按钮事件监听
*@paramevt
*/
private void jButton1ActionPerformed(ActionEventevt) {
int guess=0;//记录玩家所猜测的数字
counter++;//计数器增加一。
//try,catch的异常管理。
try {
//获取玩家的输入
guess=Integer.parseInt(jTextField1.getText());
}catch (Exceptione) {
//如果玩家不是输入一个合法的整数,则让他重新输入。
JOptionPane.showMessageDialog(null," 数字不合法,请输入一个1-100之间的整数!"); //显示一个对话框
jTextField1.setText("");//清空文本框内容jTextField1.requestFocus();//文本框获取输入焦点
return ;
}//对玩家的输入进行判断。
if (guess>number){
JOptionPane.showMessageDialog(null,"输入的大了,再小一点吧!");
jTextField1.setText("");
jTextField1.requestFocus();
return ;
}
if (guess
JOptionPane.showMessageDialog(null,"输入的小了,再大一点吧!");
jTextField1.setText("");
jTextField1.requestFocus();
return ;
}
if (guess==number) {
endTime=System.currentTimeMillis();
//判断成绩。
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.showMessageDialog(null,"猜了半天才猜出来,小同志,尚须努力啊!");
break;
}
JOptionPane.showMessageDialog(null,"您总共猜了"+counter+"次
"+(endTime-startTime)/1000+"秒的时间答对正确答案!");
}
jTextField1.setText("");
jTextField1.requestFocus();
}共花了
private void jButton2ActionPerformed(ActionEventevt) {//重新开始
Random random =new Random();//重新生成随机数
number =random.nextInt(100);//产生一个1-100间的随机数
counter=0;//记录玩家猜测的次数
jTextField1.setText("");
startTime =System.currentTimeMillis();
}
private void jTextField1KeyPressed(KeyEventevt) {
//监听文本框回车
if (evt.getKeyCode()==KeyEvent.VK_ENTER){
jButton1.doClick();//文本框按回车键执行“确定”按钮的事件
}
}
}
4.2.2关键算法
(1)记录猜测次数模块
//记录玩家猜测的次数
counter =0;
//计数器增加一
counter++;
首先定义了一个counter 变量来记录玩家猜测的次数,并直接初始化为0。在打印一行游戏提示以后,便开始一个do-while 语句。
在do-while 语句中,首先用异常处理语句获取玩家的输入,如果玩家输入不合法,提示以后用continue 语句从头重新执行循环语句,等待玩家的输入。从而,guess变量一定包含一个合法的整数。之后要对玩家的输入进行判断。
如果玩家的猜测太大或者太小,都做出提示。接着把计数器增加1,表示玩家做过一次猜测。
最后便是do-while 语句的判断:当玩家猜测的数字和随机产生的答案不同,则再次进入循环,否则便结束循环,执行下面的代码。(用Eclipse 的Alt+/快捷键帮助编写do-while 语句。)
(2)输入输出模块//获取玩家的输入
guess=Integer.parseInt(jTextField1.getText());
//如果玩家不是输入一个合法的整数,则让他重新输入
JOptionPane.showMessageDialog(null,"数字不合法,请输入一个1-100之间的整数!");jTextField1.setText("");
jTextField1.requestFocus();
return ;
}//对玩家的输入进行判断。
if (guess>number){
JOptionPane.showMessageDialog(null,"输入的大了,再小一点吧!");
jTextField1.setText("");
jTextField1.requestFocus();
return ;
}
if (guess
JOptionPane.showMessageDialog(null,"输入的小了,再大一点吧!");
jTextField1.setText("");
jTextField1.requestFocus();
return ;
}
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.showMessageDialog(null,"猜了半天才猜出来,小同志,尚须努力啊!");
break;
}
JOptionPane.showMessageDialog(null,"您总共猜了"+counter+"次
"+(endTime-startTime)/1000+"秒的时间答对正确答案!");
}
jTextField1.setText("");
jTextField1.requestFocus();
}共花了这也太给力了吧!!
switch 语句是基于整型表达式的条件判断语句,猜数字用它来进行成绩判断。可以看出,switch语句是和若干case 语句和一个default 语句搭配使用的。代码中的switch 语句用counter 变量的值进行判断。
当counter 的值为1时,便执行case 1里面的语句,即打印“你是神么??这也太给力了吧!!”的字样,随后的break 语句表示整个switch 语句执行到这里结束了。
当counter 的值为2时,便执行case 2里面的语句。可以发现case 2到case 6都没有break 语句,这表示依次执行下面的语句,从而counter 的值为2至7时,都打印“这么快就猜对了,你很smart 啊!”字样。
当counter 的值不是1至7时,便执行default 语句,打印“猜了半天才猜出来,小同志,尚须努力啊!”的字样。
(4)计时模块
计时模块的代码分别写在游戏的开始和游戏的结束,取得时间差,以毫秒为单位。long startTime =System.currentTimeMillis();
long endTime =System.currentTimeMillis();
(5)异常处理
Java 语言提供了异常(Exception)处理机制帮助程序员发现并处理异常。所谓异常,就是在程序执行过程中能干扰程序正常流程的事件。导致异常的原因很多,比如文件找不到、数组越界、除以零等。当异常出现时,一个异常对象将被自动生成并传递给Java“运行时环境”(runtimesystem),说得专业一点,就是抛出一个异常。异常对象包含了异常类型、程序运行状态等信息。“运行时环境”得到异常对象后便打断程序的正常流程,自动寻找一个专门处理该异常的代码块来解决问题。这样的代码块称作异常句柄(ExceptionHandler)。你可以在异常句柄中尝试修复错误、重试或者报错,或者实在无法进行下去的时候来个自我了断。如果“运行时环境”找不到异常句柄,Java程序便会自行中断。一个典型的异常处理如下:
try {
statement(s);
}catch (exceptiontype1name) {
statement(s);
}catch (exceptiontype2name) {
statement(s);
}finally {
statement(s);
}
其中:
try 语句括起来的语句可能抛出异常。try 语句至少要搭配一个catch 语句或finally 语句,不能单独使用。
catch 语句必须和一个try 语句配套使用,根据异常类型(exceptiontype)分别处理不同的异常。也就是说,Java有许多预先定义的异常,你可以通过多个catch 语句对它们分门别类地处理。你还可以自己定义异常类型。如果try 语句块中没有抛出异常,这里自然不会被执行。
finally 语句也必须和一个try 语句配套使用,与catch 语句不同,无论try 语句块中是否抛出异常,finally所包括的语句块都会被执行
我设计的猜数字游戏需要从控制台获取玩家输入的数字,有多个异常处理
可以编写如下代码:{
//SetLook &Feel
try {javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
}catch(Exceptione) {
e.printStackTrace();
}
}
//try,catch的异常管理。
try {
guess=Integer.parseInt(jTextField1.getText());
}catch (Exceptione) {
使用异常机制的诸多好处
使得程序更健壮,界面更友善。
把程序的业务逻辑与错误处理分开,代码更合理,更美观。
异常可以分层次处理,使得代码更简洁。
同类的异常可以归到一类一起处理,处理更方便。
4.3类与数据结构实现
首先搭建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语言区分大小写,所以Random 和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)输入输出界面
标准输入输出(StandardI/O)是指可以被应用程序使用的信息流。比如,应用程序可以从标准输入(Standardinput)读取数据,向标准输出(Standardoutput)写数据,把出错信息发送到标准错误(Standarderror)。猜数字游戏主要用到标准输入,即控制台输入。用System.out.println 进行控制台输出,用System.in 进行控制台输入。它是一个纯粹的输入流,而猜数字游戏主要是通过控制台获取玩家的字符输入,则需要把它包装成一个BufferedReader 实例来使用
BufferedReader input =new BufferedReader(
new InputStreamReader(System.in));
这时,input就是一个能处理来自控制台输入的、支持Unicode 的、可以整行读取的一个BufferedReader 实例,比如能通过input.readLine()方法获取玩家在控制台整整一行的输入。(如图
4.3.2)
图4.3.2
五、测试运行
5.1系统测试方案
5.2运行结果分析
编译成功,进入游戏,显示游戏说明
输入所猜测的数字,系统会自动提示
下面是输入过大,输入过小,输入错误,三种情况:
当输入正确时,游戏结束,显示如下提示
当counter 的值为1时,便执行case 1里面的语句,即打印“你是神么??
了吧!!”的字样
当counter 的值为2至7时,都打印“这么快就猜对了,你很smart 啊!”字样。
当counter 的值不是1至7时,便执行default 语句,打印猜了半天才猜出来,小同志,
尚须努力啊!这也太给力
点击确定后,系统自动弹出计时功能和计数功能的消息框。
六、设计体会
C 语言是一种。它既具有的特点,又具有的特点。它由美国贝尔研究所的D.M.Ritchie 于1972年推出。1978后,C语言已先后被移植到大、中、小及微型机上。它可以作为工作系统设计语言,编写系统,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C 语言,适于编写系统软件,三维,二维图形和动画。具体应用比如单片机以及以前上课时有许多的问题并没有真正的认识到,但通过这次试验的制作,使我掌握了许多更重要的知识点。
在本次试验中,给我印象最为深刻的是程序的编译过程中,从中我学到了许多以前学有学会和没有学到的函数。比如do-while 语句的判断,控制台输入的概念和方法。除此之个还不其它一些函数也得到了巩固。以前总是模模糊糊的,现在心里十分清楚了。平时的学习自身只注意到了书本上面的知识,对一些类及方法的运用显得只能,这次的学习让我从纸上谈兵逐渐的过渡到实践出真知。老师先是要我们找可以运行的小游戏的代码,才可以做模板,就这样我找了许多次,最后终于找到了一个,程序就将是我成功的关键。
最后我的课程设计结束了,但是它留给我的印象是不可磨灭的。以前感觉学的都用不到,现在才知以前学的用途真大,想学编程是少不了的。以前感觉,编程是多么的神秘,现在通过自己实践,才知道,编程也没那么神秘,但却很有乐趣的。那种看到自己亲手编的程序运行出结果的感觉是无法用言语表达的。