第一次作业:统计文件字符串字符行的个数
码云:https://gitee.com/SC_looker/wordcount.git
先明确任务内容,分为以下几点:
(1)分析、整理需求,提交PSP表格;
(2)编码实现,并在Github提交;
(3)设计测试用例,编写单元测试;
(4)撰写博客。
需求分析:
要求:统计文本文件的字符数、单词数、和行数。
输入格式说明:
wc.exe -c file.txt //返回文件 file.txt 的字符数
wc.exe -w file.txt //返回文件 file.txt 的词的数目
wc.exe -l file.txt //返回文件 file.txt 的行数
输出格式说明:
保存在outfile.txt中
file1.txt, 字符数: 50
file1.txt, 单词数: 30
解题思路:
刚看到题目时,我打算写三个类,每个类分别统计数量,然后传到主函数,由主函数进行存取。
基本功能
- 支持 -c 统计字符数(char_count)
- 支持 -w 统计单词数(string_count)
- 支持 -l 统计总行数(line_count)
- 支持 -o 存入特定文件
拓展功能(待实现)
- 支持 -a 返回高级选项(代码行 空行 注释行)
- 支持 -s 递归处理符合条件的文件
基本功能模块:
一、实现字符数统计类
通过传参的方式将文件名以 (string filename)的方式传入类成员函数,利用fstream把文件以流的形式输出,把流输出到字符类型然后进行统计。
二、实现单词数统计类
通过传参的方式将文件名以 (string filename)的方式传入类成员函数,利用fstream把文件以流的形式输出,把流输出到字符串类型然后进行统计,也可用getline(流,字符串变量,‘ ’)来统计,不过这种统计文件必须以空格结束,否则所统计的数少一。
三、实现行数统计函数
通过传参的方式将文件名以 (string filename)的方式传入类成员函数,利用fstream把文件以流的形式输出,用getline(流,字符串变量,‘\n’)函数来统计,getline()以转行符结束。
四、主函数模块:
测试文件结果
测试用例:
文件:
可执行文件
总结:
这个任务,我使用的是c++,由于c++是早些时候学习过的然后之后是没在使用过,这次机会我重新复习一次,这个项目让我学到了很多东西,我从不懂如何写代码到一步步实现功能,这次的代码我是使用的绝对路径,我实现了要求的基本功能,也清楚了qt生成的可执行文件是与原先代码所分离开的,刚开始一直找不到可执行文件,后来通过上网查询,要在path添加路径才能使用exe文件,也了解到从命令行写入的参数在代码中如何读取。本次的项目还有很多不足的地方还需要加以改善,比如把绝对路径改为相对路径。可以存到指定目录的,更多功能还待提高。
首先完成PSP表格,对自己所做的项目进行大致的规划
PSP2.1 |
PSP阶段 |
预估耗时 (小时) |
实际耗时 (小时) |
Planning |
计划 |
2*24 |
38 |
· Estimate |
· 估计这个任务需要多少时间 |
2*24 |
38 |
Development |
开发 |
21 |
20 |
· Analysis |
· 需求分析 (包括学习新技术) |
3 |
4 |
· Design Spec |
· 生成设计文档 |
2 |
3 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
2 |
2 |
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
1 |
1 |
· Design |
· 具体设计 |
4 |
3 |
· Coding |
· 具体编码 |
4 |
4 |
· Code Review |
· 代码复审 |
3 |
2 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
2 |
2 |
Reporting |
报告 |
7 |
5 |
· Test Report |
· 测试报告 |
3 |
3 |
· Size Measurement |
· 计算工作量 |
2 |
1 |
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
2 |
1 |
|
合计 |
28 |
25 |