202103226-1 软件工程编程作业

Posted on 2021-04-02 08:06  hualikun  阅读(87)  评论(0)    收藏  举报
这个作业属于哪个课程https://edu.cnblogs.com/campus/zswxy/computer-science-class1-2018
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/computer-science-class1-2018/homework/11877
这个作业的目标 GitHub简单使用、完成词频统计编程、理解软件工程在开发中的作用
参照文献 《码出高效_阿里巴巴Java开发手册》/《腾讯c++代码规范》/《Python PEP8》

psp表格

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

 GitHub项目地址

4.2日7:49   代码并非完整且fork上传错误

设计思路

1.统计文件字符数

2.统计文件单词总数,设置分隔符

3.统计文件行数

4.统计文件的有效行数(包括字符的行)

 

实现过程(不完整):

设三类函数统计字符数量、单词数量、有效行数

public class Lib {
    //统计字符数量
    //传入参数:文件名
    //返回值:字符数量
    public static int numOfChar(String filename);

    //统计单词数量
    //传入参数:文件名
    //返回值:单词数量
    public static int numOfWord(String filename) ;

    //统计有效行数
    //传入参数:文件名
    //返回值:有效行数
    public static int numOfLine(String filename);
}

构造函数、结果函数统计词频

public class Frequency {

    //指定文件路径和文件名
    private static String path;

    //定义一个结果集字符串
    public static String result = "";

    //定义一个map集合保存单词和单词出现的个数
    private TreeMap<String,Integer> tm;

    public Frequency(String path);

    public static String saveResult(Map<String,Integer> map);
}

读入文件逐字节扫描直到结束

readFile = new InputStreamReader(new FileInputStream(file),"UTF-8");
    int tempChar;
    while ((tempChar=readFile.read()) != -1) {
        count++;
    }
    readFile.close();

  for (int i = 0; (tempchar=readFile.read()) != -1; ) {

char ch = (char)tempchar;
        //字母
        if (ch >= 'A' && ch <= 'Z' || ch >= 'a' && ch <='z'){
            i++;
            flag = true;
        }
        else if (ch >= '0' && ch <= '9'){
            i++;
            if (i < 5) {
                i = 0;
                flag = false;
            }
        }
        //分割符
        else {
            if (i >= 4 && flag == true) countWord++;
            flag = false;
            i = 0;
        }
    }

统计行数

统计出现次数

性能改进

心路历程和收获

代码现在还是个半成品,自知能力不够但会尽力完成的

首先是GitHub,弄了半天不知道怎么fork