• 结对编程1-四则运算题目生成器改进


    结对编程1-四则运算题目生成器改进(201421123047,201421123029(网络1411班))

    题目要求:

      1. 我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序。进一步,本次要求把这个程序做成GUI(可以是Windows PC 上的,也可以是Mac、Linux,web,手机上的),成为一个有基本功能、一定价值的程序。在下面的功能需求中实现两个:

        1. 记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算。
        2. 有计时功能,能显示用户开始答题后的消耗时间。
        3. 界面支持中文简体/中文繁体/英语,用户可以选择一种;

    需求分析:

    1. 计时功能:答题时知道自己花费时间,更了解自己答题效率.
    2. 语言选择:满足不同用户的需求,实现语言的自由切换.

    程序设计:

           主要功能流程图:

                                   

     代码展示:

                                计时功能:

     public void actionPerformed(ActionEvent e) {//计时功能
                  tishu=Integer.parseInt(T1.getText());
                  noanswer=tishu-dadui-dacuo;
                  summary++;
                  timer = new Timer(); 
                  finishtime=System.currentTimeMillis();
                  starttime=finishtime;
                  timer.schedule(new TimerTask() 
                  {
                      public void run() {    
                          finishtime=System.currentTimeMillis();
                          duration=finishtime-starttime;
                          if(duration/1000==25&&summary<tishu)
                          {
                              JOptionPane.showMessageDialog(null, "答题时间已到。答题总题数为"+(dadui+dacuo)+",答对题数为"+dadui+",答错题数为"+dacuo+",为答题题数"+(tishu-dacuo-dadui)+",答题使用时间:"+(allduration+duration)/1000+"秒。");
                              frame.setVisible(false);
                              new Jm();
                          }
                          String str=df.format(new Date(duration)); 
                          T7.setText(str);
                          }  
                      }, 1000, 1000);

                                         

                               语言选择:

    public class Yyxz {
        private JFrame frame;
        public static void main(String[] args) {
            EventQueue.invokeLater(new Runnable() {
        public void run() {
                    try {
                        Yyxz window = new Yyxz();
                        window.frame.setVisible(true);
                    } 
                    catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
        }
        public Yyxz() {
            initialize();
        }
        private void initialize() {
            //设置界面的布局
            frame = new JFrame();
            frame.setTitle("语言选择");
            frame.setBounds(100, 100, 325, 397);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            
            JButton btnNewButton = new JButton("简体中文");
            btnNewButton.setFont(new Font("宋体", Font.PLAIN, 22));
            
            JButton button = new JButton("繁体中文");
            button.setFont(new Font("宋体", Font.PLAIN, 22));
            
            JButton button_1 = new JButton("英文");
            button_1.setFont(new Font("宋体", Font.PLAIN, 22));
            
            JButton btnNewButton_1 = new JButton("退出");
            btnNewButton_1.setFont(new Font("宋体", Font.PLAIN, 18));
            GroupLayout groupLayout = new GroupLayout(frame.getContentPane());
            groupLayout.setHorizontalGroup(
            groupLayout.createParallelGroup(Alignment.LEADING)
            .addGroup(groupLayout.createSequentialGroup()
                        .addContainerGap(57, Short.MAX_VALUE)
                        .addGroup(groupLayout.createParallelGroup(Alignment.LEADING, false)
                        .addGroup(groupLayout.createSequentialGroup()
                        .addPreferredGap(ComponentPlacement.RELATED)
                        .addComponent(btnNewButton, GroupLayout.DEFAULT_SIZE, 194, Short.MAX_VALUE))
                        .addComponent(button, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(button_1, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addGap(68))
                        .addGroup(groupLayout.createSequentialGroup()
                        .addGap(118)
                        .addComponent(btnNewButton_1, GroupLayout.PREFERRED_SIZE, 82, GroupLayout.PREFERRED_SIZE)
                        .addContainerGap(119, Short.MAX_VALUE))
            );
            groupLayout.setVerticalGroup(
            groupLayout.createParallelGroup(Alignment.LEADING)
            .addGroup(groupLayout.createSequentialGroup()
                        .addGap(42)
                        .addComponent(btnNewButton)
                        .addGap(57)
                        .addComponent(button, GroupLayout.PREFERRED_SIZE, 35, GroupLayout.PREFERRED_SIZE)
                        .addGap(57)
                        .addComponent(button_1, GroupLayout.PREFERRED_SIZE, 35, GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(ComponentPlacement.RELATED, 53, Short.MAX_VALUE)
                        .addComponent(btnNewButton_1)
                        .addGap(26))
            );
            
            btnNewButton_1.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e) {
                    frame.setVisible(false);
                    new Jm();}
            });
            
            btnNewButton.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e) {
                    frame.setVisible(false);
                    new Jm();
                }            
            });
            
            button.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e) {
                    frame.setVisible(false);
                    new Jm();
                }            
            });
           
            button_1.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e) {
                    frame.setVisible(false);
                    new Jm2();
                }            
            });
            frame.getContentPane().setLayout(groupLayout);
            //设置窗口的位置
            Toolkit kit = Toolkit.getDefaultToolkit();        
            Dimension screenSize = kit.getScreenSize();        
            int w1 = screenSize.width;        
            int h = screenSize.height;        
            int x1 = w1/3;        
            int y1 = h/5;    
            frame.setLocation(x1,y1);
            frame.setVisible(true);//设置窗口的可见性
            frame.setResizable(false);//设置窗口大小的不可变性
        }
    
    }

    功能截图:

    PSP:

    PSP2.1

    Personal Software Process Stages

    Time(min) Senior Student

    Time (min)

    Planning

    计划

    20

    25

    Estimate

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

    20

    25

    Development

    开发

    300

    350

    Analysis

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

    20

    20

    Design Spec

    生成设计文档

    10

    14

    Design Review

    设计复审

    20

    25

    Coding Standard

    代码规范

    15

    30

    Design

    具体设计

    100

    130

    Coding

    具体编码

    350

    400

    Code Review

    代码复审

    30

    30

    Test

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

    30

    16

    Reporting

    报告

    10

    10

    测试报告

    2

    3

    计算工作量

    3

    5

    并提出过程改进计划

    5

    4

    总结:

        首先,在这次编程中使我更加了解如何运用Java进行GUI界面的设计.其次,我也明白了代码的规范书写的重要性,特别是在结对编程中,如果按自己的想法随便定义,那么就可能导致队友不明白你写的代码,这也导致了编程无法进行下去,所以规范代码是非常有必要的.再次,我明白在编程中遇到问题时要学会自己查资料去解决,这样才会有更深的印象.总之,在这次编程中感觉自己还是有很多收获,编程能力得到了提高但还是需要加强.

    https://git.coding.net/lqwe/rjgc.git

    https://coding.net/u/weh/p/we/git/tree/master/

  • 相关阅读:
    linux下淘宝安全控件问题
    什么样的路由器有类似改hosts的功能
    linux 常见音乐、视频播放器简介
    把Ubuntu打造成Mac Macbuntu
    Linux桌面“彩”起来:桌面环境及窗口管理器大盘点
    听听各位对Ubuntu的UI的看法
    KVM虚拟机的创建、管理与迁移
    轻量级桌面 openbox + tint2 + conky + stalonetray + pcmanfm + xcompmgr
    ubuntu设置自动关机
    ubuntu sublime 破解
  • 原文地址:https://www.cnblogs.com/lqwe/p/6550873.html
Copyright © 2020-2023  润新知