第三次作业结队

1.Fork仓库的Github项目地址

GIT地址链接
GIT用户名 yszmxtl
结对伙伴博客地址
博客地址 链接
作业链接https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/homework/2882

2.PSP表格

 

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

30 60

· Estimate

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

600972

Development

开发

 500800

· Analysis

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

 50 60

· Design Spec

· 生成设计文档

 30 30

· Design Review

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

 30 50

· Coding Standard

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

 30 50

· Design

· 具体设计

 50 100

· Coding

· 具体编码

 100 500

· Code Review

· 代码复审

30 40

· Test

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

 10 30

Reporting

报告

 20 20

· Test Report

· 测试报告

 30 30

· Size Measurement

· 计算工作量

 10 20

· Postmortem & Process Improvement Plan

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

 20 30
 

合计

 455 1132

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

 首先将上面的要求的功能分成多个函数计算,在主函数中调用如下

static void Main(string[] args)
        {

            string fileName = @"G:\input.txt";
            Count count1 = new Count(fileName);
            if (File.Exists(fileName))
            {
                count1.count_characters();//统计字符数
                count1.count_word();//统计单词总数
                count1.count_lines();//统计有效行数
                count1.count_words();//统计单词出现次数
            }
            Console.ReadKey();
        }

然后是分别的模块计算对应的功能:

统计字符:

public void count_characters()//统计字符数
        {
            FileStream file1 = new FileStream(fileName1, FileMode.Open, FileAccess.Read);//打开的文件
            int count;
            count = 0;
            byte[] buf = new byte[file1.Length];//缓存区接受文件夹中的内容
            file1.Read(buf, 0, buf.Length);
            for (int a = 0; a < buf.Length; a++)//利用循环判断是否为字符
            {
                if ((int)buf[a] <= 127)
                    count++;
            }
            //File.AppendAllText(@"G:\output.txt", "characters:");//强制输入某段数据到指定文件夹
            string avaible1 = "character: ";
            string avaible2;
            avaible2 = Convert.ToString(count);
            Console.WriteLine(avaible1 + avaible2);
            avaible1 = avaible1 + avaible2;
            StreamWriter file2 = new StreamWriter(fileName2, true);//写入该文件夹中,true表示追加到问价下一行
            file2.WriteLine(avaible1);
            file2.Flush();
            file1.Close();
            file2.Close();
        }

 统计单词总数:

public void count_word()//统计单词总数
        {
            Dictionary<string, int> dictionary_1;
            List<string> listLines = new List<string>();
            StreamReader reader = new StreamReader(@"G:\input.txt");
            string line = reader.ReadLine();
            while (line != "" && line != null)
            {
                listLines.Add(line);
                line = reader.ReadLine();
            }
            string str1;
            str1 = "";
            for (int i = 0; i < listLines.Count; i++)
            {
                str1 = str1 + listLines[i];
            }
            dictionary_1 = new Dictionary<string, int>();
            string[] words = Regex.Split(str1, @"\W+");
            int counts;
            counts = 0;
            foreach (string word in words)
            {
                if (dictionary_1.ContainsKey(word))
                {
                    dictionary_1[word]++;
                }
                else
                {
                    dictionary_1[word] = 1;
                }
            }
            foreach (KeyValuePair<string, int> avaible_1 in dictionary_1)
            {
                if(avaible_1.Key.Length>=4)
                {
                    string word = avaible_1.Key;
                    int count = avaible_1.Value;
                    counts = counts + count;
                }                
                //Console.WriteLine("{0}:{1}", word, count);
            }
            string avaible_2, avaible_3;
            avaible_2 = "words: ";
            Console.WriteLine(avaible_2 + counts);
            avaible_3 = Convert.ToString(counts);
            avaible_2 = avaible_2 + avaible_3;
            StreamWriter file2 = new StreamWriter(fileName2, true);
            file2.WriteLine(avaible_2);
            file2.Flush();
            file2.Close();
        }

 统计有效行数:

public void count_lines()//统计有效行数
        {
            int count;
            count = 0;
            string[] str = File.ReadAllLines(fileName1, System.Text.Encoding.Default);
            count = str.Length;
            string avaible_1, avaible_2;
            avaible_1 = "lines: ";            
            Console.WriteLine(avaible_1+count);
            avaible_2 = Convert.ToString(count);
            avaible_1 = avaible_1 + avaible_2;
            StreamWriter file = new StreamWriter(fileName2, true);
            file.WriteLine(avaible_1);
            file.Flush();
            file.Close();
        }

 统计单词数:

public void count_words()//统计单词出现次数
        {
            Dictionary<string, int> dictory_1 = new Dictionary<string, int>();
            dictory_1 = sortdictionary_desc(dictory_1);
            Dictionary<string, int> dictory_2 = new Dictionary<string, int>();
            int avaible_2;
            avaible_2 = 0;
            foreach(KeyValuePair<string, int> sw in dictory_1)
            {
                avaible_2++;
                dictory_2.Add(sw.Key,sw.Value);
                if (avaible_2 == 10)
                    break;
            }
            List<KeyValuePair<string, int>> myList = new List<KeyValuePair<string, int>>(dictory_2);
            myList.Sort(delegate (KeyValuePair<string, int> s1, KeyValuePair<string, int> s2)
            {
                return s1.Key.CompareTo(s2.Key);
            });
            dictory_2.Clear();
            foreach (KeyValuePair<string, int> pair in myList)
            {
                dictory_2.Add(pair.Key, pair.Value);
            }
            foreach (KeyValuePair<string, int> avaible_1 in dictory_2)
            {
                string avaible_3 ="<"+ avaible_1.Key+">";
                int avaible_4 = avaible_1.Value;
                Console.WriteLine("{0}:{1}", avaible_3, avaible_4);
                string sr = Convert.ToString(avaible_4);
                avaible_3 = avaible_3 + ": ";
                avaible_3 = avaible_3 + sr;
                StreamWriter stream = new StreamWriter(fileName2, true);
                stream.WriteLine(avaible_3);
                stream.Flush();
                stream.Close();

            }           
        }
        public Dictionary<string,int> sortdictionary_desc(Dictionary<string,int> dic)//对字典中的数据按照value排序
        {
            Dictionary<string, int> dictionary_1;
            List<string> listLines = new List<string>();
            StreamReader reader = new StreamReader(@"G:\input.txt");
            string line = reader.ReadLine();
            while (line != "" && line != null)
            {
                listLines.Add(line);
                line = reader.ReadLine();
            }
            string str1;
            str1 = "";
            for (int i = 0; i < listLines.Count; i++)
            {
                str1 = str1 + listLines[i];
            }
            dictionary_1 = new Dictionary<string, int>();
            string[] words = Regex.Split(str1, @"\W+");
            foreach (string word in words)
            {
                if (dictionary_1.ContainsKey(word))
                {
                    dictionary_1[word]++;
                }
                else
                {
                    dictionary_1[word] = 1;
                }
            }
            List<KeyValuePair<string, int>> myList = new List<KeyValuePair<string, int>>(dictionary_1);
            myList.Sort(delegate (KeyValuePair<string, int> s1, KeyValuePair<string, int> s2)
            {
                return s2.Value.CompareTo(s1.Value);
            });
            dictionary_1.Clear();
            int n = 0;
            foreach (KeyValuePair<string, int> pair in myList)
            {
                if(pair.Key.Length>=4)
                {
                    n++;
                    dictionary_1.Add(pair.Key, pair.Value);
                }
                if (n == 10)
                    break;
                
            }
            return dictionary_1;
        }

 运行效果如下:

 

 

 

 

 

4.代码复审过程。

敲好代码后,发现不符合题的规则,就是那个单词判断那,我直接运用网上说的正则表达式算出来,发现有的单词是一个字母,然后就改写了代码。

 

5.计算模块接口部分的性能改进、效能分析。

 

 

其中有一些写了没用过的变量,进行删除,如下:

 将这个定义删掉之类的

 可以将上面的改成如下:

 就少定义了一个变量,然后其它函数也一样,因为有好多类似的

 

6.计算模块部分单元测试展示

 

7.描述结对的过程

我敲代码,他在旁边审查合理性,并提供思维和资料。

8.代码规划

除了一次型变量用单个字母定义外,其它的都用单词定义,空格这些和缩进直接打了确认建不管。

 

转载于:https://www.cnblogs.com/pingecy/p/10642175.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值