第三次作业

一.地址

GitHub项目地址:https://github.com/T1L/WordCount.git

 

二、PSP表格

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

 880

 1400

· Estimate

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

 1000

 2000

Development

开发

 760

 1270

· Analysis

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

 40

 60

· Design Spec

· 生成设计文档

 30

 40

· Design Review

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

 50

 60

· Coding Standard

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

 20

 20

· Design

· 具体设计

 30

 50

· Coding

· 具体编码

 400

 900

· Code Review

· 代码复审

 60

 50

· Test

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

 100

 120

Reporting

报告

 120

 140

· Test Report

· 测试报告

 60

 60

· Size Measurement

· 计算工作量

 30

 40

· Postmortem & Process Improvement Plan

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

 30

 30

 

合计

 880

 1400

三、解题思路

  看到题目的时候就在想,如何完成对单词的计数,因为要求是四个字母及以上开头的单词,所以一开始不知道该如何写,在百度上参考了很多别人写过的代码,我的思路是先一行一行的读取文本中的内容,然后进行单词的判断,用一个变量对字符计数,满足则+1,大于等于4则满足要求的单词条件,区分满足条件和不满足条件的单词,作业要求要对单词计数,因此我想的是将满足条件的单词存入一个新的集合再进行计数,里面就全是满足条件的单词,这样就简单多了,新增功能要求输出高频词汇,同样用变量对相同单词出现的次数计数,用双循环进行比较并交换进行排序,用一个集合进行存储排序后的单词,然后再用函数进行输出,输出指定长度词组,用一个新的字符串,根据指定的长度添加单词进去,再用集合中的进行比较,相同则次数+1,最后用函数输出。

 

四、设计实现过程

流程如下

 

五、主要代码

Main函数


static void Main(string[] args)
{
Console.WriteLine("输入读取文本路径:");
path1 = Console.ReadLine();
Console.WriteLine("输入想要查找的词组长度:");
number = int.Parse(Console.ReadLine());
Console.WriteLine("想要输出的数量:");
Num = int.Parse(Console.ReadLine());
StreamReader a = new StreamReader(path1, Encoding.Default);
string line;
while ((line = a.ReadLine()) != null)
{
Me.Lines.Add(line);//一行一行读入
}
Me.WordsCount();
Me.Print1();//输出字符 单词 行的数量
Me.Print2();//输出指定长度的单词及次数
path2 = "C:\\Users\\RAIse\\Desktop\\Result.txt";
System.IO.File.WriteAllLines(path2, Me.Str);
Console.ReadKey();
}


对单词进行排序

List<string> WordSort()
        {
            List<Word> Aword
                = new List<Word>();
            int i = 0;
            for (; i < Words.Count - 1; i++)
            {
                int k = 0;
                for (; k < Words.Count - 1; k++)
                {
                    if (Words[i].num > Words[k].num)
                    {
                        Word m = Words[i];
                        Words[i] = Words[k];
                        Words[k] = m;
                    }
                }
            }
            i = 0;
            if (Words.Count < Num)
            {
                for (; i < Words.Count; i++)
                {
                    Aword.Add(Words[i]);
                }
            }
            else
            {
                for (; i < Num; i++)
                {
                    Aword.Add(Words[i]);
                }
            }
            List<string> words = new List<string>();
            foreach (var word in Aword)
            {
                words.Add(word.txt);
            }
            words.Sort();
            return words;
        }    

读取文本

运行结果

 

输出文本

六、代码测试

 

断点测试

效能分析

七丶Git上传

 

 八、总结

   感觉作业难度比较大,参考了网上许多别人的算法,也询问了同学许多问题,收获还是蛮多嘛,看来自己还是要花点时间补一补之前学过的东西。 

 

posted @ 2019-04-05 15:53  t1L  阅读(169)  评论(2编辑  收藏  举报