结队编程

Posted vambo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结队编程相关的知识,希望对你有一定的参考价值。

队伍成员:

黄明炜:201421122097

许晓烽:201421122112

代码地址:https://gitee.com/huhulong/JieDuiXiangMu

1.需求分析:

  (1)通过界面能给定参数,限定算式个数和操作数范围

  (2)进度条显示计时,可以设置时间

  (3)根据输入答案判定对错,保存历史答题情况

2.程序设计

  

3.代码展示

//主函数入口
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (ClassNotFoundException | InstantiationException
                | IllegalAccessException | UnsupportedLookAndFeelException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        new MainFrame();
    }

//主窗口类
public class MainFrame extends JFrame{ JPanel jpanel=new JPanel(); MainMenuBar mainMenuBar=new MainMenuBar(this);//菜单 ButtonLabel generatingItemButton=new ButtonLabel(Param.generatingItem);//生成按钮 ButtonLabel beginButton=new ButtonLabel(Param.begin);//开始按钮 TimeProgressBar timeProgressBar=new TimeProgressBar(this); JTextArea subjectArea=new JTextArea();//题目框 JTextArea answerArea=new JTextArea();//答题区 public ButtonLabel submitButton=new ButtonLabel(Param.submit);//提交按钮 //构造函数 public MainFrame(){ init(); mouseEvent(); this.setJMenuBar(mainMenuBar);//添加菜单 this.setTitle(Param.title); this.setSize(700,600); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置默认关闭窗口方式 this.setLocationRelativeTo(null);//设置窗体相对居中 this.setResizable(false);//设置窗口不可调整 this.setVisible(true);//可视化 } //初始化设置 public void init(){ this.setLayout(null);//设置空布局 generatingItemButton.setBounds(20, 20, 100, 30); this.add(generatingItemButton); beginButton.setBounds(130, 20, 100, 30); this.add(beginButton); //进度条 timeProgressBar.setBounds(400, 20, 250, 30); this.add(timeProgressBar); subjectArea.setEditable(false); //给试题框出现滚动条 JScrollPane jssubjectArea=new JScrollPane(subjectArea); jssubjectArea.setBounds(20, 100, 600, 150); this.add(jssubjectArea); answerArea.setEditable(false); //给答题框加设滚动条 JScrollPane jsanswerArea=new JScrollPane(answerArea); jsanswerArea.setBounds(20, 300, 600, 150); this.add(jsanswerArea); submitButton.setBounds(300, 480, 100, 30); this.add(submitButton); jpanel.setBounds(0, 0, 700, 1000); this.add(jpanel); } }

 4.运行程序

默认界面:

参数修改界面:

        

成绩展示:

开始做题界面:

 5.小结感受:

  两个人的合作不只是工作量上的互相分摊,还有思维上会互相弥补对方的视野盲区。比如再设置参数关闭页面的时候,使用dispose()关闭时一直无法实现,也一直找不到问题出在哪里,但是partner一眼就看出来我设置的参数格式出问题,控制台已经报异常。所以后续的dispose执行不到。但是我一直没注意到。

  但是两个人合作也会产生不必要的麻烦,比如我写了一个进度条组件,当时写的时候为了贪图方便不用多写类,又不想影响到主窗口类,又想要测试进度条的效果,就直接将类继承了jframe。后续提交给partner去使用的时候,产生大量不必要的麻烦。 

 

6.评价搭档

  我的拍档许晓峰同学身为我们宿舍前身的舍长,有很强的责任感而且做事很踏实。一开始我们讨论完实现思路之后,在我还在犹豫使用什么语言实现UI的时候,晓烽同学已经把项目的框架搭建好了。为人和善,很容易沟通,在交流的时候会认真倾听partner的建议,结合对方建议给出自己思考后的答复,具有较强的编程能力。

 

展示PSP

 

PSP2.1 

Personal Software Process Stages

Time Senior Student

Time 

Planning

计划

16

25

· Estimate

估计这个任务需要多少时间

15

22

 Development

开发

552

573

 ·Analysis

需求分析 (包括学习新技术)

40

35

· Design Spec

生成设计文档

30

25

· Design Review

设计复审

15

23

 · Coding Standard

代码规范

16

15

· Design

具体设计

46

35

· Coding

具体编码

264

263

· Code Review

代码复审

40

26

 · Test

测试(自我测试,修改代码,提交修改)

40

50

 Reporting

报告

63

84

 

测试报告

10

8

 

计算工作量

14

13

 

并提出过程改进计划

15

17

以上是关于结队编程的主要内容,如果未能解决你的问题,请参考以下文章

结队编程

结队编程

结队编程第一次

结队编程

软件工程第二次结队编程

结队编程与日程管理系统维护改善