软件工程作业——WC Java实现

Github项目地址:https://github.com/2youyou/2youyou

项目要求

实现一个统计程序,它能正确统计程序文件中的字符数、单词数、行数,以及还具备其他扩展功能,并能够快速地处理多个文件。

  • 具体功能
    • -c 返回文件字符数
    • -w 返回词的数目
    • -l 返回行数
  • 扩展功能
    • -s 递归处理目录下符合条件的文件
    • -a 返回更复杂的数据(代码行 / 空行 / 注释行)
  • 高级功能
    • -x 命令行输入-x参数,程序显示图形界面,用户可以通过界面选取单个文件,程序就会显示文件的字符数、行数等全部统计信息。

解题思路描述
看到这个题目,我首先想到的就是利用java里面的IO流,要统计文件中的行数,可以选择利用BufferReader来按行读出文件中的内容,然后设置一个整型变量来统计行数,直到整个文件全部读完;统计字符数可以通过将读出的文件内容变成字符串的形式,然后计算字符串的长度及为字符的数量。至于统计单词的数量这个功能,每个人大概都不一样吧,因为每个人对单词的定义都不一样,究竟怎么样才算一个单词,每个人有每个人的看法,正如那句老话,一千个人,就有一千个哈姆雷特。我对单词的定义是利用空格以及换行来界定单词,只要是连续的字符,就算一个单词。然后利用字符串的分割,返回一个数组,单词数量就等于数组的长度。这样,就粗略的实现了基本的三个功能。
设计实现过程
这个项目因为比较简单,所以我只写了了一个类,里面有四个方法,分别是统计字符数、单词数、行数的方法及检测文件是否存在并执行统计的方法;main方法就是调用执行方法,作为一个程序入口的存在。
代码说明
主要的代码部分就是三个统计方法:
(1)统计行数的方法 c()
设计思路:使用BufferedReader(),按行读入,并将读到的内容赋值给字符串"s",之后计算字符串的长度即为字符的数量。
具体实现:

软件工程作业——WC Java实现_第1张图片

(2)统计单词的方法 w()
设计思路:使用BufferedReader(),按行读入,每读完一行就将内容赋值给字符串"s"并加一个换行符,然后进行字符串的分割,计算分割后返回数组的长度。
具体实现:

软件工程作业——WC Java实现_第2张图片

(3)统计行数的方法 l()
设计思路:这个方法相对来说比较简单,直接使用BufferedReader()按行读入,每次读入时进行计数,直到全部的行全部读完。
具体实现:

软件工程作业——WC Java实现_第3张图片

除了以上的统计方法,还有一个fileExist()方法,这个方法是对用户的输入的文件路径进行判断,若文件存在,则运行三个统计方法,若不存在,则报错。

测试运行

测试文件:

软件工程作业——WC Java实现_第4张图片

测试结果:

软件工程作业——WC Java实现_第5张图片

各部分预计耗费时间和实际耗费时间

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 30 50
· Estimate · 估计这个任务需要多少时间 50 70
Development 开发 600 800
· Analysis · 需求分析 (包括学习新技术) 180 200
· Design Spec · 生成设计文档 30 60
· Design Review · 设计复审 (和同事审核设计文档) 120 150
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 60 50
· Design · 具体设计 60 80
· Coding · 具体编码 180 200
· Code Review · 代码复审 30 50
· Test · 测试(自我测试,修改代码,提交修改) 50 30
Reporting 报告 60 90
· Test Report · 测试报告 30 60
· Size Measurement · 计算工作量 20 30
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 20 30
合计 1520 1950

代码覆盖率

软件工程作业——WC Java实现_第6张图片

项目小结

这次的项目只实现了基本的功能,因为好久没有使用Java编程,对java的相关知识有点遗忘,通过这次的项目,又重新拿起书本,复习了一遍java的相关知识,对Java有了新的理解,也算收获良多。这次项目的实现起来并不复杂,主要是IO流与字符串的种种方法,采用控制台输出的方式显示结果,并没有专门设计图形界面。

虽然项目不是很复杂,但是体验了如何从零开始做一个项目,并不只是简单的编程,更包括对测试,估计项目耗时的,对软件编写有了新的认识。同时,还学会了使用GitHub来记录项目开发过程,这是之前没有接触过的,也算是一个重大收获。

你可能感兴趣的:(软件工程作业——WC Java实现)