一、合作 :
github项目地址:https://github.com/Shen-MoMo/WordCount
合作同学作业地址:https://www.cnblogs.com/sm644245985/p/11670233.html
结对成员学号:201731062502 ,201731062115
二、PSP表格:
|
PSP2.1 |
Personal Software Process Stages |
预估耗时(分钟) |
实际耗时(分钟) |
|
Planning |
计划 |
|
|
|
· Estimate |
· 估计这个任务需要多少时间 |
30 |
30 |
|
Development |
开发 |
|
|
|
· Analysis |
· 需求分析 (包括学习新技术) |
60 |
60 |
|
· Design Spec |
· 生成设计文档 |
30 |
30 |
|
· Design Review |
· 设计复审 (和同事审核设计文档) |
30 |
30 |
|
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
10 |
10 |
|
· Design |
· 具体设计 |
30 |
120 |
|
· Coding |
· 具体编码 |
60 |
120 |
|
· Code Review |
· 代码复审 |
30 |
90 |
|
· Test |
· 测试(自我测试,修改代码,提交修改) |
60 |
120 |
|
Reporting |
报告 |
|
|
|
· Test Report |
· 测试报告 |
30 |
30 |
|
· Size Measurement |
· 计算工作量 |
30 |
30 |
|
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
30 |
30 |
|
|
合计 |
430 |
700 |
PSP表格在记录项目完成进度上很有帮助,可以让成员清晰的看到进度与每个进程的花费时间,在项目开始之前,预估时间也是对本次此项目的一个时间安排,但是往往预估的时间都比我们实际话费的时间时间更少。
三、计算模块接口的设计与实现过程:
1、项目需求:
- 统计字符数
- 统计单词数
- 统计行数
- 统计结果以指定格式输出到默认文件中
- 其他扩展功能
2、我的思路:
(我只做了两个功能,搭档做了另外两个)
- 首先对文件内容的提取,采用C#提供的库函数:FileStream,使用时注意文件路径编写
- 然后我负责完成统计文件中的字符数字个数,和文件行数,
- 在编写getChacactor()函数时,得到文件内容,通过ReadLine()方法将文件内容读取并存入字符串中,然后利用ascii码值在0-127之间的作为字符,这样排除了中文,设置count变量,如果他的ascii在0-127之间就复合要求
- 在编写getRows()函数时,用文件流StreamReader方式读取文件,保存读取内容,定义‘\n’为跳过标志,用Split()对保存内容按跳过的字符类型,分割成字符串,最后统计这个字符串的长度
3、流程图:
getChactor函数具体流程图:
getRows()方法的流程图:
四、代码复审:
代码复审过程中,我查看了最初制定的代码规范,对比编程过程,命名采用驼峰命名法,不使用缩写形式,使用tab作为缩进,大小为4,在关键地方写上注释,这更便于理解;
在编写过程中,最初忽略了中文不算字符这个条件,就直接用ToString()函数获取字符串长度,没有加条件判断,导致最后返回的结果算上了中文,在代码复查过程中,我利用Ascii值0-127这一条件进行判断,排除了这个问题;
错误的:
FileStream fs = new FileStream(fileName, FileMode.Open);//打开文件 string str = Convert.ToString(fs.Length); fs.Close(); Console.Write("字符统计成功!\n"); return int.
错误结果:
正确的:
while ((str = fs.ReadLine()) != null) { for (i = 0; i < str.Length; i++) { if (str[i] >= 0 && str[i] <= 127) { // Console.Write(str[i]); count++; } } }
正确结果:
审查功能代码:
统计字符功能
public static string getChacactor(string filePath) { //统计字符数的方法 int i, count; count = 0; //打开文件 StreamReader fs = new StreamReader(filePath); string str = null; while ((str = fs.ReadLine()) != null) { for (i = 0; i < str.Length; i++) { if (str[i] >= 0 && str[i] <= 127) { // Console.Write(str[i]); count++; } } } fs.Close(); Console.Write("字符统计成功!\n"); Console.Write("characters:" + count + "\n"); return "characters:" + count + "\n"; }