zoukankan      html  css  js  c++  java
  • 结对编程-四则运算GUI的实现

    一、项目成员以及coding地址:

    洪灏捷(本人)201321122020  coding地址:https://git.coding.net/hoje/The-GUI-operation.git

    白至幸        201421122116  博客园地址  http://www.cnblogs.com/EtihwXD/   

    视频演示地址:http://v.youku.com/v_show/id_XMzEwMjIyMDE3Ng==.html?spm=a2hzp.8253869.0.0

    二、结对编程题目描述

    在个人作业1中,用各种语言实现了一个命令行的四则运算小程序。进一步,本次要求把这个程序做成GUI,成为一个有基本功能、一定价值的程序。在下面的功能需求中实现两个:

    记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算。

    1. 记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算。

    2. 有计时功能,能显示用户开始答题后的消耗时间;

    3. 界面支持中文简体/中文繁体/英语,用户可以选择一种。

    三、需求分析

    1. 将上次基于控制台的代码写成GUI界面;
    2. 设置“英语|简体中文|繁体中文”选项;
    3. 开始答题并记录答题时间。

    四、思维导图

    五、项目实现

          语言选择的代码实现

     1 private void initialize() {
     2         // TODO Auto-generated method stub
     3         frame = new JFrame();
     4         if(lang == 1){
     5             frame.setTitle("arithmetic");
     6         }
     7         else if(lang == 2){
     8             frame.setTitle("四则运算");
     9         }
    10         else{
    11             frame.setTitle("四則運算");
    12         }
    13         frame.setSize(900, 300);
    14         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    15         
    16         Label Title = new Label("題目:", Label.CENTER);
    17         Label ans = new Label("答案:", Label.CENTER);
    18         Label time = new Label("用時:", Label.CENTER);
    19         Label right = new Label("正確數量:", Label.CENTER);
    20         Label wrong = new Label("錯誤數量:", Label.CENTER);
    21         
    22         
    23         final Label Titles = new Label();
    24         final JTextField anss = new JTextField(12);
    25         final Label rns = new Label();
    26         final Label times = new Label();
    27         final Label rights = new Label();
    28         final Label wrongs = new Label();
    29 
    30         JButton next = new JButton("下一題");
    31         next.setFont(new Font("宋体", Font.PLAIN, 16));
    32         JButton check = new JButton("檢查答案");
    33         check.setFont(new Font("宋体", Font.PLAIN, 16));
    34         
    35         if(lang == 1){
    36             Title.setText("quiz:");
    37             ans.setText("answer: ");
    38             time.setText("time:");
    39             right.setText("correct:");
    40             wrong.setText("wrong:");
    41             next.setText("next");
    42             check.setText("check");
    43             right.setText("Correct question number:");
    44             wrong.setText("Error question number:");
    45         }
    46         else if(lang ==2 ){
    47             Title.setText("题目:");
    48             ans.setText("答案: ");
    49             time.setText("用时:");
    50             right.setText("正确数量:");
    51             wrong.setText("错误数量:");
    52             next.setText("下一题");
    53             check.setText("检查答案");
    54             right.setText("正确题数:");
    55             wrong.setText("错误题数:");
    56         }
    57         

          计时功能的代码实现

     1 timer = new Timer();
     2 
     3         finishtime = System.currentTimeMillis();
     4         starttime = finishtime;
     5         timer.schedule(new TimerTask() {
     6             public void run() {
     7                 finishtime = System.currentTimeMillis();
     8                 duration = finishtime - starttime;
     9                 String str = df.format(new Date(duration));
    10                 times.setText(str);
    11                 if (summary == titles) {
    12                     try {
    13                         Thread.sleep(2000000);
    14                     } catch (InterruptedException e) {
    15                         // TODO Auto-generated catch block
    16                         e.printStackTrace();
    17                     }
    18 
    19                 }
    20 
    21             }
    22         }, 1000, 1000);

           判断答案是否正确并记录对错数目

     1 check.addActionListener(new ActionListener() {
     2             
     3             @Override
     4             public void actionPerformed(ActionEvent e) {
     5                 // TODO Auto-generated method stub
     6                 
     7             if(results.equals(anss.getText())){
     8                 if(lang == 1){
     9                     rns.setText("Correct!");
    10                     rightNum = rightNum + 1;
    11                     rights.setText(String.valueOf(rightNum));
    12                 }
    13                 else if(lang == 2){
    14                     rns.setText("正确!");
    15                     rightNum = rightNum + 1;
    16                     rights.setText(String.valueOf(rightNum));
    17                 }
    18                 else{
    19                     rns.setText("正確!");
    20                     rightNum = rightNum + 1;
    21                     rights.setText(String.valueOf(rightNum));
    22                 }
    23             }else{
    24                 if(lang == 1){
    25                     rns.setText("Wrong!");
    26                     wrongNum = wrongNum + 1;
    27                     wrongs.setText(String.valueOf(wrongNum));
    28                 }
    29                 else if(lang == 2){
    30                     rns.setText("错误!");
    31                     wrongNum = wrongNum + 1;
    32                     wrongs.setText(String.valueOf(wrongNum));
    33                 }
    34                 else{
    35                     rns.setText("错误!");
    36                     wrongNum = wrongNum + 1;
    37                     wrongs.setText(String.valueOf(wrongNum));
    38                 }
    39             }
    40            

    六、功能截图展示

         语言选择界面

        不同语言界面演示

          选择题数和范围

     

      计时运行和判断对错题数

     六、小结感受

    • 对于结对编程是否能1+1>2的结果?我觉得是肯定的,在编程过程中,有许多自己考虑不到的问题,或许别人一个提醒就豁然开朗;

    七、评价

      优点:对于问题的综合处理能力好,逻辑思维不错;

      缺点:代码写的有乱

      希望他提高的地方:多交流,共同进步

    八、PSP展示

     

     

     

  • 相关阅读:
    20181123(编码问题)
    20181122笔记(列表、元组、字典和集合的数据类型及内置方法)
    20181121笔记(for,数字类型和字符串类型的内置方法)
    20181120笔记
    Python的第3堂课
    错误集合(想起来就更新)
    Python的第二堂课(2)
    Python的第二堂课(1)
    boost::bind实践2——来自《Beyond the C++ Standard Library ( An Introduction to Boost )》
    boost::bind实践
  • 原文地址:https://www.cnblogs.com/hoje/p/7708174.html
Copyright © 2011-2022 走看看