# Wordcount **Repository Path**: Mike_Bao/wordcount ## Basic Information - **Project Name**: Wordcount - **Description**: 软件技术基础作业,字数统计 预计实现功能:字符,单词,空格数统计。 远期实现功能:代码行数统计 - **Primary Language**: C - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-10-25 - **Last Updated**: 2024-10-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 各版本可执行文件请到右边发行版下载,谢谢! # 一、项目基本情况及相关指令用法 ## (一)项目综述 该项目旨在实现一个命令行文本计数统计程序。 基础功能:能正确统计导入的纯英文`.txt`文本中的字符数,单词数,句子数。 拓展功能: ### (1)能正确统计导入的`.c`文件的代码行。 ### (2)支持多文件统计 ### (3)可变指令个数 ### (4)指令语法检查 ### (5)文件类型匹配检查 ## (二)程序指令结构 本程序提供单指令和双指令两种指令输入模式 ### (1)单指令模式下指令结构解析 指令结构:`-f ` 此处的``可以为多个文件 统计对象:输入指令`-f `后,程序默认输出三个统计量,分别为字符数,单词个数及句子数。 ### (2)双指令模式下指令结构解析 指令结构:`-c -f ` 统计对象:仅统计符合条件的代码文件中代码的行数 ### (3)具体用法 单指令:`.\WordCount.exe -f ` 双指令:`.\WordCount.exe -c -f ` ## (三)指令语法检查---提示类型及实际运行时的截图 ### (1)` Hint:Command -f Missing,Please Input Again.` ![输入图片说明](Appendix/Hint1.png)
Pic1:Hint1 Triggered Picture
遇到该报错,建议:检查原指令是否缺少单独`-f`指令,重新输入代码。 ### (2)` Hint:No File to Analyse` ![输入图片说明](Appendix/Hint2.png)
Pic2:Hint2 Triggered Picture
遇到该报错,建议:检查是否将`-f`指令打在了指令末尾,重新输入代码。 ### (3)`Hint:Syntax Problem` ![输入图片说明](Appendix/Hint3.png)
Pic3:Hint3 Triggered Picture
遇到该报错,建议:检查指令,可能有多处指令错误,建议详细阅读本节第二部分的指令结构解析部分。 # 二、程序运行截图(含无法打开文件时的报错界面) ![输入图片说明](Appendix/F_CMD.png)
Pic4:统计`.txt`文件字符数,单词数,句子数的程序截图
![输入图片说明](Appendix/C_CMD.png)
Pic5:统计`.c`文件代码行的程序截图
![输入图片说明](Appendix/F_NOPEN.png)
Pic6:文件无法打开的程序报错截图
![输入图片说明](Appendix/F_FAIL_1.png)
Pic7:文件类型错误的程序报错截图-1
![输入图片说明](Appendix/F_FAIL_2.png)
Pic8:文件类型错误的程序报错截图-2
# 三、函数单元测试 ![输入图片说明](Appendix/UNITTEST.png)
Pic9:对于函数 PuctChk(const char*)的单元测试
注:此单元测试的源文件和可执行程序位于[仓库](https://gitee.com/Mike_Bao/wordcount)的`develop`分支下`UnitTest`子文件夹内 ## # 四、性能分析及函数调用截图 ![输入图片说明](Appendix/O_CAL.png)
Pic10:SourceMonitor软件对于代码复杂度的统计
![输入图片说明](Appendix/FUNCT_CALL.png)
Pic11:函数调用统计
# 五、心得体会 (1)熟练使用了Git这个版本管理工具,熟练使用了Git指令。试水了一下多分支开发,标签提交,发行版制作等操作,为以后的多人代码协作积累了宝贵经验。 (2)在实现彩色字符输出时,先后尝试了不同的实现方法 一开始,我只是觉得黑白的显示输出对于报错而言,可能不是特别醒目,脑子里最先想到的利用`Win32 API`中的`SetConsoleTextAttribute`函数,不过,由于我的命令行窗口是`PowerShell`,而`Powershell`窗口的颜色并不是上述函数中给定的标准颜色,所以,我在网上学习到了不借助外部第三方库,仅通过打印`ANSI`转义字符的方式进行字体颜色的更改。在决定走"`ANSI`"路线后,又通过查找资料及自行试错,找到了避免`ANSI`在命令行窗口乱码的解决方案。