第三次作业

一.github地址

我的github:https://github.com/leerijin

二.同伴地址

三.结对过程

 

四.psp表格

 

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

 25

 20

· Estimate

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

 25

 20

Development

开发

 1340

 1290

· Analysis

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

 60

 80

· Design Spec

· 生成设计文档

 20

 20

· Design Review

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

 20

 25

· Coding Standard

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

 30

 25

· Design

· 具体设计

 60

 70

· Coding

· 具体编码

1000

 900

· Code Review

· 代码复审

 30

 20

· Test

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

 120

 150

Reporting

报告

 60

 85

· Test Report

· 测试报告

 30

 40

· Size Measurement

· 计算工作量

 10

 15

· Postmortem & Process Improvement Plan

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

 20

 30

 

合计

 1425

 1395

 

五.解题思路

这是一个从文件中读取内容并判断的代码,在主函数中实现文件的读取和输出,然后用一个字符串接收了文件内容,将这个字符串传给判断字符数的函数,直接统计字符串长度,第二个函数就接收字符串后将单词存进了新定义的字符串,再将新的字符串传给第三个函数统计词频。

六.设计实现过程

七.代码规范

1、函数名使用相应的英文单词或中文缩写

 2、代码较复杂的地方添加注释

3、功能尽量在其他函数中实现

 4、大括号的上半部分和下半部分对齐,代码格式清晰
             与结对伙伴各自完成分工的代码后,我们互相看了对方所负责的代码部分,并将它们结合到一起。在结合的过程中发现双方的代码有连接不上或者是重复的地方,就此做了一些改正
八.性能分析

九。单元测试

十.代码说明

统计单词个数

public static int GetWnum(string str,ref string word)
        {
            int k = 0;
            string temp1 = "";
            for (int i = 0; i < str.Length; i++)
            {
                if (char.IsLetter(str[i]) || char.IsDigit(str[i])) //判断是不是数字或者字母
                {
                    temp1 += str[i];
                }
                else
                {
                    temp1 += " ";
                }
            }

            string[] arr = temp1.Trim().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); //去除字符数组中所有空格
            string arr1 = string.Join(" ", arr);
            string[] temp2 = arr1.Split(' ');
            int j = 0, flag = 1;
            for (int i = 0; i < temp2.Length; i++)
            {
                if (temp2[i].Length < 4)
                {
                    continue;
                }
                else
                {
                    for (j = 0; j < 4; j++) //判断前四个是否为字母
                    {
                        flag = 1;
                        if (char.IsDigit(temp2[i][j]))
                        {
                            flag = 0;
                        }

                    }

                    if (flag == 1)
                    {
                        k++;
                        word += temp2[i] + " ";
                    }
                }
            }

            return k;
        }

 

//统计词频

public static string GetStr(string str1)
        {
            if (str1=="")
            {
                return "";
            }
            int j = 0;
            str1 = str1.Trim();
            string[] str = str1.Split(' ');
            List<System.String> strList=new List<System.String>(str);
            strList.Sort();
            str = strList.ToArray();      //将LIST转换成string[]
            var temp1 = str.GroupBy(i => i).ToList();
            string temp = "";
            foreach (var i in temp1)
            {
                string wordi = i.Key;
                int timei = i.Count();
                temp += wordi + ":" + timei + "\r\n";
                j++;
                if (j == 10)
                {
                    break;
                }
            }
            return temp.ToLower();
        }

十一.运行结果

 

 

十二.心得

拿到题目看到基础功能觉得还行,能写出来,后来做到第二步,开始封装就发现问题很多,不知道怎么封装,函数该怎么改,哪些函数应该封装,翻阅了一些同学和一些大佬级人物的博客后,有了一点点头绪,后来发现由于我下载vs时,下载可能出错,类库有问题,有些引用不能被引用,但重新下载vs已经来不及了,所以部分函数没有被封装起来。之后在新增功能处卡顿了很久,没看懂例子,不太清楚该怎么实现这个功能,想了很久,最后想错了,又浪费了大量时间。没办法,只好用了一种很笨的办法写,后面还是有部分功能没有实现。1+1是大于2的,因为一个人还是有很多地方想不到。

posted @ 2019-04-05 22:51  江春  阅读(191)  评论(3编辑  收藏  举报