个人项目-WC(java实现)

一、Github地址:https://github.com/silakami/wc.exe


 

二、PSP表格

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

 

三、解题思路

1、分析题目,并进行需求分析:这个软件可以分成三个模块,第一个模块是各种非递归的功能,第二个模块是文件的通配符和递归查找,第三个模块是可视化界面,并且包含着各种功能,除此之外,这个程序还要求和用户进行交互,即需要从命令行读入用户输入的指令(参数和文件路径)。分析完各个模块,就可以进行分析得到各个模块和模块内不同功能的联系。

2、各种非递归功能(即文本统计功能):实现字符,单词,行数,空行,注释行,代码行的统计功能,使用字符流进行IO操作,每次读入一行,并对读入的行数进行相应的统计,直到读入的返回值为null,而且对IO错误进行捕捉,并提示用户相关信息,让用户修改输入。

3、文件的递归查找和通配符:支持通配符,获得用户输入信息,如果输入是一个文件夹,则获取该文件夹下的所有文件路径列表,进行递归查找,为了避免得到一些无法读取的文件(如.exe文件),对部分文件进行了过滤,如果输入是查询某类型的或者是某名称的文件,则先拆分输入的文件路径,得到文件所在目录和文件名,然后把文件名中的通配符替换成正则表达式,并作为匹配条件,使用正则表达式来对目录下的文件进行匹配,同样是使用递归查找的方法,最终得到一个文件名集合,同时,为了防止递归过深导致程序卡死,这里还对递归深度进行了限制,提供更好的用户交互体验。

4、可视化界面:该功能是让用户通过图形界面进行交互,让用户手动选择文件,返回所有统计信息,这里采用JFrame容器。

5、命令行交互:该功能通过Scanner来实现,然后通过正则表达式和文件判断类来对输入进行检测,查看是否有非法输入。

6、模块的整合:编写main函数,理清各个模块内和模块间的调用关系,同时要考虑如何应对各种非法输入,增强程序的健壮性。

 


 

 

四、设计过程

  代码主要分成主类,文本统计模块,文件处理模块,界面模块四个部分,下面是简要的关系:

 

 

 

 

 

 


 

五、测试运行

1、空文件

 

 

 

 

2、只有一个字符的文件

 

 

 

3、只有一个单词的文件

 

 

 

4、标准的java源文件

 

 

 

 

 

5、多目录嵌套文件

  

6、通配符测试

  

 

 

7、可视化界面

 

 

 

  

 

 

 

 

8、各种输入错误的处理(并非全部)

 

 

有上图可见,该程序基本实现了项目的需求,并且具有一定的健壮性,抵御众多不正确的输入。

 

六、项目小结

  本次项目使用了java进行开发,第一次遵循一定的代码开发规范来做项目,比起以往自己做的课设之类的练习,所花的时间比以前更长,但是考虑到的东西确实比以往更多,各个模块的联系变得更加清晰,做好需求分析确实能让项目的目标更加明确,而不是写着写着代码才突然想到要加多几个功能进去,哪个地方有问题导致整个类甚至程序要重写。通过这次练习,我体验到了软件的需求分析,设计,开发,测试的过程,总体来说,我确实收获了很多东西,以后还需要样成这种规范化编程的习惯。

 

posted @ 2019-09-26 00:50  黑下吸火  阅读(286)  评论(0编辑  收藏  举报