1、java课程设计运算测试目录程序功能简介 3主体内容 3设计分析 3程序结构 3各模块功能及程序说明 4构造函数:public yunSuanQi() 4新建题目函数:public void creatQuestion() 5检测函数:public void test() 5窗体显示函数:public void showMe() 5事件处理:public void actionPerformed(ActionEvent e) 5源程序 6操作方法 12运行结果 12设计体会 13程序功能简介程序用字符界面实现十道100以内加减法数学题,能根据题目计算出答案,与输入答案对比,判断做题是否正确,最
2、后计算分数。正确则提示正确并记录正确个数,错误则提示错误,不做记录,但在错误时我们可以重新多次输入答案,如果实在算不出来可以选择放弃,进行下一题的测试,直到测试完十道题为止。我在程序中还设置了“开始游戏”和“退出游戏”两个按钮,增加了游戏的自主控制功能,界面也相当简洁明了,适合为儿童开发智力,提高儿童的运算能力。主体内容设计分析该程序实现的功能是产生一个100以内的加减法算术题,在程序后台将此算术式结果保存到一个参数中,通过和用户从图形界面输入的答案对比,判断答案是否正确,并弹出对话框提示信息。界面部分,主窗体包含的控件主要有:JLabel,用于显示提示语句;JTextField,用于用户输入
3、答案;JButton,用于处理操作。界面初始化时,将一些按键,例如完成测试、提交答案等按键设置成不可用,这样可以防止误操作,每次按钮按下时,都有相应的按钮属性被更改。后台部分,核心就是产生随机算术式。用一个字符串数组存放加和减的操作符,产生一个大等于于0小于2的随机数,即为0或1,通过此随机数对应操作符数组中的字符,决定产生的算术式为加法或者减法,后产生两个100以内的随机数,然后通过以上判断求出结果,保存在私有变量中,同时对应的产生一个通过连接完成的字符串,作为界面题目输出的内容,以上便完成了随机算术式的生成。程序结构程序主要流程图如下:函数的结构如下:public class YunSua
4、nQi extends JFrame implements ActionListener public yunSuanQi()/构造函数public void creatQuestion()/新建题目public void test()/检测是否做到10道题public void showMe()/窗体显示函数public void actionPerformed(ActionEvent e) /事件处理public static void main(String args)/主函数各模块功能及程序说明构造函数:public yunSuanQi()该函数主要是窗体的初始化,包括添加窗体、设置控
5、件位置等,还包括对一些参数的初始化。新建题目函数:public void creatQuestion()该函数是程序的核心,目的是创建一道新的算术题,程序开始先产生三个随机数,其中两个为100以内的整数,用于运算,另外一个为0或1,用作随机选择减法操作,根据选择好的运算,给一个字符变量值为对应的操作符,完成对应运算,将结果保存到成员变量中,等待比较,同时产生一个字符串,内容为:m+fl0+n+=?或者m+fll+n+=?,将此字符串利用setText方法输出到JLabel中,即为题目。检测函数:public void test()该函数目的是在每次新建题目前检测是否已经做够十道题,如果够,则设
6、置对应按钮的可用性并初始化各个控件的内容,同时弹出对话框提示测试分数,如果不够,则不进行任何操作。窗体显示函数:public void showMe()该函数是对主窗体的基本初始化,this.setLocationRelativeTo(null)设置窗体在屏幕中央打开,this.setSize(300,200)设置窗体大小,this.setVisible(true)设置窗体可见,this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)设置窗体关闭方式。在主函数中调用此函数以使主界面显示。事件处理:public void actionPerforme
7、d(ActionEvent e) 该函数目的是处理所有按钮单击事件,通过对按钮的监听,分辨哪个按钮被单击,然后运行对应按钮事件的代码。事件代码中包括对异常的处理,如输入有误等,以保证程序顺利运行,异常均会以对话框形式弹出并显示误操作类型。在对应按钮的代码中包含了对题目及答案的处理和计数功能。源程序import java.awt.*;import java.awt.event.*;import javax.swing.*;public class YunSuanQi extends JFrame implements ActionListener private JLabel jlQuestio
8、n1;/题目标题 private JLabel jlQuestion2;/题目内容 private JLabel jlAnswer;/答案标题 private JLabel jlW;/题号 private JLabel jlT;/正确数 private JButton jbTest;/提交答案 private JButton jbStart;/开始游戏 private JButton jbEnd;/停止游戏 private JButton jbExit;/退出游戏 private JTextField jtfAnswer;/输入答案 private int m,n,l,answer,trueA
9、nswer,x;/随机数m、n,计数参数 private char fl=+,-;/运算符数组 public yunSuanQi()/构造函数 this.x=0;/参数初始化 this.trueAnswer=0; this.setTitle(益智游戏);/控件初始化 this.setLayout(new GridLayout(6,2);/6行2列布局 this.jlQuestion1=new JLabel(); jlQuestion1.setText(题目:); this.jlQuestion2=new JLabel(); this.jlAnswer=new JLabel(); jlAnswe
10、r.setText(答案:); this.jbStart=new JButton(开始游戏); jbStart.addActionListener(this);/添加事件监听器 this.jbEnd=new JButton(完成测试); jbEnd.setEnabled(false);/开始时不可用 jbEnd.addActionListener(this);/添加事件监听器 this.jbTest=new JButton(提交答案); jbTest.setEnabled(false);/开始时不可用 jbTest.addActionListener(this);/添加事件监听器 this.j
11、bExit=new JButton(退出游戏); jbExit.addActionListener(this);/添加事件监听器 this.jtfAnswer=new JTextField(); jlW=new JLabel(); jlW.setText(题号:+x); jlT=new JLabel(); jlT.setText(正确提交:+trueAnswer); this.add(jlW);/添加控件 this.add(jlT); this.add(jlQuestion1); this.add(jlQuestion2); this.add(jlAnswer); this.add(jtfAn
12、swer); this.add(new JLabel();/添加空占位label this.add(new JLabel(); this.add(jbStart); this.add(jbTest); this.add(jbEnd); this.add(jbExit); public void creatQuestion()/新建题目 this.m=(int)(Math.random()*100);/随机运算数 this.n=(int)(Math.random()*100); this.l=(int)(Math.random()*1);/随机数0或1,匹配随机运算符 if(fll=+)/l为0
13、时加法 answer=m+n;/加法结果 this.jlQuestion2.setText(m+fll+n+=?);/使label显示题目内容 else if(fll=-)/l为1时减法 answer=m-n;/减法结果 this.jlQuestion2.setText(m+fll+n+=?);/使label显示题目内容 public void test()/检测函数,检测是否做到10道题 if(this.x=11)/如果做够数目 jlW.setText(题号:0);/界面初始化 jlT.setText(正确提交:0); jbStart.setText(开始游戏); this.jtfAnswe
14、r.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); public void showMe()/窗体显示函数 this.s
15、etLocationRelativeTo(null);/窗体在屏幕中央打开 this.setSize(300,200);/窗体大小 this.setVisible(true);/窗体可见 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/窗体关闭方式 public void actionPerformed(ActionEvent e) /事件处理 / TODO Auto-generated method stub if(e.getSource()=jbStart)/开始游戏或下一题按钮 if(jbStart.getText()=开始游戏)
16、/按钮为开始游戏 x+;/题目增一 jbStart.setText(下一题); jbEnd.setEnabled(true);/设置按钮可用 jbTest.setEnabled(true); creatQuestion();/新建题目 jlW.setText(题号:+x); jlT.setText(正确提交:+trueAnswer); else if(jbStart.getText()=下一题)/按钮为下一题 x+;/题目增一 creatQuestion();/新建题目 test();/测试题目总数是否够10 jlW.setText(题号:+x); jlT.setText(正确提交:+true
17、Answer); else if(e.getSource()=jbTest)/提交答案按钮 try int q=Integer.parseInt(jtfAnswer.getText(); if(q=answer)/答案正确 JOptionPane.showMessageDialog( null , 正确!, , JOptionPane.INFORMATION_MESSAGE);/提示正确 trueAnswer+;/正确回答数增一 creatQuestion();/新建题目 x+; jlW.setText(题号:+x); jlT.setText(正确提交:+trueAnswer); test()
18、;/判断题目总数 this.jtfAnswer.setText();/答案输入框置空 else/答案错误 JOptionPane.showMessageDialog( null , 错误!, , JOptionPane.INFORMATION_MESSAGE);/提示错误 catch(NumberFormatException nfe)/转换异常处理 JOptionPane.showMessageDialog( null , 输入有误!, , JOptionPane.ERROR_MESSAGE);/提示有误 else if(e.getSource()=jbEnd)/中途结束游戏按钮 jlW.s
19、etText(题号: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);/统计信息对话框 else if(e.getSourc
20、e()=jbExit)/退出游戏按钮 System.exit(0); public static void main(String args) yunSuanQi y=new yunSuanQi(); y.showMe(); 操作方法运行程序,按下“开始”按钮就可进入算数计算测试状态,然后在文本框输入你算出的答案,点击“提交”按钮,就可知道自己所填答案是否正确。若正确,则提示正确,并在正确的题目上累计正确个数,进行下一题;若错误,则提示错误,但不进行下一题,单击“完成测试”按钮,可以直接完成测试,分数将对应当前题目总数计算,当做够10道题时,程序自动停止测试,弹出对话框显示所得分数,此时可以单
21、击“开始”重新测试。运行结果开始:测试状态:正确:错误:输入有误:中途停止:完成测试:设计体会通过此次课程设计,我更加深刻的理解了JAVA程序设计语言的魅力。算法当然是各种程序设计语言的基础,但只有算法我们还有很多解决不了的实际问题。而JAVA的核心是面向对象,面向对象就可以解决我们生活中的很多例子,而引进窗体、用户界面的内容就更加丰富了JAVA程序设计语言的强大功能。JAVA程序设计语言最吸引我的是它的跨平台操作,这也是它不同于且强大于其他程序设计语言之处,相同的程序,但可以在不同的操作系统下执行,这也是让我最终选择走向JAVA学习的原因。虽然在暑假的时候参加了一个月的JAVA培训,学到的东西也很多,这学期也学习了不少JAVA,但自己总觉得在程序设计语言方面还缺少很多,尤其是自己选定的方向。所以,自己还需要更多的学习来丰富自己的大脑,为明年的就业做好准备。而这次的课程设计其实没有什么难度,但对于大多数没有认真学习JAVA的已经足够了。我之所以选这个题目也是因为自己以前就做过,而且最近课程设计太多,忙不过来,所以直接改改符合了要求就完成了。这次是这样,但以后自己一定要做些更加有挑战性的题目来增强自己的实力,希望自己能在毕业设计中做出功能更加强大的,更实际的题目来。最后,感谢孙老师这年来给我们辛苦的代课!谢谢老师!
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1