源码链接地址: https://github.com/woaichimangguo(我的201571030335)
https://github.com/mashifang(小伙伴的201571030320)
一. 需求分析:
(1)由计算机从题库文件中随机选择20道加减乘除混合算式,用户输入算式答案,程序检查答案是否正确,每道题正确计5分,错误不计分,20道题测试结束后给出测试总分。
(2)题库文件可采用实验二的方式自动生成,也可以手工编辑生成,文本格式如下:
(3)程序为用户提供三种进阶四则运算练习功能选择:百以内整数算式(必做)、带括号算式、真分数算式练习。
(4)程序允许用户进行多轮测试,提供用户多轮测试分数柱状图 。
(5)程序记录用户答题结果,当程序退出再启动的时候,可为用户显示最后一次测试的结果,并询问用户可否进行新一轮的测试。
(6)测试有计时功能,测试时动态显示用户开始答题后的消耗时间。
(7)程序人机交互界面是GUI界面(WEB页面、APP页面都可),界面支持中文简体(必做)/中文繁体/英语,用户可以进行语种选择。
二. 核心功能代码展示:
import java.awt.Font; import java.awt.GridLayout; import java.awt.Label; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import javax.swing.*; public class Self extends JFrame{ int rightSum=0; Her createArithmeticnew=new Her(); private JPanel panel1=new JPanel(); private JLabel label=new JLabel(); JTextField text=new JTextField(10); ArrayList<String> list=new ArrayList<String>(); public static void main(String[] args) { // TODO Auto-generated method stub JFrame frame=new Self(); frame.setTitle("小学四则运算训练小程序"); frame.setSize(300,200); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } public Self(){ setLayout(new GridLayout(3, 2,5,5)); addAnswer(); JPanel panel2=new JPanel(); //panel2.setSize(10,100); panel2.add(new JLabel("请输入答案:")); panel2.add(text); this.add(panel2); JButton buttonSubmit=new JButton("提交答案"); buttonSubmit.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub int size=list.size(); int errorSum=size-rightSum; JFrame resultFrame=new JFrame(); resultFrame.setTitle("运算结果"); resultFrame.setSize(500,500); resultFrame.setLocationRelativeTo(null); resultFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); resultFrame.setVisible(true); JPanel panel=new JPanel(); Font font = new Font(Font.DIALOG, Font.PLAIN, 20); panel.add(new JLabel("做题总数: "+size+" "+"正确数:"+rightSum)); setLayout(new GridLayout(100, 1,5,5)); for(int i=0;i<size;i++){ panel.add(new JLabel(list.get(i))); } resultFrame.add(panel); }}); JButton buttonNext=new JButton("下一题"); buttonNext.addActionListener(new ActionListener() {//定义时间监听器 public void actionPerformed(ActionEvent e) { String question=label.getText(); double result=Double.parseDouble(text.getText()); String ifRight=""; if(Her.result==result){ ifRight="正确"; rightSum++; }else{ ifRight="错误"; } String message=question+", "+"你的答案:"+result+", "+"正确答案: "+Her.result+", 状态: "+ifRight; list.add(message); text.setText(""); String answer=Her.creat(); label.setText(answer); } }); JPanel panel3=new JPanel(); //button.setSize(10,10); panel3.add(buttonNext); panel3.add(buttonSubmit); add(panel3); } public void addAnswer(){ //System.out.println("hah"); //panel1.setSize(0,50); Font font = new Font(Font.DIALOG, Font.PLAIN, 20); label.setFont(font); String answer=Her.creat(); label.setText(answer); panel1.add(label); add(panel1); } } import java.util.ArrayList; import java.util.Random; public class Her { //private ArrayList<Double> list=new ArrayList<Double>(); static double result=0; public static String creat(){ Random random=new Random(); int a=random.nextInt(101); int b=random.nextInt(101); int c=random.nextInt(4); char character=‘+‘; switch(c){ case 0:character=‘+‘; result=a+b; break; case 1:character=‘-‘; if(a<b){int temp=a;a=b;b=temp;} result=a-b; break; case 2:character=‘x‘; result=a*b; break; case 3:character=‘/‘; result=a/b; break; } return "题目:"+a+character+b+"=?"; } }
三. 程序运行:程序运行时每个功能界面截图:
四.实验过程照片:
五.提供此次结对作业的PSP:
PSP2.1 |
任务内容 |
计划共完成需要的时间(h) |
实际完成需要的时间(h) |
Planning |
计划 |
15 |
17 |
· Estimate |
· 估计这个任务需要多少时间,并规划大致工作步骤 |
18 |
20 |
Development |
开发 |
96 |
98 |
·· Analysis |
需求分析 (包括学习新技术) |
48 |
50 |
· Design Spec |
· 生成设计文档 |
24 |
26 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
18 |
20 |
· Coding Standard |
代码规范 (为目前的开发制定合适的规范) |
12 |
16 |
· Design |
具体设计 |
24 |
25 |
· Coding |
具体编码 |
36 |
21 |
· Code Review |
· 代码复审 |
7 |
9 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
13 |
21 |
Reporting |
报告 |
9 |
6 |
·· Test Report |
· 测试报告 |
3 |
2 |
· Size Measurement |
计算工作量 |
2 |
1 |
· Postmortem & Process Improvement Plan |
· 事后总结 ,并提出过程改进计划 |
3 |
3 |
六. 请使用汉堡评价法给你的小伙伴一些点评。
本次结对项目合作中,我的小伙伴非常的认真,细心,有想法,而且表现出了很强的逻辑思维。我们两个在一次次的尝试下,发现不足并经过认真讨论下改正错误,完成此次任务。在本次试验我们合作中,我在她身上学习到了很多,希望以后还能跟她一起学习合作。
七. 结对编程真的能够带来1+1>2的效果吗?通过这次结对编程,请谈谈你的感受和体会。
通过本次结对项目合作,我发现了我的小伙伴身上很多值得我学习的地方,看到了她与我不同的想法,学习到了她不一样的方法。思想交换,互相学习,共同进步想必就是这次试验我的收获。我觉得结对编程真的能够带来1+1>2的效果。在问题上我们可以共同更快更有效率的完美解决,在其他方面我们可以优势互补,相互学习,提升自己。这种结对的方法真的是很有效,以后的编程学习中,我认为个人独立思考很重要,但是结对合作更是有它的好处,两个的结合一定能使编程能力提高,加油。
原文地址:https://www.cnblogs.com/zjy25/p/8719472.html