java课程设计运算测试.docx
《java课程设计运算测试.docx》由会员分享,可在线阅读,更多相关《java课程设计运算测试.docx(11页珍藏版)》请在冰豆网上搜索。
java课程设计运算测试
目录
程序功能简介3
主体内容3
设计分析3
程序结构3
各模块功能及程序说明4
构造函数:
publicyunSuanQi(){}4
新建题目函数:
publicvoidcreatQuestion(){}5
检测函数:
publicvoidtest(){}5
窗体显示函数:
publicvoidshowMe(){}5
事件处理:
publicvoidactionPerformed(ActionEvente){}5
源程序6
操作方法12
运行结果12
设计体会13
程序功能简介
程序用字符界面实现十道100以内加减法数学题,能根据题目计算出答案,与输入答案对比,判断做题是否正确,最后计算分数。
正确则提示正确并记录正确个数,错误则提示错误,不做记录,但在错误时我们可以重新多次输入答案,如果实在算不出来可以选择放弃,进行下一题的测试,直到测试完十道题为止。
我在程序中还设置了“开始游戏”和“退出游戏”两个按钮,增加了游戏的自主控制功能,界面也相当简洁明了,适合为儿童开发智力,提高儿童的运算能力。
主体内容
设计分析
该程序实现的功能是产生一个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.*;
publicclassYunSuanQiextendsJFrameimplementsActionListener{
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(newJLabel());
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+""+fl[l]+n+"=?
");//使label显示题目内容
}elseif(fl[l]=='-'){//l为1时减法
answer=m-n;//减法结果
this.jlQuestion2.setText(m+""+fl[l]+n+"=?
");//使label显示题目内容
}
}
publicvoidtest(){//检测函数,检测是否做到10道题
if(this.x==11){//如果做够数目
jlW.setText("题号:
0");//界面初始化
jlT.setText("正确提交:
0");
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("题号:
"+x);
jlT.setText("正确提交:
"+trueAnswer);
}elseif(jbStart.getText()=="下一题"){//按钮为下一题
x++;//题目增一
creatQuestion();//新建题目
test();//测试题目总数是否够10
jlW.setText("题号:
"+x);
jlT.setText("正确提交:
"+trueAnswer);
}
}elseif(e.getSource()==jbTest){//提交答案按钮
try{
intq=Integer.parseInt(jtfAnswer.getText());
if(q==answer){//答案正确
JOptionPane.showMessageDialog(null,"正确!
","",JOptionPane.INFORMATION_MESSAGE);//提示正确
trueAnswer++;//正确回答数增一
creatQuestion();//新建题目
x++;
jlW.setText("题号:
"+x);
jlT.setText("正确提交:
"+trueAnswer);
test();//判断题目总数
this.jtfAnswer.setText("");//答案输入框置空
}else{//答案错误
JOptionPane.showMessageDialog(null,"错误!
","",JOptionPane.INFORMATION_MESSAGE);//提示错误
}
}catch(NumberFormatExceptionnfe){//转换异常处理
JOptionPane.showMessageDialog(null,"输入有误!
","",JOptionPane.ERROR_MESSAGE);//提示有误
}
}elseif(e.getSource()==jbEnd){//中途结束游戏按钮
jlW.setText("题号:
0");//界面初始化
jlT.setText("正确提交:
0");
jbStart.setText("开始游戏");
this.jlQuestion2.setText("");
jbStart.setEnabled(true);
jbEnd.setEnabled(false);
jbTest.setEnabled(false);
JOptionPane.showMessageDialog(null,"题目数:
"+x+",测试得分:
"+(10*trueAnswer),"",JOptionPane.INFORMATION_MESSAGE);//统计信息对话框
}elseif(e.getSource()==jbExit){//退出游戏按钮
System.exit(0);
}
}
publicstaticvoidmain(String[]args){
yunSuanQiy=newyunSuanQi();
y.showMe();
}
}
操作方法
运行程序,按下“开始”按钮就可进入算数计算测试状态,然后在文本框输入你算出的答案,点击“提交”按钮,就可知道自己所填答案是否正确。
若正确,则提示正确,并在正确的题目上累计正确个数,进行下一题;若错误,则提示错误,但不进行下一题,单击“完成测试”按钮,可以直接完成测试,分数将对应当前题目总数计算,当做够10道题时,程序自动停止测试,弹出对话框显示所得分数,此时可以单击“开始”重新测试。
运行结果
开始:
测试状态:
正确:
错误:
输入有误:
中途停止:
完成测试:
设计体会
通过此次课程设计,我更加深刻的理解了JAVA程序设计语言的魅力。
算法当然是各种程序设计语言的基础,但只有算法我们还有很多解决不了的实际问题。
而JAVA的核心是面向对象,面向对象就可以解决我们生活中的很多例子,而引进窗体、用户界面的内容就更加丰富了JAVA程序设计语言的强大功能。
JAVA程序设计语言最吸引我的是它的跨平台操作,这也是它不同于且强大于其他程序设计语言之处,相同的程序,但可以在不同的操作系统下执行,这也是让我最终选择走向JAVA学习的原因。
虽然在暑假的时候参加了一个月的JAVA培训,学到的东西也很多,这学期也学习了不少JAVA,但自己总觉得在程序设计语言方面还缺少很多,尤其是自己选定的方向。
所以,自己还需要更多的学习来丰富自己的大脑,为明年的就业做好准备。
而这次的课程设计其实没有什么难度,但对于大多数没有认真学习JAVA的已经足够了。
我之所以选这个题目也是因为自己以前就做过,而且最近课程设计太多,忙不过来,所以直接改改符合了要求就完成了。
这次是这样,但以后自己一定要做些更加有挑战性的题目来增强自己的实力,希望自己能在毕业设计中做出功能更加强大的,更实际的题目来。
最后,感谢孙老师这年来给我们辛苦的代课!
谢谢老师!