一.  github地址:https://github.com/zjh1234562/WC

二 . PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 10 10
Estimate 估计这个任务需要多少时间 10 10
Development 开发 510 590
Analysis 需求分析 10 20
Design Spec 生成设计文档 30 30
Design Review 设计复审 10 10
Coding Standard 代码规范 40 50
Design 具体设计 20 40
Coding 具体编码 350 400
Code Review 代码复审 30 20
Test 测试(自我测试,修改代码,提交修改) 20 20
Reporting 报告 100 120
Test Report 测试报告 40 60
Size Measurement 计算工作量 10 20
Postmortem & Process Improvement Plan         事后总结,并提出过程改进计划 50 60
Total 总计 620 720

三. 解题思路

  1. 分析需求:这个作业要求的是根据用户输入的参数,文件名,从而对文件进行相应的统计。因此主要功能可分解为:命令行参数读取(包括参数,文件名),文件统计功能,界面,支持统配符。针对这些要实现的功能,我们可以一一分析解决。
  2. 命令行参数读取:该功能可以利用内置库sys实现,对用户输入的参数进行读取分析,并且用list储存。
  3. 文件统计功能:实现统计字符,单词,行数,注释行,空白行等功能,利用IO,对文件逐行进行读取,然后逐行累加,直到文件末尾,并将最后的结果返回。并且利用try...expect语句,实现对文件错误情况的处理,不至于出错直接中断程序,提供更良好的交互。
  4. 界面:该功能要实现与用户的交互,界面的设计较简单,利用filedialog函数可以实现用户选取文件。
  5. 支持通配符:实现可以利用正则表达式或者字符串的相关操作完成,先获得用户输入的文件名后缀,然后利用os库获取相对应的目录的所有文件名,最后利用正则表达式对文件进行筛选,返回符合后缀的文件,并用list存储。
  6. 单个功能都实现了,然后就是整合,编写main函数对功能的调用进行逻辑处理。

四. 设计过程

代码主要分为三个类,分别为文件统计类,界面类,主类。

  1. 文件统计类(Count):实现了文件统计功能,针对每个功能编写一个函数(这样以后要添加新功能就可以在这个类添加函数就行了),分别为

    get_word(实现-w功能)
    get_line(实现-l功能)
    get_char(实现-c功能)
    get_other(实现-a功能)
    get_allwj(实现通配符功能)
  2. 界面类:
    openfile(实现用户选取文件功能)
    gui(实现界面功能)
    countfile(在界面展示信息)
  3. 主类:
    main

五. 测试结果

测试文件说明:file.c(一个正常的源程序),file1.c(空文件),file2.c=(只有一个字符),file3.c(只有一个词),file4.c(只有一行)

测试结果截图:

1.测试-w,-s,-l,-c,-a功能

2.输入不存在文件时:

3.测试-x功能:

代码覆盖率:

测试时未调用图形界面,因此GUI.py覆盖率较低

六.项目总结:

本次软件工程的作业使用面对对象编程,虽然面对过程也能完成任务,但是代码后期就会很难维护,并且冗余度也会很高,因此选用面对对象。选用的语言是python,使用的也都是自带的标准库。按照软件工程的方法,实现了一个小程序的开发,编码过程固然重要,但是在开发的过程,我发现其它的步骤也是尤为重要,这也是我们为什么需要学软件工程的原因。总之通过正常的作业,也算了解到软件开发所需要的过程及相关的知识。

个人项目 python实现的更多相关文章

  1. 项目: python爬虫 福利 煎蛋网妹子图

    嘿嘿嘿! 嘿嘿嘿! 福利一波, 之前看小甲鱼的python教学视频的时候, 看到上面教的爬虫, 爬美女图片的, 心很痒痒, 但是不知道为啥, 按照视频一个字一个字敲的代码,总是报错, 有一天花了 一下 ...

  2. 结对项目(python) 黄浩伟 黄飞越

    作者:黄浩伟 黄飞越  一 .Github项目地址: https://github.com/Flying123haha/123.git 二.psp表格: PSP2.1 Personal Softwar ...

  3. ssc项目Python爬虫心得

    ###今日心得 ####time.datetime 1.字符串格式到标准化格式:time.strptime(str, "%Y%m%d") 2.今天的标准化格式:today = da ...

  4. 使用 tox flake8 pytest 规范 python 项目

    使用 tox flake8 pytest 规范 python 项目 python 中有些很好的工作来规范整个项目的开发,而其中使用较多的就是使用 tox . flake8 . pytest . tox ...

  5. python项目

    python实战项目: http://www.the5fire.com/category/python实战/ python基础教程中的十个项目: python项目练习一:即时标记 python项目练习 ...

  6. 以正确的方式开源 Python 项目

    以正确的方式开源 Python 项目 大多数Python开发者至少都写过一个像工具.脚本.库或框架等对其他人也有用的工具.我写这篇文章的目的是让现有Python代码的开源过程尽可能清 晰和无痛.我不是 ...

  7. Pipenv项目化你的python应用

    目录 Pipenv 什么是pipenv 安装pipenv pipenv用法 使用pipenv开发项目 pipenv 结合 pyenv Pipenv 什么是pipenv Pipenv is a prod ...

  8. Python+Django(Python Web项目初体验)

    参考:https://blog.csdn.net/qq_34081993/article/details/79229784 Django是一个开放源代码的Web应用框架,由Python写成. 安装Dj ...

  9. 想使用gevent、mysql、sqlalchemy实现python项目协程异步达到并发的效果

    如题,但是查看了很多资料,都说python这边的mysql不支持异步并发,只能阻塞进行,心塞30秒,暂时放弃这方面的研究 如果不操作数据库的化,比如请求url.操作文件,还是可以用gevent来异步实 ...

随机推荐

  1. zz深度学习论文合集大全

        Pull requestsIssues Marketplace Explore             Learn Git and GitHub without any code! Using ...

  2. zz:一个框架看懂优化算法之异同 SGD/AdaGrad/Adam

    首先定义:待优化参数:  ,目标函数: ,初始学习率 . 而后,开始进行迭代优化.在每个epoch  : 计算目标函数关于当前参数的梯度:  根据历史梯度计算一阶动量和二阶动量:, 计算当前时刻的下降 ...

  3. AOP的理解与实现

    AOP:面向切面编程,在不破坏原有代码的情况下,提供新的功能.可以使用AOP添加通用功能,比如事务.日志.权限.异常.缓存... 常见的AOP:MVC中的过滤器.HttpModule... 如何实现A ...

  4. <Random> 380 381(hard) 138

    380. Insert Delete GetRandom O(1) class RandomizedSet { ArrayList<Integer> nums; HashMap<In ...

  5. CentOS7 配置ip地址

    1.查看网络配置文件 可能因为不同的系统,配置文件都不一样,总体来说,配置文件都是 前缀:ifcfg-eno + 后缀:随机数组成 进入到 /etc/sysconfig/network-scripts ...

  6. django实战(五)--增加数据

    urls.py urlpatterns=[ path('curd/add/',views.curd_add,name='curdadd'), path('curd/saveadd/',views.cu ...

  7. [数据库] SQL 语法之基础篇

    一.什么是 SQL ? SQL 是 Structured Query Language(结构化查询语言)的缩写,是一种专门用来与数据库沟通的语言.与其他语言(如英语或 C.C++.Java 这样的编程 ...

  8. Qt 窗口操作函数(置顶、全屏,最大化最小化按钮设置等)

    一.窗口置顶 与 取消置顶 void MainWindow::on_windowTopButton_clicked() { if (m_flags == NULL) { m_flags = windo ...

  9. python 爬取媒体文件(无防火墙)

    #coding = utf-8 import requests import pandas as pd import os,time root_path = './根目录/' input_file = ...

  10. Python2.x升级python3.x【升级步骤和错误总结】

    网上帖子一大堆,按照那些教程操作,确实可以成功安装.但是安装成功之后呢,pip还是用的python2的pip. 切换到python3的pip之后,发现无法下载模块,还会有很多报错信息.以及" ...