结对编程
项目地址
Coding.net:结对编程
结对编程组员
雷源城:201421122108
陈志钦:201421122109
需求分析
记录用户的对错总数
1.用户每次回答问题,直接计入对错,防止用户在测试未完成时中断测试导致对错总数出错。
2.每次进入测试时,继续承接上一次未回答的问题
3.再次生成多个问题时,将在之前的问题基础上再增加
4.按照每题逐个回答
计时功能
1.问题出现的同时开始计时
2.回答完一个问题重新进行计时
程序设计
代码展示
计时功能
1 public class Now { 2 //获取开始时间 3 public static long nowTime() { 4 long start = System.currentTimeMillis()/1000; 5 return start; 6 } 7 8 //获取下次时间与开始时间的结果 9 public static String nextTime(long start) { 10 long end = System.currentTimeMillis()/1000 - start; 11 long m = end/60; 12 long s = end%60; 13 String mStr = null; 14 String sStr = null; 15 String str = null; 16 if(m<10){ 17 mStr = "0" + m; 18 }else{ 19 mStr = "" + m; 20 } 21 if(s<10){ 22 sStr = "0" + s; 23 }else{ 24 sStr = "" + s; 25 } 26 str = mStr + ":" + sStr; 27 return str; 28 } 29 }
记录对错总数
1 import java.io.BufferedReader; 2 import java.io.File; 3 import java.io.FileInputStream; 4 import java.io.FileNotFoundException; 5 import java.io.FileWriter; 6 import java.io.IOException; 7 import java.io.InputStreamReader; 8 9 public class Count { 10 //获得第一行题数,默认为正确题数 11 public static String getTrue(){ 12 String s = null; 13 try { 14 BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("count.txt"))); 15 s = br.readLine(); 16 } catch (FileNotFoundException e) { 17 // TODO Auto-generated catch block 18 e.printStackTrace(); 19 } catch (IOException e) { 20 // TODO Auto-generated catch block 21 e.printStackTrace(); 22 } 23 return s; 24 } 25 26 //获得第二行题数,默认为错误题数 27 public static String getFalse(){ 28 String s = null; 29 try { 30 BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("count.txt"))); 31 br.readLine(); 32 s = br.readLine(); 33 } catch (FileNotFoundException e) { 34 // TODO Auto-generated catch block 35 e.printStackTrace(); 36 } catch (IOException e) { 37 // TODO Auto-generated catch block 38 e.printStackTrace(); 39 } 40 return s; 41 } 42 43 //修改第一行题数,默认为正确题数 44 public static void trueIncrease(String count){ 45 String sTrue = count.valueOf((Integer.parseInt(count) + 1)); 46 String sFalse = getFalse(); 47 Modify(sTrue, sFalse); 48 } 49 50 //修改第二行题数,默认为错误题数 51 public static void trueDecrease(String count){ 52 String sTrue = getTrue(); 53 String sFalse = count.valueOf((Integer.parseInt(count) + 1)); 54 Modify(sTrue, sFalse); 55 } 56 57 //追加方式修改文件 58 public static void Modify(String sTrue, String sFalse){ 59 File file = new File("count.txt"); 60 try { 61 FileWriter fileWirter = new FileWriter(file); 62 fileWirter.write(""); 63 fileWirter.flush(); 64 fileWirter.close(); 65 } catch (IOException e) { 66 // TODO Auto-generated catch block 67 e.printStackTrace(); 68 } 69 70 try { 71 FileWriter fileWirter = new FileWriter(file, true); 72 fileWirter.write(sTrue + "\n"); 73 fileWirter.write(sFalse); 74 fileWirter.flush(); 75 fileWirter.close(); 76 } catch (IOException e) { 77 // TODO Auto-generated catch block 78 e.printStackTrace(); 79 } 80 } 81 }
程序运行
初始登录,需输入问题个数和题目范围
不输入时显示
问题界面
输入答案
结果显示
小结感受
此次结对编程虽然在编码效率上来说相当于1+1>2,但是在沟通方面花费的时间相对较多而且在讨论过程中也经常会出现歧义。
对之后的团队项目来说可以算是提前适应与队友之间的交流,以及跟个每个人不同的优势分配不同的任务,有利于提高工作效率以及代码的规范。
总之,此次作业有利于认识自己的优劣,有利于提高工作效率,也有利于提升今后在企业项目中与同事交流的能力和技巧。
评价合作伙伴
我的合作伙伴可以算得上是我的老伙计,基本上大一到大四期间需要进行团队合作的实验亦或是课设我都和他组队。虽然这么久以来一直组队,但是我们还是感觉在沟通过程中还是存在问题而且我们之间的想法也基本上各不相同,但是我觉得能和他一直合作下去很重要的原因是我觉得他很负责,我觉得这点非常重要。而且在编码期间不仅能完成我们各自分配的问题有时还帮助我解决问题,我也一直很感谢他。如果用汉堡的成分来比喻的话我觉得他应该是肉。
结对过程
首先先是确定使用了对方的代码,因为之前他的得分比较高,代码功能也比较完善。
在结对编程前期我们先是根据作业要求分析功能的具体需求,然后选定了两个合适的打算实现的功能效果。
虽然选择了正确或错误题数的增值功能和计时功能但是不是平均分配,这两个功能是由我来完成,队友负责完成UI的效果。还有就是我实现的功能返回的数据类型和内容也一起进行了分析研究。
最后则是队友将我的功能代码整合起来共同进行测试并解决一些bug。
PSP
PSP2.1 | Personal Software Process Stages | Time Predicted | Time |
---|---|---|---|
Planning | 计划 | 5 | 5 |
· Estimate | 估计这个任务需要多少时间 | 5 | 5 |
Development | 开发 | 300 | 200 |
· Analysis | 需求分析 (包括学习新技术) | 30 | 15 |
· Design Spec | 生成设计文档 | - | - |
· Design Review | 设计复审 | 10 | 5 |
· Coding Standard | 代码规范 | 10 | 5 |
· Design | 具体设计 | 10 | 5 |
· Coding | 具体编码 | 300 | 200 |
· Code Review | 代码复审 | 20 | 10 |
· Test | 测试(自我测试,修改代码,提交修改) | 50 | 50 |
Reporting | 报告 | 100 | 100 |
. | 测试报告 | 50 | 50 |
. | 计算工作量 | 30 | 20 |
. | 并提出过程改进计划 | 10 | - |