一、题目描述
我们在个人作业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.变量命名的规则:以变量的功能命名,使用完整的英文描述,采用驼峰命名法。
2.函数传参过程中尽量采用形式传值
3.花括号“{}”不允许省略,即使只有一段代码。
4.使用括号“()”来强调运算符优先级。
5.记得格式化代码,eclipse里面Ctrl+Shilft+F
结对照片
代码地址:https://git.coding.net/nibaijiejiea/test.git