• 202103226-1 编程作业


    202103226-1 编程作业

    这个作业属于哪个课程 <https://edu.cnblogs.com/campus/zswxy/computer-science-class4-2018>
    这个作业要求在哪里 <https://edu.cnblogs.com/campus/zswxy/computer-science-class4-2018/homework/11880>
    这个作业的目标 <Github的使用,代码规范使用>
    作业正文 202103226-1 编程作业
    其他参考文献 《软件工程》、《构建之法》

    目录:
    1.项目地址
    2.PSP表格
    3.解题思路
    4.代码规范
    5.接口的设计与实现过程
    6.性能改进
    7.单元测试
    8.异常处理说明
    9.心路历程与收获

    1.项目地址
    项目地址

    2.PSP表格

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

    3.解题思路描述

    • 需求:
    1. 统计文件的字符数(对应输出第一行):
    2. 统计文件的单词总数(对应输出第二行),单词:至少以4个英文字母开头,跟上字母数字符号,单词以分隔符分割,不区分大小写。
    3. 统计文件的有效行数(对应输出第三行):任何包含非空白字符的行,都需要统计。
    4. 统计文件中各单词的出现次数(对应输出接下来10行),最终只输出频率最高的10个。
      当初这个看这个题目的时候内心是崩溃的,文字描述对于我来说不易于看懂,所以对这个题目具有畏惧心理,后面问了同学之后,他给我讲了重点,以及教我一些相关的操作,我再重新分析这个问题,抓到重点之后就开始有那么一点感觉了。

    4.代码规范
    点我

    5.接口的设计与实现过程
    先定义一个接口,这个接口中有需要的方法。再实现它。接口内容如下:
    ong getCharCount();// 字符数 long getWordCount();// 单词数 long getLineCount();// 有效行数 Map<String, Long> getWordFrequency();// 词频(最多10个单词)
    统计字符数
    直接读取文件的字符数即可。
    path.toFile().length()
    统计单词数
    这个可以分为以下步骤

    1.通过分隔符分割字符串
    可以通过 String 的 split 方法实现
    2.判断字符串是否为单词
    可以通过正则匹配或者简单的字符串比较实现。
    3.单词计数
    把所有单词存放到数组中,数组大小即为单词数量。
    Files.lines(path)// 分行,以**系统**的换行符为分隔符 .map(String::toLowerCase)// 转小写,因为不管是输入还是输出,都不区分大小写。另外这个 map 往下移动的话,正则的“a-z”后面要加个“A-Z” .flatMap(CounterHelper::split)// 分词: str -> Arrays.stream(str.split("[^a-z0-9]+")),非单词字符作为分隔符 .filter(CounterHelper::isWord)// 保留单词: str -> Pattern.compile("[a-z]{4,}[a-z0-9]*").matcher(str).matches(),只有符合要求的单词才会被保留下来 .toArray(String[]::new)

    6.性能改进
    对于我来说暂时不能够将它改进

    7.单元测试

    8.异常处理说明
    如果参数两个以上,默认选最先输入的两个

    9.PSP图

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

    10.心路历程与收获
    首先刚开始是一度想要放弃的,因为完全不知道从和下手,后面因为同学有写完了的,然后就告诉我写,才慢慢地开始动手,起初对GitHub是完全不懂得,看不懂不会操作,后来用的码云。这次作业让我对项目有了一个浅显的认识,它难得点就在于要按要求按规矩办事,不能按自己平时特立独行,并且要有对问题理解的能力。

  • 相关阅读:
    linux tomcat 突然验证码出不来
    使用open live writer客户端写博客
    创建自己的maven模板
    Dynamic Web Module 3.0 requires Java 1.6 or newer
    win10 操作配置备忘
    Maven使用
    ORA-12514: TNS:listener does not currently know of service …
    PlantUML——4.实例演示1
    C语言基础(一)
    Linux系统挂载FAT32的U盘
  • 原文地址:https://www.cnblogs.com/lx1943661721/p/14610073.html
Copyright © 2020-2023  润新知