• 结对项目-四则运算 “软件”


    本作业要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2213

    我的GitHub地址:https://github.com/lenkay013/ly013

    一、从个人项目出发,将程序改装成一个单机带用户界面(不是控制台)的程序,这个程序最基本要达到:

    • 生成题目,单个题目最多不能超过4个运算符,操作数小于100。
    • 用户可以输入答案
    • 若用户输入答案正确,则提示正确;若答案错误,则提示错误,并要提示正确答案是多少。

    二扩展的方向

    1.程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数

    2.用户答题结束以后,程序可以显示用户答题所用的时间

    3.答题结束可以显示用户答错的题目个数和答对的题目个数

    4.用户在第一次答题时,需要用户输入用户名,用户下次启动后,程序需要记住用户前一次输入的用户名 

    三 时间记录表

    PSP2.1

    Personal Software Process Stages

    Time Senior Student(h)

    Time(h)

    Planning

    计划

    0

    0

    · Estimate

    估计这个任务需要多少时间

    25

    30

    Development

    开发

    8

    9

    · Analysis

    需求分析 (包括学习新技术)

    0.2

    0.3

    · Design Spec

    生成设计文档

    0

    0

    · Design Review

    设计复审

    0.5

    0.5

    · Coding Standard

    代码规范

    0.5

    1.5

    · Design

    具体设计

    2.8

    3.7

    · Coding

    具体编码

    5

    5

    · Code Review

    代码复审

    3

    4

    · Test

    测试(自我测试,修改代码,提交修改)

    1

    1

    Reporting

    报告

    0

    0

    Test Report

    测试报告

    1

    2

    ·workload

    计算工作量

    1

    2

    ·correction

    并提出过程改进计划

    1

    1

    四  结对过程

    1.结对成员:姓名:刘渊  201606120013  博客园地址:https://www.cnblogs.com/lenkay/

                      姓名:刘铖  201606120023  博客园地址:https://www.cnblogs.com/lc97/

    2.开发环境:idea

    3.扩展方向:

    程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数(刘铖)

    用户答题结束以后,程序可以显示用户答题所用的时间(刘渊)

    答题结束可以显示用户答错的题目个数和答对的题目个数(刘渊)

    用户在第一次答题时,需要用户输入用户名,用户下次启动后,程序需要记住用户前一次输入的用户名 (刘铖)

    4.结对学习照片:

    五  部分代码:

    小程序界面代码:

    public Main()
    {
       //创建组件
       jb1=new JBut
    public Main()
    {
       //创建组件
       jb1=new JButton("确认");
       jb1.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent arg0) {
             String N=Name.getText();
             String M=Number.getText();
             name.add(N);
             number.add(M);
                    
                    Start frame = new Start();
                    frame.setTitle("四则运算训练小程序");
                      frame.setSize(600,400);
                      frame.setLocationRelativeTo(null);
                      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                      frame.setVisible(true);
                    frame.setVisible(true);     // 打开新界面
                    dispose();        // 关闭当前界面
    
    
    
                    try {    
                         UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());    
                     } catch (Exception e) {    
                         e.printStackTrace();    
                     } 
    
    统计分数代码:
    int size = list1.size();
    int errorSum = size - rightSum;
    JFrame resultFrame = new JFrame();
    resultFrame.setTitle("运算结果");
    resultFrame.setSize(500, 500);
    resultFrame.setLocationRelativeTo(null);
    resultFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    resultFrame.setVisible(true);
    JPanel panel7 = new JPanel();
    Timelabel.setText("答题用时为:" + time +" "+"做题总数: " + size + " " + "正确数:" + rightSum + " " + " 最终得分:" + rightSum * 5);
    panel7.add(Timelabel);
    resultFrame.add(panel7, BorderLayout.NORTH);
    JPanel panel = new JPanel();
    Font font = new Font(Font.DIALOG, Font.PLAIN, 20);
    JTable table = new JTable();
    String[] columns = { "     题 目        ", "  你的答案  ","  正确答案  ","  状 态  " };
    int[] columnWidth={160,120,120,50};
    DefaultTableModel model = new DefaultTableModel(columns, 0);
    table.setModel(model);
    JScrollPane scrollPane = new JScrollPane(table);   //支持滚动 
    TableColumnModel columnModel=table.getColumnModel();
    int count=columnModel.getColumnCount();
    javax.swing.table.TableColumn column =columnModel.getColumn(0);
    column.setPreferredWidth(columnWidth[0]);
    计算做题时间代码:
    public class Timer extends JFrame {    
       
        private static final long serialVersionUID = 1L;  
        private static final String INITIAL_LABEL_TEXT = "00:00:00 000";     
        // 计数线程    
        private CountingThread thread = new CountingThread();    
        // 记录程序开始时间    
        private long programStart = System.currentTimeMillis();    
        // 程序一开始就是暂停的    
        private long pauseStart = programStart;    
        // 程序暂停的总时间    
        private long pauseCount = 0;    
        private JLabel label = new JLabel(INITIAL_LABEL_TEXT);    
        private JButton startPauseButton = new JButton("开始");    
        private JButton resetButton = new JButton("清零");    
        String time;
        private ActionListener startPauseButtonListener = new ActionListener() {    
            public void actionPerformed(ActionEvent e) {    
                if (thread.stopped) {    
                    pauseCount += (System.currentTimeMillis() - pauseStart);    
                    thread.stopped = false;    
                    startPauseButton.setText("暂停");    
                } else {    
                    pauseStart = System.currentTimeMillis();    
                    thread.stopped = true;    
    ton("确认");
       jb1.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent arg0) {
             String N=Name.getText();
             String M=Number.getText();
             name.add(N);
             number.add(M);
                    
                    Start frame = new Start();
                    frame.setTitle("四则运算训练小程序");
                      frame.setSize(600,400);
                      frame.setLocationRelativeTo(null);
                      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                      frame.setVisible(true);
                    frame.setVisible(true);     // 打开新界面
                    dispose();        // 关闭当前界面
    
    
    
                    try {    
                         UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());    
                     } catch (Exception e) {    
                         e.printStackTrace();    
                     } 
    
    统计分数代码:
    int size = list1.size();
    int errorSum = size - rightSum;
    JFrame resultFrame = new JFrame();
    resultFrame.setTitle("运算结果");
    resultFrame.setSize(500, 500);
    resultFrame.setLocationRelativeTo(null);
    resultFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    resultFrame.setVisible(true);
    JPanel panel7 = new JPanel();
    Timelabel.setText("答题用时为:" + time +" "+"做题总数: " + size + " " + "正确数:" + rightSum + " " + " 最终得分:" + rightSum * 5);
    panel7.add(Timelabel);
    resultFrame.add(panel7, BorderLayout.NORTH);
    JPanel panel = new JPanel();
    Font font = new Font(Font.DIALOG, Font.PLAIN, 20);
    JTable table = new JTable();
    String[] columns = { "     题 目        ", "  你的答案  ","  正确答案  ","  状 态  " };
    int[] columnWidth={160,120,120,50};
    DefaultTableModel model = new DefaultTableModel(columns, 0);
    table.setModel(model);
    JScrollPane scrollPane = new JScrollPane(table);   //支持滚动 
    TableColumnModel columnModel=table.getColumnModel();
    int count=columnModel.getColumnCount();
    javax.swing.table.TableColumn column =columnModel.getColumn(0);
    column.setPreferredWidth(columnWidth[0]);
    计算做题时间代码:
    public class Timer extends JFrame {    
       
        private static final long serialVersionUID = 1L;  
        private static final String INITIAL_LABEL_TEXT = "00:00:00 000";     
        // 计数线程    
        private CountingThread thread = new CountingThread();    
        // 记录程序开始时间    
        private long programStart = System.currentTimeMillis();    
        // 程序一开始就是暂停的    
        private long pauseStart = programStart;    
        // 程序暂停的总时间    
        private long pauseCount = 0;    
        private JLabel label = new JLabel(INITIAL_LABEL_TEXT);    
        private JButton startPauseButton = new JButton("开始");    
        private JButton resetButton = new JButton("清零");    
        String time;
        private ActionListener startPauseButtonListener = new ActionListener() {    
            public void actionPerformed(ActionEvent e) {    
                if (thread.stopped) {    
                    pauseCount += (System.currentTimeMillis() - pauseStart);    
                    thread.stopped = false;    
                    startPauseButton.setText("暂停");    
                } else {    
                    pauseStart = System.currentTimeMillis();    
                    thread.stopped = true;    
    

      

     

    六 运行效果截图:

     

     

    七 总结感悟

    通过结对编程实验,进一步复习了Java的知识内容,重温了用Java做界面的知识点,这次在四则运算符号优先级的问题上用到了栈方面的知识,但对这部分代码还是不够理解,在计时方面主要用了线程的知识,这次实验进一步加深对Java的理解,希望,能够在Java编程的路上越走越远。

  • 相关阅读:
    存储过程中调用webservice
    设计模式学习笔记——桥接模式(Bridge Patten)
    设计模式学习笔记——修饰模式(Decorator Pattern)
    设计模式学习笔记——单件模式(Singleton Pattern)
    设计模式学习笔记——建造者模式(Builder Pattern)
    设计模式学习笔记——工厂方法(Factory Method)
    设计模式学习笔记——简单工厂(Simple Factory)
    设计模式学习笔记——适配器模式(Adapter Patten)
    设计模式学习笔记——抽象工厂(Abstract Factory)
    存储过程使用shell脚本执行sql文件
  • 原文地址:https://www.cnblogs.com/lenkay/p/9845586.html
Copyright © 2020-2023  润新知