结对作业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 ...
随机推荐
- 《撸轮子系列》之LoadPE
前言 我新书<Python爬虫开发与项目实战>出版了. 这本书包括基础篇,中级篇和深入篇三个部分,不仅适合零基础的朋友入门,也适合有一定基础的爬虫爱好者进阶,如果你不会分布式爬虫,不会千万 ...
- Markdown简明教程
一.Markdown到底是什么? Markdown是一种轻量级的标记语言,它使用很少量的符号控制文字的样式和排版,简单易学,使你更专注于文字. 二.Markdown的使用 接下来让我们一起来看下Mar ...
- 创建第一个简单的AI分类器
from sklearn import tree# 第一个简单的分类器features = [[140, 1], [130, 1], [150, 0], [170, 0]] #列表左边的变量代表水果的 ...
- 多个测试类 只使用同一个浏览器,同一个driver对象, 或者同一个页面的对象
如果是:多个测试类 只使用同一个浏览器,同一个driver对象, 或者同一个页面的对象,只需要:1. 创建一个基本的测试类(BaseTest),具有一个公共静态的driver属性, public st ...
- statement和preparedstatement的区别
在执行SQL命令时,我们有二种选择:可以使用PreparedStatement对象,也可以使用Statement对象.无论多少次地使用同一个SQL命令,PreparedStatement都只对它解析和 ...
- .net core 2.0学习笔记(五):程序配置&ConfigurationManager
配置组件是.net framework中非常常用的功能.在创建.net framework 工程时,系统不仅会自动生成app.config文件,而且还提供了非常强大的访问类库.但是这些好东西,在.ne ...
- phpStudy下安装memcache扩展
简要:参考<phpStydy配置memcache扩展>,期间安装不到memcache;为此向大家分享我遇到的问题和解决办法,希望能够跟各位PHP大神学习探索,如果有不对或者好的建议告知下: ...
- 利用Python实现kNN算法
邻近算法(k-NearestNeighbor) 是机器学习中的一种分类(classification)算法,也是机器学习中最简单的算法之一了.虽然很简单,但在解决特定问题时却能发挥很好的效果.因此,学 ...
- 一些方便的bash命令
1.文件名大小写转换: (1)大写转小写: ls | awk '{printf("mv %s %s\n", $0, tolower($0))|"sh"}' (2 ...
- 【VMware Workstation】虚拟机动态IP NAT连接外部网络(局域网以及广域网)
由于公司办公使用的账号认证获得IP,在虚拟机使用原来的桥接模式无法连接外网,因而需要更换虚拟机的网络连接方式. 虚拟机软件:VMware Workstation 12 Pro 虚拟机:centos7 ...