一、题目描述
我们在个人作业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界面编写有了大致的了解后心里才有了底。接下来就是如何将书面知识运用到实际,将界面编写与原本的四则运算代码结合起来,这是真的是个大难题,因为平常的编程经历实在有些
匮乏。幸好队友提醒先设计流程图,有了大致框架后,在具体到细节编写,比较不容易出错。编写方面通过请教比较会编程的舍友,然后和队友一起讨论,费了九牛二虎之力才于截止期限前勉强
完成。
②结对经验:每个人都有自己的思维模式与编写代码的习惯,起初拿到队友代码时,是大部分看不懂的,她也不懂我的编写的是啥东西,后来通过互相交流才大致了解了。但为了避免此问题,我
们共同制定了代码编写的规范,例如:同一对前后括号必须对齐,每个函数前需要注明其功能等,后来才能愉快的一起编写下去。通过结对,在队友的提醒下我也发现了自己的一些问题,比如拿
到问题不爱先思考流程就盲目下手,这个必须改正。我从她的身上也学习到了对于困难的挑战精神。我们一起共同进步了。