201421123002 翁珊,201421123006 黄月梅,201421123007 徐晓珊

题目描述:

我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序。进一步,本次要求把这个程序做成GUI(可以是Windows PC 上的,也可以是Mac、Linux,web,手机上的),成为一个有基本功能、一定价值的程序。在下面的功能需求中实现两个:

  1. 记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算。
  2. 有计时功能,能显示用户开始答题后的消耗时间。
  3. 界面支持中文简体/中文繁体/英语,用户可以选择一种;

在软件开发中,我们需要大量使用工具来辅助设计,每个环节大家都要善于学习和使用工具。设计的时候,请使用思维导图设计你的模块之间的关系,

需求分析:

  1. 除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24
  2. 运算符为 +, −, ×, ÷,可以处理用户的输入。
  3. 有计时功能,能显示用户开始答题后的消耗时间。
  4. 界面支持中文简体/中文繁体/英语,用户可以选择一种;

思维导图如下:

关键代码分析:

(1)Frames类制作基本框架

  1. 以流式结构排列

     flow = new FlowLayout();
    flow.setAlignment(FlowLayout.LEFT);
    flow.setHgap();
    flow.setVgap();
    setTitle(name);
    setSize(, );
    setLayout(flow);
  2. 界面支持切换语言利用按钮的事件监听器实现(以下只显示繁体部分)
    B6.addActionListener(new ActionListener(){//选择繁体
    public void actionPerformed(ActionEvent e) {
    B1.setText("生成題目");
    B2.setText("查看答案");
    B3.setText("清除信息");
    B4.setText("提交答案");
    L1.setText("題目數");
    L2.setText("範圍");
    L3.setText("伱的答案");
    }
    });
  3. 计时功能实现
    ...
    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. 先来一片面包:三人达成结对编程的共识,况且我们是一个宿舍的,让人觉得处于一个安全的环境
  2. 再把肉放上:这次编程过程中,虽然翁珊负责主体编程,但是期间遇到了诸多问题和不足都是大家一起提出来一起想办法解决的。也因为我们三个的编程基础相对也比较薄弱,所以遇到棘手问题也比较难以解决,也比较缺乏耐心。但是我相信,通过几次编程实验的努力完成,吸取经验教训后,我们将会做的更好。
  3. 然后再来一片面包: 这次编程让我们对对方的编程实力有了更深的了解,也发现只要认真努力对待就可以把工作做好。

结对作业1--基于GUI的四则运算的更多相关文章

  1. 结对作业:基于GUI实现四则运算

    1)Coding.Net项目地址:https://git.coding.net/day_light/GUIszysLL.git 2)在开始实现程序之前,在下述PSP表格记录下你估计将在程序的各个模块的 ...

  2. 结对作业1----基于GUI的四则运算生成器

    组员:201421123015 陈麟凤 201421123019 张志杰 201421123020 黄海鸿 coding 地址:代码点这里 需求分析: 1.除了整数的四则运算还要支持分数的四则运算: ...

  3. 基于GUI的四则运算

    基于GUI的四则运算 李志强 201421123028 连永刚 201421123014 林方言 201421123023 coding 地址 https://git.coding.net/lizhi ...

  4. 结对作业--基于GUI的四则运算生成器

    组员:201421123015 陈麟凤 201421123019 张志杰 201421123020 黄海鸿 coding 地址 :https://coding.net/u/zhang1995/p/wo ...

  5. 结队编程-基于gui的四则运算生成器

    成员:卢少锐 201421123027.刘存201421033023 coding.net地址 1.需求分析:除了实现四则运算的功能外,还添加了计时器功能和语言选择功能 2.程序设计:这次作业是基于上 ...

  6. 结队编程--基于GUI的四则运算

    coding地址 https://git.coding.net/lizhiqiang0x01/GUI-sizeyunsuan.git 李志强 201421123028 连永刚 201421123014 ...

  7. 【第二次个人作业】结对作业Core第一组:四则运算生成PB16061082+PB16120517

    [整体概况] 1.描述最终的代码的实现思路以及关键代码. 2.结对作业两个人配合的过程和两个人分工. 3.API接口文档和两个组的对接. 4.效能分析,优化分析和心得体会. [代码实现] 一. 实现功 ...

  8. 结对作业(1)----基于GUI的四则运算

    小伙伴:201421123031 余洋 201421123044  潘志坚  题目要求: 我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序.进一步,本次要求把这个程序做成GUI(可以是W ...

  9. 结对作业-基于GUI的四则运算

    一.需求分析 1.题目要求: 我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序.进一步,本次要求把这个程序做成GUI(可以是Windows PC 上的,也可以是Mac.Linux,web ...

随机推荐

  1. ifconfig命令--查看、配置、启用或禁用网络接口的工具

    ifconfig 是一个用来查看.配置.启用或禁用网络接口的工具,这个工具极为常用的.可以用这个工具来临时性的配置网卡的IP地址.掩码.广播地址.网关等.也可以把它写入一个文件中(比如/etc/rc. ...

  2. JavaScript闭包,只学这篇就够了

    # 闭包不是魔法 这篇文章使用一些简单的代码例子来解释JavaScript闭包的概念,即使新手也可以轻松参透闭包的含义. 其实只要理解了核心概念,闭包并不是那么的难于理解.但是,网上充斥了太多学术性的 ...

  3. 开源作业调度工具实现开源的Datax、Sqoop、Kettle等ETL工具的作业批量自动化调度

    1.阿里开源软件:DataX DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL.Oracle等).HDFS.Hive.ODPS.HBase.FTP等各种异构数据源之间稳 ...

  4. Oracle execute and call

    --execute和call的区别 -------------------------2014/01/14 EXEC is a sqlplus command that put its argumen ...

  5. Guava Cache源码解析

    概述: 本次主要是分析cache的源码,基本概念官方简介即可. 基本类图: 在官方的文档说明中,Guava Cache实现了三种加载缓存的方式: LoadingCache在构建缓存的时候,使用buil ...

  6. UI设计|PS软件操作应用——GIF动图

      前  言 JRedu 在之前的分享中,跟大家主要讲解了PS软件工具的基本操作,对主要的图层.蒙版.通道和滤镜都有一些介绍,希望对大家有所帮助,在介绍这些工具时也提到过GIF,而在本次分享中就跟大家 ...

  7. Clang之词法分析Lex

    Clang是LLVM编译器框架的前端(Frontend)编译器,可编译链接C.C++.Objective-C和Objective-C++四种语言的项目代码.Clang 的开发目标是提供一个可以替代 G ...

  8. Publish Web Site To IIS From VS

    Referenced: http://jingyan.baidu.com/article/7908e85ca6db2daf491ad27e.html 1. Install IIS on IIS ser ...

  9. 【Js应用实例】限制上传图片大小

    需求:前端页面开发中,常遇到图片上传的需求,一般要求限制图片格式及大小. 说明:这里就把实现此功能所需代码贴出来,供同志们参考,也方便我以后复用. 要点:1.处理 类型type为file的输入元素的v ...

  10. TensorFlow框架(3)之MNIST机器学习入门

    1. MNIST数据集 1.1 概述 Tensorflow框架载tensorflow.contrib.learn.python.learn.datasets包中提供多个机器学习的数据集.本节介绍的是M ...