这个作业属于哪个课程 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("\r\n","\n");
        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) != '\r' && content.charAt(i) != '\n' && content .charAt(i) != ' ' ){
             flag = true;
         }else if(content.charAt(i) == '\n'){
             if(flag){
                 line++;
                 flag = false;
             }
         }
     }
     if(flag){
         line++;
     }
     return line;
 }

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

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