项目相关要求

项目地址:https://github.com/xiawork/wcwork

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

具体功能要求:

基本功能列表:

  wc.exe -c file.c //返回文件 file.c 的字符数

  wc.exe -w file.c //返回文件 file.c 的词的数目

  wc.exe -l file.c //返回文件 file.c 的行数

扩展功能:

  -s 递归处理目录下符合条件的文件。

  -a 返回更复杂的数据(代码行 / 空行 / 注释行)。

空行:本行全部是空格或格式控制字符,如果包括代码,则只有不超过一个可显示的字符,例如“{”。

代码行:本行包括多于一个字符的代码。

注释行:本行不是代码行,并且本行包括注释。一个有趣的例子是有些程序员会在单字符后面加注释:

高级功能:

  -x 参数。这个参数单独使用。如果命令行有这个参数,则程序会显示图形界面,用户可以通过界面选取单个文件,程序就会显示文件的字符数、行数等全部统计信息。

  返回当前目录及子目录中所有*.c 文件的代码行数、空行数、注释行数。

PSP

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

解题思路:

程序首先通过编写控制台,通过输入的文件路径获得文件,然后通过BuffeInputStream和FileReader对文件进行操作,获得文件具体对象,

通过这个对象给予我们的内容,在另一个方法类里调用相应的方法创建获取字符数,单词数,总行数的方法readcharacter(),readword(),readline(),

然后通过main函数运行,得出所要结果。

困难和解决

在设计方法时,使用正则表达式不准确,经常出现格式错误,后面通过大量搜集查找相关问题,初步解决了格式出错的问题

在文件目录输入过程中,忘记了控制台的编写,导致后面常出现编译成功,但是没有文件输入这功能

在文件调用过程中不熟悉具体内涵,对一些操作总是不明了

设计思路

本项目包含两个类,一个是包含主方法的wc类,一个是包含方法功能的fuctionn类。

Wc的main函数表示

public static void main(String[] args) throws IOException {
File file=fuction.getFile(); //获取文件
BufferedInputStream bis=new BufferedInputStream(new FileInputStream(file)); //读取文件
FileReader reader = new FileReader(file);
int fileLen = (int)file.length();
char[] chars = new char[fileLen];
reader.read(chars);
String txt = String.valueOf(chars);
System.out.println("请输入命令:");
Scanner sc=new Scanner(System.in); //创建键盘录入对象
String line = sc.nextLine(); //具体输入实例对象
switch(line) {
case"-l":
fuction.readline(txt);
break;
case"-w":
fuction.readword(txt);
break;
case"-c":
fuction.readcharacter(txt);
break;
}
bis.close(); //关流释放资源
}

fuction类中的getfile()方法

public static File getFile() {
System.out.println("请录入一个文件路径:");
Scanner sc=new Scanner(System.in); //创建键盘录入对象
while(true) {
String line=sc.nextLine(); // 接收键盘录入的路径
File file=new File(line); //封装成File对象,对其进行判断
if(!file.exists()) {
System.out.println("您录入的文件路径不存在,请重新录入");
}else if(file.isDirectory()) {
System.out.println("你录入的是文件夹路径,请重新录入");
}else {
return file;
}
}
}

fuction中的readline()方法

用正则表达式,将文件内容分割成一个个的数组,再通过对数组的操作得到想要的结果

public static void readline(String file){
String[] array = file.split("\r");
int len = array.length;
System.out.print("代码行数为:" + len);
}

fuction中的readword()方法

public static void readword(String file) {
int i;
String[] array = file.split("\\s+");
int len = array.length;
System.out.print("单词数为:" + len);
}

fuction中的readcharacter()方法

 public static void readcharacter(String file) {
int i;
String[] array = file.split("\\w");
int len = array.length;
System.out.print("字符数为:" + len);
}

测试结果







代码覆盖率

总结

通过这次项目的练习,我发现我对编写过程的不熟悉,编程语言的基础很薄弱,有很多的编程常识都不清楚,很多东西都要学习,很多以前学习过的基本内容也要重新学习一遍,第一次写项目,对这个过程很不熟悉,也因此花费了许多不必要的时间,所幸通过身边同学们的帮助,让我的项目进程有所推进,而在这个过程中,我也学习到了很多的知识,对项目开发这类多少也有了些许的经验。以后我也也需要多多努力,尽力的提升自己。

软件工程:java实现wc项目基本功能的更多相关文章

  1. java实现WC项目

    个人项目:WC   wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语言源文件的字符数.单 ...

  2. 软件工程:Java实现WC.exe基本功能

    项目相关要求 GitHub地址:https://github.com/3216004716/WC 实现一个统计程序,它能正确统计程序文件中的字符数.单词数.行数,以及还具备其他扩展功能,并能够快速地处 ...

  3. 软件工程第三个程序:“WC项目” —— 文件信息统计(Word Count ) 命令行程序

    软件工程第三个程序:“WC项目” —— 文件信息统计(Word Count ) 命令行程序 格式:wc.exe [parameter][filename] 在[parameter]中,用户通过输入参数 ...

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

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

  5. 软件工程wc项目,基于py

    ###WC项目文件链接:https://github.com/ILTHEW/wc.git 个人项目:WC 实践是理论的基础和验证标准,希望读者贯彻"做中学"的思想,动手实现下面的项 ...

  6. 个人项目:Java实现WC

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

  7. JAVA实现WC.exe功能

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

  8. Java实现WC基本功能

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

  9. WC的基本功能实现.(Java)

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

随机推荐

  1. hibernate框架(1)---Hibernate增删改查

    Hibernate增删改查 1.首先我们要知道什么是Hibernate Hibernate是一个轻量级的ORMapping对象.主要用来实现Java和数据库表之间的映射,除此之外还提供数据查询和数据获 ...

  2. Kubernetes 中的核心组件与基本对象概述

    Kubernetes 是 Google 基于 Borg 开源的容器编排调度,用于管理容器集群自动化部署.扩容以及运维的开源平台.作为云原生计算基金会 CNCF(Cloud Native Computi ...

  3. Linux编程 18 安装软件程序(yum工具对软件包安装,删除,更新介绍)

    一.   概述 本篇介绍在linux上见到的各种包管理系统(package management system,PMS)用来进行软件安装,管理,删除的命令行工具.PMS是利用一个数据库来记录各种相关内 ...

  4. 介绍 JSON(摘自网络)

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Programming Lan ...

  5. JSON数据从MongoDB迁移到MaxCompute最佳实践

    数据及账号准备 首先您需要将数据上传至您的MongoDB数据库.本例中使用阿里云的云数据库 MongoDB 版,网络类型为VPC(需申请公网地址,否则无法与DataWorks默认资源组互通),测试数据 ...

  6. shell中$后加引号有什么用($"string"和$'string')

    bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 有些时候在某些服务管理脚本中看到$"$string& ...

  7. python安装第三方库的最简单方式

    一.准备工作 (只做一次准备工作,以后都会很方便) 1. 安装pip (1)下载pip到D:\download pip下载地址:https://pypi.python.org/pypi/pip#dow ...

  8. javascript小实例,移动端页面中的拖拽

    上文说到,想将移动端的拖拽说一说,那现在趁有时间,就将这个福利文带来了,哈哈! 在我还不知道怎么做移动端的手势操作的时候,我觉得这TM实在是太难了,这是多么高深的学问啊,手势操作耶,上滑下滑左滑右滑的 ...

  9. 结构型---外观模式(Facade Pattern)

    定义 外观模式提供了一个统一的接口,用来访问子系统中的一群接口.外观定义了一个高层接口,让子系统更容易使用.使用外观模式时,我们创建了一个统一的类,用来包装子系统中一个或多个复杂的类,客户端可以直接通 ...

  10. Linux服务器GlashFish的Domain管理

    1.本文内容 Glassfish(V3.1)的Domain创建,删除,登陆,部署等 Linux客户端工具: SecureCRTPortable和 WinSCP (请自行下载) 2.1 新建Domain ...