结对编程1 (四则运算基于GUI)

时间:2023-03-08 17:19:46
结对编程1 (四则运算基于GUI)

https://git.coding.net/Luo_yujie/sizeyunsuan.app.git

201421123034

201421123032

1. 需求分析

这次作业新引用了语言选择,计时器与统计正确率功能。首先,在搜索语言国际化后发现,现在程序的开发与使用不仅仅仅限于本地,java语言国际化、多元化已经成为一种必然趋势,这就要求我们必须使用同一套规则,所以,语言选择功能是适应潮流所必需的。计时器与统计正确率功能能让使用本程序的用户更加省心、便捷,约束性更强。

2. 程序设计:针对选择的2-3个新开发功能做设计,使用思维导图。

a.语言选择 用户可以在首界面选择英文、中文、繁体中文语言

b.计时器 按下计时器按钮开始计时,按下结束按钮结束计时,用户可以根据自己需求选择开始做题时间

c.统计正确率 根据用户输入的回答与正确答案的比对,计算正确率并输出

结对编程1 (四则运算基于GUI)

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.欢迎界面,选择语言

结对编程1 (四则运算基于GUI)

b.语言分类界面

结对编程1 (四则运算基于GUI)结对编程1 (四则运算基于GUI)

c.主要功能界面

结对编程1 (四则运算基于GUI)

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.过程

结对编程1 (四则运算基于GUI)结对编程1 (四则运算基于GUI)