小学算术运算检测软件.docx
《小学算术运算检测软件.docx》由会员分享,可在线阅读,更多相关《小学算术运算检测软件.docx(18页珍藏版)》请在冰豆网上搜索。
小学算术运算检测软件
软件学院
课程设计报告书
课程名称面向对象程序课程设计
设计题目小学算术运算测试软件
专业班级嵌软11—2
学号1120030220
姓名吴晓冬
指导教师文涛
2013年6月
1设计时间2
2设计目的2
3设计题目2
4设计任务2
5设计容2
5.1程序设计与分析2
5.2程序结构3
5.3程序说明4
5.4源程序4
5功能模块实现14
6运行与测试15
6.1系统提供开始界面15
6.2系统提供运算式界面15
6.3系统提供提交界面16
6.4系统提供结果界面16
7总结与展望16
参考文献17
成绩评定17
1设计时间
2013年6月8日-2013年6月14日
2设计目的
《面向对象程序设计》是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。
其目的在于通过实践加深对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高应用能力。
3设计题目
小学算术运算检测软件
4设计任务
设计GUI界面,通过选择不同运算符(如加减法、乘除法)及运算数的围(如10以、100以等)后随机产生指定书目(10道,20道等)的运算式子,测试提交后自动评分,根据不同测试结果给出提示(如“你真棒”,”继续努力”等)。
5设计容
5.1程序设计与分析
按照软件基本功能分为以下四部
(1)设计GUI界面,假想界面:
图5.1假想界面
(2)选择不同运算符(如加减法、乘除法),选择不同运算数的围(如10以、100以等)。
通过界面上加、减、乘、除四个按钮和10以、100以两个按钮进行选择。
(3)随机产生指定数目(10道,20道等)的运算式子
(4)测试提交后自动评分根据不同测试结果给出提示(如“你真棒”,”继续努力”等)。
5.2程序结构
图5.1程序结构
5.3程序说明
(1)、当进入“运算测试程序”界面时,根据计算机随机得出的题目,在输入框中输入运算结果,。
(2)、选择“下题”按钮进入下一题。
(3)、计算机通过“if”语句判断执行次数是否达到10次,到达指定次数根据不同测试结果给出提示(答对8~10道输出“你真棒”,答对0~7道题输出“继续努力”)。
(4)、结束。
5.4源程序
importjava.awt.*;
importjava.awt.event.*;
importjava.util.*;
publicclassTest
{
publicTest()
{
Framef=newFrame("小学算术运算检测");
f.setBounds(200,100,340,300);
M1m1=newM1();
f.addWindowListener(m1);
f.setLayout(newGridLayout(5,1));
Buttonb1=newButton("+");
Buttonb2=newButton("-");
Buttonb3=newButton("×");
Buttonb4=newButton("÷");
Buttonb5=newButton("10以");
Buttonb6=newButton("100以");
Buttonb7=newButton("开始检测");
Labell1=newLabel("算术运算检测器");
Labell2=newLabel("请选择");
Labell3=newLabel("运算法则");
Labell4=newLabel("运算数围");
Panelp1=newPanel(null);
Panelp2=newPanel(null);
Panelp3=newPanel(null);
Panelp4=newPanel(null);
Panelp5=newPanel(null);
p1.setLayout(newFlowLayout());
p2.setLayout(newFlowLayout());
p3.setLayout(newGridLayout(1,5));
p4.setLayout(newGridLayout(1,3));
p5.setLayout(newGridLayout(1,1));
p1.add(l1);
p2.add(l2);
p3.add(l3);
p3.add(b1);
p3.add(b2);
p3.add(b3);
p3.add(b4);
p4.add(l4);
p4.add(b5);
p4.add(b6);
p5.add(b7);
f.add(p1);
f.add(p2);
f.add(p3);
f.add(p4);
f.add(p5);
M2m2=newM2();
M3m3=newM3();
M4m4=newM4();
M5m5=newM5();
M6m6=newM6();
M7m7=newM7();
M0m8=newM0();
b1.addActionListener(m2);
b2.addActionListener(m3);
b3.addActionListener(m4);
b4.addActionListener(m5);
b5.addActionListener(m6);
b6.addActionListener(m7);
b7.addActionListener(m8);
f.setVisible(true);
}
publicstaticvoidmain(Stringargs[])
{
Testa=newTest();
}
classM1implementsWindowListener
{
publicvoidwindowActivated(WindowEvente)
{}
publicvoidwindowClosed(WindowEvente)
{}
publicvoidwindowClosing(WindowEvente)
{
System.exit(-1);
}
publicvoidwindowDeactivated(WindowEvente)
{}
publicvoidwindowDeiconified(WindowEvente)
{}
publicvoidwindowIconified(WindowEvente)
{}
publicvoidwindowOpened(WindowEvente)
{}
}
staticStrings=null;
staticintnum=1;
staticintsum=0;
staticintscore=0;
staticintj=0;
staticintx1=0;
staticintx2=0;
classM2implementsActionListener
{
publicvoidactionPerformed(ActionEvente)
{
s="+";
}
}
classM3implementsActionListener
{
publicvoidactionPerformed(ActionEvente)
{
s="-";
}
}
classM4implementsActionListener
{
publicvoidactionPerformed(ActionEvente)
{
s="*";
}
}
classM5implementsActionListener
{
publicvoidactionPerformed(ActionEvente)
{
s="/";
}
}
classM6implementsActionListener
{
publicvoidactionPerformed(ActionEvente)
{
j=10;
}
}
classM7implementsActionListener
{
publicvoidactionPerformed(ActionEvente)
{
j=100;
}
}
classM0implementsActionListener
{
publicvoidactionPerformed(ActionEvente)
{
if(num==10)
{
Framef=newFrame("小学算术运算检测");
f.setBounds(200,100,340,100);
f.setLayout(newGridLayout(2,1));
M1m1=newM1();
f.addWindowListener(m1);
f.setVisible(true);
TextFieldc=newTextField(3);
M8m9=newM8(c);
c.addActionListener(m9);
Panelp=newPanel(null);
p.setLayout(newGridLayout(1,2));
Randomrand=newRandom();
if(j==100)
{
x1=rand.nextInt(100);
x2=rand.nextInt(100);
}
if(j==10)
{
x1=rand.nextInt(10);
x2=rand.nextInt(10);
}
Labell5=newLabel();
if(s=="+")
{sum=x1+x2;l5.setText(""+x1+"+"+x2+"=");}
if(s=="-")
{sum=x1-x2;l5.setText(""+x1+"-"+x2+"=");}
if(s=="*")
{sum=x1*x2;l5.setText(""+x1+"*"+x2+"=");}
if(s=="/")
{sum=x1/x2;l5.setText(""+x1+"/"+x2+"=");}
p.add(l5);
p.add(c);
f.add(p);
Buttonb=newButton("提交");
b.addActionListener(newM9());
f.add(b);
}
if(num!
=10)
{
Framef=newFrame("小学算术运算检测");
f.setBounds(200,100,340,100);
f.setLayout(newGridLayout(2,2));
M1m1=newM1();
f.addWindowListener(m1);
f.setVisible(true);
TextFieldc=newTextField("请输入结果",8);
M8m9=newM8(c);
c.addActionListener(m9);
Panelp=newPanel(null);
p.setLayout(newGridLayout(1,2));
Randomrand=newRandom();
if(j==100)
{
x1=rand.nextInt(100);
x2=rand.nextInt(100);
}
if(j==10)
{
x1=rand.nextInt(10);
x2=rand.nextInt(10);
}
Labell5=newLabel();
if(s=="+")
{sum=x1+x2;l5.setText(""+x1+"+"+x2+"=");}
if(s=="-")
{sum=x1-x2;l5.setText(""+x1+"-"+x2+"=");}
if(s=="*")
{sum=x1*x2;l5.setText(""+x1+"*"+x2+"=");}
if(s=="/")
{sum=x1/x2;l5.setText(""+x1+"/"+x2+"=");}
p.add(l5);
p.add(c);
f.add(p);
num++;
Buttonb=newButton("下一题");
Buttonb0=newButton("提交");
f.add(b0);
f.add(b);
b.addActionListener(newM0());
b0.addActionListener(newM8(c));
}
}
}
classM8implementsActionListener
{
TextFieldc;
M8(TextFieldc)
{
this.c=c;
}
publicvoidactionPerformed(ActionEvente)
{
intt=Integer.parseInt(c.getText());
if(t==sum)
score+=10;
}
}
classM9implementsActionListener
{
publicvoidactionPerformed(ActionEvente)
{
Framef=newFrame("小学算术运算检测");
f.setBounds(200,100,340,100);
f.setLayout(newFlowLayout());
M1m1=newM1();
f.addWindowListener(m1);
Labelb=null;
if(score>=80)
{
b=newLabel("你的成绩是"+score+"你真棒!
!
!
");
}
else
{
b=newLabel("你的成绩是"+score+"继续努力哦!
!
");
}
f.add(b);
f.setVisible(true);
}
}
}
5功能模块实现
importjava.awt.*;
importjava.awt.event.*;
importjava.until.*
包中包含Random类,调用nextInt()方法产生符合要求的随机数
publicclassTest
Test类中包含主函数main();
classM1implementsWindowListener
M1类是Test类的部类,实现窗口的关闭的监听机制。
classM2implementsActionListener
M2、M3、M4、M5、M6、M7类是Test类的部类,实现按钮的监听机制。
classM9implementsActionListener
M8、M9类是Test类的部类,实现文本框对应按钮的监听机制并弹出下一界面。
classM0implementsActionListener
M0类是Test类的部类,用于实现条件的判断和输入答案与系统结果的比较。
6运行与测试
6.1系统提供开始界面
图6.1开始界面
图6.1是系统提供的开始界面,在开始界面中我们可以选择运算法则和运算数围,通过按钮上的事件监听器发送到系统中,作为下一个选数操作的条件,点击开始检测则自动跳到下一界面。
6.2系统提供运算式界面
图6.2运算式界面
图6.2是系统提供的运算式界面,在运算式界面中我们可以通过文本框输入运算式的结果点击“提交”按钮提交答案,通过按钮上的事件监听器将事件发送到系统中备用,之后点击“下一题”按钮,通过按钮上的事件监听器将事件发送到系统中,自动跳到下一题的界面直到进行十次。
6.3系统提供提交界面
图6.3提交界面
图6.3是系统提供的提交界面,当运算进行九次时系统产生提交界面,在提交界面中我们可以通过文本框输入最后一道运算式的结果点击“提交”按钮,通过按钮上的事件监听器将事件发送到系统中,自动跳到结果界面。
6.4系统提供结果界面
图6.4结果界面
图6.4是系统提供的结果界面,在结果界面中我们可以看到根据运算式结果与所做的答案对比叠加的结果,输出相应的成绩和批语。
7总结与展望
在这次课程设计的过程中我有了很多收获,包括对以前学过程序的重新分析和理解、提取所需的资料、对教材中的知识的总结、对未知知识的学习。
遇到问题时通过上网查询资料与同学交流或通过医学知识使用笨拙的方法解决问题。
刚刚得到这份课题是我没有任何准备,但是随着时间的推进在我的脑海中逐渐形成了程序模型如上面5.2中的程序结构。
通过这次课程设计增加了我对解决问题过程的思考、增加了我对程序调试能力的思考、增加了我对《面向对象程序设计》这门课程的思考。
参考文献
[1]万军,少京,王松波等.Java6程序设计实践教程,:
清华大学,2009.5
[2]XX文库:
wenku.baidu./view/edd35e1414791711cc7917c1.html
成绩评定
成绩教师签字