第三次作业-李纯锐-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函数
七、代码说明
运行结果:
项目关键代码:
{
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();
八、心路历程与收获
这次结对编程相对于之前的作业来说要轻松一点,因为是两个人合作完成。通过本次作业我也体会到了合作的重要性,两个人完成一项任务时,需要一定的默契度才能把事情做好。另外本次作业的代码由我负责,写代码的过程中,有几个新功能没有按作业要求来完成,我是直接将新功能写在源代码里面通过函数调用来实现,所以之后还需要好好学习这方面的知识。