课程设计设计一个小学算术运算测试软件.docx
《课程设计设计一个小学算术运算测试软件.docx》由会员分享,可在线阅读,更多相关《课程设计设计一个小学算术运算测试软件.docx(19页珍藏版)》请在冰豆网上搜索。
![课程设计设计一个小学算术运算测试软件.docx](https://file1.bdocx.com/fileroot1/2023-6/17/de186e5d-8d58-4e60-8aee-e81a81da105d/de186e5d-8d58-4e60-8aee-e81a81da105d1.gif)
课程设计设计一个小学算术运算测试软件
课程设计报告书
课程名称Java程序设计语言
设计题目设计一个小学算术运算测试软件
专业班级软件12-5班
学号
姓名
指导教师
2014年6月
1设计时间···········································3
2设计目的···········································3
3设计题目···········································3
4设计任务···········································3
4.1设计界面·········································3
4.2设计时间·········································3
5设计内容···········································4
6功能模块实现·······································4
6.1JComboBOx的事件的实现···························4
6.2Buttonn事件实现·································5
6.3两个Button事件实现选项··························7
6.4复选框事件的实现·································7
7运行与测试··········································8
8总结与展望··········································9
参考文献············································10
成绩评定············································10
附录················································11
1设计时间
6月16日到6月22日
2设计目的
综合运用图形用户界面设计的概念,熟悉使用中间面板组成层次结构复杂的GUI界面,熟悉使用时间驱动编程,熟悉使用内部类。
3设计题目
设计一个小学算术运算测试软件
软件基本功能:
设计GUI界面,通过选择不同运算符(如加减法、乘除法)及运算数的范围(如10以内、100以内等)后随机产生指定书目(10道,20道等)的运算式子,测试提交后自动评分,根据不同测试结果给出提示(如“你真棒”,”继续努力”等。
4设计任务
4.1设计界面
在纸上设计图纸,然后用Java语言设计基本代码,然后再让其在程序中运行出来,如上图所示。
4.2设计事件
1,关于JComboBOx的事件
2,关于Button的事件设计
3,关于JRadioButton的事件设计
5设计内容
先设计GUI界面,在基础上实现JComboBOx,这个控件主要实现的功能是当在下拉列表中选定选定操作类型之后,在像行的ope位置上将其置为相应的操作符。
Button事件,这个控件主要实现操作数运算结果和文本框中结果的比对,实现label1,label2中显示做对多少题,做了多少题。
两个Button事件实现,这两个按钮主要实现选择了多少道题,按“10道题”的时候,总共选择10道题,按“20道题”的时候,总共选择20道题。
复选框事件的实现,这个控件主要实现选择10以内的题还是100以内的题,设置常数,实现选择。
6功能模块实现
6.1JComboBOx的事件的实现
这个控件主要实现的功能是当在下拉列表中选定选定操作类型之后,在像行的ope位置上将其置为相应的操作符。
代码部分如下:
publicclassitemeventimplementsItemListener{//实现下拉列表框的事件
publicvoiditemStateChanged(ItemEvente){
if(jrbut.getSelectedIndex()==0){//如果下拉列表框中选定的是第一项,即加号
calcuType=1;ope.setText("+");}//将操作符的部分置为“+”号
elseif(jrbut.getSelectedIndex()==1){//如果下拉列表框中选定的是第二项项,即减号
calcuType=2;ope.setText("-");}//将操作符的部分置为“-”号
elseif(jrbut.getSelectedIndex()==2)//如果下拉列表框中选定的是第三项项,即减号
{calcuType=3;ope.setText("*");}//将操作符的部分置为“*”号
else{calcuType=4;ope.setText("/");};//将操作符的部分置为“/”号
}
}
6.2Button事件实现
这个控件主要实现操作数运算结果和文本框中结果的比对,实现label1,label2中显示做对多少题,做了多少题。
代码部分如下:
publicclassitemeventimplementsItemListener{//实现下拉列表框的事件
publicvoiditemStateChanged(ItemEvente){
if(jrbut.getSelectedIndex()==0){//如果下拉列表框中选定的是第一项,即加号
calcuType=1;ope.setText("+");}//将操作符的部分置为“+”号
elseif(jrbut.getSelectedIndex()==1){//如果下拉列表框中选定的是第二项项,即减号
calcuType=2;ope.setText("-");}//将操作符的部分置为“-”号
elseif(jrbut.getSelectedIndex()==2)//如果下拉列表框中选定的是第三项项,即减号
{calcuType=3;ope.setText("*");}//将操作符的部分置为“*”号
else{calcuType=4;ope.setText("/");};//将操作符的部分置为“/”号
}
}
intop=0;
classButtonListenerimplementsActionListener{
publicvoidactionPerformed(ActionEventevent){
intx=0,y=0,z=0,temp=0;
if(answer.getText().length()==0){}//如果是answer中字符创长度为零的话,什么也不做
else{//否则就做以下部分
try{
z=(int)Integer.valueOf(answer.getText());
x=(int)Integer.valueOf(operate1.getText());
y=(int)Integer.valueOf(operate2.getText());
}catch(Exceptione){}
if(calcuType==1){//如果是加法
if(x+y==z)
{
rightnum++;
label3.setText("你真棒!
");//如果做对,输出你真棒
}
else{label3.setText("加油哦!
");}//否则输出加油哦
}
elseif(calcuType==2){//如果是减法
if(x-y==z)
{rightnum++;label3.setText("你真棒!
");}//如果做对,输出你真棒
else{label3.setText("加油哦!
");}//否则输出加油哦
}
elseif(calcuType==3){//如果是乘法
if(x*y==z){rightnum++;label3.setText("你真棒!
");}//如果做对,输出你真棒
else{label3.setText("加油哦!
");}//否则输出加油哦
}
else//或者是除法
{
if(x/y==z){rightnum++;label3.setText("你真棒!
");}//如果做对,输出你真棒
else{label3.setText("加油哦!
");}//否则输出加油哦
}
if(t==9){//判断是10以内的
x=(int)(9*Math.random());
while(x==0){x=(int)(Math.random());};
y=(int)(9*Math.random());
while(y==0){y=(int)(Math.random());};
if(xoperate1.setText(String.valueOf(x));
operate2.setText(String.valueOf(y));//设置操作数
}
else{//当是100以内的数时
x=(int)(99*Math.random());
while(x==0){x=(int)(Math.random());};
y=(int)(99*Math.random());
while(y==0){y=(int)(Math.random());};
if(xoperate1.setText(String.valueOf(x));
operate2.setText(String.valueOf(y));
}
if(xoperate1.setText(String.valueOf(x));
operate2.setText(String.valueOf(y));
totalnum++;
label1.setText("已做"+totalnum+"题");//设置总共做的题数
label2.setText("做对"+rightnum+"题");//设置做对的题数
answer.setText("");//将answer的文本置空
if(totalnum>op){
System.exit(0);
}
}
}
}
6.3两个Button事件实现选项
这两个按钮主要实现选择了多少道题,按“10道题”的时候,总共选择10道题,按“20道题”的时候,总共选择20道题。
代码部分如下
publicclasseventimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==but1){
op=10;
la1.setText("共有"+op+"道题");
}
elseif(e.getSource()==but2){
op=20;
la1.setText("共有"+op+"道题");
}
}
}
6.4复选框事件的实现
这个控件主要实现选择10以内的题还是100以内的题,设置常数,实现选择。
代码部分如下
publicclassactionimplementsActionListener{
@Override
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==myradio1){//如果是复选框1中被选定
t=9;
}
else{
t=90;
}
}
}
7运行与测试
加法
减法
乘法
除法
8总结与展望
在整个设计中也遇到了不少的问题,但通过仔细的检查与研究问题都一一解决了。
在整个实验设计的过程中,我不但加深了对这门课的理解同时也巩固了Java程序的整体结构。
通过实验中发现的问题,使我明白了自己原来的知识都太过理论化了,面对单独的课题时是多么的茫然。
自己要学习的东西还有很多,以前老是觉得自己什么东西都会,什么东西都懂,有点眼高手低。
通过实验,我才明白学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己的知识和综合素质。
总之,单靠书本上的理论知识是无法体现出知识的真正价值的!
很多时候,我们以为我们都会了,但等到用的时候才发现是两回事,所以我们必须通过实际的操作应用去分析理解它!
参考文献
[1]屈辉立,陈可明,石武信.JSP网站编程教程[M].第1版,北京:
北京希望电子出版社,2005
[2]白勇.用B/S模式构建在线考试系统[J],重庆电力高等专科学校学报,2003,10(4):
100~130.
[3]JiangGuo,YuehongLiao,BehzadParviz.ASurveyofJ2EEApplicationPerformanceManagementSystems[J],ProceedingsoftheIEEEInternationalConferenceonWebServices(ICWS'04),2004.6(5):
17~32.
[4]VB数据库管理范例:
成绩评定
成绩教师签字
附录:
packagemyjava;
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
publicclasscalculate{
JFrameframe=newJFrame();
inttotalnum=0;
intrightnum=0;
intcalcuType=1;
staticintt=9;
JLabeloperate1=newJLabel("");
JLabelope=newJLabel("+");
JLabeloperate2=newJLabel("");
JLabelequl=newJLabel("=");
JTextFieldanswer=newJTextField("",5);
JPanelp1=newJPanel();
JRadioButtonmyradio1,myradio2;
JButtonok=newJButton("确认");
JLabellabel1=newJLabel("已做"+totalnum+"题");
JLabellabel2=newJLabel("做对"+rightnum+"题");
JPanelp2=newJPanel();
JLabellabel3;
String[]str={"加法","减法","乘法","除法"};
JComboBoxjrbut=newJComboBox(str);
JPanelopt=newJPanel();
JButtonbut1,but2;
JLabella1;
publiccalculate(){
opt.add(jrbut);
jrbut.setSelectedIndex(0);
frame.setLocation(400,100);
frame.setLayout(newGridLayout(3,1));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
p1.add(operate1);
p1.add(ope);
p1.add(operate2);
p1.add(equl);
p1.add(answer);
p1.add(jrbut);
frame.add(p1);
p2.add(ok);
but1=newJButton("10题");
but2=newJButton("20题");
label3=newJLabel();
p2.add(label3);
p2.add(but1);
p2.add(but2);
but1.addActionListener(newevent());
but2.addActionListener(newevent());
frame.add(p2);
JPanelpl=newJPanel();
pl.add(label1);
pl.add(label2);
la1=newJLabel();
pl.add(la1);
frame.add(pl);
myradio1=newJRadioButton("10以内");
myradio2=newJRadioButton("100以内");
ButtonGroupgroup=newButtonGroup();
group.add(myradio1);
group.add(myradio2);
pl.add(myradio1);
pl.add(myradio2);
myradio1.setSelected(true);
frame.add(pl);
myradio1.addActionListener(newaction());
myradio2.addActionListener(newaction());
intx,y,temp;
if(t==9){
x=(int)(9*Math.random());
while(x==0){x=(int)(Math.random());};
y=(int)(9*Math.random());
while(y==0){y=(int)(Math.random());};
if(xoperate1.setText(String.valueOf(x));
operate2.setText(String.valueOf(y));
}
else{
x=(int)(99*Math.random());
while(x==0){x=(int)(Math.random());};
y=(int)(99*Math.random());
while(y==0){y=(int)(Math.random());};
if(xoperate1.setText(String.valueOf(x));
operate2.setText(String.valueOf(y));
}
frame.setVisible(true);
frame.setSize(400,150);
jrbut.addItemListener(newitemevent());
ok.addActionListener(newButtonListener());
label1.setText("已做"+totalnum+"题");
label2.setText("做对"+rightnum+"题");
la1.setText("共有"+op+"道题");
}
publicclassitemeventimplementsItemListener{//实现下拉列表框的事件
publicvoiditemStateChanged(ItemEvente){
if(jrbut.getSelectedIndex()==0){//如果下拉列表框中选定的是第一项,即加号
calcuType=1;ope.setText("+");}//将操作符的部分置为“+”号
elseif(jrbut.getSelectedIndex()==1){//如果下拉列表框中选定的是第二项项,即减号
calcuType=2;ope.setText("-");}//将操作符的部分置为“-”号
elseif(jrbut.getSelectedIndex()==2)//如果下拉列表框中选定的是第三项项,即减号
{calcuType=3;ope.setText("*");}//将操作符的部分置为“*”号
else{calcuType=4;ope.setText("/");};//将操作符的部分置为“/”号
}
}
intop=0;
classButtonListenerimplementsActionListener{
publicvoidactionPerformed(ActionEventevent){
intx=0,y=0,z=0,temp=0;
if(answer.getText().length()==0){}//如果是answer中字符创长度为零的话,什么也不做
else{//否则就做以下部分
try{
z=(int)Integer.valueOf(answer.getText());
x=(int)Integer.valueOf(operate1.getText());
y=(int)Integer.valueOf(operate2.getText());
}catch(Exceptione){}
if(calcuType==1){//如果是加法
if(x+y==z)
{
rightnum++;
label3.setText("你真棒!
");//如果做对,输出你真棒
}
else{label3.setText("加油哦!
");}//否则输出加油哦