作业要求地址 https://www.cnblogs.com/harry240/p/11524113.html 
GitHub项目地址  https://github.com/anranbixin/WordCount
结对伙伴的博客  https://www.cnblogs.com/step-enter/p/11644293.html

 

1、PSP表格

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

 30

 40

· Estimate

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

 1200

 1440

Development

开发

 1080

 1200

· Analysis

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

 40

 50

· Design Spec

· 生成设计文档

 20

 20

· Design Review

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

 20

 30

· Coding Standard

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

 30

 30

· Design

· 具体设计

 60

 50

· Coding

· 具体编码

 700

 960

· Code Review

· 代码复审

 60

 50

· Test

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

 120

 150

Reporting

报告

 30

 20

· Test Report

· 测试报告

 60

 40

· Size Measurement

· 计算工作量

 30

 20

· Postmortem & Process Improvement Plan

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

 30

 20

 

合计

 1230

 1480

 

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

2.1项目分析(项目需求)

(1)应具备的功能

  • 统计文件的字符数

      要求:1、汉字不考虑,空格、空格,水平制表符,换行符,均算字符,

                 2、输出的单词统一为小写格式

  • 统计文件的单词总数

      要求:1、至少以4个英文字母开头,且可以跟上字母数字符号

                 2、单词以分隔符分割,且不区分大小写

  • 统计文件的有效行数

     要求:任何包含非空白字符的行都需要统计

  • 统计文件中各单词的频数

       要求:1、最终只输出频率最高的10个

                  2、频率相同的单词,优先输出字典序靠前的单词。

  • 按照字典序输出到文件txt(默认为output.txt)

       要求:1、字典里面的单词已经过频数排序

                  2、输出的文件可任意指定

                  3、输出的量可控

(2)新功能

  • 词组统计

       要求:能统计文件夹中指定长度的词组的词频 

  • 自定义输出

       要求:能输出用户指定的前n多的单词与其数量

  • 多参数的混合使用

      要求:格式为   -i input路径 -o output路径 -n 参数 -m 参数

(3)附加功能(这个功能我们两个决定选择性的实现)

  • 用户交互界面绘制

2.2项目思路

-- 首先假设给出的路径已知,分别为(便于我们之后要进行指令读入造成的代码修改):

(1)读入文件路径:D:\VS_practice\wordCount\wordCount\bin\Debug\input.txt

(2)写入文件路径:D:\VS_practice\wordCount\wordCount\bin\Debug\output.txt

注意:1、这里我们程序运行的当前路径为:D:\VS_practice\wordCount\wordCount\bin\Debug

           2、我们只需要调用语句,即可获得当前程序路径,之后加上我们的文件名即可

//获取当前文件路径
string currentpath = Directory.GetCurrentDirectory();

(3)数据的读取上,我们考虑到文件内容如果很大会影响数据的读取,我们采用的是content.ReadLine()进行单行的读取,这里也是会出现问题的,值得注意的一点是:在读入的input.txt文件里面,每一行英文必须是要用空格或者其他符号结尾,不然在后面使用Regex(Regex我会在后面单独提到)进行单词的提取上会出现错误

-- 程序如何才能实现:

(1)我们预计设计两个.cs文件,一个为主函数.cs文件(program.cs),一个为函数.cs文件(port.cs)

(2)数据的存储:使用string 变量来存储字符数,list<> 来存储提取出来的单词,dictionary<string,int> 来存储单词以及其的频率(这里要使用到dictionary的两个参数的使用,key和)

(3)头文件的调用:文件的输入输出需要使用到StreamWriter,因此需要调用IO头文件;提取单词需要使用到System.Text.RegularExpressions.Regex,因此需要调用Text.RegularExpressions头文件

//文件流的输入输出
using System.IO;
//正则表达式
using System.Text.RegularExpressions;

补充:

这里知识点的我参考了其他的博客:https://www.cnblogs.com/liangsetian/archive/2011/07/05/2098280.html

(4)获取字符数、单词数、频数等等,直接使用函数返回即可

(5)指定输出和指定单词组的输出都是涉及函数涉及,在之后会进行详解,这里输出会使用到遍历foreach ( element in list or dictionary)

(6)多参数的混合使用里面涉及到cmd命令,此时需要使用到args[i],通过Main方法中的string[]  args参数来获取

补充:这里我进行了知识点的搜索(args),博客源为:https://blog.csdn.net/eric_k1m/article/details/37518579

-- 程序的流程大致为下图所示:

基础功能模块和新功能模块:

第四次博客作业——结队编程

 第四次博客作业——结队编程

2.3接口的设计与代码的实现过程

--  首先进行基础功能的接口设计与实现

这里我使用的是五个函数,首先必须依次调用Getcharacters(path);Withdraword();Tolower();Wordfrequency();这四函数,以实现初始化,中途涉及函数的调用,函数需要进行依次的设计,这四个函数需要依次进行实现,否则出来的结果是不正确的。例如:还没有进行字符的录入,但是你要输出单词这就是无法实现的。以下依次为5个函数的设计(4个基本+1个输出):

(1)进行字符的读取,这里我们必须要将待读取的文件的路径传进来,我们将函数设计为:public void Getcharacters(string path),在里面我们使用了ReadLine()来对path里面的文档进行一行一行的读取,然后将读取的字符直接存储于account_chara字符串里面

//读取文件,string account_chara用于存储字符
        public void Getcharacters(string path)
        {  
            StreamReader content = new StreamReader(path);
            //定义字符临时变量
            string temp = content.ReadLine();
            //读取
            while (temp != null)
            {
                account_chara = account_chara + temp;
                account_line++;
                temp = content.ReadLine();
            }

            //最后一行读入无效,将其删去
            account_line -= 1;
        }
字符读取

相关文章:

  • 2021-09-25
  • 2021-07-03
  • 2021-08-07
  • 2021-08-28
  • 2022-02-15
猜你喜欢
  • 2022-12-23
  • 2021-08-29
  • 2021-11-12
  • 2022-12-23
相关资源
相似解决方案