结对编程1
结对队友学号:201421123048 201421123036
项目代码:
https://git.coding.net/YJh_/Cal.git
题目描述:
我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序。进一步,本次要求把这个程序做成GUI(可以是Windows PC 上的,也可以是Mac、Linux,web,手机上的),成为一个有基本功能、一定价值的程序。在下面的功能需求中实现两个:
- 记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算。
- 有计时功能,能显示用户开始答题后的消耗时间。
- 界面支持中文简体/中文繁体/英语,用户可以选择一种;
需求分析:
- 在作业一中已经完成了四则运算的分数算法。
- 在控制台的输入操作不够人性化,使用GUI界面让用户使用更加方便。
- 在用户使用程序做题时需要记录用户做题的对错题数。
- 针对不同的用户,需要用到不同的语言,繁体字,简体字,英文版。
- 对于能力不同的用户,需要有难易不同程度的题目。
- 如果需要测试完成题目所用的时候,需要有记录做题的消耗时间。
功能分析:
- 基本功能
- GUI界面显示程序
- 记录做题时间
- 记录用户做题总数和正确题数
- 收集用户的错题集并显示给用户
- 提供简体繁体英文界面
- 拓展功能
- 题目难度分为初级中级高级可供用户选择
- 在各个难度中还有整数和整数型,整数和分数型,分数和分数型
程序设计:
用户操作运行流程:
主要分类:
Calculator类
程序测试
测试截图:
部分代码展示:
public class LoginMiddle {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
LoginMiddle window = new LoginMiddle();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public LoginMiddle() {
initialize();
}
private void initialize() {
frame = new JFrame();
frame.setTitle("实战界面中级版两个整数与一个分数型");
frame.setSize(750,230);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Label L1=new Label("总题数:",Label.RIGHT);
Label L2=new Label("题目:",Label.RIGHT);
Label L3=new Label("请输入答案:",Label.RIGHT);
Label L4=new Label("答题情况:",Label.RIGHT);
Label L5=new Label("答对题数:",Label.RIGHT);
Label L6=new Label("答错题数:",Label.RIGHT);
Label L7=new Label("答题时间:",Label.RIGHT);
final JButton B1=new JButton("开始");
final JButton B2=new JButton("下一题");
final JButton B3=new JButton("退出");
frame.getContentPane().add(panel,"Center");
B3.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
JOptionPane.showMessageDialog(null, "答题总题数为"+tishu+",答对题数为"+dadui+",答错题数为"+dacuo+",未答题题数为"+noanswer+"。");
frame.setVisible(false);
new Middle();
}
});
B1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
tishu=Integer.parseInt(T1.getText());
noanswer=tishu-dadui-dacuo;
summary++;
timer = new Timer();
finishtime=System.currentTimeMillis();
starttime=finishtime;
timer.schedule(new TimerTask()
{
public void run() {
finishtime=System.currentTimeMillis();
duration=finishtime-starttime;
if(duration/1000==27&&summary<tishu)
{
JOptionPane.showMessageDialog(null, "答题时间已到。答题总题数为"+(dadui+dacuo)+",答对题数为"+dadui+",答错题数为"+dacuo+",未答题题数为"+(tishu-dacuo-dadui)+",答题使用时间:"+(allduration+duration)/1000+"秒。");
frame.setVisible(false);
new Middle();
}
String str=df.format(new Date(duration));
T7.setText(str);
}
}, 1000, 1000);
allduration=allduration+duration;
char a[]={'+','-','×','÷'};
char b[]={'+','-','×','÷'};
int c=(int)(Math.random()*4);
int d=(int)(Math.random()*4);
int f=(int)(Math.random()*100);
int g=(int)(Math.random()*99+1);
int h=(int)(Math.random()*99+1);
int l=(int)(Math.random()*99+1);
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize();
int w1 = screenSize.width;
int h = screenSize.height;
int x1 = w1/3;
int y1 = h/5;
frame.setLocation(x1,y1);
frame.setVisible(true);
frame.setResizable(false);
}
PSP:
PSP2.1 | Personal Software Process Stages | Time (%) Senior Student(/day) | Time (%)(/day) |
Planning | 计划 | 8 | 7 |
· Estimate | 估计这个任务需要多少时间 | 8 | 7 |
Development | 开发 | 6 | 8 |
· Analysis | 需求分析 (包括学习新技术) | 1 | 1 |
· Design Spec | 生成设计文档 | 1 | 1 |
· Design Review | 设计复审 | 0 | 0 |
· Coding Standard | 代码规范 | 1 | 1 |
· Design | 具体设计 | 5 | 4 |
· Coding | 具体编码 | 2 | 2 |
· Code Review | 代码复审 | 1 | 1 |
· Test | 测试(自我测试,修改代码,提交修改) | 3 | 3 |
Reporting | 报告 | 1 | 1 |
·Test Report | 测试报告 | 1 | 1 |
· Size Measurement | 计算工作量 | 1 | 1 |
·Postmortem & Process Improvement Plan | 并提出过程改进计划 | 0 | 0 |
小结感受:
- 结队编程真的能够带来1+1>2的效果,而且还是女生和我一起结对,俗话说:男女搭配,干活不累。哈哈哈,还真是哦,虽然这个过程很辛苦,整整编写了一周,基础一般般,而且java是大二上的课了,很多都是忘记了,特别是GUI界面的编程,真的忘关了,我还是重新学习了课本,真的有点累!但是还是坚持过来了,想想有个美女在旁边指挥我打代码呢,要好好表现。还真有点效果,界面的设计虽然不好看,能得到美丽的队友的认可还是挺开心的。
- 由于知识有限,和队友一路走来十分坎坷,导致编写的代码有点拖沓冗余。时间不太够,所以一些自己想拓展的功能还没能得到完成。会继续努力完成的。
- 对于队友的重要性,有几点要说的。第一,队友帮助我很多,像一些找GUI资料,比较一些标签按钮的操作知识,都是队友帮助我一起完成的。第二就是在打代码打了累的时候,她经常会鼓励我,陪我谈谈心,这让我心情慢慢变得舒畅了很多,不然代码打久了,是挺压抑的。
- 自己打的代码真的有点烂,以后会继续努力的,经常这次的结对编程,受益匪浅,认识到了自己的不足,对GUI的编程有更一步的了解和认识。
合作照片: