结对编程练习
改进现有代码
我选择的代码是
个人博客地址5:http://www.cnblogs.com/NianQiFeng ,源代码:https://git.coding.net/qwx_hh/java-szys.git
黄腾龙 201521123112 码云地址:https://gitee.com/Java_goddess
李心宇 201521123117 码云地址:https://gitee.com/lxxy/events
重构
clone项目,在开发环境中运行该应用程序,修改完毕最后上传至码云,并在博客中给出链接
检查大部分主要类之间的关系,画出类图
代码规范:
Arithmetic类 //
astr 返回答案字符串
qstr 返回问题字符串
int_operation() 整数计算函数
fra_operation() 分数计算函数
common_divisor(int m,int n)
公约数计算函数
toString() 输出函数
Frame类 //
hs 实例化History
hh 实例化QA_List
timer 实例化Work_Time
Time 计时器动态窗口
answer1~10 输入窗口
Review 复习按钮
question1~10 题目显示标签
Right_answer1~10 正确答案显示标签
Tip1~10 提示正确与否标签
Time_cost 所花时间显示标签
Right_percent 正确率显示标签
Set_question 开始按钮
jLabel5 历史正确题数
jLabel7 历史总题数
rn 单次正确题数
tot 单次总题数
Frame() Frame构造函数
initComponents() 窗体显示
xxxClicked(KeyEvent evt)
点击事件
KeyPressed(JLabel i,JLabel j,JLabel l,int x,JTextField k)
点击事件批量处理函数
Hide() 使不需要的输入窗口关闭
Tip(String answer,int i)提示对错并计入
Histroy类 //
qstr 问题字符串
astr 答案字符串
str 答案+问题字符串(写入文件)
str2 正确题数+总题数字符串(写入文件)
tot 总题数
rn 正确题数
qstrlist 问题字符串列(读入文件)
astrlist 答案字符串列(读入文件)
scan(String qstr,String astr)
qstr+" "+astr
scan2(int tot,int rn)
tot+" "+rn
Histroy_create() 历史文档生成
Histroy_save() 存储历史题目与答案
Histroy_saveNum() 存储历史题目数目
Histroy_read() 读入历史题目与答案
History_num() 读入历史题目数目
QA_List类 //
i 加入列题目个数
Qusetion 问题字符串列
Answer 答案字符串列
QA_List() QA_List构造函数
Test_Number类
i 显示Test_Number窗体次数
l 语言转化参数标识
Cancel_Button 取消按钮
Sure_Button 确定按钮
English 英文界面标签
Simplified_Chinese 简体中文界面标签
Traditional_Chinese 繁体中文界面标签
Number 所需题数
Test_Number() Test_Number构造函数
initComponents() Test_Number窗体显示
xxxClicked(KeyEvent evt)
点击事件
Test类 //
main(String[] args)
Work_Time类 //
x 00:00.x
y 00:y.00
z z:00.00
部分代码展示
Time //计时器
public class Frame extends JFrame{
static double rn=0;
public static Histroy hs = new Histroy();
Timer timer = new Timer();
public static QA_List hh = new QA_List();
double tot=hh.i;
public List<JTextField> Field_list=new ArrayList<JTextField>();
public Frame() {
super("Myapp");
hs.Histroy_create();
initComponents();
if(Test_Number.l==1){
Set_qusetion.setText("開始");
jLabel2.setText("計時:");
jLabel1.setText("正確率:");
jLabel3.setText("用時:");
Review.setText("複習");
jLabel4.setText("正確:");
jLabel6.setText("全部:");
}
if(Test_Number.l==2){
Set_qusetion.setText("Start");
jLabel2.setText("Timing:");
jLabel1.setText("Correct rate:");
jLabel3.setText("Time cost:");
Review.setText("Review");
jLabel4.setText("Right:");
jLabel6.setText("All:");
}
jLabel7.setText(""+hs.tot);
jLabel5.setText(""+hs.rn);
}
Tip //正确错误提示输出
public String Tip (String answer,int i) {
if(answer.equals(hh.Answer.get(i)))
{
rn++;
if(Test_Number.l==1){
return "(≧▽≦)正確";
}
if(Test_Number.l==2){
return "(≧▽≦)right";
}
return "(≧▽≦)正确";
}
else
{
hs.scan(hh.Answer.get(i),hh.Qusetion.get(i) );
hs.Histroy_save();
if(Test_Number.l==1){
return "(>﹏<)錯誤";
}
if(Test_Number.l==2){
return "(>﹏<)wrong";
}
return "(>﹏<)错误";
}
Arithmetic //三个数字的运算和括号
public void Calculate(String formula) { //计算
Scanner in = new Scanner(formula);
while (in.hasNextLine()) {
String s = in.nextLine();
try {
List<Object> list = trans(s);
Stack<Double> result = new Stack<Double>();
double res = f(list, result);
astr=res+"";
System.out.println(astr);
} catch (Exception e) {
System.out.println("非法表达");
}
}
}
运行测试
讨论图片
代码覆盖率测试
PSP
小结感受:结对编程真的能够带来1+1>2的效果吗?通过这次结对编程,请谈谈你的感受和体会。
与之前不一样的学习方式,在大腿的带领下收获了很多,不过还是遇到了许多问题,希望以后能越来越好,学到越来越多