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. ORA-10618: Operation not allowed on this segment 执行存储过程权限需声明

    执行SHOW_SPACE存储过程时只能在DBA角色下成功,在NORMAL角色用户下报错: ORA-10618: Operation not allowed on this segmentORA-065 ...

  2. python yield 浅析-转载

    如何生成斐波那契數列 斐波那契(Fibonacci)數列是一个非常简单的递归数列,除第一个和第二个数外,任意一个数都可由前两个数相加得到.用计算机程序输出斐波那契數列的前 N 个数是一个非常简单的问题 ...

  3. TOMCAT下面发布项目的4种方式

    摘要 TOMCAT下面发布项目的4种方式,可用于在平时资料查询. 第一种方法: 将web项目文件件拷贝到webapps 目录中:或者直接通过Eclipse发布到Tomcat上. 第二种方法: 在tom ...

  4. Space Ant(极角排序)

    Space Ant http://poj.org/problem?id=1696 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions ...

  5. 安装使用phpStudy在本机配置php运行环境

    前言: php开发的初学者,强烈推荐使用phpStudy集成环境,一方面这个的确很好用(本人电脑安装了jspStudy,可以同时调试php和jsp),另一方面呢,虽然本人是技术控,但对这些繁杂的安装部 ...

  6. 使用maven管理引入jdk1.8

    需要在配置文件settings.xml中加入: <profile> <id>jdk-1.8</id> <activation> <activeBy ...

  7. Canvas游戏计算机图形教程

    TechbrooD   主站 WOW 登录   注册 0首页 1简介 1.1WWW 技术变迁和生态 1.2WWW 学习建议 1.3WWW 互联网基础知识 1.4WWW Web 1.5 WWW Web ...

  8. ubuntu下常用操作

    屏幕截图: 可以用ubuntu自带的截图软件:gnome-screenshot. 该工具截图区域并且复制到剪切板命令为  gnome-screenshot -c -a,可以给该命令添加快捷方式,alt ...

  9. Laravel 上使用 phpexcel的两种方式

    原创 2017年06月24日 20:24:31 1229 文章采集与网上 方式1.使用原生的phpexcel , http://blog.csdn.net/CSwfe/article/details/ ...

  10. 给Array添加去重原型方法

    Array.prototype.unique = function(){ var newArray = []; var oldArray = this; if(oldArray.length<= ...