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. hibernate 中一对多的注解配置

    //一方@Entity@Table(name="test_classinfo")public class ClassInfo { @Id @SequenceGenerator(na ...

  2. 进程间通信-Queue

    进程间通信-Queue Process之间有时需要通信,操作系统提供了很多机制来实现进程间的通信. 1. Queue的使用 可以使用multiprocessing模块的Queue实现多进程之间的数据传 ...

  3. stl-stack+括号配对问题

    栈:stl的一种容器,遵循先进后出原则,,只能在栈的顶部操作,就像放盘子一样,洗好的盘子叠在上面,需要用时也是先从顶部拿.不允许被遍历,没有迭代器 基本操作: 1.头文件#include<sta ...

  4. spring 中c3p0的优化配置

    jdbc.properties driverClass=com.mysql.jdbc.Driver jdbcUrl=jdbc:mysql://localhost:3306/testdb user=ro ...

  5. React Native 填坑一

    React Native 填坑一 关于RN的布局 分为主轴和交叉轴, 主轴可以是横向也可以是竖向,交叉轴也是对应的. 主轴默认是竖向.如果要更改用flexdirection 主轴对齐方式:justif ...

  6. 第七章 二叉搜索树(b3)BST:删除

  7. Python vars() 函数

    Python vars() 函数  Python 内置函数 描述 vars() 函数返回对象object的属性和属性值的字典对象. 语法 vars() 函数语法: vars([object]) 参数 ...

  8. Maven项目整合SSH框架

    ---------------------siwuxie095                                         Maven 项目整合 SSH 框架         创建 ...

  9. JdbcTemplate实现CRUD操作

    ------------------siwuxie095                                     JdbcTemplate 实现 CRUD 操作         1.J ...

  10. IBM MQ + WebSphere + Spring JMS配置方法

    IBM MQ + WebSphere + Spring JMS配置方法  首先要在WAS里面配置IBM MQ作为JMS消息的提供者,在WAS管理控制台: Resources->JMS Provi ...