第二次作业
第二次作业:命令行文本计数统计程序(wc 工具)
课程:26 软件技术 · 第二次作业
功能:统计纯英文 txt 文本的字符数、单词数、句子数;扩展统计代码行、空行、注释行;附单元测试与性能测试。
一、项目简介
本项目实现了一个类似 Linux wc 命令的命令行文本计数统计程序,使用 C#(.NET Framework)开发,编译后生成 wc.exe。程序读取指定的英文文本文件,按命令参数输出对应的统计结果。
实现的功能:
- 基础功能:字符数、单词数、句子数、行数统计
- 扩展功能(加分项):代码文件的代码行、空行、注释行统计
- 单元测试:41 个测试用例覆盖各统计函数与边界情况
- 性能测试:对约 800KB 大文件进行统计并记录耗时
二、开发环境
| 项目 | 说明 |
|---|---|
| 开发语言 | C#(.NET Framework 4.x) |
| 编译器 | Windows 自带 csc.exe |
| 版本管理 | Git(本地多次提交,v0.1 / v0.2 / v0.3) |
| 代码托管 | 码云 Gitee |
三、命令用法
命令格式:
wc.exe [参数] [文件名]
| 参数 | 功能说明 |
|---|---|
-c |
统计字符数(含空格、换行符) |
-w |
统计单词数(由空格、Tab、换行等空白字符分隔) |
-s |
统计句子数(以 . ! ? 结尾) |
-l |
统计行数 |
-cloc |
统计代码文件的代码行、空行、注释行 |
编译:双击 build.bat 生成 bin\wc.exe;运行单元测试:双击 run_tests.bat。
四、项目文件结构
wc_project/
├── src/
│ ├── Program.cs # 命令行入口:参数解析与结果输出
│ └── Statistics.cs # 核心统计逻辑(字符/单词/句子/行/代码统计)
├── test/
│ └── TestWC.cs # 单元测试(41 个测试用例)
├── samples/
│ ├── sample.txt # 基础测试文本(英文段落)
│ ├── code_sample.cpp # 代码统计测试文件
│ └── big_sample.txt # 性能测试大文件(约 800KB)
├── screenshots/ # 各功能运行结果截图
├── bin/
│ ├── wc.exe # 主程序可执行文件
│ └── test.exe # 单元测试可执行文件
├── build.bat # 编译脚本
├── run_tests.bat # 单元测试运行脚本
├── demo.ps1 # 一键演示脚本
└── README.md # 项目说明文档
五、运行演示
5.1 基础统计(sample.txt)
测试文本内容:
Hello world. This is a test file. It contains several sentences! How many words are there? Let's count them.
This is the second paragraph. It has more words and sentences. Can you see the numbers?
字符数统计(-c)
> wc.exe -c samples\sample.txt
字符数: 198

单词数统计(-w)
> wc.exe -w samples\sample.txt
单词数: 35

句子数统计(-s)
> wc.exe -s samples\sample.txt
句子数: 8

5.2 代码统计(code_sample.cpp,-cloc)
> wc.exe -cloc samples\code_sample.cpp
总行数: 19
代码行: 9
空行: 4
注释行: 6

说明:程序支持 C/C++ 风格的 // 单行注释与 /* */ 块注释,逐行判断该行属于代码行、空行还是注释行;跨越多行的块注释通过状态记录处理。
六、单元测试
将核心统计函数与命令行入口解耦,集中放在 Statistics.cs 中,便于独立测试。共设计 41 个测试用例,全部通过。
测试覆盖:
| 测试模块 | 用例数 | 覆盖的边界情况 |
|---|---|---|
| 字符数 | 6 | 空字符串、单字符、含空格、含换行等 |
| 单词数 | 9 | 空文本、null、多空格、Tab 分隔、换行分隔、标点、撇号等 |
| 句子数 | 7 | 句号、感叹号、疑问句、混合标点、末尾无标点等 |
| 行数 | 5 | 空文本、单行、多行、末尾换行等 |
| 代码统计 | 14 | 纯代码、空行、单行注释、块注释、行内注释等 |
运行结果:
通过: 41 个
失败: 0 个
全部测试通过!

七、性能测试(加分项)
对约 800KB 的 big_sample.txt 分别执行字符数、单词数、句子数统计,记录运行耗时:
| 操作 | 耗时 |
|---|---|
-c 字符数统计 |
63 ms |
-w 单词数统计 |
66 ms |
-s 句子数统计 |
50 ms |

八、版本迭代记录(Git 多次提交)
项目通过多次 commit 体现版本更迭,并打上版本标签:
| 版本标签 | 提交说明 | 阶段内容 |
|---|---|---|
| v0.1 | 空项目初始化 | 建立项目框架与目录结构 |
| v0.2 | 完成基础功能 | 实现字符数、单词数、句子数、行数统计 |
| v0.3 | 完成扩展功能 | 代码行/空行/注释行统计 + 单元测试 + 性能测试 + 运行截图 |
后续提交逐步完善 README 文档、一键演示脚本、AI 协作提示词记录等辅助材料。
九、码云仓库地址
本项目完整源码、测试用例、运行截图均已上传至码云:
仓库地址:https://gitee.com/zhaoyangyi050709/wc-zyy
十、AI 辅助说明
本次作业全程使用 AI 辅助完成开发,完整的对话提示词与对应产出记录已整理在仓库 AI_PROMPTS.md 文件中,可供老师核查。

浙公网安备 33010602011771号