结对作业1--基于GUI的四则运算
201421123002 翁珊,201421123006 黄月梅,201421123007 徐晓珊
题目描述:
我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序。进一步,本次要求把这个程序做成GUI(可以是Windows PC 上的,也可以是Mac、Linux,web,手机上的),成为一个有基本功能、一定价值的程序。在下面的功能需求中实现两个:
- 记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算。
- 有计时功能,能显示用户开始答题后的消耗时间。
- 界面支持中文简体/中文繁体/英语,用户可以选择一种;
在软件开发中,我们需要大量使用工具来辅助设计,每个环节大家都要善于学习和使用工具。设计的时候,请使用思维导图设计你的模块之间的关系,
需求分析:
- 除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24
- 运算符为 +, −, ×, ÷,可以处理用户的输入。
- 有计时功能,能显示用户开始答题后的消耗时间。
- 界面支持中文简体/中文繁体/英语,用户可以选择一种;
思维导图如下:

关键代码分析:
(1)Frames类制作基本框架
- 以流式结构排列
flow = new FlowLayout();
flow.setAlignment(FlowLayout.LEFT);
flow.setHgap();
flow.setVgap();
setTitle(name);
setSize(, );
setLayout(flow); - 界面支持切换语言利用按钮的事件监听器实现(以下只显示繁体部分)
B6.addActionListener(new ActionListener(){//选择繁体
public void actionPerformed(ActionEvent e) {
B1.setText("生成題目");
B2.setText("查看答案");
B3.setText("清除信息");
B4.setText("提交答案");
L1.setText("題目數");
L2.setText("範圍");
L3.setText("伱的答案");
}
}); - 计时功能实现
...
while(true)
{
validate();
if(open==)
{
Minute.setText(String.valueOf(M));
Second.setText(String.valueOf(S));
if(H==)
{
H=;
S++;
}
if(S==)
{
H=;
S=;
M++;
}
if(M==)
{
M=;
S=;
H=;
}
try{
Thread.sleep();
}
catch(Exception e){ }
H++; }
if(clear==)
{
M=S=H=;
Minute.setText(String.valueOf(M));
Second.setText(String.valueOf(S));
clear=;
}
...
(2)Aswer类进行答案的正误判断
static boolean compare(String a, String b)
{
if (a.equals(b))
{System.out.println("回答正确");
return true;}
else
{
System.out.println("回答错误,正确答案是" + b);
return false;
}
}
(3)compute类进行+,—, *,÷的运算(以加法为例)
public static String add(Frac a, Frac b)
{
int i, j, k, s, m, n, p;
i = a.getZi();
j = a.getMu();
k = b.getZi();
s = b.getMu();
m = i * s + j * k;
n = s * j;
p = Answer.getGCD(m, n);
return Answer.Reduction(m / p, n / p);
}
(4)进行分数的构造及化简
public class Frac {
private int Zi;
private int Mu;
private String fra;
public Frac() {
}
(5)Test类调用四则运算的图形框架
public class Test {
public static void main(String[] args) throws Throwable{
Frac f1 = new Frac();
Frac f2 = new Frac();
new Frames("欢迎来到711制作的四则运算",f1,f2);
}
}
实验结果:
语言切换功能展示:
a.简体:

b.繁体:

c.英语:

结对照片展示:

coding链接:https://coding.net/u/xxs24/p/pairhomework1/git/tree/master
PSP表格:
|
PSP2.1 |
Personal Software Process Stages |
Estimated Time(hour) |
Actual Time (hour) |
|
Planning |
计划 |
0.5 |
0.5 |
|
· Estimate |
估计这个任务需要多少时间 |
10 |
12 |
|
Development |
开发 |
5 |
4 |
|
· Analysis |
需求分析 (包括学习新技术) |
0.5 |
1 |
|
· Design Spec |
生成设计文档 |
1 |
1 |
|
· Design Review |
设计复审 |
1.5 |
2 |
|
· Coding Standard |
代码规范 |
0.5 |
0.5 |
|
· Design |
具体设计 |
1 |
1.5 |
|
· Coding |
具体编码 |
6 |
6.5 |
|
· Code Review |
代码复审 |
0.5 |
1/3 |
|
· Test |
测试(自我测试,修改代码,提交修改) |
0.5 |
2/3 |
|
Reporting |
报告 |
0.5 |
0.5 |
|
· |
测试报告 |
1/6 |
1/6 |
|
· |
计算工作量 |
1/6 |
0.25 |
|
· |
并提出过程改进计划 |
0.25 |
0.25 |
小结:
本次实验由于上次的实验我是基于C++的,黄月梅是基于Python的,而我对C++的图形界面还不熟悉,月梅也对Python框架比较模糊,所以在我们三个的讨论下,一致同意使用翁珊同学的实验来进行图形界面的实现。
首先我们一起讨论了总体的布局和分析其需要的功能。也觉得翁珊同学的控制题目范围的这个设计很不错,也继续沿用了下来。主要是增加了GUI框架、计时功能以及语言的切换功能(这里对于本实验很多繁体等于简体表示难过)。由于这个实验翁珊比较熟悉,所以主体编程是由翁珊负责的,我和黄月梅主要负责代码的复审和测试运行以及提出不足,期间效率得到不小的提升。遇到问题一起讨论,也比之前自己一个人思考解决的速度更快!
对于本次实验我们觉得计时器的那一块比较有挑战性。后来经过讨论查找资料以及请教同学之后也顺利解决了。因为经过这次实验后,觉得结对编程的好处真的很多!
汉堡包式评价:
- 先来一片面包:三人达成结对编程的共识,况且我们是一个宿舍的,让人觉得处于一个安全的环境
- 再把肉放上:这次编程过程中,虽然翁珊负责主体编程,但是期间遇到了诸多问题和不足都是大家一起提出来一起想办法解决的。也因为我们三个的编程基础相对也比较薄弱,所以遇到棘手问题也比较难以解决,也比较缺乏耐心。但是我相信,通过几次编程实验的努力完成,吸取经验教训后,我们将会做的更好。
- 然后再来一片面包: 这次编程让我们对对方的编程实力有了更深的了解,也发现只要认真努力对待就可以把工作做好。
结对作业1--基于GUI的四则运算的更多相关文章
- 结对作业:基于GUI实现四则运算
1)Coding.Net项目地址:https://git.coding.net/day_light/GUIszysLL.git 2)在开始实现程序之前,在下述PSP表格记录下你估计将在程序的各个模块的 ...
- 结对作业1----基于GUI的四则运算生成器
组员:201421123015 陈麟凤 201421123019 张志杰 201421123020 黄海鸿 coding 地址:代码点这里 需求分析: 1.除了整数的四则运算还要支持分数的四则运算: ...
- 基于GUI的四则运算
基于GUI的四则运算 李志强 201421123028 连永刚 201421123014 林方言 201421123023 coding 地址 https://git.coding.net/lizhi ...
- 结对作业--基于GUI的四则运算生成器
组员:201421123015 陈麟凤 201421123019 张志杰 201421123020 黄海鸿 coding 地址 :https://coding.net/u/zhang1995/p/wo ...
- 结队编程-基于gui的四则运算生成器
成员:卢少锐 201421123027.刘存201421033023 coding.net地址 1.需求分析:除了实现四则运算的功能外,还添加了计时器功能和语言选择功能 2.程序设计:这次作业是基于上 ...
- 结队编程--基于GUI的四则运算
coding地址 https://git.coding.net/lizhiqiang0x01/GUI-sizeyunsuan.git 李志强 201421123028 连永刚 201421123014 ...
- 【第二次个人作业】结对作业Core第一组:四则运算生成PB16061082+PB16120517
[整体概况] 1.描述最终的代码的实现思路以及关键代码. 2.结对作业两个人配合的过程和两个人分工. 3.API接口文档和两个组的对接. 4.效能分析,优化分析和心得体会. [代码实现] 一. 实现功 ...
- 结对作业(1)----基于GUI的四则运算
小伙伴:201421123031 余洋 201421123044 潘志坚 题目要求: 我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序.进一步,本次要求把这个程序做成GUI(可以是W ...
- 结对作业-基于GUI的四则运算
一.需求分析 1.题目要求: 我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序.进一步,本次要求把这个程序做成GUI(可以是Windows PC 上的,也可以是Mac.Linux,web ...
随机推荐
- /etc/shadow,/etc/passwd,/etc/shadow,/etc/passwd文件的内容解释
1.1 /etc/passwd文件内容格式 该目录存储的是操作系统用户信息,该文件为所有用户可见 用户名: 密码 : uid : gid :用户描述:主目录:登陆shell 举个 ...
- Akka(17): Stream:数据流基础组件-Source,Flow,Sink简介
在大数据程序流行的今天,许多程序都面临着共同的难题:程序输入数据趋于无限大,抵达时间又不确定.一般的解决方法是采用回调函数(callback-function)来实现的,但这样的解决方案很容易造成“回 ...
- Linux操作系统-安装JAVA
首先准备好jdk文件(例如:本地已下载了jdk-6u33-linux-x64.bin),将它上传到路径 “/home/username/” 这个目录的下面 其次按步骤执行: 1.进入到 “/home/ ...
- JavaScript基础知识(一)
一.JavaScript基础 1.JavaScript用法: HTML 中的脚本必须位于 <script> 与 </script> 标签之间. 脚本可被放置在 HTML 页面的 ...
- ASP.NET Core身份验证服务框架IdentityServer4-整体介绍
一.整体情况 现代应用程序看起来更像这个: 最常见的相互作用: 浏览器与Web应用程序的通信 Browser -> Web App Web应用程序与Web API通信 基于浏览器的应用程序与We ...
- vs2012中自带IIS如何让其他电脑访问
在一些场景中,我们需要让其他电脑或者说模拟器访问我们的服务进行调试,而vs2012自带的iis Express启动的程序其他设备是不能访问,iis express启动的程序路径是http://loca ...
- Masonry1.0.2 源码解析
在了解Masonry框架之前,有必要先了解一下自动布局的概念.在iOS6之前,UI布局的方式是通过frame属性和Autoresizing来完成的,而在iOS6之后,苹果公司推出了AutoLayout ...
- Go语言循环判断的使用~
Go 语言条件语句 条件语句需要开发者通过指定一个或多个条件,并通过测试条件是否为 true 来决定是否执行指定语句,并在条件为 false 的情况在执行另外的语句. 下图展示了程序语言中条件语句的结 ...
- Azkaban3.x集群部署(multiple executor mode)
介绍 Azkaban是由Linkedin公司推出的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程.Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于 ...
- 【教程】webstorm的破解以及汉化
安装包以及汉化包的下载(大小151M): 链接:http://pan.baidu.com/s/1hsA5GUS 密码:roui 破解: 正常安装的webstorm是要注册码的,这里教你免费使用的方法, ...