结对编程1-四则运算(基于GUI)
林晓芳201421123092、陈惠201421123096
coding 地址:https://git.coding.net/lianlian/92.96.1.git
一.题目描述
我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序。进一步,本次要求把这个程序做成GUI(可以是Windows PC 上的,也可以是Mac、Linux,web,手机上的),成为一个有基本功能、一定价值的程序。在下面的功能需求中实现两个:
- 记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算;
- 有计时功能,能显示用户开始答题后的消耗时间;
- 界面支持中文简体/中文繁体/英语,用户可以选择一种。
二.分析实现
a.需求分析:
1.实现GUI界面;
2.实现历史对错题数记录;
3.能够显示用户答题时间;
4.提供中文简体/中文繁体/英语多种语言选择。
b.功能设计:
1.基本功能:多种语言选择、显示历史正确率、答题计时;
2.扩展功能:生成用户错题集。
c.设计实现:
- Background//后台事件处理类:
方法:createTest()//定义一个随机数
checkAnswer(String[] answers)//传入一组答案,校验答案
getQuestions()//获取完整的题目
getStandardAnswer()//获取标准答案
upDate(Integer right,Integer all)//上传正确率
- Client//客户端类:
方法:Client()//客户端构造器
createComponent()//创建面板
showTime()//显示答题时间
showHistory()//显示历史正确率
setLanguage()//设置客户端语言
actionPerformed(ActionEvent e)//按钮事件
- Calculator//计算类:
方法:add(Fraction a, Fraction b)//加法
sub(Fraction a, Fraction b)//减法
mul(Fraction a, Fraction b)//乘法
div(Fraction a, Fraction b)//除法
- Fraction//分数类:
属性:numerator//分子
denominator//分母
方法:creatfraction()//创建分数
GCD(int m, int n)//计算最大公约数
Reduction(int m, int n)//约分
compare(String m, String n)//比较输入结果与答案
- Test//运行类:
main函数执行
d.代码说明:
上传正确率:
public void upDate(Integer right,Integer all){
try {
writer = new BufferedWriter(new FileWriter(new File("history/accuracy.txt")));
writer.write(right.toString());
writer.newLine();
writer.write(all.toString());
writer.newLine();
writer.close();
} catch (IOException e) {
e.printStackTrace();
} }
显示答题时间:
public void showTime() {
labTime = new JLabel(tips.get(1) + "00:00");
labTime.setBounds(580, 0, 120, 50);
jpMain.add(labTime);
// 启动记时线程
new Thread() {
public void run() {
while (true) {
try {
Thread.sleep(1000);
seconds++;
if (seconds >= 60) {
seconds = 0;
minutes++;
}
// 修正分钟数和秒钟数
if (seconds < 10)
secStr = "0" + seconds.toString();
else
secStr = seconds.toString();
if (minutes < 10)
minStr = "0" + minutes.toString();
else
minStr = minutes.toString();
} catch (InterruptedException e) {
e.printStackTrace();
}
labTime.setText(tips.get(1) + minStr + ":" + secStr);
if(isEnd)
break;
}
}
}.start();
}
显示历史正确率:
public void showHistory() {
labAccuracy = new JLabel();
labAccuracy.setBounds(150, 0, 120, 50);
try {
reader = new BufferedReader(new FileReader(new File("history/accuracy.txt")));
his_rightNum = reader.readLine();
his_allNum = reader.readLine();
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
labAccuracy.setText(tips.get(2) + his_rightNum + "/" + his_allNum);
jpMain.add(labAccuracy);
}
设置客户端语言:
public void setLanguage() {
String[] choiceLanguage = { "简体中文", "繁体中文", "English" };
String language = (String) JOptionPane.showInputDialog(null, "请选择客户端的语言:\n", "Choice a language for client",
JOptionPane.PLAIN_MESSAGE, new ImageIcon("icon.png"), choiceLanguage, "简体中文");
if (language == null) {
System.exit(-1);
} else {
try {
reader = new BufferedReader(new FileReader(new File("language/" + language + ".txt")));
String s;
while ((s = reader.readLine()) != null) {
tips.add(s);
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
e.测试运行:
三.PSP展示
PSP2.1 |
Personal Software Process Stages |
Time (%) Senior Student |
Time (%) |
Planning |
计划 |
2h |
2.5h |
· Estimate |
估计这个任务需要多少时间 |
40h |
42h |
· Analysis |
需求分析 (包括学习新技术) |
3h |
4h |
· Coding Standard |
代码规范 |
1h |
1h |
· Design |
具体设计 |
3h |
3h |
· Coding |
具体编码 |
25h |
30h |
· Test |
测试(自我测试,修改代码,提交修改) |
1.5h |
2h |
Reporting |
报告 |
1h |
1h |
四.总结
在我们看来,结对编程是能够带来1+1>2的效果。虽然第一次结对编程我们遇到了很多问题,但同时我们也收获了很多。作为“驾驶员”,在编程时就会格外的认真,注意每一段代码的格式,按照统一的规范来写,以便队友审查。作为“领航员”,你会时刻关注你旁边的人写的代码,思维在不停的运作,不仅提高了代码质量,也减少了复审所需要的时间,不用事后再去花大精力去阅读、修改代码。而且当一个人独自写程序时,我们总是容易出现懈怠的情绪,而当两个人结对编程时,通过互相监督、提醒,编程效率大大提高。
结对编程1-四则运算(基于GUI)的更多相关文章
- 第二次作业:结对编程,四则运算的GUI实现
小伙伴:201421123031 余洋 201421123044 潘志坚 题目要求: 我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序.进一步,本次要求把这个程序做成GUI(可以是W ...
- 结对编程项目——四则运算vs版
结对编程项目--四则运算vs版 1)小伙伴信息: 学号:130201238 赵莹 博客地址:点我进入 小伙伴的博客 2)实现的功能: 实现带有用户界面的四则运算:将原只能在 ...
- 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程序设计』课程 结对编程练习-四则运算-最后阶段 最后的一周,时间越来越紧张,因为之前的拖沓和一些事情的耽误,导致了如今的紧张,这一周应该是我们小组效率最高 ...
- 2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-准备阶段
2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-准备阶段 在一个人孤身奋斗了将近半个学期以后,终于迎来的我们的第一次团队协作共同编码,也就是,我们的第一个结对编程练 ...
- 2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-中坚阶段
2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-中坚阶段 如今的编写,进入了一段时间的中坚阶段,小伙伴的思路虽然很一致,但是总是存在着一定问题,这就造成了我们中坚阶 ...
随机推荐
- NYOJ--541--最强DE 战斗力(递推)
最强DE 战斗力 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 春秋战国时期,赵国地大物博,资源非常丰富,人民安居乐业.但许多国家对它虎视眈眈,准备联合起来对赵国发 ...
- hdu--1548--dfs--蜘蛛牌
/* Name: hdu--1548--蜘蛛牌 Author: shen_渊 Date: 17/04/17 09:15 Description: dfs,不好想,看两个大神的代码好久http://ww ...
- 使用我的编译器,下面的代码 int i=7; printf("%d\n", i++ * i++); 返回 49?不管按什么顺序计算, 难道不该打印出56吗?
尽管后缀自加和后缀自减操作符 ++ 和 -- 在输出其旧值之后才会执行运算, 但这里的"之后"常常被误解.没有任何保证确保自增或自减会在输出变量原值之 后和对表达式的其它部分进行计 ...
- selenium+java破解极验滑动验证码
摘要 分析验证码素材图片混淆原理,并采用selenium模拟人拖动滑块过程,进而破解验证码. 人工验证的过程 打开威锋网注册页面(https://passport.feng.com/?r=user/r ...
- 前端到后台ThinkPHP开发整站(4)
今晚继续我的这个项目的开发,今晚也是写的不多,主要写了一个菜单管理功能的CURD方法,前端界面还没有进行编写. 菜单管理Model层的代码: <?php namespace Common\Mod ...
- 纯JavaScript实现异步Ajax的基本原理
Ajax实际就是XMLHttpRequest对象和DOM.(X)HTML和CSS的简称,用于概括异步加载页面内容的技术. Ajax实例 HTML代码如下,包含一个h5标题和一个按钮: JS代码如下 ...
- CBO 基于成本的优化器[基础]
转载:CBO基于成本的优化器 ----------------------------------2013/10/02 CBO基于成本的优化器:让oracle获取所有执行计划的相关信息,通过对这些信息 ...
- 位图索引(Bitmap Index)的故事
您如果熟悉Oracle数据库,我想您对Thomas Kyte的大名一定不会陌生.Tomas主持的asktom.oracle.com网站享誉Oracle界数十年,绝非幸致.最近在图书馆借到这位Oracl ...
- leetcode 总结part1
从十月份开始到现在,差不多近3个月时间吧. 中间有的时候有事没有办法刷题,也有的题目比较难,比较麻烦,会浪费很多时间,71道题,也都是简单的. 下图是最后20道刷题的记录吧. 完成自己的目标是轻松的. ...
- Spring Data Jpa+SpringMVC+Jquery.pagination.js实现分页
本博客介绍基于Spring Data这款orm框架加上Jquery.pagination插件实现的分页功能. 介绍一下Spring Data框架 spring Data : Spring 的一个子项目 ...