zoukankan      html  css  js  c++  java
  • 个人项目作业

    一、Github项目地址:https://github.com/3Jax/CollegeProject

    二、WC项目要求

      wc.exe 是一个常见的工具,它能统计文本文件的字符数、单词数和行数。项目要求模仿已有wc.exe 的功能,实现一个统计程序并加以扩充。

      具体功能要求如下:

      1)基本功能列表:

      wc.exe -c file.c     //返回文件 file.c 的字符数

      wc.exe -w file.c    //返回文件 file.c 的词的数目  

      wc.exe -l file.c      //返回文件 file.c 的行数

      2)扩展功能:

       -s   递归处理目录下符合条件的文件。

      -a   返回更复杂的数据(代码行 / 空行 / 注释行)。

      空行:本行全部是空格或格式控制字符,如果包括代码,则只有不超过一个可显示的字符,例如“{”。

      代码行:本行包括多于一个字符的代码。

      注释行:本行不是代码行,并且本行包括注释。一个有趣的例子是有些程序员会在单字符后面加注释:

          } //注释
      在这种情况下,这一行属于注释行。

      3)高级功能:

      -x 参数。这个参数单独使用。如果命令行有这个参数,则程序会显示图形界面,用户可以通过界面选取单个文件,程序就会显示文件的字符数、行数等全部统计信息。

    三、PSP表格(预计耗时与实际耗时)

    PSP2.1

    Personal Software Process Stages

    预估耗时(分钟)

    实际耗时(分钟)

    Planning

    计划

    30

     20

    · Estimate

    · 估计这个任务需要多少时间

    30

     20

    Development

    开发

    805

     1095

    · Analysis

    · 需求分析 (包括学习新技术)

     500

     750

    · Design Spec

    · 生成设计文档

     35

    25

    · Design Review

    · 设计复审 (和同事审核设计文档)

     0

     0

    · Coding Standard

    · 代码规范 (为目前的开发制定合适的规范)

     10

     10

    · Design

    · 具体设计

     55

     70

    · Coding

    · 具体编码

    110 

     90

    · Code Review

    · 代码复审

     55

     100

    · Test

    · 测试(自我测试,修改代码,提交修改)

     40

     50

    Reporting

    报告

     50

     75

    · Test Report

    · 测试报告

     30

     50

    · Size Measurement

    · 计算工作量

     10

     10

    · Postmortem & Process Improvement Plan

    · 事后总结, 并提出过程改进计划

     10

     15

    合计

     885

     1190

    四、解题思路描述及设计实现过程

      本人没有做过项目,所以在看到题目显得有些手足无措。在细读构建之法第二章、PPT中的链接和个人项目要求之后,才对解题有了些思路。在进行psp分析时,我特意预留了一些时间,可是实际开发时间还是比估计时间要大。结合相应功能,我决定用java来开发,使用BufferedReader、FileReader类读取文件,定义Wc类中的函数来实现相应功能。由于我对BufferedReader的read()和readline()方法不熟悉,以及在判断注释行时逻辑错误,在finally语句中释放对象内存空间时没有考虑抛出异常等问题,使我的实际开发时间较长,难度较大。

    五、代码说明

      1)-c:返回文件的字符数

      

       2)-w:返回文件的单词数

      

        3)-w:返回文件的行数

      

       4)-s:递归查找所有子文件

      

       5)-a:得到文件的特殊行数(空行、代码行、注释行)

      

       

     六、测试运行

      1)基本功能和拓展功能运行如下:

      

      

      

      

      

      2)代码覆盖率如下:(采用eclipse的java code coverage插件)

      

      3)效能分析如下:(采用工具JProfiler)

      

      

    七、项目小结

      首先做好一个项目首先得先有个框架,再细化具体到方法的实现,做好规划是实现的第一步。还有就是贯彻“做中学”的原则,在开发过程遇到问题很正常,可以借助csnd和博客园等it社区来学习,阅读前辈博客中的知识总结和代码能提升我们的知识面,以及提高开发效率。

  • 相关阅读:
    C++奇数阶幻方(主动生成)
    一次C++作业 C++的I/O流类库 3 (学生注册信息登记程序)
    一次C++作业 C++的I/O流类库2 [文本文件和二进制文件]
    一次C++作业(模板类的构造& C++的I/O流类库)1
    一次C++作业 try-throw-catch
    关于英语作文AI批改的思考(含定向高分方案)
    PhoneNumber类
    一次C++作业
    服务器较全面入手介绍(持续更新)
    JS中多个onload冲突解决办法
  • 原文地址:https://www.cnblogs.com/3Jax/p/12501361.html
Copyright © 2011-2022 走看看