一.WC项目相关要求
wc.exe 是一个常见的工具,它能统计文本文件的字符数、单词数和行数。这个项目要求写一个命令行程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语言源文件的字符数、单词数和行数。
二.相关功能
基本功能:
[x] -c 统计文件字符数 (实现)
[x] -w 统计文件词数 (实现)
[x] -l 统计文件行数(实现)
扩展功能:
[x] -s 递归处理目录下符合条件得文件(实现)
[x] -a 返回文件代码行 / 空行 / 注释行(实现)
[x] 支持各种文件的通配符(*,?)(实现)
本项目Github地址:https://github.com/HLyxd/WC
三.PSP2.1表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
Planning | 计划 | 30 | 50 |
· Estimate | · 估计这个任务需要多少时间 | 30 | 20 |
Development | 开发 | 480 | 600 |
· Analysis | · 需求分析 (包括学习新技术) | 120 | 150 |
· Design Spec | · 生成设计文档 | 48 | 80 |
· Design Review | · 设计复审 (和同事审核设计文档) | 30 | 50 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 30 | 40 |
· Design | · 具体设计 | 100 | 180 |
· Coding | · 具体编码 | 240 | 360 |
· Code Review | · 代码复审 | 60 | 70 |
· Test | · 测试(自我测试,修改代码,提交修改) | 100 | 120 |
Reporting | 报告 | 100 | 80 |
· Test Report | · 测试报告 | 30 | 40 |
· Size Measurement | · 计算工作量 | 30 | 25 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 30 | 30 |
合计 |
| 1458 | 1895 |
四.解题思路
第一眼看到题目的时候感觉题目的难度还是可以的,感觉各个功能还是比较容易实现吧,因为大二那时候选的Java选修课最后的课设我做的就是文本编辑器,所以统计line,word,char这些还是挺好下手的,我也上网借鉴了其他人的一些思路,其实思路还是比较简单的,只要画出关系图还是能比较快捋清解题思路,捋清大致关系之后,首先我们需要用到JAVA中的I/O流来读取文件信息,这个知识点我一开始还是有点忘记,代码行/空行/注释行这些相对比较复杂的需要使用正则表达式来进行匹配,最后就是写各个函数来完成项目要求实现的功能了,总体实现起来还是简单。
五.功能实现过程
主函数这个地方还是比较简单的,主要运用了switch来判断输入的值是什么相对应实现什么功能
统计单词数,其实主要考察的还是对正则表达式的回顾
统计行数是最简单的,通过BufferedReader类中的readLine()方法,判断该行是否为空,非空就加1,直到空则退出循环,输出行数
统计字符数
较为复杂的注释行统计
六.功能测试
测试文件:
字符的测试:
行数的测试:
单词数的测试:
注释行的测试:
七.个人总结和心得
这次的个人项目说实话给我的感触还是很大的,从一开始接触项目的有点头绪到后面入手时碰到的各种问题的不知所措,很多经验确实得在实战中才能获得更深的总结,个人觉得这次的个人项目我比别人获得得更多,但存在的问题也更多,因为之前的Java课程我学得不是很好,所以在做这次作业的过程中,即便思路比较清晰和有想法,但真正下手出现的bug却比较多,这次作业有一些算法我还是借鉴网上别人的,尽管说我自己有先进行理解,但我觉得自己比较菜,会反思自己怎么就写不出呢,正则表达式是之前学的,可能是因为比较少打码,所以比较陌生。总的来说,完成这次作业的同时给我带来的是一种迫切感,对未来自己的前途的思考,也更加认识到自己的不足,也下定决心在接下来的日子更加努力。