Github地址:

https://github.com/hcy6668/wordCount

PSP表格:

PSP

PSP阶段

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

60

40

Estimate

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

480

985

Development

开发

180

240

Analysis

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

60

40

Design Spec

生成设计文档

30

30

Design Review

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

5

5

Coding Standard

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

30

20

Design

具体设计

25

40

Coding

具体编码

240

380

Code Review

代码复审

30

40

Test

测试

40

40

Reporting

报告

25

40

Test Report

测试报告

20

55

Size Measurement

计算工作量

15

15

Postmortem & Process Improvement Plan

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

15

15

合计

1255

1970

解题思路:

识别用户的命令,读取需要分析的源文件。

从读取文件开始,分析每一行代码的规则,用正则表达式进行代码类型判断,进行统计即可。

代码说明:

private void analysis(){
  if(!isAnalysis){
    isAnalysis=true;
    String s;
    BufferedReader in = null;
    try {
      n =new BufferedReader(new FileReader(path.toString()));
      while((s=in.readLine())!=null){
        switch(analysisLine(s)){
          case SPACE:spaceSum++;break;
          case CODE:codeSum++;break;
          case NOTE:noteSum++;break;
        }
      charNum+=s.replaceAll("\\s", "").length();
      wordNum+=s.split("\\W+").length;
      lineSum++;
    }

    } catch (IOException e) {
    System.out.println("文件不存在"+path());
    }finally{
      try {
        in.close();
        } catch (IOException e) {
        e.printStackTrace();
        }
     }
    }
   }

此处使用了梁锦琳同学的分析代码[1]

测试设计过程:

在wc.exe的目录下放置测试文件,分别输入以下命令:

wc.exe -c -a -l -w test.c

wc.exe -c test.c -o output.txt

wc.exe -c test.c -e stop.txt

wc.exe -c -a -l -w test.c -e stop.txt -o output.txt

wc.exe -s -c -w -l *.c

wc.exe -c -c -b test.c

wc.exe -c -w -o output.txt/WCtest.exe -c -w test.c -o

wc.exe -c wc.exe

wc.exe -o output.txt -s -a .*cpp

参考文献链接:

[1]http://www.cnblogs.com/carroll/p/8601338.html

http://www.cnblogs.com/xinz/archive/2011/10/22/2220872.html

最新文章

  1. 在access中如何创建数据库。你认为数据库在网站开发中所扮演的角色是什么。使用数据库和使用文件,两者的优缺点各是什么。
  2. HTML滚动字幕代码参数详解及Js间隔滚动代码
  3. 设计模式-UML类图的各符号含义(转)
  4. MySQL 创建用户 与 授权
  5. 在Eclipse中导入文件和文件夹
  6. 跟我学习dubbo-Dubbo管理控制台的安装(3)
  7. pomelo windows 环境
  8. APNs-远程推送
  9. 如何跳到系统设置界面-b
  10. U3D 收藏一个飞机随机运动的方法
  11. 基于visual Studio2013解决C语言竞赛题之1094纵横图
  12. asm 盘头损失,破坏
  13. Swagger 配置
  14. 大一上c语言学习总结
  15. [C++]PAT乙级1002.写出这个数(20/20)
  16. kvm报错集
  17. tomcat 查看和修改内存
  18. Codeforces Round #467 (Div. 2) E -Lock Puzzle
  19. Echarts 使用asp.net +ashx+ajax 实现 饼图、柱形图后台交互
  20. node+express搭建个人网站(2)

热门文章

  1. Qt setstylesheet指定窗口
  2. 使用ODP.NET连接Oracle数据库
  3. Largest Rectangular Area in a Histogram 最大连续面积
  4. Go-延时函数defer
  5. ABP EventBus(事件总线)
  6. vjson.hpp
  7. [redis] redis 命令
  8. LINQ to Entities 不识别方法“System.DateTime AddDays(Double)
  9. .Net Core使用视图组件(ViewComponent)封装表单文本框控件
  10. js用解构来定义变量并赋值