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


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

     

     

  • 相关阅读:
    第三次作业
    第二次作业
    10.30 非确定的自动机NFA确定化为DFA
    10.23 正规式、正规文法与自动机
    10.16 正规文法与正规式
    10.9 词法分析程序的设计与实现
    9.25 文法和语言总结与梳理
    9.18 语法树,短语,直接短语,句柄
    9.11 理解文法和语言
    9.4 了解编译原理
  • 原文地址:https://www.cnblogs.com/lb2016/p/9868900.html
Copyright © 2020-2023  润新知