一.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、函数名使用相应的英文单词或中文缩写
3、功能尽量在其他函数中实现
九。单元测试
十.代码说明
统计单词个数
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的,因为一个人还是有很多地方想不到。