第二次作业
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zjlg/rjjc/ |
---|---|
这个作业的目标 | 实现一个命令行文本计数统计程序。能正确统计导入的纯英文txt文本中的字符数,单词数,句子数,并实现拓展功能 |
姓名-学号 | 王俊嘉-2022329301068 |
Gitee链接:https://gitee.com/wang-jun-jia/learning-record.
命令行文本计数统计程序
程序介绍
1. 基础功能实现
实现一个命令行文本计数统计程序。能正确统计导入的纯英文txt文本中的字符数,单词数,句子数。
具体命令行界面要求举例:
- 命令模式: wc.exe [-参数] [文件名]
.\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
│ README.assets
|
├───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 # 测试文件
│ │ mian.py # 主程序
| | counter.py # 函数文件
│ │
│ ├───测试结果截图
│ | 测试结果.png
| |
│ └───dist #可执行文件
│ main.exe
│
├───V0_3 # 项目完成扩展功能
| | __init__.py
│ │ test.txt # 测试文件
│ │ mian.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 官方网站
2. 安装 PyCharm
如果你还没有 PyCharm,可以从 JetBrains 官网下载并安装:
PyCharm 官方网站
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:
pip install pyinstaller
5. 安装 SnakeViz
如果您还没有安装 SnakeViz
,可以使用 pip
来安装:
用于生成性能分析可视化图形
pip install snakeviz
具体功能实现
(1) v0.1版本功能实现
运行结果
(2) v0.2版本功能实现
功能说明
该程序能够对输入的纯英文.txt
文本文件进行字符数、单词数和句子数的统计。
指令参数
-c
输出字符数(包含空格)-w
输出单词数-s
输出句子数
实际输入指令
.\dist\wc.exe -c test.txt 统计字符数
.\dist\wc.exe -w test.txt 统计单词数
.\dist\wc.exe -s test.txt 统计句子数
运行结果
(3) v0.3版本功能实现
功能说明
在原本程序的基础上新加了能够统计文本中的代码行数、空行数以及注释行数等功能。特别地,增加了图形用户界面(GUI),使得用户可以通过直观的界面与程序进行互动。
指令参数
-c
输出字符数(包含空格)-w
输出单词数-s
输出句子数-l
输出代码行数-e
输出空行数-n
输出注释行数
实际输入指令
.\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功能指令
.\dist\wc.exe 打开gui界面
- 为现有的文本统计程序新增了一个图形用户界面(GUI)。通过这个界面,用户可以方便地打开任意文本文件,并进行字符数、单词数、句子数代码行数、空行数、注释行数的统计。
运行结果
- 指令结果
- gui界面图
(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版本单元测试结果()
- v0_3版本单元测试结果
(5)性能分析可视化
利用pycharm自带的 cProfile
模块进行性能分析,并将结果保存到一个文件中。然后,使用 pstats
模块来读取这个文件,并生成一个可视化的图形。常用的工具是 SnakeViz
,它可以将 cProfile
的输出转换成一个交互式的网页,以便进行更直观的分析。
-
v0.2
-
v0.3
总结
- 通过该项目实训不光学会单元测试,可视化分析等功能,更重要的是使得工程项目的结构层次更加清晰,代码管理能力也有所增强,此外,通过编写
README.md
文件,深刻体会到了 Markdown 格式的便捷性,这将极大地提升未来项目文档编写的效率。