201571030321 马玉婷 实验三 小学四则运算结对项目报告

Github代码链接:https://github.com/senfm/sizeyunsuan_02

小伙伴博客代码:http://www.cnblogs.com/mameiling/p/8719579.html

一.需求分析

设计开发一个小学生四则运算练习软件,使之具有以下功能:

1. 由计算机从题库文件中随机选择20道加减乘除混合算式,用户输入算式答案,程序检查答案是否正确,每道题正确计5分,错误不计分,20道题测试结束后给出测试总分

2. 题库文件可采用实验二的方式自动生成,也可以手工编辑生成,文本格式如下:

201571030321 马玉婷 实验三  小学四则运算结对项目报告

3. 程序为用户提供三种进阶四则运算练习功能选择:百以内整数算式(必做)、带括号算式、真分数算式练习;

4. 程序允许用户进行多轮测试,提供用户多轮测试分数柱状图,示例如下:

201571030321 马玉婷 实验三  小学四则运算结对项目报告

5. 程序记录用户答题结果,当程序退出再启动的时候,可为用户显示最后一次测试的结果,并询问用户可否进行新一轮的测试;

6. 测试有计时功能,测试时动态显示用户开始答题后的消耗时间。

7. 程序人机交互界面是GUI界面(WEB页面、APP页面都可),界面支持中文简体(必做)/中文繁体/英语,用户可以进行语种选择。

二.软件设计

类图:

201571030321 马玉婷 实验三  小学四则运算结对项目报告

流程图:

201571030321 马玉婷 实验三  小学四则运算结对项目报告

模块功能:

201571030321 马玉婷 实验三  小学四则运算结对项目报告  画出每一轮得分的分数柱状图。

201571030321 马玉婷 实验三  小学四则运算结对项目报告      调用calculate类随机生成四则运算表达式,调用Select()类进行选择。

201571030321 马玉婷 实验三  小学四则运算结对项目报告         登陆界面,记录用户学号和姓名,并选择题目类型,即整数或者分数。

201571030321 马玉婷 实验三  小学四则运算结对项目报告    显示本轮的所得分数并让用户选择是否进行下一轮练习,或者选择查看所的成绩的柱状图。

201571030321 马玉婷 实验三  小学四则运算结对项目报告     生成UI界面,显示要做的题目。

201571030321 马玉婷 实验三  小学四则运算结对项目报告产生计时功能,帮助用户计时。

201571030321 马玉婷 实验三  小学四则运算结对项目报告   随机生成四则运算题目,可以是分数或者整数两种类型。

三.核心代码

1.登陆界面:此处只展示按钮标签设置,具体事件监听部分代码可到github上select类查看。

201571030321 马玉婷 实验三  小学四则运算结对项目报告

2.计时器:新建一个JFrame显示计。

201571030321 马玉婷 实验三  小学四则运算结对项目报告

3.分数柱状图:在JFrame中加一个JPanel,然后在JPanel中加入矩形框和Label。

201571030321 马玉婷 实验三  小学四则运算结对项目报告

201571030321 马玉婷 实验三  小学四则运算结对项目报告

 四.具体运行

1.登陆界面,可自行输入学号,姓名,然后挑选做题类型。

201571030321 马玉婷 实验三  小学四则运算结对项目报告

2.开始作答界面

201571030321 马玉婷 实验三  小学四则运算结对项目报告

 3.等分统计界面

201571030321 马玉婷 实验三  小学四则运算结对项目报告

 4.柱状图总结

 201571030321 马玉婷 实验三  小学四则运算结对项目报告

五.结对总结

在本次结对过程中,我和我的小伙伴先一起讨论了这个项目的具体流程,制作了一个简易的流程图,据此明确了各自的任务,使得一个看起来很复杂的的项目变得清晰有条理,除此之外,两个人在具体编程开始前就做了具体的规划找到了将要用到的知识点,一起简单的学习和回顾了一下,使得后期在具体编程的时候阻力减小了很大一部分。也是很明确的感受到了结对的魅力和对自己的帮助, 觉得不虚此行。

201571030321 马玉婷 实验三  小学四则运算结对项目报告

六.结对作业PSP:

PSP

任务内容

计划完成需要的时间(天)

实际完成需要的时间(天)

Planning

计划

1

1.5

Estimite

估计任务所需时间,并规划大致工作步骤

0.5

0.5

Development

开发

3

5

Analysis

需求分析 (包括学习新技术)

3

3

Design Spec 

生成设计文档 

1

1

Design Review 

设计复审(和同事审核设计文档) 

0.5

0.5

Coding Standard 

代码规范(为目前的开发指定合适的规范)

1

Design 

具体设计 

1.5

2

Coding 

具体编码 

3

Code Review 

代码复审 

0.5

0.5

Test 

测试(自我测试,修改代码,提交修改) 

0.5

0.5

Reporting 

报告 

0.5

0.5

Test Report 

测试报告 

0.5

0.5

Size Measurement

计算工作量

0.5

0.5

Postmortem & Process Improvement Plan 

事后总结,并提出过程改进计划 

0.5

0.5

七.我的小伙伴:

由于我们两个本来就在一个宿舍,而且从大一就有相互合作的习惯,所以必不可少的磨合在我们俩之间反倒没有出问题,而且我们两个也是属于那种互补性人格,我比较跳脱,她比较稳重,查资料的时候是她带着我多一点,到了具体实现阶段,我的脑洞就稍微大那么一丢丢。当然,还是会有些摩擦和争执,但是毕竟都是为了同一个目标而出发,所以都能很快的找到平衡点,一起齐头并进,感觉和她一块做结对项目是一个明智的选择。

八.体会和感受:

还是像第一次一样,java基础薄弱,使得两个人开始做事件监听,制作柱状图还有添加计时器等功能的时候,遇到了一些阻力,但是两个人结伴而行确实要比一个人孤军奋战好的多,感觉是一种互利共赢,也是一种彼此监督,我们可以互相商量和讨论,一起去查资料,学java,做课题,而且能够互相给彼此灵感,再加上已经有了实验二打下的基础,感觉这一次作业完成度要比前一次更好,比如上一次没有完成的分数和加括号计算等要求,这一次也加了上去。总体来说,这一次实验做完觉得给自己带来的收获要比第二次更大,有好多前一次实验没来得及做和不会做的要求,这一次经过两个人的讨论也添加进去了,有一些似是而非的知识也进一步有了明确,真正的体会到了合作的重要性,当然,自我感觉还是有一点不足,比如:(1)时间掌握不够合理。前期投入时间花费太大,导致后面做实验的时候时间有些来不及;(2)没有在界面上加一个背景图片。感觉是一个遗憾吧,也是查了好多例子,但是可能当时时间已经有些来不及了吧,心里有些着急,所以例子看不懂了,看不懂了,懂了,了。。。。。。所以写了一半就匆匆忙忙上交了,觉得下去之后还是要去重新看看的。