zoukankan      html  css  js  c++  java
  • WC个人项目(JAVA实现)

    一、Github地址https://github.com/dzg01/WC


    二、PSP表格

           PSP2.1          

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

    三、解题思路

      1.基本功能。在对需求分析完毕后,我了解到该项目就是传递参数对选定的文件进行统计功能。由于基本的统计字符数,行数,单词数功能在以前做JAVA课设时有涉及到,这一部分功能的实现很快就能想好。通过循环读取文件的每一行内容进行统计,字符数为每一行的长度相加,每一次循环行数加一,直至文件读完。

      2.扩展功能。扩展功能是对行数,注释行,代码行进行统计,比较难的是判断注释行的逻辑。注释行分为单行注释//和多行注释/* */,通过一个flag标记就可以判断当前是否注释行。空白行在源文件中除了空字符还有单个字符“{、}、;”,还需要判断是否在注释行里面,其余的情况则都是代码行。

      3.递归处理。通过递归处理目录下符合条件的文件,在编码过程中,为了方便我将后缀为.cpp的源代码设为符合条件的文件。这个功能的实现主要是先要获取目录的文件,将符合条件的文件加入到arrayList数组中,然后再遍历所有的文件,判断是否为文件夹,如果是则进行递归,若不是则调用写好的各个功能模块。

      4.高级功能。高级功能比较简单,通过图形界面选取文件并显示出文件的统计信息。使用window builder很快就可以做好界面,这里我只实现了选取单个符合条件的文件并显示,界面做得相对简陋。

      5.程序在命令行中运行,应该打印出相关使用信息,让用户输入正确的格式,程序要对一些不合理的输入进行提示,捕获异常。


     四、设计实现过程

      代码分为五个模块:基本统计功能countWC类、扩展功能extendWC类、递归处理processWC类、图形界面showWC类、功能调用workWC类

      1.workWC类:主类,程序的入口,获取用户在命令行输入的参数,根据用户输入的内容,调用各个模块。

      2.countWC类:基本统计类,参数传给BasicCount函数实现基本统计功能。

      3.extendWC类:拓展类,参数传给ExtendCount函数实现拓展功能。

      4.processWC类:递归处理符合条件的文件和文件夹,用户输入数组作为参数传给AllCount函数实现递归。

      5.showWC类:图形界面类,显示出所选取的文件的各种信息。


    五、测试结果

      测试文件:空文件、只有一个字符的文件、只有一个单词的文件、只有一行的文件、一个典型的源文件、源文件夹

      以下采用手工测试:

    1.测试空文件

    2.测试一个字符文件,单行文件

     

     

     3.测试一个单词文件

     4.测试代码文件

    贴出部分文件内容

     

     

     5.测试递归处理

     贴出文件部分内容(选取本地的代码文件)

     部分测试结果

     6.测试图形界面

     

     

                                                                                          验证后得出处理结果与实际相符!

     

     


     代码覆盖率

    使用eclipse中的EclEmma插件得出覆盖率,还有改善空间。

    六、个人总结

      完成这次的个人项目,收获还是相当大,又有一次实践的机会来提升自己的编程能力,还能在做项目的过程学习软件工程的知识。其实还有相当多的改善空间,比如测试 ,这次用的是手工测试,改进的话可以用JUnit来编写测试程序。还有缺少用户帮助信息,没有给用户提供一个用户手册,因为是手工测试,在进行测试时输入的都是正确的格式,但考虑到实际应用中难免有各种输入,改进的话可以处理这些错误的输入,提示用户该怎样输入。这次编码过程比预计的要快,但其实很多逻辑一开始测试的时候都有各种各样的bug,处理这些也是费了不少功夫。总的来说,受益匪浅。

     

     

  • 相关阅读:
    switch语句(上)(转载)
    MSIL实用指南-生成if...else...语句
    Docker 部署Jira8.1.0
    K8S从入门到放弃系列-(13)Kubernetes集群mertics-server部署
    K8S踩坑篇-master节点作为node节点加入集群
    K8S从入门到放弃系列-(12)Kubernetes集群Coredns部署
    K8S从入门到放弃系列-(11)kubernetes集群网络Calico部署
    K8S从入门到放弃系列-(10)kubernetes集群之kube-proxy部署
    K8S从入门到放弃系列-(9)kubernetes集群之kubelet部署
    K8S从入门到放弃系列-(8)kube-apiserver 高可用配置
  • 原文地址:https://www.cnblogs.com/dzg01/p/11585788.html
Copyright © 2011-2022 走看看