结队编程
队伍成员:
黄明炜: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 |