zoukankan      html  css  js  c++  java
  • 结对编程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界面编写有了大致的了解后心里才有了底。接下来就是如何将书面知识运用到实际,将界面编写与原本的四则运算代码结合起来,这是真的是个大难题,因为平常的编程经历实在有些

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

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

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

    到问题不爱先思考流程就盲目下手,这个必须改正。我从她的身上也学习到了对于困难的挑战精神。我们一起共同进步了。
    ===============================================【晴昼秋岚,皆入我襟怀。 只岁暮天寒 ,独对江清月白。 谢此际春风,待我慷慨。 回眸处,一川青黛。 你随缱绻烟霞而来。】================================================
  • 相关阅读:
    redis搭建集群并用TreeSoft管理
    使用windows任务计划程序自动清除C盘缓存文件
    深入理解JavaScript事件循环机制
    redux源码解读(二)
    redux源码解读(一)
    create-react-app源码解读之为什么不搞个山寨版的create-react-app呢?
    深入理解CSS系列(二):为什么height:100%不生效?
    深入理解CSS系列(一):理解CSS的盒子模型
    搭建一个交互式的前端构建环境.md
    实习这件小事(一位大四狗的前端实习经历)
  • 原文地址:https://www.cnblogs.com/cholin/p/6552248.html
Copyright © 2011-2022 走看看