作业五:结对项目-“四则运算”之升级版

 

作业要求来自于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. 程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数,如:(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

计划

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窗体的知识点,也和同伴有了很多深入的交流,明白了合作的重要性,通过这次作业发现了自己很多的不足,我会加油的。

 

 

 

posted @ 2018-10-29 13:33  unilee  阅读(353)  评论(2编辑  收藏  举报