一、题目描述

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

二、需求分析

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

三、结对分工

方巧玲(队友):


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

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

白碧宇(本人): 


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

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

四、程序设计

思维导图:

1.计时器功能

 

 

 

2.记错功能

五、代码展示

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, "请选择客户端的语言:\n", "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(); } } }
复制代码

六、程序运行

 

 

 

七、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

 

 

八、小结感受

   个人方面的不足:跟队友两个人都是java基础比较薄弱,做上一题就是做了好久才写好,看到这次结对作业是做GUI界面,真的以前没学过也没有自学过,要实现这些功能确实有些麻烦。后来通过百度网上教程和队友一起学习,通过看视频才初步有一些了解,对GUI界面编写有了大致的了解后心里才有了底。后来就先根据题目要求画好思维导图,然后一边百度一边请教别人,和队友一起讨论,才于截止期限前勉强完成。

   结对方面的不足:以前没有过结对经验,这是第一次,刚看到队友上次作业的代码时,是大部分看不懂的,她也不怎么看懂我的,所以决定两个人讨论出一套代码规则根据规则重写代码,规则如下。后来编程期间虽然也有很多不一致,但我们还是通过补充几条规则解决了问题,结对需要团结,尊重队友的意见,在队友的帮助下也会更轻松一些。

 

 

事前讨论的代码规则

 

  1. 1.变量命名的规则:以变量的功能命名,使用完整的英文描述,采用驼峰命名法。
    2.函数传参过程中尽量采用形式传值
    3.花括号“{}”不允许省略,即使只有一段代码。
    4.使用括号“()”来强调运算符优先级。
    5.记得格式化代码,eclipse里面Ctrl
    +Shilft+F

 

   结对照片

     

代码地址:https://git.coding.net/nibaijiejiea/test.git

posted on 2017-03-15 09:36  biyubai  阅读(173)  评论(1编辑  收藏  举报