个人项目:WC(Java实现)

一、github地址

  https://github.com/yanshuqinnb/wc-exe/projects

 

二、PSP2.1表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 30 50
· Estimate · 估计这个任务需要多少时间 120 95
Development 开发 900 640
· Analysis · 需求分析 (包括学习新技术) 80 75
· Design Spec · 生成设计文档 50 55
· Design Review · 设计复审 (和同事审核设计文档) 30 20
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 60 45
· Design · 具体设计 120 105
· Coding · 具体编码 500 520
· Code Review · 代码复审 60 70
· Test · 测试(自我测试,修改代码,提交修改) 120 85
Reporting 报告 120 90
· Test Report · 测试报告 120 160
· Size Measurement · 计算工作量 30 40
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 90 70
  合计 1975 1480

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

二、WC 项目要求

  实现一个统计程序,它能正确统计程序文件中的字符数、单词数、行数,以及还具备其他扩展功能,并能够快速地处理多个文件。
具体功能要求:
程序处理用户需求的模式为:

wc.exe [parameter] [file_name]

基本功能列表(实现):

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

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

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

扩展功能(实现):

  -s   递归处理目录下符合条件的文件。
  -a   返回更复杂的数据(代码行 / 空行 / 注释行)。

 

高级功能(未实现):

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

 

三、解题思路

  看到题目时,首先觉得基本功能是比较容易实现的,统计文件字符数、词数、行数,扩展功能的递归处理多文件一开始想不通,后来翻书上网查询,运用了FileFilter接口实现文件的过滤,使用substring()和lastIndexOf()来将模糊输入的文件类型和文件目录分割开,处理通配符? 截取用户输入路径中的文件后缀名,在递归查找函数中添加条件过滤其他文件(正则表达式处理)。

  利用Java里的IO流对文件内容进行读取,通过创建Scanner类的实例从键盘获取操作命令和目的文件,使用了缓冲流的readline()方法对文件按行读取,使用String类的split()方法、matches()方法对每一行的的字符数、词数、行数进行统计,判断每一行是否是空行、注释行或代码行,使用了IO中的FileFilter()接口以及File类中的listFiles(FileFilter f)方法实现对指定路径下的符合条件的文件进行过滤操作。将基本功能"-l"、“-w”、“-c”、“-a”封装在一个方法里Operation()中,将拓展功能“-a”的实现封装在方法SpecialLine()中,将拓展功能“-s”的实现封装在HandleFile()中,根据输入的命令,调用不同的方法,方法与方法之间也有调用关系。

 

 

四、设计实现过程

 功能模块

  基本功能:Operation(String[] sip) {…}

  统计特殊行:SpecialLine(BufferedReader br) {…}

  处理多个文件:HandleFile(String[] file) {…}

  文件过滤器:class MyFileFilter implements FileFilter{…}

  流程图:

 

五、测试运行

1.基本功能——统计字符数、词数、行数

  

 

 代码

  

 

 

 

 

 

 

2.扩展功能:

  -s   递归处理目录下符合条件的文件。
  -a   返回更复杂的数据(代码行 / 空行 / 注释行)。

 

 代码

  

 

   

 

posted @ 2019-09-26 00:53  曲歌  阅读(155)  评论(0编辑  收藏  举报