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