zoukankan      html  css  js  c++  java
  • 个人项目 python实现

    一.  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,使用的也都是自带的标准库。按照软件工程的方法,实现了一个小程序的开发,编码过程固然重要,但是在开发的过程,我发现其它的步骤也是尤为重要,这也是我们为什么需要学软件工程的原因。总之通过正常的作业,也算了解到软件开发所需要的过程及相关的知识。

  • 相关阅读:
    co coa ch ina
    提高英语听力最好的学习方法
    http://www.funnygames.us/search/?s=balance
    flash
    https://github.com/search?l=ObjectiveC&p=2&q=cocos&ref=searchbar&type=Repositories
    game.m https://github.com/kayrules/Cocos2dEndlessPlatformerGame
    2013年下半年学习计划
    Javascript判断数据类型
    vue组件自定义属性命名
    BZOJ 1018 线段树维护连通性
  • 原文地址:https://www.cnblogs.com/zjh20/p/11568378.html
Copyright © 2011-2022 走看看