java课程设计运算测试Word格式.docx
《java课程设计运算测试Word格式.docx》由会员分享,可在线阅读,更多相关《java课程设计运算测试Word格式.docx(11页珍藏版)》请在冰豆网上搜索。
该程序实现的功能是产生一个100以内的加减法算术题,在程序后台将此算术式结果保存到一个参数中,通过和用户从图形界面输入的答案对比,判断答案是否正确,并弹出对话框提示信息。
界面部分,主窗体包含的控件主要有:
JLabel,用于显示提示语句;
JTextField,用于用户输入答案;
JButton,用于处理操作。
界面初始化时,将一些按键,例如完成测试、提交答案等按键设置成不可用,这样可以防止误操作,每次按钮按下时,都有相应的按钮属性被更改。
后台部分,核心就是产生随机算术式。
用一个字符串数组存放加和减的操作符,产生一个大等于于0小于2的随机数,即为0或1,通过此随机数对应操作符数组中的字符,决定产生的算术式为加法或者减法,后产生两个100以内的随机数,然后通过以上判断求出结果,保存在私有变量中,同时对应的产生一个通过连接完成的字符串,作为界面题目输出的内容,以上便完成了随机算术式的生成。
程序结构
程序主要流程图如下:
函数的结构如下:
publicclassYunSuanQiextendsJFrameimplementsActionListener{
publicyunSuanQi(){//构造函数}
publicvoidcreatQuestion(){//新建题目}
publicvoidtest(){//检测是否做到10道题}
publicvoidshowMe(){//窗体显示函数}
publicvoidactionPerformed(ActionEvente){//事件处理}
publicstaticvoidmain(String[]args){//主函数}
}
各模块功能及程序说明
publicyunSuanQi(){}
该函数主要是窗体的初始化,包括添加窗体、设置控件位置等,还包括对一些参数的初始化。
publicvoidcreatQuestion(){}
该函数是程序的核心,目的是创建一道新的算术题,程序开始先产生三个随机数,其中两个为100以内的整数,用于运算,另外一个为0或1,用作随机选择减法操作,根据选择好的运算,给一个字符变量值为对应的操作符,完成对应运算,将结果保存到成员变量中,等待比较,同时产生一个字符串,内容为:
m+"
"
+fl[0]+n+"
=?
或者m+"
+fl[l]+n+"
,将此字符串利用setText方法输出到JLabel中,即为题目。
publicvoidtest(){}
该函数目的是在每次新建题目前检测是否已经做够十道题,如果够,则设置对应按钮的可用性并初始化各个控件的内容,同时弹出对话框提示测试分数,如果不够,则不进行任何操作。
publicvoidshowMe(){}
该函数是对主窗体的基本初始化,this.setLocationRelativeTo(null)设置窗体在屏幕中央打开,this.setSize(300,200)设置窗体大小,this.setVisible(true)设置窗体可见,this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)设置窗体关闭方式。
在主函数中调用此函数以使主界面显示。
publicvoidactionPerformed(ActionEvente){}
该函数目的是处理所有按钮单击事件,通过对按钮的监听,分辨哪个按钮被单击,然后运行对应按钮事件的代码。
事件代码中包括对异常的处理,如输入有误等,以保证程序顺利运行,异常均会以对话框形式弹出并显示误操作类型。
在对应按钮的代码中包含了对题目及答案的处理和计数功能。
源程序
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
privateJLabeljlQuestion1;
//题目标题
privateJLabeljlQuestion2;
//题目内容
privateJLabeljlAnswer;
//答案标题
privateJLabeljlW;
//题号
privateJLabeljlT;
//正确数
privateJButtonjbTest;
//提交答案
privateJButtonjbStart;
//开始游戏
privateJButtonjbEnd;
//停止游戏
privateJButtonjbExit;
//退出游戏
privateJTextFieldjtfAnswer;
//输入答案
privateintm,n,l,answer,trueAnswer,x;
//随机数m、n,计数参数
privatechar[]fl={'
+'
'
-'
};
//运算符数组
publicyunSuanQi(){//构造函数
this.x=0;
//参数初始化
this.trueAnswer=0;
this.setTitle("
益智游戏"
);
//控件初始化
this.setLayout(newGridLayout(6,2));
//6行2列布局
this.jlQuestion1=newJLabel();
jlQuestion1.setText("
题目:
this.jlQuestion2=newJLabel();
this.jlAnswer=newJLabel();
jlAnswer.setText("
答案:
this.jbStart=newJButton("
开始游戏"
jbStart.addActionListener(this);
//添加事件监听器
this.jbEnd=newJButton("
完成测试"
jbEnd.setEnabled(false);
//开始时不可用
jbEnd.addActionListener(this);
this.jbTest=newJButton("
提交答案"
jbTest.setEnabled(false);
jbTest.addActionListener(this);
this.jbExit=newJButton("
退出游戏"
jbExit.addActionListener(this);
this.jtfAnswer=newJTextField();
jlW=newJLabel();
jlW.setText("
题号:
+x);
jlT=newJLabel();
jlT.setText("
正确提交:
+trueAnswer);
this.add(jlW);
//添加控件
this.add(jlT);
this.add(jlQuestion1);
this.add(jlQuestion2);
this.add(jlAnswer);
this.add(jtfAnswer);
this.add(newJLabel());
//添加空占位label
this.add(jbStart);
this.add(jbTest);
this.add(jbEnd);
this.add(jbExit);
}
publicvoidcreatQuestion(){//新建题目
this.m=(int)(Math.random()*100);
//随机运算数
this.n=(int)(Math.random()*100);
this.l=(int)(Math.random()*1);
//随机数0或1,匹配随机运算符
if(fl[l]=='
){//l为0时加法
answer=m+n;
//加法结果
this.jlQuestion2.setText(m+"
//使label显示题目内容
}elseif(fl[l]=='
){//l为1时减法
answer=m-n;
//减法结果
}
publicvoidtest(){//检测函数,检测是否做到10道题
if(this.x==11){//如果做够数目
jlW.setText("
0"
//界面初始化
jlT.setText("
jbStart.setText("
this.jtfAnswer.setText("
this.jlQuestion2.setText("
JOptionPane.showMessageDialog(null,"
题目数:
10,测试得分:
+(10*trueAnswer),"
JOptionPane.INFORMATION_MESSAGE);
//弹出统计对话框
x=0;
//数据初始化
trueAnswer=0;
jbStart.setEnabled(true);
//设置对应按钮是否可用
jbEnd.setEnabled(false);
jbTest.setEnabled(false);
publicvoidshowMe(){//窗体显示函数
this.setLocationRelativeTo(null);
//窗体在屏幕中央打开
this.setSize(300,200);
//窗体大小
this.setVisible(true);
//窗体可见
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//窗体关闭方式
publicvoidactionPerformed(ActionEvente){//事件处理
//TODOAuto-generatedmethodstub
if(e.getSource()==jbStart){//开始游戏或下一题按钮
if(jbStart.getText()=="
){//按钮为开始游戏
x++;
//题目增一
jbStart.setText("
下一题"
jbEnd.setEnabled(true);
//设置按钮可用
jbTest.setEnabled(true);
creatQuestion();
//新建题目
jlW.setText("
jlT.setText("
}elseif(jbStart.getText()=="
){//按钮为下一题
test();
//测试题目总数是否够10
}
}elseif(e.getSource()==jbTest){//提交答案按钮
try{
intq=Integer.parseInt(jtfAnswer.getText());
if(q==answer){//答案正确
JOptionPane.showMessageDialog(null,"
正确!
"
//提示正确
trueAnswer++;
//正确回答数增一
creatQuestion();
x++;
jlW.setText("
jlT.setText("
test();
//判断题目总数
this.jtfAnswer.setText("
//答案输入框置空
}else{//答案错误
错误!
//提示错误
}
}catch(NumberFormatExceptionnfe){//转换异常处理
JOptionPane.showMessageDialog(null,"
输入有误!
JOptionPane.ERROR_MESSAGE);
//提示有误
}elseif(e.getSource()==jbEnd){//中途结束游戏按钮
+x+"
,测试得分:
//统计信息对话框
}elseif(e.getSource()==jbExit){//退出游戏按钮
System.exit(0);
publicstaticvoidmain(String[]args){
yunSuanQiy=newyunSuanQi();
y.showMe();
操作方法
运行程序,按下“开始”按钮就可进入算数计算测试状态,然后在文本框输入你算出的答案,点击“提交”按钮,就可知道自己所填答案是否正确。
若正确,则提示正确,并在正确的题目上累计正确个数,进行下一题;
若错误,则提示错误,但不进行下一题,单击“完成测试”按钮,可以直接完成测试,分数将对应当前题目总数计算,当做够10道题时,程序自动停止测试,弹出对话框显示所得分数,此时可以单击“开始”重新测试。
运行结果
开始:
测试状态:
正确:
错误:
输入有误:
中途停止:
完成测试:
设计体会
通过此次课程设计,我更加深刻的理解了JAVA程序设计语言的魅力。
算法当然是各种程序设计语言的基础,但只有算法我们还有很多解决不了的实际问题。
而JAVA的核心是面向对象,面向对象就可以解决我们生活中的很多例子,而引进窗体、用户界面的内容就更加丰富了JAVA程序设计语言的强大功能。
JAVA程序设计语言最吸引我的是它的跨平台操作,这也是它不同于且强大于其他程序设计语言之处,相同的程序,但可以在不同的操作系统下执行,这也是让我最终选择走向JAVA学习的原因。
虽然在暑假的时候参加了一个月的JAVA培训,学到的东西也很多,这学期也学习了不少JAVA,但自己总觉得在程序设计语言方面还缺少很多,尤其是自己选定的方向。
所以,自己还需要更多的学习来丰富自己的大脑,为明年的就业做好准备。
而这次的课程设计其实没有什么难度,但对于大多数没有认真学习JAVA的已经足够了。
我之所以选这个题目也是因为自己以前就做过,而且最近课程设计太多,忙不过来,所以直接改改符合了要求就完成了。
这次是这样,但以后自己一定要做些更加有挑战性的题目来增强自己的实力,希望自己能在毕业设计中做出功能更加强大的,更实际的题目来。
最后,感谢孙老师这年来给我们辛苦的代课!
谢谢老师!