第三次作业-李纯锐-201731084433

Github项目地址 https://github.com/Lilcherry/WordCount.git
作业地址  
https://www.cnblogs.com/201731084433DZC/
作业链接 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2/homework/2879

 

 

 

 一、PSP表格

 

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

 0  0

· Estimate

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

 120  100

Development

开发

 0  0

· Analysis

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

 15  10

· Design Spec

· 生成设计文档

 0  0

· Design Review

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

 0  0

· Coding Standard

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

 10  5

· Design

· 具体设计

 15  10

· Coding

· 具体编码

 90  75

· Code Review

· 代码复审

 30  35

· Test

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

 30  35

Reporting

报告

 0  0

· Test Report

· 测试报告

 15  15

· Size Measurement

· 计算工作量

 10  15

· Postmortem & Process Improvement Plan

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

 10  20
 

合计

 225  220

讨论图片:

 

分工:

李纯锐:主代码的编写,测试。

邓召春:小部分代码的编写,测试,博客的编写。

二、解题思路描述

在那道题目的时候,第一反应就是根据题目要就画一张流程图,直观的反应该程序需要实现的功能,以避免遗漏。大致的功能分布如下:

从中,可以清晰的看出这个程序一共分为两大功能模块,一是基本功能,二是新增功能。了解程序功能需求后,我们就开始分工设计相关函数,并进行编码。

三、设计实现过程

 该程序一共 一个类,八个函数。其中,函数之间的联系是先是打开文件,然后分别统计字符数、单词数、有效行数、频数 ,然后是扩展功能,统计文件夹中指定长度的词组的词频,能输出用户指定的前n多的单词与其数量和将统计的单词按照字典序输出到新文件new.txt,关键函数是 main函数。

四、代码规范链接

http://www.cnblogs.com/xinz/archive/2011/11/20/2255971.html

代码互审的情况:

审查的模块名:

邓召春:代码规范

李纯锐:代码正确性

发现的问题:代码正确性基本没什么问题,但是代码的规范性太差,可读性太差,缺少注释。

五、Github管理源代码和测试用例

 

六、性能分析

在改进程序性能上所花费的时间:20分钟

改进的思路:减少函数循环次数,增加新功能,建华代码,增加注释以便以提高可读性。

性能分析图:

消耗最大的函数:Main函数

七、代码说明

运行结果:

项目关键代码:

static void Main(string[] args)
        {
            Console.Write("请输入文件路径:");
            String path = Console.ReadLine();
            String r, content = null;
            StreamReader reader = new StreamReader(path, Encoding.Default);
            try
            {
                while ((r = reader.ReadLine()) != null)
                {
                    content += (r + "\n");
                }
                Console.WriteLine("文件内容如下:");
                Console.WriteLine(content);
            }
            catch (IOException e)
            {
                Console.WriteLine(e.ToString());
            }
            reader.Close();
            Program p = new Program();
            p.Lines(content);
            p.Character(content);
            string[] str = p.Words(content);
            IOrderedEnumerable<KeyValuePair<String, int>> dicSort = p.Times(str, path);
            p.Times(str, path);
            Console.Write("请输入词组长度:");
            int m = int.Parse(Console.ReadLine());
            p.NewTimes(str, m);
            Console.Write("请输入单词数量:");
            int n = int.Parse(Console.ReadLine());
            p.Newcount(str, dicSort, n);
            Console.Write("请输入输出文件位置:");
            string o = Console.ReadLine();
            p.Output(str, dicSort, o);
            Console.Write("写入成功...");
            Console.ReadKey();
        }

八、心路历程与收获

 这次结对编程相对于之前的作业来说要轻松一点,因为是两个人合作完成。通过本次作业我也体会到了合作的重要性,两个人完成一项任务时,需要一定的默契度才能把事情做好。另外本次作业的代码由我负责,写代码的过程中,有几个新功能没有按作业要求来完成,我是直接将新功能写在源代码里面通过函数调用来实现,所以之后还需要好好学习这方面的知识。

posted @ 2019-04-14 17:39  Lilcr  阅读(178)  评论(0编辑  收藏  举报