结对编程1—— 基于界面的四则运算(38/39)

一、题目描述

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

二、需求分析

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

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

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

三、结对分工

 方巧玲(201421123038):

 本人码市地址:https://git.coding.net/cholin/Task.git

1:有计时功能,能显示用户开始答题后的消耗时间。

2:界面支持中文简体/中文繁体/英语,用户可以选择一种。
白碧宇(201421123039):

1:建构四则运算式的题库。

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

四、程序设计

思维导图:

1.计时器功能

 

 2.记错功能

 

五、psp表格

 

 

PSP2.1

Personal Software Process Stages

Time (%) Senior Student

Time (%)

Planning

计划

9

7

· Estimate

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

9

7

Development

开发

92

96

· Analysis

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

6

9

· Design Spec

生成设计文档

7

7

· Design Review

设计复审

3

7

· Coding Standard

代码规范

4

4

· Design

具体设计

15

16

· Coding

具体编码

36

30

· Code Review

代码复审

8

9

· Test

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

12

25

Reporting

报告

10

6

·

测试报告

3

2

·

计算工作量

4

1

·

并提出过程改进计划

3

3

六、代码展示

 1.计时代码

public void showTime() {
        labTime = new JLabel(tips.get(1) + "00:00");
        labTime.setBounds(580, 0, 120, 50);
        jpMain.add(labTime);  //计时开始
        new Thread() {
            public void run() {
                while (true) {
                    try {
                        Thread.sleep(1000);
                        seconds++;
                        if (seconds >= 60) {
                            seconds = 0;
                            minutes++;
                        }
                        // 修正分钟数和秒钟数
                        if (seconds < 10)
                            secStr = "0" + seconds.toString();
                        else
                            secStr = seconds.toString();
                        if (minutes < 10)
                            minStr = "0" + minutes.toString();
                        else
                            minStr = minutes.toString();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    labTime.setText(tips.get(1) + minStr + ":" + secStr);
                    if(isEnd)
                        break;
                }
            }
        }.start();
    }

2.语言选择代码

public void setLanguage() 
{ String[] choiceLanguage = { "中文", "English" }; String language = (String) JOptionPane.showInputDialog(null, "请选择客户端的语言: ", "Choice a language for client", JOptionPane.PLAIN_MESSAGE, new ImageIcon("icon.png"), choiceLanguage, "中文"); if (language == null)
{ System.exit(-1); }
else { try { reader = new BufferedReader(new FileReader(new File("language/" + language + ".txt"))); String s; while ((s = reader.readLine()) != null) { tips.add(s); } reader.close(); } catch (IOException e) { e.printStackTrace(); } } }

七、程序运行

 

编辑规则

1 变量命名的规则:以变量的功能命名,使用完整的英文描述,采用驼峰命名法。

2 函数传参过程中尽量采用形式传值

3 花括号“{}”不允许省略,即使只有一段代码。

4 使用括号“()”来强调运算符优先级。

5 记得格式化代码,eclipse里面Ctrl+Shilft+F

、现场展示

十、小结感受

①个人经验:原本个人并不懂该如何编写复杂的界面,甚至对于GUI界面的概念都很模糊,看到题目时是一片茫然的。后来通过百度网上教程和队友一起学习,甚至找出了以前的java课本进行了

复习,对GUI界面编写有了大致的了解后心里才有了底。接下来就是如何将书面知识运用到实际,将界面编写与原本的四则运算代码结合起来,这是真的是个大难题,因为平常的编程经历实在有些

匮乏。幸好队友提醒先设计流程图,有了大致框架后,在具体到细节编写,比较不容易出错。编写方面通过请教比较会编程的舍友,然后和队友一起讨论,费了九牛二虎之力才于截止期限前勉强

完成。
②结对经验:每个人都有自己的思维模式与编写代码的习惯,起初拿到队友代码时,是大部分看不懂的,她也不懂我的编写的是啥东西,后来通过互相交流才大致了解了。但为了避免此问题,我

们共同制定了代码编写的规范,例如:同一对前后括号必须对齐,每个函数前需要注明其功能等,后来才能愉快的一起编写下去。通过结对,在队友的提醒下我也发现了自己的一些问题,比如拿

到问题不爱先思考流程就盲目下手,这个必须改正。我从她的身上也学习到了对于困难的挑战精神。我们一起共同进步了。
===============================================【晴昼秋岚,皆入我襟怀。 只岁暮天寒 ,独对江清月白。 谢此际春风,待我慷慨。 回眸处,一川青黛。 你随缱绻烟霞而来。】================================================
原文地址:https://www.cnblogs.com/cholin/p/6552248.html