GitHub仓库:https://github.com/TaoTaoLv1/WcProject

一、开发前PSP表格预估*

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

二、项目思路

  • 基本要求

    • -c 统计文件字符数 (实现)

    • -w 统计文件词数 (实现)

    • -l 统计文件行数(实现)

  • 扩展功能

    • -s 递归处理目录下符合条件得文件(实现)
    • -a 返回文件代码行 / 空行 / 注释行(实现)
  • 高级功能

    • [ ] -x 图形化界面(未实现)

  

参数实现部分:

  • -c:每读入一个字符,计数器加一。
  • -w:每读入一个不属于单词的字符,并且之前出现过属于单词的字符,计数器加一。单词字符的限定初步设想以“A”~“Z”和“a”~“z”为准。
  • -l:每读入一个换行符,计数器加一。
  • -a(空行\注释行\代码行):每读入一行,一次性统计
  • -s:输入文件路径,继续输入查找要文件的名字,支持模糊搜索。

三、设计实现过程

代码

启动类main.java

public class main {
public static void main(String[] args) {
CommandController commandController = new CommandController();
while (true) {
System.out.println("\n*********************************************");
System.out.println("**** -c [文件名] 返回文件字符数 ****");
System.out.println("**** -w [文件名] 返回文件词的数目 ****");
System.out.println("**** -l [文件名] 返回文件行数 ****");
System.out.println("**** -s [文件夹] 搜索文件名 ****");
System.out.println("**** -a [文件名] 统计代码行/空行/注释行 ****");
System.out.println("*********************************************");
System.out.print("请输入命令:");
Scanner s = new Scanner(System.in);
String m =s.nextLine();
String arr[]=m.split("\\s");
CommandServer server = commandController.SearchControlsCommand(arr[0]);
server.command(arr[1]);
}
}
}

  

CommandController

public class CommandController {

    public CommandServer SearchControlsCommand(String command){
CommandServer server = null;
switch (command){
case "-c": server = new CharacterCountServer();break; //返回文件字符数
case "-w": server = new WordCountServer();break; //返回文件词的数目
case "-l": server = new RowCountServer();break; //返回文件行数
case "-s": server = new ConditionFileServer();break; //搜索文件名
case "-a": server = new ComplexCountServer();break; //统计代码行 / 空行 / 注释行
default:
System.out.println("参数输入不正确");
}
return server;
}
}

测试

测试文件:

测试结果:

代码覆盖率

进行代码覆盖率测试

整体代码覆盖是86%

总结:

  这次小程序不是很困难,主要就是对文件读入与字符串处理。重点是,对于PSP表的理解与判断。

  通过这次小课设,我学会了一个程序从开始到开发到测试到发布的全过程。理解了对于一个程序开发严格的过程是保证程序按时上线的必要手段

Java实现wc部分功能的更多相关文章

  1. 小白のjava实现wc.exe功能

    GitHub地址 项目完成情况 基本功能列表(已实现) wc.exe -c file.c     //返回文件 file.c 的字符数 wc.exe -w file.c    //返回文件 file. ...

  2. JAVA实现WC.exe功能

    项目要求 实现一个统计程序,它能正确统计程序文件中的字符数.单词数.行数,以及还具备其他扩展功能,并能够快速地处理多个文件. 具体功能要求: 程序处理用户需求的模式为: wc.exe [paramet ...

  3. Java实现WC基本功能

    GitHub仓库:https://github.com/douyazai/WCbase 一.WC 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命 ...

  4. 个人项目:Java实现WC

    Java实现WC Github项目地址:https://github.com/auxshaw/WC 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个 ...

  5. Java 基本数据类型 sizeof 功能

    Java 基本数据类型 sizeof 功能 来源 https://blog.csdn.net/ithomer/article/details/7310008 Java基本数据类型int     32b ...

  6. 通过python实现wc基本功能

    ---恢复内容开始--- 1.Github项目地址: https://github.com/zhg1998/ww/blob/master/wc.py 2.项目相关要求: 写一个命令行程序,模仿已有wc ...

  7. Java实现发邮件功能---网易邮箱

    目录 Java实现发邮件功能 前言 开发环境 代码 效果 结束语 Java实现发邮件功能 前言 电子邮件的应用场景非常广泛,例如新用户加入,即时发送优惠清单.通过邮件找回密码.监听后台程序,出现异常自 ...

  8. Java文件操作API功能与Windows DOS命令和Linux Shell 命令类比

    Java文件操作API功能与Windows DOS命令和Linux Shell 命令类比: Unix/Linux (Bash) Windows(MS-DOS) Java 进入目录 cd cd - 创建 ...

  9. ElasticSearch7.3学习(三十)----ES7.X SQL新特性解析及使用Java api实现sql功能

    一.ES7 sql新特性 1.1 数据准备 创建索引及映射 建立价格.颜色.品牌.售卖日期 四个字段 PUT /tvs PUT /tvs/_mapping { "properties&quo ...

随机推荐

  1. Linux网络通信

    使用TCP协议的socket 1.网络字节序 由于在主机存储为小端序,网络传输为大端序,并且在网络中需要读取IP号和端口号,所以发送端要将小端序转为大端序,接收端将大端序转为小端序 #include ...

  2. What is API Level?

    [What is API Level?] 参考:http://android.xsoftlab.net/guide/topics/manifest/uses-sdk-element.html#ApiL ...

  3. UnicodeEncodeError: ‘ascii’ codec can’t encode

    [UnicodeEncodeError: ‘ascii’ codec can’t encode] Python默认环境编码通过下面的方法可以获取: 基本上是ascii编码方式,由此Python自然调用 ...

  4. Cannot create inner bean '(inner bean)#67f903b5' of typ

    严重: Context initialization failedorg.springframework.beans.factory.BeanCreationException: Error crea ...

  5. 格式化java8 LocalDateTime

    DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss", Locale.CHINA).format(time1);

  6. Lunch Time(费用流变型题,以时间为费用)

    Lunch Time http://acm.hdu.edu.cn/showproblem.php?pid=4807 Time Limit: 4000/2000 MS (Java/Others)     ...

  7. mysql经典案例分析

    问题: create table A ( id varchar(64) primary key, ver int, ...)在id,ver上有联合索引,10000条数据为什么select id fro ...

  8. php自定义session存储路径

    1.找到php.ini配置文件,找到session.save_path,修改如下: 其中2表示session存储的目录深度,也就是分目录,避免一个目录下文件太多,造成IO负担. session.sav ...

  9. Spring框架的事务管理相关的类和API

    1. PlatformTransactionManager接口 -- 平台事务管理器.(真正管理事务的类).该接口有具体的实现类,根据不同的持久层框架,需要选择不同的实现类! 2. Transacti ...

  10. Spring框架之什么是IOC的功能?

    1. 什么是IOC的功能? * IoC -- Inverse of Control,控制反转,将对象的创建权反转给Spring!! * 使用IOC可以解决的程序耦合性高的问题!!