第五次作业—结对项目-四则运算升级版
作业要求来自于https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2232
GitHub远程仓库的地址:
结对同伴:李彬 学号:201606120084 博客地址: https://www.cnblogs.com/lb2016/
一、从个人项目出发,将程序改装成一个单机带用户界面(不是控制台)的程序,这个程序最基本要达到:
1.生成题目,单个题目最多不能超过4个运算符,操作数小于100。
2.用户可以输入答案
3.若用户输入答案正确,则提示正确;若答案错误,则提示错误,并要提示正确答案是多少。
二、下面附有 8 个相互独立的可以扩展的方向。
1.程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数,如:(1/3+1)*2 = 2.67,特别注意:这里是2.67而非2.66,或保持分数形式:8/3
2.可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8
3.用户答题结束以后,程序可以显示用户答题所用的时间
4.用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数
5.用户在第一次答题时,需要用户输入用户名,用户下次启动后,程序需要记住用户前一次输入的用户名
6.程序可以出单个整数阶乘的题目:如:4!=24
7.程序可以设置答题时间,时间设置为整数,单位为秒,最大不能超过120秒,若超过了答题时间未答题,则提示:时间已到,不能答题。
8.程序可以设置皮肤功能,可以改变界面的颜色即可。
三、同学 两两结对,每对学生选取 8 个可扩展方向上面的 4个加以实现。
1.程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数,如:(1/3+1)*2 = 2.67,特别注意:这里是2.67而非2.66,或保持分数形式:8/3
2.可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8
3.用户答题结束以后,程序可以显示用户答题所用的时间
4.用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数
5.用户在第一次答题时,需要用户输入用户名,用户下次启动后,程序需要记住用户前一次输入的用户名
6.程序可以出单个整数阶乘的题目:如:4!=24
7.程序可以设置答题时间,时间设置为整数,单位为秒,最大不能超过120秒,若超过了答题时间未答题,则提示:时间已到,不能答题。
8.程序可以设置皮肤功能,可以改变界面的颜色即可。
四、估计实现所需时间,记录结对编程时间,并写在博客中。
PSP2.1 |
Personal Software Process Stages |
预估耗时(分钟) |
实际耗时(分钟) |
Planning |
计划 |
120 |
220 |
· Estimate |
估计这个任务需要多少时间 |
40 |
200 |
Development |
开发 |
60 |
120 |
· Analysis |
需求分析 (包括学习新技术) |
30 |
60 |
· Design Spec |
生成设计文档 |
0 |
0 |
· Design Review |
设计复审 |
5 |
20 |
· Coding Standard |
代码规范 |
20 |
40 |
· Design |
具体设计 |
30 |
35 |
· Coding |
具体编码 |
42 |
40 |
· Code Review |
代码复审 |
10 |
6 |
· Test |
测试(自我测试,修改代码,提交修改) |
10 |
12 |
Reporting |
报告 |
50 |
25 |
Test Report |
测试报告 |
0 |
0 |
·workload |
计算工作量 |
40 |
40 |
·correction |
并提出过程改进计划 |
0 |
0 |
部分代码:
public
void
inputFrame() {
// 初始化窗口
this
.setTitle(
"小学四则运算自动出题软件初版"
);
this
.initWindowSize();
mainPanel.setLayout(cardLayout);
this
.add(mainPanel);
this
.setVisible(
true
);
//可视
}
//mainPanel中一共有两个子panel
private JPanel outPanel;
private JPanel menuPanel;
private void initMenuPanel() { // 初始化菜单栏
menuPanel = new JPanel(null);
menuPanel.setBounds(0, 0, 650, 30);
menuPanel.setBorder(BorderFactory.createLineBorder(Color.blue));
this.initMenuControl();
this.add(menuPanel);
//menuPanel中加进三个imageLabal并设置鼠标监听
ImageLabel edit=new ImageLabel();
edit.setImageUrl("image/add.jpg");
edit.setBounds(starX+150,starY+2,26,26);
//edit.setBorder(BorderFactory.createLineBorder(Color.red));
edit.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
if(num<8) {
num++;
qustionNum.setText("题数:" + num);
}
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
});
menuPanel.add(edit);
ImageLabel play=new ImageLabel();
play.setImageUrl("image/play.jpg");
play.setBounds(starX+200,starY+2,26,26);
//edit.setBorder(BorderFactory.createLineBorder(Color.red));
play.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
initLib();
PrintQuestion();
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
});
menuPanel.add(play);
ImageLabel ok=new ImageLabel();
ok.setImageUrl("image/ok.jpg");
ok.setBounds(starX+250,starY+2,26,26);
//edit.setBorder(BorderFactory.createLineBorder(Color.red));
ok.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
submit();
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
});
menuPanel.add(ok);
}
运行截图:
通过加号按钮来设置题目数量,最大为8
播放按钮用来生成题目并显示
用户在输入框输入答案点击ok按钮提交,系统给出正确答案
结对照片:
总结:
软件设计过于简单,整体存在很大的改进空间。另外通过这次结对项目,我对于结对编程有了更深的理解。