华兴观点 2018-03-25
代码:https://coding.net/u/Thomaskang/p/sizeyunsuan/git?public=true
先来一张图片缓解下鸭力。
1、需求分析
做一个小学生四则运算
(1)接受需要的题目数量
(2)0到100之间的整数
(3)每个题至少两种运算符
(4)不能出现负数和非整数
(5)输出到一个txt文件中
2、功能设计
用户交互功能:用于用户输入题目数量和获得运行后的题目文件(包括答案)的文件下载按钮
后台功能:实现各类实际的需求分析得用户需求
接受需要的题目数量
0到100之间的整数
每个题至少两种运算符
不能出现负数和非整数
前后台交互功能:怎样连接前后台
错误提示功能:在用户输入不规范等情况下提示错误信息
3、设计实现
用户交互功能:简单的前台页面html+css
后台功能:
(1)接受题目数量,前台jsp传递通过servlet跳转传递到后台,java类通过参数接收
(2)产生四个随机数类,得保证在0到100之间,不能有负数和非整数
(3)产生四个随机字符类,并且对个数和种类得有限制
(4)计算类,运用Java的String中的eval方法进行计算,避免优先级判断
(5)运用io流文件输出到一个txt文件中
前后台连接:jsp+servlet
错误提示功能:用前台js正则表达式进行限制提醒
4、算法详解:
对于优先级问题没必要去讨论,java提供了对于Sting里面的数字运算的方法,自动处理里面的优先级,eval()方法,把计算表达式转换成string进行计算出结果再输出。这是我原本的想法。接下来,想讲下我的辛酸历程。
有一句话是理想很丰满,现实很骨感。最后我没有实现这个功能的全部,仅仅实现了它的一部分,因为在我测试运行的时候出错了。
在这儿我纠结了将近半天,翻了各种博客,做各种测试,最后的结果是,在一到两条数据的时候是可以运算的,但当数据循环多了反而不行了,真的很懵。
简述下关于这点的想法,引入JavaScript的 各种包,然后用eval方法。
将每次拼接的表达式放在字符串里面。用ArrayList包容,然后遍历的去计算,计算后再用ArrayList去接收。
之后用io类进行输出。
5、测试运行
1、接收题目数量和学号:通过servlet传递跳转,有点多次一举,原本是想要为了更好的用户体验。
2、产生四个随机数;
3、运算符,这点我觉得写得不错,我考虑到了每个运算符出现的概率应该相等。
4.计算结果,虽然没有完全做完,但我认为我的想法是没错的。也贴一些我的运行结果。
5、出题:
7、io输出:
6、满意代码片段
敲了的代码都挺满意的。
最满意的可能就是考虑到了运算符的出现概率和用户体验那一块。
7、总结
总得来说,整个敲代码的过程其实不是很难,有想法,而且做起来逻辑挺清晰的。
但最后没有完成的原因,一是因为忙工作室和其他事情把作业拖到了最后时间不够,二是自己对于某些函数的了解程度和编码程度都还不够。
也算是给自己一个警示吧,做一个东西得做好准备,而且得要对面临的问题又应对措施。
在计算那一步花了很多时间还没弄出来的时候就应该换思路了,不能钻牛角尖下次。
给自己留够时间。
8、展示PSP
任务内容 | 计划共完成需要的时间(小时) | 实际完成需要的时间(小时) |
计划 | 0.5 | 1 |
·估计这个任务需要多少时间,并规划大致工作步骤 | 10 | 15 |
开发 | 8 | 15 |
·需求分析 (包括学习新技术) | 0.5 | 1 |
·生成设计文档 | 0.6 | 0.6 |
·设计复审(和同事审核设计文档) | ||
·代码规范(为目前的开发制定合适的规范) | 0.2 | |
·具体设计 | 0.5 | 0.5 |
·具体编码 | 10 | 12 |
·代码复审 | 1 | |
·测试(自我测试,修改代码,提交修改) | 2 | 5 |
报告 | 0.5 | 2 |
·测试报告 | ||
·计算工作量 | 16 | 18 |
·事后总结,并提出过程改进计划 | 15 |