• 202103226-1 编程作业


    这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/computer-science-class3-2018
    这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/computer-science-class3-2018/homework/11879
    这个作业的目标 学习使用github或者码云
    学号 20188458

    目录

    Gitee项目地址

    PSP表格

    解题思路

    代码规范

    计算模块接口的设计与实现过程

    计算模块部分单元测试展示

    计算模块部分异常处理说明

    心路历程与收获

    1.Gitee项目地址
    2.PSP表格

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

    3.解题思路
    对于字符统计的习题做过不少,难度会在第三个要求和第四个要求。在JAVA有试过对文档的读取统计,但输出没尝试过,还有对单词的排序是有难度的。
    (1)需求分析
    输出要求:
    a.第一行:统计文件的不包含汉字字符数;
    只需要统计在字符数ASCll码范围内的就行。
    b.第二行:统计文件的单词总数;

    c.第三行:统计文件的非空白字符行数;
    采用一个flag变量,检测到有效字符置flag为1,否则置0,然后对文档的所有字符进行扫描。
    d.统计文件中各单词的出现次数(对应输出接下来10行),最终只输出频率最高的10个。

    characters: number
    words: number
    lines: number
    word1: number
    word2: number
    ......

    4.代码规范

    5.计算模块接口的设计与实现过程
    1.统计文件的字符数

            String clearcontent = content.replaceAll("
    ","
    ");
            int Charsnum = clearcontent.length();
            return Charsnum;
        }
    

    2.统计文件的单词总数

    public int wordCount(){
         int wordnum = 0;
         String regex = "[^0-9A-Za-z]";
         String contentString  = content.toLowerCase().replaceAll(regex,"|");
         String[] contents = contentString.split("\|");
         int i = 0;
         for (; i <contents.length ; i++ ) {
             if(contents[i].length()>=4){
                 if(Character.isLetter(contents[i].charAt(0))){
                     if(Character.isLetter(contents[i].charAt(1))){
                         if(Character.isLetter(contents[i].charAt(2))){
                             if(Character.isLetter(contents[i].charAt(3))){
                                 wordnum++;
                                 Maps(ma,contents[i]);
                             }
                         }
                     }
    
                 }
             }
         }
         if(!ma.isEmpty()){
             words = Sort(ma);
         }
         return wordnum;
     }
    

    3.统计行数

    public int wordline(){
         Boolean flag = false;
         int line = 0; i = 0;
         for (;i<content.length();i++){
             if(content.charAt(i) != '
    ' && content.charAt(i) != '
    ' && content .charAt(i) != ' ' ){
                 flag = true;
             }else if(content.charAt(i) == '
    '){
                 if(flag){
                     line++;
                     flag = false;
                 }
             }
         }
         if(flag){
             line++;
         }
         return line;
     }
    

    6.计算模块部分单元测试展示

    7.计算模块部分异常处理说明
    文件打开出现错误。
    8.心路历程与收获
    这个作业对我来讲难度有点大吧,我无论是c还是JAVA都忘了很多,然后就是因为电脑内存问题。把一些软件删了很多,后来重新下回来后就出现了问题。当然,最主要的问题是自己掌握的不够,没有做过这个类型上较难的题目。我需要学习的比较多吧。

  • 相关阅读:
    C++概念性总结
    友元函数
    C++指针概念
    Linux下多线程(clone()线程)
    Qt5模块化详细总结
    C++有符号与无符号之间的转换问题
    使用C++test工具做Qt代码静态分析
    QT函数带有外部链接但没有在头文件中声明(QT noreturn属性添加)
    Linux之Docker手动创建Docker容器
    我在思考一个很变态的社会趋向
  • 原文地址:https://www.cnblogs.com/1211li/p/14603374.html
Copyright © 2020-2023  润新知