软件工程--结对编程1
本人学号:201421123083(王童鞋) 伙伴学号:201421123067(柯童鞋)
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+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 |