一、 GitHub地址:https://github.com/junjian-1998/homework1
二、
PSP
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 20 | 25 |
· Estimate | · 估计这个任务需要多少时间 | 20 | 25 |
Development | 开发 | 760 | 810 |
· Analysis | · 需求分析 (包括学习新技术) | 120 | 100 |
· Design Spec | · 生成设计文档 | 60 | 50 |
· Design Review | · 设计复审 (和同事审核设计文档) | 30 | 30 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 30 | 20 |
· Design | · 具体设计 | 120 | 100 |
· Coding | · 具体编码 | 300 | 420 |
· Code Review | · 代码复审 | 60 | 40 |
· Test | · 测试(自我测试,修改代码,提交修改) | 40 | 50 |
Reporting | 报告 | 80 | 85 |
· Test Report | · 测试报告 | 30 | 35 |
· Size Measurement | · 计算工作量 | 30 | 20 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 20 | 30 |
合计 | 860 | 920 |
三、 解题思路
1、看完题目后,要实现的程序是对文件的操作,思路是先用输入流输入文件,再计算输入流的各个值。
2、想到了之前java有学过文件的输入输出流,可以方便地对文件进行输入和输出,本次课设只用到了输入,所以用了从InputStreamReader类继承的FileReader类。
3、对于要执行的操作,统计字符、行数、单词,设计思路是:以字符串的形式输入一个或多个操作符,用空格隔开,然后用split()方法将字符串以空格分成一个或多个字符串数组,最后遍历数组实现统计。
4、统计字符和行数的实现,可以遍历每个字符,遇到只要不是空格和换行符则字符数++,遇到换行符则行数++。
5、统计单词的实现,把两个及两个以上连续的字母算作一个单词,如wordcount是一个单词,word_count或word count是两个单词。
四、设计实现过程
只用了一个类,一个函数,首先读入文件,计算文件的字符数、行数、单词数,然后读入用户的输入,判断输入的内容,输出相应的值。
基本功能列表:
wc.exe -c file.c //返回文件 file.c 的字符数(实现)
wc.exe -w file.c //返回文件 file.c 的词的数目 (实现)
wc.exe -l file.c //返回文件 file.c 的行数(实现)
扩展功能:
-s 递归处理目录下符合条件的文件。(未实现)
-a 返回更复杂的数据(代码行 / 空行 / 注释行)(未实现)。
[file_name]: 文件或目录名,可以处理一般通配符。
高级功能:
-x 参数。这个参数单独使用。如果命令行有这个参数,则程序会显示图形界面,用户可以通过界面选取单个文件,程序就会显示文件的字符数、行数等全部统计信息。(未实现)
五、测试
六、总结和反思
实现了对文件字符数、行数、单词数的基本功能,不会递归处理目录下符合条件的文件,对特殊行的判断也不熟悉,所以没有实现拓展功能。程序的结构也过于简单,不利于以后的维护和更新。今后会通过不断的学习,完善代码架构,做好软件工程。