结对编程1.四则运算GUI版
201421123022 王若凡 201421123026 欧阳勇
a.需求分析:
这个程序做成GUI(可以是Windows PC 上的,也可以是Mac、Linux,web,手机上的),成为一个有基本功能、一定价值的程序。在下面的功能需求中实现两个:
- 记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算。
- 有计时功能,能显示用户开始答题后的消耗时间。
- 界面支持中文简体/中文繁体/英语,用户可以选择一种;
b.功能设计
1.生成自定义数目算术题。
2.支持整数和分数的加减乘除。
3.输入答案判断对错,错误后写出正确答案。
4.集中收集错题。
5.简繁中英文切换。
6.计时功能。
思维导图

c.设计实现与代码展示
计时功能:
B0.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
tishu=Integer.parseInt(T1.getText());//获取总题数
timer = new Timer();
finishtime=System.currentTimeMillis();
starttime=finishtime;
timer.schedule(new TimerTask()
{
public void run() {
finishtime=System.currentTimeMillis();
duration=finishtime-starttime;
String str=df.format(new Date(duration));
L12.setText(str);
if(summary==tishu){
try {
Thread.sleep(2000000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}, 1000, 1000);
}
});
出题功能:
B1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
noanswer=tishu-dadui-dacuo;//算出未答题数
L9.setText("");
L8.setText(null);
T3.setText(null);
if(summary==tishu)
{
JOptionPane.showMessageDialog(null, "答题已完成,答题总题数:"+tishu+",答对题数:"+dadui+",答错题数:"+dacuo+",未答数:"+noanswer);
frame.setVisible(false);
}
//生成一个随机算术.该处代码由上次作业改成。
if(t==1){summary++;} } });
结果判断与输出
T3.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent d) {
if(sum1.equals(T3.getText()))
{
L9.setText("Right!");
dadui++;
L10.setText(String.valueOf(dadui));
}
else
{
L9.setText("Error!answer is:"+sum1);
dacuo++;
FileWriter fw = null;
try {
//如果文件存在,则追加内容;如果文件不存在,则创建文件
File f=new File("D:/cuoti.txt");
fw = new FileWriter(f, true);
}
catch (IOException e) {
e.printStackTrace();
}
PrintWriter pw = new PrintWriter(fw);
pw.println(L8.getText()+"="+T3.getText()+" "+"正确答案:"+sum1 +'\n');
pw.flush();
try {
fw.flush();
pw.close();
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
L11.setText(String.valueOf(dacuo));
}
}
});
错题统计收集
FileWriter fw = null;
try {
//如果文件存在,则追加内容;如果文件不存在,则创建文件
File f=new File("D:/cuoti.txt");
fw = new FileWriter(f, true);
}
catch (IOException e) {
e.printStackTrace();
}
PrintWriter pw = new PrintWriter(fw);
pw.println(L8.getText()+"="+T3.getText()+" "+"正确答案:"+sum1 +'\n');
pw.flush();
try {
fw.flush();
pw.close();
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
B6.addActionListener(new ActionListener(){//错题本打开
public void actionPerformed(ActionEvent d) {
try
{
Runtime.getRuntime().exec("notepad.exe D:/cuoti.txt");
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}
});
语言切换
B3.addActionListener(new ActionListener(){//简体中文
public void actionPerformed(ActionEvent e) {
L1.setText("题数:");
L2.setText("题目:");
L3.setText("输入答案:");
L4.setText("结果:");
L5.setText("答对题数:");
L6.setText("答错题数:");
L7.setText("答题时间:");
B0.setText("开始");
B1.setText("下一题");
B6.setText("错题集");
//B2.setText("计时");
}
});
B4.addActionListener(new ActionListener(){//繁体中文
public void actionPerformed(ActionEvent e) {
L1.setText("題數");
L2.setText("題目:");
L3.setText("輸入答案:");
L4.setText("結果:");
L5.setText("答對題數:");
L6.setText("答錯題數:");
L7.setText("答題時間:");
B0.setText("開始");
B1.setText("下一題");
B6.setText("錯題集");
}
});
B5.addActionListener(new ActionListener(){//英文
public void actionPerformed(ActionEvent e) {
L1.setText("Question number");
L2.setText("Test:");
L3.setText("Enter the answer:");
L4.setText("Result:");
L5.setText("Right number:");
L6.setText("Wrong number:");
L7.setText("Answer times:");
B0.setText("Run");
B1.setText("Next");
B6.setText("WrongTest");
}
});
d.测试运行






PSP表格
|
PSP2.1 |
Personal Software Process Stages |
Estimated time(h) |
actual time(h) |
|
Planning |
计划 |
16 |
17 |
|
· Estimate |
估计这个任务需要多少时间 |
16 |
17 |
|
Development |
开发 |
8 |
9 |
|
· Analysis |
需求分析 (包括学习新技术) |
1 |
0.5 |
|
· Design Spec |
生成设计文档 |
0.5 |
0.5 |
|
· Design Review |
设计复审 |
1 |
1 |
|
· Coding Standard |
代码规范 |
0.5 |
0.2 |
|
· Design |
具体设计 |
2 |
1.5 |
|
· Coding |
具体编码 |
8 |
8 |
|
· Code Review |
代码复审 |
0.5 |
0.5 |
|
· Test |
测试(自我测试,修改代码,提交修改) |
1 |
1.5 |
|
Reporting |
报告 |
1.5 |
1.5 |
|
· |
测试报告 |
||
|
· |
计算工作量 |
0.5 |
1 |
|
· |
并提出过程改进计划 |
1 |
1 |
小结

此次代码结对完成,首先我和欧阳勇一起讨论并且决定了程序的总体布局和需要的组件,然后有了明确的目标。此次程序使用我的四则运算算法代码,结对写代码时当出现那种白痴错误时自己没发现而队友在旁边看着马上就能发现然后提醒你,毕竟当局者迷旁观者清。还有就是遇到问题时两个人一起商量或上网搜索然后总结讨论,这样解决问题不仅有效而且省时间。写代码时互相提出建议不断改进。
特别此次在写错题集部分时,出现文本刷新问题,刚开始会替换之前的内容并不能累计错题,然后一起讨论查资料然后综合建议解决了问题。还有就是计时部分解决方案,由于对线程不是很熟悉,然后也是两人一起学习研究解决了困难。
汉堡包式评价?
先来一片面包:两人达成共识使用java和gui实现。而且都认为朱茵是女神~没毛病。
再把肉放上:这次编程中队友的优点很容易发现他对于问题能快速发现并且解决问题的想法思路很清晰快速,做事效率高,当碰到问题时会马上进行处理不会先放那不管;缺点呢可能是编程耐心差了点。耐心点认真点无疑能使他编程水平更上一层楼,对于问题的处理能力也能得到加强。
然后再来一片面包: 两人编程中有领航员和驾驶员关系时确实能使工作更加顺利。也更能发现自己有缺但并更好的改进。
结对编程1.四则运算GUI版的更多相关文章
- 结对编程项目——四则运算vs版
结对编程项目--四则运算vs版 1)小伙伴信息: 学号:130201238 赵莹 博客地址:点我进入 小伙伴的博客 2)实现的功能: 实现带有用户界面的四则运算:将原只能在 ...
- 结对编程1——四则运算-GUI
码市链接:https://coding.net/u/hmhhh/p/hmh-homework/git/tree/master/ 201421123003 黄建英 201421123004 黄美海 题目 ...
- 结对编程作业——四则运算GUI程序
毛忠庆 201421122088 赵嘉楠 201421122065 源代码存放位置:https://gitee.com/ouwen0819/SiZeYunSuan.git 题目描述 使用 -n 参数控 ...
- 20175324王陈峤宇 2018-2019-2《Java程序设计》结对编程项目-四则运算 第一周 阶段性总结
20175324王陈峤宇 2018-2019-2<Java程序设计>结对编程项目-四则运算 第一周 阶段性总结 需求分析 这次的结对作业是要求我们利用栈来设计一个计算器. 自动生成四则运算 ...
- 20175229许钰玮 2018-2019-2《Java程序设计》结对编程项目-四则运算 第一周 阶段性总结
20175229许钰玮 2018-2019-2<Java程序设计>结对编程项目-四则运算 第一周 阶段性总结 需求分析 自动生成四则运算题目(加.减.乘.除). 既可以用前缀算法(波兰算法 ...
- 20175311胡济栋 2018-2019-2《Java程序设计》结对编程项目-四则运算 第二周 阶段性总结
20175311胡济栋 2018-2019-2<Java程序设计>结对编程项目-四则运算 第二周 阶段性总结 需求分析 这是利用栈来设计一个计算器的第二阶段总结. 自动生成四则运算的题目( ...
- 20165223 结对编程之四则运算week2-整体总结
目录 一.结对对象 二.需求分析 三.设计思路 四.核心代码 五.功能截图 六.结对感受 一.结对对象 担任角色(本周交换角色,流动学习) 驾驶员(Driver):20165218 赵冰雨(是控制键盘 ...
- 20165223 结对编程之四则运算week1-阶段性总结
目录 一.结对对象 二.需求分析 三.设计思路 四.功能截图 五.结对感受 一.结对对象 担任角色 驾驶员(Driver):20165223 蔡霓(是控制键盘输入的人) 领航员(Navigator): ...
- 2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-最后阶段
2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-最后阶段 最后的一周,时间越来越紧张,因为之前的拖沓和一些事情的耽误,导致了如今的紧张,这一周应该是我们小组效率最高 ...
随机推荐
- Head First 设计模式 第3章 装饰者模式
第3章 装饰者模式 1.定义/说明 动态.透明的将职责附加到对象上(或从对象上撤销),而不影响其他对象.若要扩展功能,装饰者模式提供了比继承更富有弹性的替代方案. 2.介绍 首先让我们先来介绍一下场景 ...
- 27. Remove Element【leetcode】
27. Remove Element[leetcode] Given an array and a value, remove all instances of that value in place ...
- VIM的字符编码设置
vim 编码方式的设置和所有的流行文本编辑器一样,Vim 可以很好的编辑各种字符编码的文件,这当然包括UCS-2.UTF-8 等流行的 Unicode 编码方式.然而不幸的是,和很多来自 Linux ...
- android学习笔记之GridView的使用
除了listview会使用适配器外,还有一种就是GridView,listview是单列多行的显示形式,适用于多项目的查看.而GridView是多行多列的显示形式,一般用在查看图片样式的activit ...
- MATLAB中绘制图形的时候,坐标和标题倒置
1.如上图所示,直方图的坐标轴以及标题文字都颠倒了 原因: 在MATLAB显示的subplot函数中,图像与直方图这些不属于一类,所以在显示的时候会出现这种情况 解决办法:1>将图像与直方图分开 ...
- Mysql报错注入原理分析(count()、rand()、group by)
Mysql报错注入原理分析(count().rand().group by) 0x00 疑问 一直在用mysql数据库报错注入方法,但为何会报错? 百度谷歌知乎了一番,发现大家都是把官网的结论发一下截 ...
- iOS绘图框架CoreGraphics分析
由于CoreGraphics框架有太多的API,对于初次接触或者对该框架不是十分了解的人,在绘图时,对API的选择会感到有些迷茫,甚至会觉得iOS的图形绘制有些繁琐.因此,本文主要介绍一下iOS的绘图 ...
- 一个基于ES5的vue小demo
由于现在很多vue项目都是基于ES6开发的,而我学vue的时候大多是看vue官网的API,是基于ES5的,所以对于刚接触项目的我来说要转变为项目的模块化写法确实有些挑战.因此,我打算先做一个基于ES5 ...
- 利用Python实现kNN算法
邻近算法(k-NearestNeighbor) 是机器学习中的一种分类(classification)算法,也是机器学习中最简单的算法之一了.虽然很简单,但在解决特定问题时却能发挥很好的效果.因此,学 ...
- Thinking in Java系列 文档+代码+简评
声明:本人无意侵犯原作者的版权,这里可下载的文档都属于作者自行开放下载的,统一放置在这里是因为不可预测的原因使得原文档和代码不方便下载,故将我所收集的内容统一在这里,如果这里的内容侵犯了别人,请告知我 ...