结对编程1

PS:201421123067(柯怡芳)、201421123083(王李焕)

a. 需求分析:

1.为了使界面更加人性化,将此次程序做成一个简单的服务端用的编程网页
2.为了实现了计时功能,方便用户查看学习效果,故可以计算出用户答题消耗的时间,在前端网页answerpage.jsp中给出题目和开始计时,在result.jsp中答案检查和各项数据统计,正确数,正确率,时间的统计
3.为了照顾到不同用户的阅读习惯,在前端网页index.jsp中实现语言切换功能,界面支持中文简体/中文繁体/英语,方便用户使用。

b. 程序设计:

后台java中生成的类:

前端网页jsp:

c. 代码展示:

1.代码移植

 首先,对上次的代码进行修改,主要是工具类中的方法的输出和返回值的修改,以适合网页后端要求,将主函数中部分代码应用与jsp页面,具体代码见码云。

2.首页 index.jsp

 首页用提供一输入框供用户输入题数。按要求添加三种语言选择项,选择后通过表单提交给本页实现切换,选择表单代码:
<form action="index.jsp" method="post">
<input type="radio" name="language" value="simplified" checked >简体中文
<br>
<input type="radio" name="language" value="complex">繁體中文
<br>
<input type="radio" name="language" value="English">English
<br/><br/>
<input type="submit" value="<%out.print(button); %>">
</form>
 实现语言切换:
String input="请输入需要的题目数量:";
String title="小学四则运算生成器";
String button="确定";
String language=(String)request.getParameter("language");
/* 依据language的值(simplified,complex,English)给字符串赋值*/
try{
if(language.equals("complex")){input="請輸入需要的題目數量:";button="確定";title="小學四則運算生成器";}
else if(language.equals("English")){input="Please input the number of Questions:";button="Go";title="Arithmetic Generator for Pupils";}
}catch(NullPointerException e){
    language="simplified";
}

3.答题页 answerpage.jsp

 答题页适应语言切换:
String str="";//接受session
String button="提交";
String language=(String)request.getParameter("language");
String time="计时: ";
try{
if(language.equals("complex")){button="確定";time="計時: ";}
else if(language.equals("English")){button="Submit";time="Time: ";}
}catch(NullPointerException e){
	 button="提交";
}

 添加计时功能,当页面开启时开始计时,用JavaScript实现,答案提交时结束,时间数值提交到结果页:
<script type="text/javascript">
var c=0

function timedCount()
{
document.getElementById('txt').value=c
c=c+1
t=setTimeout("timedCount()",1000)     //每1秒跳一次
}

在网页主体头标签onload="timeCount()"来实现开始计时。

4.结果页 result.jsp

 本页用于检查答案以及对答题情况进行统计,同时也有适应语言的代码,不再列出,详见码云及下文截图。

d. 程序运行:

首页中文:

繁体:

英文:

答题页:

结果页:

结果页英文版:

e. 小结感受:

我觉得结对编程有好有坏,但是好处远远大于的不好的地方:
1.结对意味着合作,我们在结对写程序时,我不仅能观察队友如何编写代码,还能看到他是如何面对整个开发流程的,可以有效地在实践中进行学习。
2.在编程中,两人能进行相互讨论,即使遇到了分歧,大家互相协调,也能更快更有效地解决问题,一个人的想法始终有限,两个人的力量是远大于一个人的。
3.我是属于编程基础比较差的一方,在编写过程中,队友帮助了我许多,很感谢我的队友。因此,我认为结对编程能够带来1+1>2的效果。


###码云地址:[https://git.oschina.net/HuanWong/PersonalHomework_1]
###结队分工: 本次作业选用队友的代码做出功能的而修改。在代码的移植修改阶段,主要由队友修改代码,本人负责提供思路建议及校对监督。在添加新功能阶段,两人在讨论中轮流交换角色,一个人负责写代码另一个负责校对监督,最终将本次作业完成。最后共同讨论完成博客。

照骗!!


###PSP
PSP2.1 Personal Software Process Stages Time Senior Student Time
Planning 计划 10 8
· Estimate 估计这个任务需要多少时间 10 7
Development 开发 70 73
· Analysis 需求分析 (包括学习新技术) 6 9
Design Spec 生成设计文档 6 8
· Design Review 设计复审 4 5
· Coding Standard 代码规范 4 4
· Design 具体设计 9 13
· Coding 具体编码 40 25
· Code Review 代码复审 7 8
· Test 测试(自我测试,修改代码,提交修改) 15 20
Reporting 报告 10 10
· 测试报告 3 3
· 计算工作量 2 1
· 并提出过程改进计划 3 3
原文地址:https://www.cnblogs.com/keyi123/p/6542061.html