zoukankan      html  css  js  c++  java
  • 结对编程 (201421123002,201421123006,201421123007)

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

    题目描述:

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

         1.记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算。

         2.有计时功能,能显示用户开始答题后的消耗时间。

         3.界面支持中文简体/中文繁体/英语,用户可以选择一种;

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

    需求分析:

    1. 除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24
    2. 运算符为 +, −, ×, ÷
    3. 并且要求能处理用户的输入,并判断对错,打分统计正确率。
    4. 要求能处理用户输入的真分数, 如 1/2, 5/12 等。

    思维导图:

    关键代码分析:

    1Frames类制作基本框架

    flow = new FlowLayout();
    flow.setAlignment(FlowLayout.LEFT)
    flow.setHgap(30);
    flow.setVgap(15);
    setTitle(name);
    setSize(525, 500);
    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)计时功能实现

    1. ...
    2. while(true)
    3. {
    4. validate();
    5. if(open==1)
    6. {
    7. Minute.setText(String.valueOf(M));
    8. Second.setText(String.valueOf(S));
    9. if(H==99)
    10. {
    11. H=0;
    12. S++;
    13. }
    14. if(S==60)
    15. {
    16. H=0;
    17. S=0;
    18. M++;
    19. }
    20. if(M==60)
    21. {
    22. M=0;
    23. S=0;
    24. H=0;
    25. }
    26. try{
    27. Thread.sleep(10);
    28. }
    29. catch(Exception e){
    30. }
    31. H++;
    32. }
    33. if(clear==1)
    34. {
    35. M=S=H=0;
    36. Minute.setText(String.valueOf(M));
    37. Second.setText(String.valueOf(S));
    38. clear=0;
    39. }

    ...

    (4)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);
        }

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

    public class Frac {
    private int Zi;
    private int Mu;
    private String fra;
    public Frac() {
    }

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

    package hw2;
    
    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/watermelon123/p/homework2/git/tree/master

    实验小结:

          本次实验经我和我的队友黄月梅、徐晓珊讨论一致决定采用我上次的实验为基础来进行图形化的编程。因此,我负责主体的编程,黄月梅和徐晓珊负责代码复审、测试以及提出不足。

          我们保持了上次的实验的大体框架及内容,主要的工作是加上了GUI 的框架来实现图形界面。还有两项附加的功能,一是语言的切换,支持中文,繁体以及英文的切换;二是计时器功能的实现,这项功能的实现对我们来说有点困难,但是借助上网,请教同学等方式,最终顺利完成了此项功能。

          感觉这次的结对编程,让我深刻地了解到真的是人多力量大,在编程的过程当中,遇到困难,可以一同商讨,查找资料;出现错误也能及时的改正;在最后写报告的时候也分工合作,取长补短,更快更好的完成......总之,这次结对编程的体验不错!

    汉堡包式评价?

    先来一片面包:三人经过讨论很快达成对编程的共识。并且我们三个是同一个宿舍的,处于一个相对比较安全的环境。

    再把肉放上:在这次的编程过程中遇到了不少的问题,后来经过我们的商讨及查找资料等得到了解决。由于我们三个的编程能力都相对比较薄弱,遇到棘手的问题的时候比较缺乏耐心。但是,在不断地实践中,我相信我们会更上一层楼的。

    然后再来一片面包:结对编程能提高编程的效率,也能更好地发现自己的不足并改进。

    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

  • 相关阅读:
    Tensorflow的训练1:TensorFlow 分布式训练
    Tensorflow的部署3:TensorFlow Lite
    elenium 项目代码的优化与重构之路
    Tensorflow的部署2:TensorFlow Serving
    Tensorflow的部署1:TensorFlow 模型导出
    关于 Python 中的字符串补充介绍
    资源链接
    AIDL跨进程通信
    性能分析工具之Systrace
    App启动速度优化
  • 原文地址:https://www.cnblogs.com/ws002/p/6550800.html
Copyright © 2011-2022 走看看