第二次作业

这个作业属于哪个课程 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 格式的便捷性,这将极大地提升未来项目文档编写的效率。
posted @ 2024-10-29 19:05  退后党艺术家  阅读(13)  评论(0编辑  收藏  举报