作业要求:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2213
Github地址:https://github.com/rg-zpf/rg-software
结对项目成员以及各博客地址:
201606120038李家俊
博客园:https://www.cnblogs.com/-QAQ/
201606120043曾鹏菲
博客园:https://www.cnblogs.com/zpfs/
1.开发环境:IntelliJ IDEA 2018.2.2 x64
2.结对开发软件过程耗时估计与统计表
PSP2.1 | Personal Software Process Stages | predicted(h) | actual(h) |
· Planning | 计划 | 1 | 1 |
· Estimate | 估计这个任务需要多少时间 | 50 | 55 |
· Development | 开发 | 3 | 3 |
· Analysis | 需求分析 (包括学习新技术) | 1 | 1 |
· Design Spec | 生成设计文档 | 1 | 1 |
· Design Review | 设计复审 | 2 | 2 |
· Coding Standard | 代码规范 | 5 | 5 |
· Design | 具体设计 | 1 | 1 |
· Coding | 具体编码 | 20 | 22 |
· Code Review | 代码复审 | 5 | 5 |
· Test | 测试(自我测试,修改代码,提交修改) | 10 | 13 |
· Reporting | 报告 | 2 | 2 |
· | 测试报告 | 0.5 | 0.5 |
· | 计算工作量 | 1 | 1 |
· | 并提出过程改进计划 | 0.5 | 0.5 |
3.扩展方向
1.用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数,并且显示用户的得分(曾鹏菲)
2.程序可以出单个整数阶乘的题目:如:4!=24(阶层在10以内随机产生)(曾鹏菲)
3.用户答题结束以后,程序可以显示用户答题所用的时间(以00:00形式显示)(李家俊)
4.程序可以设置答题时间,时间设置为整数,单位为秒,最大不能超过120秒,若超过了答题时间未答题,则提示:时间已到,不能答题。(每一题的答题时间)(曾鹏菲)
5.程序设置总时间5分钟,若5分钟内还未完成所有题目,时间到则当程序结束,未作答的题目当错误(程序总时间)(李家俊)
4.程序运行界面及部分关键代码:
界面:
部分关键代码
计时功能:程序运行,即总时间开始倒计时5分钟,若倒计时完毕还未答题完毕,则不能再作答,直接输出最后得分和做对题目数和做错题目数。
1 tis = new Timer(); 2 tis.schedule(new TimerTask() { 3 public void run() { 4 5 if (times==0){ 6 code = num - count; 7 string = string + " " + "正确:" +count +" "+"错误:" + code +" "+ "你的最后分数是:"+(float)count/num*100; 8 Content.setText(string); 9 tis.cancel(); 10 timer.cancel(); 11 n=-1; 12 }else { 13 14 times--; 15 16 long hh = times / 60 / 60 % 60; 17 long mm = times / 60 % 60; 18 long ss = times % 60; 19 StrOut = "还剩" + hh + "小时" + mm + "分钟" + ss + "秒"; 20 outTime.setText(StrOut); 21 } 22 } 23 }, 0, 1000);
输入题目数,题目数不能超过5题,输入完题目数,点击按钮的同时,做题开始计算做题时间(总时间与做题计算时间不同步)
Number.setOnMouseClicked(new EventHandler<MouseEvent>() { @Override public void handle(MouseEvent event) { num = Integer.parseInt(NumText.getText()); if (num>5){ string = string + " " + "题目数不能超过5题,请重新输入!"+ " " + "请输入题目数目:"; Content.setText(string ); }else { string = string + NumText.getText(); Content.setText(string); } TimerTask task1 = new TimerTask() { @Override public void run() { StrTime = String.format("%1$tM:%1$tS",System.currentTimeMillis()-time); } }; new Timer().schedule(task1, 1, 1000); } });
5.结对编程的收获和感悟:
感觉这次的结对项目在个人项目的基础上做起来并不难,两个人工作量太小,至于为什么没有做完8个扩展要求,是因为没什么兴趣写下去。为什么没有兴趣,因为有花了一些力气设计界面的,并且在开始写代码前画了一些草图,但是感觉在界面编码时并不能很好地实现自己草图上的一些设计,设计的界面不太符合现代的审美。这次写界面用了Java Fx,由于个人项目用Java写的,在大二时也学了一点Java Fx,所以一切的发生也好像水到渠成。感觉Java Fx写界面写起来不如网页的界面开发和Android的界面设计写起来那么舒服,Java Fx也有fxcss,但是自己的兴趣并不在界面设计上,fxcss和css差不多,但是我对css一知半解,fxcss也并不想去学,而且了解到还有BootstrapFx,但是资料并不多,估测Java Fx是不是处于一种不太好的发展状态呢,听说JDK11也删除了Java Fx。
感觉自己在写代码时设计模式还需要学习和加强一些,代码写的有一些臃肿和杂乱,虽然知道MVC模式,但是在代码编写时也没有实现出来,在开发方面,自己还是太稚嫩了。
6.工作照: