先放上需求同时也是作业的地址:http://www.cnblogs.com/xinz/p/7417960.html
这是我第一次接触一个完整的项目的开发,在这里分享一下整个项目(或者作业?)的设计过程。
写一个项目,首先就是要搞清楚需求。而这个项目的需求描述中,可以看出后续的改进会有很多。而且个人也很难在短时间内将所有功能实现,还需要后续的慢慢改进。这就导致了必须采用模块化的开发,否则在后续的修改和添加新的功能时将耗费大量的精力。
其次是要将需求中的问题拆分,本次项目里的问题就是“输入需要的题目数,输出相应符合标准的题目”。我们可以该问题拆分为“题目生成”“题目的验证”与“题目的输出“。
按照面向对象的思路,我首先确定了“题目“:
其次按照问题的拆分,分别是“题目生成器”“题目验证器”“题目输出器”:
验证器筛掉不符合标准的题目并生成答案
题目生成器依靠随机函数生成题目并调用验证器
题目输出器调用题目生成器批量生成可用题目并按格式输出
但我发觉,批量生成题目去撞概率生成符合要求的题目很浪费时间(很明显的一件事我觉得)。于是我在验证器里加入了一个新的方法:修复题目
实际上错误只会发生在减法与除法之中(只需要把被减数或者被除数换掉就可以避免)
最后在对整个块进行完善:
这就是最初的完整模块设计。(但这并不是最终版本…)
在进行整个文件的目录设计时,我发觉题目中有很多需要很方便就能修改的数据,如“学号”、“姓名”、“题目数”等。于是又在源代码目录下加入了配置文件。
最终的源文件目录如下:
虽然整个架子算搭完了,但里面的实现还是没有进行(验证器的实现很困难,特别是修复方法,需要太多的if-else,不知道如何改进)。整个过程整体消耗时间可能在2~3小时左右,在此做以记录。