数学题生成

一、预估与实际

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划
• Estimate • 估计这个任务需要多少时间 20 20
Development 开发
• Analysis • 需求分析 (包括学习新技术) 50 100
• Design Spec • 生成设计文档 20 30
• Design Review • 设计复审 20 30
• Coding Standard • 代码规范 (为目前的开发制定合适的规范) 60 100
• Design • 具体设计 60 100
• Coding • 具体编码1 150 120
• Code Review • 代码复审 60 60
• Test • 测试(自我测试,修改代码,提交修改) 100 150
Reporting 报告
• Test Repor • 测试报告 30 30
• Size Measurement • 计算工作量 20 30
• Postmortem & Process Improvement Plan • 事后总结, 并提出过程改进计划 30 60
合计 720

二、需求分析

我通过查询小学教学大纲的方式了解到,小学一年级加减法有如下的几个特点:

  • 加法有两种形式:
    (1)个位数 + 个位数
    (2)个位数 + 整十数
  • 减法也有两种形式:
    (1)整十数 - 个位数
    (2) 个位数 - 个位数
  • 结果不能为负数

经过分析,我认为,这个程序应当:

  • 结果不能为负数,也不能大于100
  • 被减数必须大于减数
  • 形如 A + B,A和B都为个位,或其中之一为整十数
  • 形如 A - B ,A应该大于等于B

小学二年级乘除法有如下的几个特点:

  • 乘法只有表内乘法
  • 除法也是表内除法
  • 除和商都是个位数

经过分析,我认为,这个程序应当:

  • 除数不能为0
  • 被除数应该大于或等于除数
  • 积不能大于100
  • 除和商都是个位数

三、设计

1. 设计思路

说明你如何设计这个程序

比如:

  • 关键函数的流程图是怎样的?



  • 算法的关键的关键是什么?
    1. 需要注意对用户的“错误输入”进行提醒,并结束程序
    2. 随机数生成时,需要根据不同的运算符制定不同的随机数生成规则

2. 实现方案

写出具体实现的步骤

比如:

  • 准备工作:先在Github上创建仓库,克隆到本地,在本地新建PSP1302文件夹
  • 技术关键点:
    • 采用哪种设计模式
    • 如何输出文本
    • 针对不同运算符号,制定不同的随机数生成规则
    • 针对用户的”错误输入“,用正则表达式更容易判断

四、编码

请说明你如何按照设计思路进行编码,并记录你在开发中遇到的问题,与解决过程

1. 调试日志

记录编码调试的日志,请记录下开发过程中的 debug 历程

比如:

  • 由于args数组的长度没有判断,所以当用户输入参数的个数不为2时,出现异常
  • 除法运算中,由于生成的除数为0,出现异常

2. 关键代码1536680918153

1536680938372

运用了“简单工厂”的设计模式,根据运算符号的不同,工厂就实例化出合适的对象,通过多台,返回对应的子类的对象,实现了随机数的生成。

3. 代码规范

请给出本次实验使用的代码规范:

  • 第一条:不使用“魔法数字”,都用有意义的英文名进行变量的命名
  • 第二条:不使用拼音进行命名
  • 第三条:采用驼峰式命名规则,类名以大写字母开头,变量名和方法名以小写字母开头
  • 第四条:代码中的命名均不能以下划线或美元符号开始,也不能一下划线或美元符号结束。
  • 第五条:左小括号和字符之间不出现空格;同样的,有小括号和字符之间也不出现空格。

并人工检查代码是否符合规范

五、测试

测试用例 预期结果 实际结果
dfsfh 1 输入有误,程序结束! 同预期结果
103120 1 输入有误,程序结束! 同预期结果
-123 2 输入有误,程序结束! 同预期结果
001 2 输入有误,程序结束! 同预期结果
10 56 输入有误,程序结束! 同预期结果
10 -1 输入有误,程序结束! 同预期结果
10 xzh 输入有误,程序结束! 同预期结果
10 2 正确文档输出 同预期结果

六、总结

请总结过程中的教训和经验,思考

  • 是否使用了“软件开发的基本策略:分而治之”,是否需要重构

    是采用了分而治之的策略,基本做到了”一个类只实现一个功能“,将各个类的功能细分。

    对于重构了解的不多,但如果需要扩展功能的话,可能会比较容易扩展:比如 需要新增形如: A+B +C的运算

  • “高质量的设计、规范的编码以及有效的测试是保证软件产品质量的三个重要方面”,你是否采用了相关的手段,是否需要重构

    采用了“简单工厂”的设计模式,对于重构方面的知识还要加强

猜你喜欢

转载自www.cnblogs.com/hkttty/p/9631826.html