结对编程1 (四则运算基于GUI)
https://git.coding.net/Luo_yujie/sizeyunsuan.app.git
201421123034
201421123032
1. 需求分析
这次作业新引用了语言选择,计时器与统计正确率功能。首先,在搜索语言国际化后发现,现在程序的开发与使用不仅仅仅限于本地,java语言国际化、多元化已经成为一种必然趋势,这就要求我们必须使用同一套规则,所以,语言选择功能是适应潮流所必需的。计时器与统计正确率功能能让使用本程序的用户更加省心、便捷,约束性更强。
2. 程序设计:针对选择的2-3个新开发功能做设计,使用思维导图。
a.语言选择 用户可以在首界面选择英文、中文、繁体中文语言
b.计时器 按下计时器按钮开始计时,按下结束按钮结束计时,用户可以根据自己需求选择开始做题时间
c.统计正确率 根据用户输入的回答与正确答案的比对,计算正确率并输出
3. 代码展示
a.语言选择功能
btnNewButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dispose();//销毁当前页面 new English().setVisible(true); //下个页面显示出来 } });
b.统计正确率功能
JButton button_1 = new JButton("提交答案"); button_1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String[] ans =textArea_1.getText().split("\n"); String strings[]=new String[list11.size()]; for(int i=0,j=list11.size();i<j;i++){ strings[i]=list11.get(i); } int count=0; for(int i = 0;i < list11.size();i++){ if(ans[i].equals(strings[i])) { print.add("正确\n"); count++; } else{print.add("错误\n");} } textArea_2.append(print+"\n"); double sum =((double)count/(double)(list11.size()))*100; lblNewLabel.setText("正确率为:"+sum+"%"); } });
c.计时器功能
public class timer extends JFrame { final Label lab = new Label(); Date now = new Date(); @SuppressWarnings("deprecation") public timer() { now.setHours(0); now.setMinutes(0); now.setSeconds(0); setBounds(550, 270, 278, 245); final Timer timer = new Timer(1000, new ActionListener() { public void actionPerformed(ActionEvent e) { Date now2 = new Date(now.getTime() + 1000); now = now2; SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss"); lab.setText(formatter.format(now)); } }); Button b1 = new Button("开始"); Button b2 = new Button("停止"); b2.setBounds(235, 209, 67, 40); b1.setBounds(65, 209, 67, 40); b1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Button b = (Button) e.getSource(); b.setLabel("开始"); timer.start(); } }); b2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Button b = (Button) e.getSource(); b.setLabel("停止"); timer.stop(); } });
4. 程序运行:程序运行及每个功能的使用截图。
a.欢迎界面,选择语言
b.语言分类界面
c.主要功能界面
5. 小结感受:结对编程真的能够带来1+1>2的效果吗?通过这次结对编程,请谈谈你的感受和体会。
本次结对编程两个人一起讨论的效果明显比第一次高效而且有帮助,第一次个人作业时,由于每个人的思路不一样,寻求帮助时,听别人的解释也是一头雾水。这次的结对编程时讨论起来就有目的有针对性得多了。
在语言国际化功能设计当中遇到了很多高深的代码,所以这个功能还有待开发。设计过程中最难解决的时题目的输出,经多次实验发现,最合适的还是用JTextArea文本域输出,虽然看起来像是用于输入的文本框,但是像这种多行多个输出还是用文本域比较合适。
在代码设计过程当中,我们还是比较少用到第一次个人作业的思想与方法,基于GUI的设计许多语言跟控制台不一样就得重新设计编写。所以可能下次以结对作业开始,再进行个人作业,让我们自己分开再完善我们自己的功能可能效果更好一点。
6.
PSP2.1 | Personal Software Process Stages | Time (h) Senior Student | Time (h) |
Planning | 计划 | 0.2 | 0.3 |
· Estimate | 估计这个任务需要多少时间 | 0.1 | 0.1 |
Development | 开发 | 5 | 6.3 |
· Analysis | 需求分析 (包括学习新技术) | 0.5 | 1 |
· Design Spec | 生成设计文档 | 0.2 | 0.2 |
· Design Review | 设计复审 | 0.2 | 1.2 |
· Coding Standard | 代码规范 | 0.1 | 0.1 |
· Design | 具体设计 | 1 | 0.5 |
· Coding | 具体编码 | 1 | 1.5 |
· Code Review | 代码复审 | 0.3 | 0.1 |
· Test | 测试(自我测试,修改代码,提交修改) | 0.4 | 0.5 |
Reporting | 报告 | 0.15 | 0.1 |
· | 测试报告 | 0.05 | 0.05 |
· | 计算工作量 | 0.05 | 0.05 |
· | 并提出过程改进计划 | 0.2 | 0.4 |
7.过程