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

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. 以流式结构排列

    1 flow = new FlowLayout();
    2 flow.setAlignment(FlowLayout.LEFT);
    3 flow.setHgap(30);
    4 flow.setVgap(15);
    5 setTitle(name);
    6 setSize(525, 500);
    7 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==1)
                {
                    Minute.setText(String.valueOf(M));
                    Second.setText(String.valueOf(S));
                    if(H==99)
                    {
                        H=0;
                        S++;
                    }
                    if(S==60)
                    {
                        H=0;
                        S=0;
                        M++;
                    }
                    if(M==60)
                    {
                        M=0;
                        S=0;
                        H=0;
                    }
                    try{
                        Thread.sleep(10);
                    }
                    catch(Exception e){
    
                    }
                    H++;
    
                }
                if(clear==1)
                {
                    M=S=H=0;
                    Minute.setText(String.valueOf(M));
                    Second.setText(String.valueOf(S));
                    clear=0;
                }
    ...

(2)Aswer类进行答案的正误判断

 1 static boolean compare(String a, String b)
 2
 3 {
 4
 5 if (a.equals(b))
 6
 7 {System.out.println("回答正确");
 8
 9 return true;}
10
11 else
12
13 {
14
15 System.out.println("回答错误,正确答案是" + b);
16
17 return false;
18
19 }
20
21 }

(3)compute类进行+,—, *,÷的运算(以加法为例)

 1 public static String add(Frac a, Frac b)
 3     {
 5         int i, j, k, s, m, n, p;
 7         i = a.getZi();
 9         j = a.getMu();
11         k = b.getZi();
13         s = b.getMu();
15         m = i * s + j * k;
17         n = s * j;
19         p = Answer.getGCD(m, n);
21         return Answer.Reduction(m / p, n / p);
23     }

(4)进行分数的构造及化简

 1 public class Frac {
 2
 3 private int Zi;
 4
 5 private int Mu;
 6
 7 private String fra;
 8
 9 public Frac() {
10
11 }

(5)Test类调用四则运算的图形框架

 1 public class Test {
 5     public static void main(String[] args) throws Throwable{
 7         Frac f1 = new Frac();
 9         Frac f2 = new Frac();
11             new Frames("欢迎来到711制作的四则运算",f1,f2);
13     }
15 }

实验结果:

语言切换功能展示:

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. 然后再来一片面包: 这次编程让我们对对方的编程实力有了更深的了解,也发现只要认真努力对待就可以把工作做好。
时间: 2024-10-22 13:50:52

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

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

代码地址:https://git.oschina.net/cococok2/groupwork1/tree/master 学号:201421123030 201421123005 需求分析: 能按照用户的要求自动生成四则混合运算的程序,并做成GUI界面. 此次开发的新功能:GUI图形界面,记录用户做题的对错数目以及总数.(此次因时间原因还没有做出计时功能,后续会一直更新并改进) 程序设计思维导图: GUI界面如下:(时间原因没有优化界面,仅仅实现了基本功能) 开始界面 点击开始后,出现主界面(此

结对编程1 —— 基于GUI和Swing的四则运算题目生成器

结对编程1 -- 基于GUI和Swing的四则运算题目生成器 合作伙伴 201421123089 周迪 201421123069 黄睿 代码地址:https://git.coding.net/H1159650478/sizeyunsuanjiaqiang.git 题目描述 我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序.进一步,本次要求把这个程序做成GUI(可以是Windows PC 上的,也可以是Mac.Linux,web,手机上的),成为一个有基本功能.一定价值的程序.在下面

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

成员:卢少锐 201421123027.刘存201421033023 coding.net地址:https://git.coding.net/echo1/lc.git 1.需求分析:除了实现四则运算的功能外,还添加了计时器功能和语言选择功能 2.程序设计:这次作业是基于上次作业写的四则运算代码的,我跟卢少锐同学经过讨论,决定用他上次作业的代码,然后进行了一些修改,得到calculator()类,;在此基础上我们又加了一个szyswindows()类,这个类的作用如下: 1).实现计时功能: 2)

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

coding 地址 https://coding.net/u/Dialect/p/GUI-tszys/git/tree/master/ 李志强 201421123028 连永刚 201421123014 一.题目要求: 1.除了整数之外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24 2.运算符为 +, ?, ×, ÷ 3.并且要求能处理用户的输入,并判断错误,打分统计正确率 4.要求能处理用户输入的真分数,如 1/2, 5/12 等 5.程序基于GUI 界面 6

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

一.需求分析 1.题目要求: 我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序.进一步,本次要求把这个程序做成GUI(可以是Windows PC 上的,也可以是Mac.Linux,web,手机上的),成为一个有基本功能.一定价值的程序.在下面的功能需求中实现两个: 记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算.有计时功能,能显示用户开始答题后的消耗时间.界面支持中文简体/中文繁体/英语,用户可以选择一种: 2.题目分析: (1)支持真分数和整

软件工程结对作业 四则运算界面设计

软件工程结对作业 四则运算界面设计 康鑫  PB16060203 娄雨禛  PB16060356 一.项目分析 二.进度规划与完成情况 三.主要函数 四.简单的数据测试 五.编程困惑与心得 原文地址:https://www.cnblogs.com/RainLou/p/8735480.html

结对作业——随机生成四则运算

结对作业 UI 第三组 朱池苇 PB16150206 刘鼎乾 PB16070837 Github 地址: 项目简介 这次软件工程结对项目为制作一个给小学生用的四则运算出题软件,然后我们抽到的是UI组,也就是负责人机交互--随机生成四则运算--使用Core组封装好的dll模块. 需求分析 对上述各属性参数(生成题目的数量,操作数的数量,题目及答案中的数值的范围--)进行设置 调用Core模块得到题目和运算结果,显示题目,接受输入,并能判断答案是否正确 增加"倒计时"功能,每个题目必须在2

结对作业——四则运算 Part3. 对于结对编程的总结与思考

结对作业--四则运算 Part3. 对于结对编程的总结与思考 PB15061303 刘梓轩PB16061489 艾寅中 GITHUB 地址 戳这里 目录 Part 1. Core代码编写部分 Part 2. 封装与对接相关问题 Part 3. 对于结对编程的总结与思考 关于结对 View:(From 艾中) 不得不说,结对编程给笔者带来了一次全新的编程体验.就领航员与驾驶员的分工而言,刘承担了生成和计算的大部分任务,笔者(艾)负责了显示和输出部分的函数. 首先我作为领航员的时候,实际上是有点懵的

结对作业2——自动生成四则运算

软件结对作业三 1 选择题目 我们在刚开始上课的时候介绍过一个小学四则运算自动生成程序的例子,请实现它,要求: 能够自动生成四则运算练习题 可以定制题目数量 用户可以选择运算符 用户设置最大数(如十以内.百以内等) 用户选择是否有括号.是否有小数 用户选择输出方式(如输出到文件.打印机等) 最好能提供图形用户界面(根据自己能力选做,以完成上述功能为主) 二.单元测试 1 代码运行结果 (1)首先展示的是代码运行成功的界面: (2)以下为加减乘除四种不同运算方式下随机产生的题目: 注:其中用户可以