小学生的噩梦

一、估计与实际

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

二、需求分析

我通过上网查百度和回忆自己的小学经历得到,小学一年级数学有如下特点:

  • 学习100以内的加减法
  • 100以内的比大小
    经过分析,我认为,这个程序应当:
  • 将输入数据控制在100以内
  • 三、设计

    1、设计思路

  • 要首先考虑用户输入数据在100以内
  • 在其中的判断语句中是否正确
  • 在不同的年级需要用什么语句去判断
  • 是否可以自己生成TXT文件
  • 要进行计算以及输出
  • 2. 实现方案

  • 准备工作1:先下一个QQ浏览器(具备整张网页翻译功能)
  • 准备工作2:将老师的repository中的Fork项目,将其Clone至本地
  • 在本地创建个人文件夹:
    文件夹名称:PSP6375
    源文件:MathExam6375
  • 技术关键点:Random,File,BufferedWriter
  • 四、编码

  • 生成随机数Manth.random()
  • 语句判断年级,符号,题目规范
  • IO流写入
  • 1. 调试日志

  • 输入除法是,输出错误
    解决方案:在生成数时+1
  • 输入减法是,输出有负数
    解决方案:判断第一个传入的数是否大于第二个数,如果小于,则符号“-”变为“+”
  • 输入负数时会报错
    解决方案:判断是否大于0且个数不超过9999,否则重新输入
  • 2. 关键代码

    for (int i = 0; i < n ; i++) {
    x = (int)(Math.random()100);//随机生成0-100的数
    y = (int)(Math.random()
    100);
    f = (int)(Math.random()*2);//随机生成0,1。0代表加号1代表减号
    // 判断加法和减法 0为加法
    if ( f == 0) {
    System.out.println("(" + (i+1) + ")" +" " + x + "+" + y + " " + "=" + " ");
    str[i] = "(" + (i+1) + ")" +" " + x + "+" + y + " " + "=" + " " + (x+y);//存入数组
    }
    else{
    if (x-y < 0) {//若差为0减数被减数交换位置
    System.out.println("(" + (i+1) + ")" +" " + y + "-" + x + " " + "=" + " ");
    str[i] = "(" + (i+1) + ")" +" " + y + "-" + x + " " + "=" + " " + (y-x);//存入数组
    }
    else {
    System.out.println("(" + (i+1) + ")" +" " + x + "-" + y + " " + "=" + " ");//若差为0减数被减数交换位置
    str[i] = "(" + (i+1) + ")" +" " + x + "-" + y + " " + "=" + " " + (x-y);//存入数组
    }
    }
    }

    3. 代码规范

  • 常量命名全部大写,单词键用下划线隔开,力求语义表达完整,不要嫌名字长。
  • 杜绝完全不规范的缩写,避免忘文不知义。
  • 不要使用一个常量类维护所有常量,按常量功能进行归类,分开维护
  • 五、测试

  • 输入5 2 预计显示二年级题目
  • 输入 5 1 预计显示一年级题目
  • 输入10 10 提示“”程序员能力有限,高年级还未完成”
  • 六、总结

  • 在写代码的时候要考虑到用户的使用感受以及用户的需求
  • 在写代码的过程中再清楚自己现在在写的是哪一步,下一步需要做什么
  • 要将“分而治之”的软件工程的思想运用进去,这样会使问题简单化

AloneQIan---第一次作业的更多相关文章

  1. C 语言学习 第一次作业总结

    第一次的作业是冯老师布置的练习题,需要在pta平台上完成.我这边看不到结果,但是透过冯老师给出的截图,同学们都还是认真的去做的.同时,我这边也布置了一个持续 3 周的作业:熟悉 git 的使用.因为后 ...

  2. 耿丹CS16-2班第一次作业汇总

    第一次作业统计完成. 注:1.作业顺序:取最早交作业的前3名,依次拿5,2,1分,前提是作业质量较高,否则轮至下一名同学得分,其余同学得0分:2.作业情况:满10分,空一题扣2分,心得写得好的有额外加 ...

  3. 软件工程(QLGY2015)第一次作业小结(含成绩)

    相关博文目录: 第一次作业点评 第二次作业点评 第三次作业点评 Github项目提交 github的代码提交,大部分人都只是提交了单个文件,存在几个问题 请提交完整的项目文件到github 问题:为什 ...

  4. 2015级软工实践k班第一次作业-准备

    第一次作业-准备······ 几篇文章阅读下来发现一个事实,还是要有明确的目标,清楚自己需要做什么最为重要.然后根据目标确定需要为之所做的准备工作,考研也好,工作也罢,都是服务于自己的目标. 问题答应 ...

  5. java第一次作业0

    lsl321 java第一次作业 #1. 本章学习总结 你对于本章知识的学习总结 本章我们学习了各种java相关文件的使用,以及码云,博客,pat等程序辅助软件,这些对于我们专业的学习有非常大的帮助, ...

  6. 集大1513 & 1514班 软件工程第一次作业评分与点评

    谢谢大多数同学按时完成了作业,同学态度都比较端正,没有为了完成作业或者讨好老师而说一些假话空话. 很多同学选择CS之前并没有从兴趣或者擅长出发.这是一个普遍的现象,十年前我们是这样,十年后的孩子们还是 ...

  7. OO第一次作业总结

    OO第一次学习总结 1.第一次作业:多项式加法 从未接触过java的我,在从输入输出开始学了几天后,按照C语言的思路,写出了一个与面向过程极其接近的程序. 在这个程序中,存在两个类:一个是Comput ...

  8. # C语言程序设计第一次作业1234

    ---恢复内容开始--- C语言程序设计第一次作业 1.求圆面积和周长 输入圆的半径,计算圆的周长和面积 (1)流程图 (2)测试数据及运行结果 测试数据r=3 运行结果 2.判断闰年 输入一个四位年 ...

  9. 构建之法助教园地第一次作业--点评<西北师范大学|李晓婷>

    一 博客点评 第一次作业--准备篇:https://www.cnblogs.com/Mookiepiece/p/10464606.html#4192515 点评内容: 首先,你对电脑很感兴趣,兴趣就是 ...

  10. Android第一次作业

    Android第一次作业——天气预报界面 成果图: 思路: 运用RelativeLayout布局管理器来设计整体布局,在其中插入需要的图片和文本框,并设置其字体格式和背景.最后用HorizontalS ...

随机推荐

  1. P2327 [SCOI2005]扫雷

    题目描述 输入输出格式 输入格式: 第一行为N,第二行有N个数,依次为第二列的格子中的数.(1<= N <= 10000) 输出格式: 一个数,即第一列中雷的摆放方案数. 输入输出样例 输 ...

  2. snapkit更新约束崩溃的问题

    最近在使用snapkit布局时,竟然发现更新约束会导致崩溃,为什么这样呢? checkButton.snp.makeConstraints { (make) in make.left.top.equa ...

  3. 【js】走近小程序(2) 常见问题总结

    一.API请求? 二.基础库兼容? 三.不同页面之间的传值   一.API请求? wx.request({ url: 'test.php', // 仅为示例,并非真实的接口地址 data: { x: ...

  4. H5 开发中常见的小问题

    1.解决 浏览器 返回按钮不刷新的问题 window.onpageshow = function(event) { if (event.persisted) { window.location.rel ...

  5. rtthread移植到jz2440之BootLoader

    从2016年第一次接触rtthread,感觉很容易上手,记得一个项目是小飞行器上的IPC,趁着空闲,手里有一块jz2440的板子,准备在这块板子上跑起来rtthread,查了很多资料,最后决定自己写一 ...

  6. JavaWeb基础—HTML小结

    ---是什么?超文本标记语言---能干什么?描述网页的一种语言---怎么干?一套标签 前端三剑客的关系: 1. HTML是网页内容的载体. 2. CSS样式是表现. 3. JavaScript是用来实 ...

  7. Gitlab+Jenkins学习之路(九)之Jenkins的远程管理和集群

    一.Jenkins的远程管理 Jenkins的远程管理方式包含: Shell ssh SSH Plugin ansible.saltstack (1)Shell ssh在项目构建时,jenkins使用 ...

  8. let和var定义变量的区别

    使用 let 语句声明一个变量,该变量的范围限于声明它的块中.  可以在声明变量时为变量赋值,也可以稍后在脚本中给变量赋值. 使用 let 声明的变量,在声明前无法使用,否则将会导致错误. 如果未在  ...

  9. taglib报错The content of element type "taglib" must match "(tlib-version,...)

    <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE taglib PUBLIC "-// ...

  10. 手把手带你打造一个 Android 热修复框架(上篇)

    本文来自网易云社区 作者:王晨彦 前言 热修复和插件化是目前 Android 领域很火热的两门技术,也是 Android 开发工程师必备的技能. 目前比较流行的热修复方案有微信的 Tinker,手淘的 ...