# 命令行文本计数统计程序 **Repository Path**: wang-jun-jia/learning-record ## Basic Information - **Project Name**: 命令行文本计数统计程序 - **Description**: 1.实现一个命令行文本计数统计程序。能正确统计导入的纯英文txt文本中的字符数,单词数,句子数。 2. 拓展功能实现 (1) 统计代码行、空行、注释行等,并提供相应命令接口 (2) 编写对应的单元测试 a. 实现基本功能的测试; b. 单元测试包含更多的测试用例; (3)使用选用的IDE附带的工具进行performance test (4)增加gui交互界面 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-10-27 - **Last Updated**: 2024-10-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 命令行文本计数统计程序 --- ## 程序介绍 #### 1. 基础功能实现 实现一个命令行文本计数统计程序。能正确统计导入的纯英文txt文本中的字符数,单词数,句子数。 具体命令行界面要求举例: - 命令模式: wc.exe [-参数] [文件名] ```bash .\dist\wc.exe -c file.txt 统计字符数 .\dist\wc.exe -w file.txt 统计单词数 .\dist\wc.exe -s file.txt 统计句子数 ``` #### 2. 拓展功能实现 (1) 统计代码行、空行、注释行等,并提供相应命令接口 (2) 编写对应的单元测试 ? a. 实现基本功能的测试; ? b. 单元测试包含更多的测试用例; (3)使用选用的IDE附带的工具进行performance test (4)增加gui交互界面 --- ## 软件架构 ``` │ README.md │ ├───Performance_test # 性能分析可视化 │ ├───v0_2性能分析可视化 │ │ │ 可视化图形.png │ │ │ 部分函数的执行时间与调用关系.png │ │ │ output.prof │ │ │ ├───v0_3性能分析可视化 │ │ │ 可视化图形.png │ │ │ 部分函数的执行时间与调用关系.png │ │ │ output.prof │ ├───V0_1 # 空项目 │ │ __init__.py │ │ main.py │ └───测试结果截图 │ 测试结果.png │ ├───V0_2 # 项目完成基础功能 │ │ __init__.py │ │ test.txt # 测试文件 │ │ main.py # 主程序 │ │ counter.py # 函数文件 │ └───测试结果截图 │ 测试结果.png │ └───dist # 可执行文件 │ main.exe │ ├───V0_3 # 项目完成扩展功能 │ │ __init__.py │ │ test.txt # 测试文件 │ │ main.py # 主程序 │ │ counter.py # 函数文件 │ └───测试结果截图 │ 测试结果.png │ gui界面结果图.png │ └───dist # 可执行文件 │ main.exe │ └───单元测试 # 单元测试 v0_2_test.py # v0.2基本功能和多组数据测试 v0_3_test.py # v0.3基本功能和多组数据测试 v0_2单元测试结果.png v0_3单元测试结果.png ``` --- ## 安装教程 #### 1. 安装 Python 首先,确保你的系统中安装了 Python。如果没有安装,你可以从 Python 官网下载并安装它: 本项目使用 Python 3.7。 [Python 官方网站](https://www.python.org/downloads/release/python-370/) #### 2. 安装 PyCharm 如果你还没有 PyCharm,可以从 JetBrains 官网下载并安装: [PyCharm 官方网站](https://www.jetbrains.com/pycharm/download/) #### 3. 创建新的 PyCharm 项目 打开 PyCharm,创建一个新的项目: - 选择“Create New Project”。 - 在“New Project”窗口中,选择项目的位置。 - 在“Project Interpreter”部分,选择“Existing interpreter”。 - 浏览到你的 Python 3.7 安装目录下的 `python.exe` 文件。通常情况下,它位于 `C:\Python37\python.exe`(Windows系统)。 #### 4. 安装 `PyInstaller` 在你的虚拟环境中安装 PyInstaller: - 打开 PyCharm 的终端(Terminal)。 - 输入以下命令安装 PyInstaller: ```bash pip install pyinstaller ``` #### 5. 安装 `SnakeViz` 如果您还没有安装 `SnakeViz`,可以使用 `pip` 来安装: 用于生成性能分析可视化图形 ```bash pip install snakeviz ``` --- ## 具体功能实现 ### (1) v0.1版本功能实现 #### 运行结果 ![输入图片说明](v0_1/%E6%B5%8B%E8%AF%95%E7%BB%93%E6%9E%9C%E6%88%AA%E5%9B%BE/%E6%B5%8B%E8%AF%95%E7%BB%93%E6%9E%9C.png) ### (2) v0.2版本功能实现 #### 功能说明 该程序能够对输入的纯英文`.txt`文本文件进行字符数、单词数和句子数的统计。 #### 指令参数 - `-c` 输出字符数(包含空格) - `-w` 输出单词数 - `-s` 输出句子数 #### 实际输入指令 ```bash .\dist\wc.exe -c test.txt 统计字符数 .\dist\wc.exe -w test.txt 统计单词数 .\dist\wc.exe -s test.txt 统计句子数 ``` #### 运行结果 ![输入图片说明](v0_2/%E6%B5%8B%E8%AF%95%E7%BB%93%E6%9E%9C%E6%88%AA%E5%9B%BE/%E6%B5%8B%E8%AF%95%E7%BB%93%E6%9E%9C.png) ### (3) v0.3版本功能实现 ###### 功能说明 在原本程序的基础上新加了能够统计文本中的代码行数、空行数以及注释行数等功能。特别地,增加了图形用户界面(GUI),使得用户可以通过直观的界面与程序进行互动。 ###### 指令参数 - `-c` 输出字符数(包含空格) - `-w` 输出单词数 - `-s` 输出句子数 - `-l` 输出代码行数 - `-e` 输出空行数 - `-n` 输出注释行数 ###### 实际输入指令 ```bash .\dist\wc.exe -c test.txt 统计字符数 .\dist\wc.exe -w test.txt 统计单词数 .\dist\wc.exe -s test.txt 统计句子数 .\dist\wc.exe -l test.txt 统计代码行数 .\dist\wc.exe -w test.txt 统计空行数 .\dist\wc.exe -s test.txt 统计注释行数 ``` ###### gui功能指令 ```bash .\dist\wc.exe 打开gui界面 ``` - 为现有的文本统计程序新增了一个图形用户界面(GUI)。通过这个界面,用户可以方便地打开任意文本文件,并进行字符数、单词数、句子数代码行数、空行数、注释行数的统计。 ###### 运行结果 - 指令结果 ![输入图片说明](v0_3/%E6%B5%8B%E8%AF%95%E7%BB%93%E6%9E%9C%E6%88%AA%E5%9B%BE/%E6%B5%8B%E8%AF%95%E7%BB%93%E6%9E%9C.png) - gui界面图 ![输入图片说明](v0_3/%E6%B5%8B%E8%AF%95%E7%BB%93%E6%9E%9C%E6%88%AA%E5%9B%BE/gui%E7%95%8C%E9%9D%A2%E7%BB%93%E6%9E%9C%E5%9B%BE.png) ### (4)单元测试 为了确保我们的文本统计程序的质量和性能,采用了Python标准库中的unittest模块进行基础功能测试和多种示例测试。 - v0.2版本单元测试功能模块介绍如下 ``` count_characters 函数的测试用例: 测试基本功能(非空文件)。 测试空文件。 测试包含空格和换行的文件。 总计:3个测试用例 count_words 函数的测试用例: 测试基本功能(非空文件)。 测试空文件。 测试包含标点符号的文件。 测试包含多个空格的文件。 总计:4个测试用例 count_sentences 函数的测试用例: 测试基本功能(包含两个句子的文件)。 测试空文件。 测试包含多个句子的文件。 测试包含问号和感叹号的句子。 测试包含多余空格和换行的句子。 总计:5个测试用例 总共12个测试用例 ``` - v0.3版本单元测试功能模块介绍如下 ``` count_characters 函数的测试用例: 测试基本功能(非空文件)。 测试空文件。 测试包含空格和换行的文件。 总计:3个测试用例 count_words 函数的测试用例: 测试基本功能(非空文件)。 测试空文件。 测试包含标点符号的文件。 测试包含多个空格的文件。 总计:4个测试用例 count_sentences 函数的测试用例: 测试基本功能(包含两个句子的文件)。 测试空文件。 测试包含多个句子的文件。 测试包含问号和感叹号的句子。 测试包含多余空格和换行的句子。 总计:5个测试用例 count_code_lines 函数的测试用例: 测试基本功能(非空文件)。 测试空文件。 总计:2个测试用例 count_empty_lines 函数的测试用例: 测试基本功能(非空文件)。 测试空文件。 总计:2个测试用例 count_comment_lines 函数的测试用例: 测试基本功能(非空文件)。 测试空文件。 总计:2个测试用例 总共18个测试用例 ``` - v0_2版本单元测试结果() ![输入图片说明](%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/v0_2%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95%E7%BB%93%E6%9E%9C.png) - v0_3版本单元测试结果 ![输入图片说明](%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/v0.3%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95%E7%BB%93%E6%9E%9C.png) --- ### (5)性能分析可视化 利用pycharm自带的 `cProfile` 模块进行性能分析,并将结果保存到一个文件中。然后,使用 `pstats` 模块来读取这个文件,并生成一个可视化的图形。常用的工具是 `SnakeViz`,它可以将 `cProfile` 的输出转换成一个交互式的网页,以便进行更直观的分析。 - v0.2 ![输入图片说明](Performance_test/v0_2%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90%E5%8F%AF%E8%A7%86%E5%8C%96/%E5%8F%AF%E8%A7%86%E5%8C%96%E5%9B%BE%E5%BD%A2.png) ![输入图片说明](Performance_test/v0_2%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90%E5%8F%AF%E8%A7%86%E5%8C%96/%E9%83%A8%E5%88%86%E5%87%BD%E6%95%B0%E7%9A%84%E6%89%A7%E8%A1%8C%E6%97%B6%E9%97%B4%E4%B8%8E%E8%B0%83%E7%94%A8%E5%85%B3%E7%B3%BB.png) - v0.3 ![输入图片说明](Performance_test/v0_3%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90%E5%8F%AF%E8%A7%86%E5%8C%96/%E5%8F%AF%E8%A7%86%E5%8C%96%E5%9B%BE%E5%BD%A2.png) ![输入图片说明](Performance_test/v0_3%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90%E5%8F%AF%E8%A7%86%E5%8C%96/%E9%83%A8%E5%88%86%E5%87%BD%E6%95%B0%E7%9A%84%E6%89%A7%E8%A1%8C%E6%97%B6%E9%97%B4%E4%B8%8E%E8%B0%83%E7%94%A8%E5%85%B3%E7%B3%BB.png) --- ## 总结 - 通过该项目实训不光学会单元测试,可视化分析等功能,更重要的是使得工程项目的结构层次更加清晰,代码管理能力也有所增强,此外,通过编写 `README.md` 文件,深刻体会到了 Markdown 格式的便捷性,这将极大地提升未来项目文档编写的效率。