个人项目-WC(java实现)

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


 

二、PSP表格

PSP2.1Personal Software Process Stages预估耗时(分钟)实际耗时(分钟)
Planning计划3030
   Estimate估计这个任务需要多少时间3030
Development开发880960
   Analysis需求分析 5040
   Design Spec生成设计文档4040
   Design Review设计复审 4050
   Coding Standard代码规范3030
   Design具体设计3040
   Coding具体编码600650
   Code Review代码复审4040
   Test测试(自我测试,修改代码,提交修改)5070
Reporting报告120140
   Test Report测试报告6070
   Size Measurement计算工作量2030
   Postmortem & Process Improvement Plan事后总结, 并提出过程改进计划4040
Total合计10301130

 

三、解题思路

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

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

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

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

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

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

 


 

 

四、设计过程

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

 

 

 

 

 

 


 

五、测试运行

1、空文件

 

 

 

 

2、只有一个字符的文件

 

 

 

3、只有一个单词的文件

 

 

 

4、标准的java源文件

 

 

 

 

 

5、多目录嵌套文件

  

6、通配符测试

  

 

 

7、可视化界面

 

 

 

  

 

 

 

 

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

 

 

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

 

六、项目小结

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

 

转载于:https://www.cnblogs.com/hxxh/p/11588567.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值