WC(Java实现)

一.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选修课最后的课设我做的就是文本编辑器,所以统计linewordchar这些还是挺好下手的,我也上网借鉴了其他人的一些思路,其实思路还是比较简单的,只要画出关系图还是能比较快捋清解题思路,捋清大致关系之后,首先我们需要用到JAVA中的I/O流来读取文件信息,这个知识点我一开始还是有点忘记,代码行/空行/注释行这些相对比较复杂的需要使用正则表达式来进行匹配,最后就是写各个函数来完成项目要求实现的功能了,总体实现起来还是简单。

 

五.功能实现过程

 

 

 

主函数这个地方还是比较简单的,主要运用了switch来判断输入的值是什么相对应实现什么功能

 

 

统计单词数,其实主要考察的还是对正则表达式的回顾

 

 

统计行数是最简单的,通过BufferedReader类中的readLine()方法,判断该行是否为空,非空就加1,直到空则退出循环,输出行数

 

 

统计字符数

 

 

 

 

较为复杂的注释行统计

 

六.功能测试

测试文件:

 

 

字符的测试:

 

 

 行数的测试:

 

单词数的测试:

 

 

注释行的测试:

 

七.个人总结和心得

这次的个人项目说实话给我的感触还是很大的,从一开始接触项目的有点头绪到后面入手时碰到的各种问题的不知所措,很多经验确实得在实战中才能获得更深的总结,个人觉得这次的个人项目我比别人获得得更多,但存在的问题也更多,因为之前的Java课程我学得不是很好,所以在做这次作业的过程中,即便思路比较清晰和有想法,但真正下手出现的bug却比较多,这次作业有一些算法我还是借鉴网上别人的,尽管说我自己有先进行理解,但我觉得自己比较菜,会反思自己怎么就写不出呢,正则表达式是之前学的,可能是因为比较少打码,所以比较陌生。总的来说,完成这次作业的同时给我带来的是一种迫切感,对未来自己的前途的思考,也更加认识到自己的不足,也下定决心在接下来的日子更加努力。

 

转载于:https://www.cnblogs.com/hlyxd/p/11584092.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值