软件工程:java实现wc项目基本功能
项目相关要求
项目地址: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项目基本功能的更多相关文章
- java实现WC项目
个人项目:WC wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语言源文件的字符数.单 ...
- 软件工程:Java实现WC.exe基本功能
项目相关要求 GitHub地址:https://github.com/3216004716/WC 实现一个统计程序,它能正确统计程序文件中的字符数.单词数.行数,以及还具备其他扩展功能,并能够快速地处 ...
- 软件工程第三个程序:“WC项目” —— 文件信息统计(Word Count ) 命令行程序
软件工程第三个程序:“WC项目” —— 文件信息统计(Word Count ) 命令行程序 格式:wc.exe [parameter][filename] 在[parameter]中,用户通过输入参数 ...
- 小白のjava实现wc.exe功能
GitHub地址 项目完成情况 基本功能列表(已实现) wc.exe -c file.c //返回文件 file.c 的字符数 wc.exe -w file.c //返回文件 file. ...
- 软件工程wc项目,基于py
###WC项目文件链接:https://github.com/ILTHEW/wc.git 个人项目:WC 实践是理论的基础和验证标准,希望读者贯彻"做中学"的思想,动手实现下面的项 ...
- 个人项目:Java实现WC
Java实现WC Github项目地址:https://github.com/auxshaw/WC 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个 ...
- JAVA实现WC.exe功能
项目要求 实现一个统计程序,它能正确统计程序文件中的字符数.单词数.行数,以及还具备其他扩展功能,并能够快速地处理多个文件. 具体功能要求: 程序处理用户需求的模式为: wc.exe [paramet ...
- Java实现WC基本功能
GitHub仓库:https://github.com/douyazai/WCbase 一.WC 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命 ...
- WC的基本功能实现.(Java)
我的GitHub地址:https://github.com/Yuetao1219/lessons WC 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写 ...
随机推荐
- leetcode — sort-colors
import java.util.Arrays; /** * Source : https://oj.leetcode.com/problems/sort-colors/ * * * Given an ...
- win32线程
win32线程 一丶什么是线程 在windows中常听到的就是线程.多线程.啊什么的. 这里介绍一下什么是线程. 1.线程是附属在进程中的一个执行实体.简而言之就是执行代码的. 2.每个进程至少有一个 ...
- Java并发编程-AbstractQueuedSynchronizer源码分析
简介 提供了一个基于FIFO队列,可以用于构建锁或者其他相关同步装置的基础框架.该同步器(以下简称同步器)利用了一个int来表示状态,期望它能够成为实现大部分同步需求的基础.使用的方法是继承,子类通过 ...
- jpa的查询语法
- IntelliJ IDEA快捷键与使用小技巧
IntelliJ Idea 常用快捷键列表 修改方法如下: 点击 文件菜单(File) –> 点击 设置(Settings… Ctrl+Alt+S), –> 打开设置对话框. 在左侧的导航 ...
- iOS -数据持久化方式-以真实项目讲解
前面已经讲解了SQLite,FMDB以及CoreData的基本操作和代码讲解(CoreData也在不断学习中,上篇博客也会不断更新中).本篇我们将讲述在实际开发中,所使用的iOS数据持久化的方式以及怎 ...
- 解码 id_token
简介 id_token是一个特殊的token,在Microsoft Graph的认证和授权过程中颁发,它包含了已认证用户的一些信息.本文将介绍如何通过实例理解id_token,并且演示了如何解码. 准 ...
- Winform杂项
1.控件右键属性:ContextMenuStrip,设置菜单 2.编辑代码:this.treeView1.Nodes.Remove(this.treeView1.SelectedNode);//获取树 ...
- axios 中文文档(转载)
axios中文文档 转载来源:https://www.jianshu.com/p/7a9fbcbb1114 原始出处:lewis1990@amoy axios 基于promise用于浏览器和node. ...
- Git中的"pull request"真正比较的是什么?
前言 利用git版本控制工具时,我们通常会从主分支拉出新分支进行开发,开发完成后创建pr(也就是pull request),让其他小伙伴帮忙review,确定代码没有问题后再将新分支合并到主分支上.但 ...