首页 > 代码库 > 结对编程 (201421123002,201421123006,201421123007)

结对编程 (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

结对编程 (201421123002,201421123006,201421123007)