一、Github项目地址:
https://github.com/kestrelcjx/-WC-Java-
二、PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 28 |
Estimate | 估计这个任务需要多少时间 | 10 | 11 |
Development | 开发 | 600 | 480 |
Analysis | 需求分析 | 120 | 150 |
Design Spec | 生成设计文档 | 30 | 60 |
Design Review | 设计复审 | 40 | 55 |
Coding Standard | 代码规范 | 20 | 40 |
Design | 具体设计 | 60 | 40 |
Coding | 具体编码 | 480 | 480 |
Code Review | 代码复审 | 30 | 20 |
Test | 测试(自我测试,修改代码,提交修改) | 60 | 120 |
Reporting | 报告 | 60 | 120 |
Test Report | 测试报告 | 20 | 30 |
Size Measurement | 计算工作量 | 10 | 15 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 120 | 60 |
合计 | 1690 | 1709 |
三、解题思路
使用Java语言设计三个模块,分别实现下列功能:
- 主类wc,在主类main方法中接受传入参数,并根据参数分类讨论,使用function类中各静态方法实现功能,或调用GUI类打开图形界面;
- GUI类,继承JFrame类,实现图形界面程序,通过按钮选择文件并调用function类中各静态方法统计信息;
- function类,在类中包含各静态方法,分别实现统计信息功能。
流程图:
四、设计实现
- 统计字符数
通过逐个读取字符,统计字符数。 - 统计行数
通过逐行读取字符串,统计行数。 - 统计单词数
通过逐行读取字符串,再以空格分隔字符串,统计单词数。 - 统计空行数
通过逐行读取字符串,判断是否为空字符串,统计空行。 - 统计注释数
通过逐行读取字符串,判断以“//”开头的行或“/”至“/”的行数量。 - 统计代码行数
总行数减去为注释行或空行的行数。 - 递归访问目录所有子文件夹,并记录文件路径
如果readFiles方法的path参数为文件,记录文件路径;
如果为文件夹,递归访问文件夹下所有文件和子文件夹。
五、运行测试
使用“手动测试,手工比较”方式。
测试空文件
测试一个字符的文件
测试一个词的文件
测试一行的文件
测试一个典型的源文件
测试GUI
代码覆盖率
"-c -w -l -a -s C:\Users\Administrator\Desktop\Test*.cpp"命令:
"-x"命令:
六、项目总结
由于学习了软件工程课程,了解在项目开发前期应做好需求分析和设计文档,所以仔细阅读了项目要求,并对开发流程有了清晰的思路,因此在整个开发过程中各阶段都比较顺利,这也让我了解了学习软件工程的意义所在。本次项目各功能其实并不难实现,主要将程序分成各模块实现,并协调好各模块之间的联系。WC项目开发,让我学到了软件工程知识在实际项目开发中的具体应用,也复习了Java编程知识。