java课程设计运算测试.docx

上传人:b****6 文档编号:6932800 上传时间:2023-01-12 格式:DOCX 页数:11 大小:85KB
下载 相关 举报
java课程设计运算测试.docx_第1页
第1页 / 共11页
java课程设计运算测试.docx_第2页
第2页 / 共11页
java课程设计运算测试.docx_第3页
第3页 / 共11页
java课程设计运算测试.docx_第4页
第4页 / 共11页
java课程设计运算测试.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

java课程设计运算测试.docx

《java课程设计运算测试.docx》由会员分享,可在线阅读,更多相关《java课程设计运算测试.docx(11页珍藏版)》请在冰豆网上搜索。

java课程设计运算测试.docx

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的已经足够了。

我之所以选这个题目也是因为自己以前就做过,而且最近课程设计太多,忙不过来,所以直接改改符合了要求就完成了。

这次是这样,但以后自己一定要做些更加有挑战性的题目来增强自己的实力,希望自己能在毕业设计中做出功能更加强大的,更实际的题目来。

最后,感谢孙老师这年来给我们辛苦的代课!

谢谢老师!

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1