作业五:结对项目-“四则运算”之升级版
作业要求来自于https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2232
GitHub远程仓库的地址:https://github.com/201606120084
结对同伴:曾海彬 学号:201606120085 博客地址:http://www.cnblogs.com/damaoy/
一、从个人项目出发,将程序改装成一个单机带用户界面(不是控制台)的程序,这个程序最基本要达到:
1.生成题目,单个题目最多不能超过4个运算符,操作数小于100。
2.用户可以输入答案
3.若用户输入答案正确,则提示正确;若答案错误,则提示错误,并要提示正确答案是多少。
二、下面附有 8 个相互独立的可以扩展的方向。
- 程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数,如:(1/3+1)*2 = 2.67,特别注意:这里是2.67而非2.66,或保持分数形式:8/3
- 可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8
- 用户答题结束以后,程序可以显示用户答题所用的时间
- 用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数
- 用户在第一次答题时,需要用户输入用户名,用户下次启动后,程序需要记住用户前一次输入的用户名
- 程序可以出单个整数阶乘的题目:如:4!=24
- 程序可以设置答题时间,时间设置为整数,单位为秒,最大不能超过120秒,若超过了答题时间未答题,则提示:时间已到,不能答题。
- 程序可以设置皮肤功能,可以改变界面的颜色即可。
三、同学 两两结对,每对学生选取 8 个可扩展方向上面的 4个加以实现。
- 程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数,如:(1/3+1)*2 = 2.67,特别注意:这里是2.67而非2.66,或保持分数形式:8/3
- 可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8
- 用户答题结束以后,程序可以显示用户答题所用的时间
- 用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数
- 用户在第一次答题时,需要用户输入用户名,用户下次启动后,程序需要记住用户前一次输入的用户名
- 程序可以出单个整数阶乘的题目:如:4!=24
- 程序可以设置答题时间,时间设置为整数,单位为秒,最大不能超过120秒,若超过了答题时间未答题,则提示:时间已到,不能答题。
- 程序可以设置皮肤功能,可以改变界面的颜色即可。
四、估计实现所需时间,记录结对编程时间,并写在博客中。
PSP2.1 |
Personal Software Process Stages |
预估耗时(分钟) |
实际耗时(分钟) |
Planning |
计划 |
300 |
600 |
· Estimate |
估计这个任务需要多少时间 |
300 |
900 |
Development |
开发 |
100 |
200 |
· Analysis |
需求分析 (包括学习新技术) |
40 |
20 |
· Design Spec |
生成设计文档 |
0 |
0 |
· Design Review |
设计复审 |
20 |
30 |
· Coding Standard |
代码规范 |
80 |
70 |
· Design |
具体设计 |
30 |
45 |
· Coding |
具体编码 |
40 |
50 |
· Code Review |
代码复审 |
10 |
60 |
· Test |
测试(自我测试,修改代码,提交修改) |
180 |
180 |
Reporting |
报告 |
200 |
250 |
Test Report |
测试报告 |
0 |
0 |
·workload |
计算工作量 |
420 |
400 |
·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);
}
menuPanel.add(edit); //把 edit图标加入到menuPanel里面
menuPanel.add(play); //把 play图标加入到menuPanel里面
menuPanel.add(ok); //把 ok图标加入到menuPanel里面
运行截图:
初始界面
通过鼠标点击(+)按钮增加题目数量
点击播放按钮系统开始出题
点击“ok”提交答案,系统给出正确答案
结对照片:
总结:
通过这次结对编程复习了很多Java的知识,复习到了很多JavaFX窗体的知识点,也和同伴有了很多深入的交流,明白了合作的重要性,通过这次作业发现了自己很多的不足,我会加油的。