第三次作业

git地址:https://github.com/moran029/WordCount.git

本次作业链接:https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/homework/2882

搭档博客:https://www.cnblogs.com/Abbas/p/10646661.html

1.结对项目PSP编写

我们的项目于4月2日正式开始,在开始编写代码之前,我们先就对项目需求进行了一次商定与讨论,大体分析了一下需要我们做什么。结合自身课程情况,约定了一起进行结对编程的时间和地点,并且共同完成了PSP表格的填写:

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

30  25

· Estimate

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

30  25

Development

开发

1095  1360

· Analysis

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

60  60

· Design Spec

· 生成设计文档

40  60

· Design Review

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

30  60

· Coding Standard

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

30  30

· Design

· 具体设计

60  100

· Coding

· 具体编码

800  900

· Code Review

· 代码复审

45  100

· Test

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

30  50

Reporting

报告

110  125

· Test Report

· 测试报告

 60  80

· Size Measurement

· 计算工作量

20  20

· Postmortem & Process Improvement Plan

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

30  25
 

合计

1235  1510

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.描述结对过程及照片

我们的项目于4月2日正式开始,共同对题目进行了分析,分别阐述了对题目的看法,并进行了任务分工以及制定代码规范,并且共同完成PSP表格的填写。按照项目要求,分别实现功能。遇到不懂的,两人互相帮助,查阅资料。在各自实现基本功能之后,按照制定的代码规范进行对程序的修改,将程序整合在一起,完成此次结对项目。

 

 

3.解题思路描述

 阅读题目过程后,发现需要实现的功能主要有以下几个方面:

  • 读取文件。
  • 统计文件的字符数。
  • 统计文件的单词总数。
  • 统计文件的有效行数。
  • 统计文件中各单词的出现次数。
  • 输出格式:
  • characters: number
    words: number
    lines: number
    <word1>: number
    <word2>: number
    ...

4.设计实现过程       

5.代码规范及链接

      1.类型(类、结构、委托、接口)、字段、属性、方法、事件的命名:

        优先考虑使用英文(尽量使用英文),如果实在没有合适的英文进行描述,可以使用拼音。

      2.不使用缩写:

   所有类型、字段、属性、方法、事件尽量不使用缩写。

      3.不使用单个字母的变量:

    不使用单个字母的变量, 像 i、m、n,使用temp等来替换,用于循环迭代的变量除外。

      4.用Tab作为缩进,并设置缩进大小为4。

      5.注释:类型、属性、事件、方法、方法参数,根据需要添加注释。

      6.一个方法只完成一个任务。不要把多个任务组合到一个方法中,即使那些任务非常小。

      7.调用类型成员内部其他成员,需加this,调用父类成员需加base。

      8.在一个类中,各个方法需用一空行(最好是一个空行)。

 6.代码说明

统计单词出现次数

class Word
    {
        public int GetWords(string Filename)
        {
            StreamReader sr = new StreamReader(Filename);
            int count = 0;
            string s = sr.ReadToEnd();
            string[] word = s.Split(' ', ',', '.', '!', '?', '\n');
            foreach (string i in word)
            {
                int n = 0;
                int m = 0;
                foreach (char c in i)
                {
                    n++;
                    if ((c >= 97 && c <= 122) || (c >= 65 && c <= 90))
                        m++;
                    while (m == 4 && n == 4)
                    {
                        count++;
                        break;
                    }
                }
            }
            return count;
        }

统计词频并排序

class Wordfrequency
    {
        public List<string> Insert(string Filename)//将符合条件的单词写入list集合中
        {
            List<string> list = new List<string>();
            StreamReader sr = new StreamReader(Filename);
            string s = sr.ReadToEnd();
            string[] word = s.Split(' ', ',', '.', '!', '?', '\n', '\t');
            foreach (string i in word)
            {

                int count = 0;
                int m = 0;
                foreach (char c in i)
                {
                    count++;
                    if ((c >= 97 && c <= 122) || (c >= 65 && c <= 90))
                        m++;
                    while (m == 4 && count == 4)
                    {
                        list.Add(i);
                        break;
                    }
                }
            }
            return list;
        }
        public Dictionary<string, int> Fre(List<string> word)//将list写入dictionary
        {
            Dictionary<string, int> Wd = new Dictionary<string, int>();
            for (int i = 0; i < word.Count; i++)
            {
                if (Wd.ContainsKey(word[i]))
                    Wd[word[i]]++;
                else
                    Wd[word[i]] = 1;
            }
            Dictionary<string, int> Wd_sort = Wd.OrderByDescending(o => o.Value).ToDictionary(p => p.Key, o => o.Value);//将集合按value值进行逆序排序
            return Wd_sort;
        }
    }
截图

 

 

 7.感受

结对编程需要时间的磨合,起初不能达到1+1>2的效果。最开始时根本不知道从哪里入手,经过一段时间的磨合之后,才能初步进入状态。

posted @ 2019-04-05 19:52  蓦然29  阅读(200)  评论(1编辑  收藏  举报