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

思维导图:

关键代码分析:

(1)Frames类制作基本框架

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

时间: 2024-08-10 17:08:58

结对编程 (201421123002,201421123006,201421123007)的相关文章

结对编程

结对编程(英语:Pair programming)是一种敏捷软件开发的方法,两个程序员在一个计算机上共同工作.一个人输入代码,而另一个人审查他输入的每一行代码.输入代码的人称作驾驶员,审查代码的人称作观察员(或导航员).两个程序员经常互换角色. 在结对编程中,观察员同时考虑工作的战略性方向,提出改进的意见,或将来可能出现的问题以便处理.这样使得驾驶者可以集中全部注意力在完成当前任务的"战术"方面.观察员当作安全网和指南.结对编程对开发程序有很多好处.比如增加纪律性,写出更好的代码等.

软件工程------结对编程第二次

这一周我(1551426)还是继续和我们组的成员(1551419)两人一起结对编程,除此之外,我们还设计了数据库的,总共三个关系模式 room(roomtype,dailyprice,deposit) roominfo(roomnumber,roomtype,isfree) guest(id, startday,phonenumber,roomnumber,name,sex,stayday) 起初我们把room和guest 放在了一起,后来发现数据的冗余以后马上换成三个关系表. 这是我们的关系图

软工第二次实验——结对编程

1丶小组成员 卫瑞亮 1500802122 王玉卿 1500802099 2.代码链接 https://coding.net/u/qq1062718477/p/SE_task/git/commits/master/ 3.软件界面 4.结对编程照片 5.心得体会 到今天接触结对编程差不多两周了,对于结对编程有了更加深刻地理解,通过结对编程,我们可以及时的发现并解决后面可能会出现的问题,并且还能提升我们与别 人进行交流的能力,与人沟通对我们来说也是极为重要的,同时,结对编程使我们频繁进行交流,而且要

结对编程2——单元测试

 周迪 201421123089    黄睿 201421123069  coding.net 地址:http://git.oschina.net/hr2324/SoftEngHW 1.我们的代码要使它的利用率大大提高,所以我们要通过单元测试进一步完善代码,发现细小的错误.于是这次就用JUnit进行了简单四则运算的单元测试. a.需求分析:(1)在上次的基础上将计算模块单独创建一个类: (2)针对计算类做单元测试: (3)主要做整数和真分数的加减乘除: (4) 增量式开发,用git命令提交到co

结对编程2—— 单元测试

结对伙伴:201421123048,201421123036 coding.net 地址:https://git.coding.net/YJh_/PairProject_2.git a. 需求分析:测试上有哪些详细的需求? 1.把计算模块提取出来,单独创建一个类2.通过单元测试代码,测试加法是否能正确工作3.通过单元测试代码,测试加减乘除功能4.通过单元测试代码,测试计算类对于各种参数的支持 输入是有错误的,例如 "1 ++ 2" 在数值范围是 -1000 .. 1000 的时候,传进

结对编程-感想

这次大作业采用了结对编程的方式进行开发.我和赵宇航在这次结对编程中fix了绑定的bug以及进行了jmeter的配置和性能测试. 首先,我们通过讨论发现代码是正确的,但是绑定时会提示密码错误,我们思考了很久,突然想到,我们之前在"初始微信"功能开发时,将密码进行了base64加密,所以我们在调用的时候,需要用base64解码之后才可以,于是我们成功的解决了这个问题. 接下来,我们进行了jmeter的配置和学习,进行了简单的性能测试. 通过这次结对编程,我们发现结对编程确实有很多好处. 1

结对编程的体会

今天晚上,我与队友赵纯艺进行了一次结对编程,共同完成"微信抢票菜单调整"这个任务.因为在之前的开发中,我主要负责前后端借口,只是和数据库打交道,对与微信有关的接口不是很熟悉,所以在获取当前菜单和设置当前菜单时遇到了一点问题. 刚开始的时候,因为我们对彼此的工作都不是很了解,所以我花了比较长的时间向她说明我这部分的机制是如何运作的,理解了我的困惑后,她表示虽然记不太清楚,但是记得<开发指南>里有相关函数.通过查询文档,我们找到了对应的函数get_wechat_menu()和u

结对编程作业

这是第一次尝试结对编程,在本次结对编程作业中为了更好地体会它的好处和特点,我和我的搭档分别扮演了驾驶员和领航者的角色. 作为驾驶员:在我编程的过程中,出现了一些小问题,比如忘加分号,这些小问题可以及时的发现.有时我也会问我的领航者一些疑问,省去了上网查资料的过程,提高了编程的效率.在代码复审的过程中,有的问题我在自己调试的时候没有发现.比如输入某些数据的时候,离黄金点最近的玩家得0分.还有程序的功能上的一些缺陷,也被进一步完善.编程的时候我们会有一些交流,交流使我们互相更加了解对方的编程风格,在

结对编程体会

两个人思想会有不同的时候,会有讨论争执和妥协的时候,在试用了两种方法后,选择了一个比较好的编写程序,结对编程减少了自己一个人想不到问题浪费的时间,结对编程有利于自己编程能力的提高,也有利于交流思想.