一、Fork仓库的Github项目地址和伙伴的地址

Github项目地址:https://github.com/WHYNOTEN/WordCount.git

合作同学作业地址:https://www.cnblogs.com/SW-P-WY/p/10657136.html

合作人:wnagyang、zhourong


 

二、PSP表格(事实上实际耗费时间比预估时间要长)

 

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

890  1435

· Estimate

· 估计这个任务需要多少时间

890  1435

Development

开发

770   1270

· Analysis

· 需求分析 (包括学习新技术)

40   50

· Design Spec

· 生成设计文档

30   35

· Design Review

· 设计复审 (和同事审核设计文档)

50   60

· Coding Standard

· 代码规范 (为目前的开发制定合适的规范)

20   15

· Design

· 具体设计

30   50

· Coding

· 具体编码

420   900

· Code Review

· 代码复审

60   40

· Test

· 测试(自我测试,修改代码,提交修改)

120   120

Reporting

报告

120   165

· Test Report

· 测试报告

 60  80

· Size Measurement

· 计算工作量

30   60

· Postmortem & Process Improvement Plan

· 事后总结, 并提出过程改进计划

30   25
 

合计

900   1435

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

绘制PSP表格总结:以前编写项目的时候并未有设计和预算的过程,个人感觉编写表格和事先设计好进程,更有利于完成项目。因为在完成的过程中对自己进行到那个地方心里有个数。


 

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

 1.需求分析(由两人共同商议)

  基础功能

      1.统计文件字符数(统计字符这一块,对提取文本中字符问题,出现了乱码,后来商讨了下解决不同文本转码的问题)

    2.统计单词总数(单词必须四个英文字母开头,后面可以为数字,不区分大小写)

    3.统计文件中有效行数

    4.统计文件中单词单词总数,按频率排序,对于相同频率单词按字典顺序排列

    5.按照字典顺序输出到文件中

    6.调用程序时,通过命令行传入文件读取和写入路径

  新功能:

        1.输出前n个频率最高的单词(直接新增加一个列表保存输出的前n个单词)

         2.指定一个词组长度,输出词组及其出现频率

         3.多参数混合使用(封装)

  实现所有需求思路:

  1. 需求主要是对于文本中内容的提取,这里就要用到正则表达,之前没有涉及到过就看了下群里同学分享的链接。(用到正则的部分是伙伴编写的,个人不是很会使用正则)
  2. 对于行数提取则可以通过读取文件(按行提取内容)时,判断提取内容是否为null来解决。
  3. 统计频率可以通过字典这种Key,Value这种存储方式来进行统计,排序则通过字典排序实现。
  4. 对于命令行传入参数可以通过Main(string[] args)中对args进行解析来实现。
  5. 新功能输出前n个频率最高可以直接输出字典内容即可。
  6. 伙伴询问助教老师后确定同样可以利用字典统计词组并输出(-m的功能是和伙伴“吵了一架的”,因为他觉得构架和基础功能无异,由我编写)
  7. 第三个功能主要是对于Main方法args参数的解析,可以利用字典保存参数及其内容

最终确定主要写两个.cs文件,其中一个对功能实现,另外一个进行功能类调用,这样测试时即只需要对功能类函数进行测试即可,基本功能由笔者实现,对于新功能有合作者实现,最终整合在功能中:

Function.cs:主要实现对文本内容的提取筛选实现需求功能;

Program.cs:对命令行参数进行分析(GetMand()),调用Function.cs对文本内容分析,实现功能(Main()).

合作就是不断磨合的过程!合作就是不断磨合的过程!

 算法关键在于正则表达式的书写以及将内容写入字典整合:

合作就是不断磨合的过程!合作就是不断磨合的过程!

 

文件读取代码:

//读取文件中的字符数目并保存文件内容
        public void GetChar()
        {
            //打开文件
            FileInfo file = new FileInfo(this.path);
            //定义读取文件对象
            StreamReader sw = file.OpenText();
            //按行进行读取,不为空行记录行数并保存内容,返回null打断循环
            while (true)
            {
                //对文件读取内容进行判断,如果不为空用变量接收,行数加一
                string temp = sw.ReadLine();
                if (temp != null)
                {
                    account++;
                    this.content += temp;
                }
                //为空则停止
                else
                {
                    break;
                }

            }
        }
View Code

相关文章:

  • 2022-02-02
  • 2022-12-23
  • 2022-02-19
  • 2021-09-06
  • 2022-12-23
  • 2021-08-04
  • 2021-05-22
猜你喜欢
  • 2021-12-13
  • 2021-05-19
  • 2022-12-23
  • 2021-08-29
  • 2022-12-23
  • 2021-05-30
  • 2021-12-04
相关资源
相似解决方案