结对编程-四则运算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展示

 

 

 

 

posted @ 2017-10-22 10:56  honghj  阅读(439)  评论(2编辑  收藏  举报