项目要求:

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

  • 具体功能

    • -c 返回文件字符数
    • -w 返回词的数目
    • -l 返回行数
  • 扩展功能
    • -s 递归处理目录下符合条件的文件
    • -a 返回更复杂的数据(代码行 / 空行 / 注释行)
  • 高级功能
    • -x 命令行输入-x参数,程序显示图形界面,用户可以通过界面选取单个文件,程序就会显示文件的字符数、行数等全部统计信息。

解题思路描述:
看到这个题目,我首先想到的就是利用java里面的IO流,要统计文件中的行数,可以选择利用BufferReader来按行读出文件中的内容,然后设置一个整型变量来统计行数,直到整个文件全部读完;统计字符数可以通过将读出的文件内容变成字符串的形式,然后计算字符串的长度及为字符的数量。至于统计单词的数量这个功能,每个人大概都不一样吧,因为每个人对单词的定义都不一样,究竟怎么样才算一个单词,每个人有每个人的看法,正如那句老话,一千个人,就有一千个哈姆雷特。我对单词的定义是利用空格以及换行来界定单词,只要是连续的字符,就算一个单词。然后利用字符串的分割,返回一个数组,单词数量就等于数组的长度。这样,就粗略的实现了基本的三个功能。
设计实现过程:
这个项目因为比较简单,所以我只写了了一个类,里面有四个方法,分别是统计字符数、单词数、行数的方法及检测文件是否存在并执行统计的方法;main方法就是调用执行方法,作为一个程序入口的存在。
代码说明:
主要的代码部分就是三个统计方法:
(1)统计行数的方法 c()
设计思路:使用BufferedReader(),按行读入,并将读到的内容赋值给字符串"s",之后计算字符串的长度即为字符的数量。
具体实现:

(2)统计单词的方法 w()
设计思路:使用BufferedReader(),按行读入,每读完一行就将内容赋值给字符串"s"并加一个换行符,然后进行字符串的分割,计算分割后返回数组的长度。
具体实现:

(3)统计行数的方法 l()
设计思路:这个方法相对来说比较简单,直接使用BufferedReader()按行读入,每次读入时进行计数,直到全部的行全部读完。
具体实现:

除了以上的统计方法,还有一个fileExist()方法,这个方法是对用户的输入的文件路径进行判断,若文件存在,则运行三个统计方法,若不存在,则报错。

测试运行:

测试文件:

测试结果:

各部分预计耗费时间和实际耗费时间:

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

30

50

· Estimate

· 估计这个任务需要多少时间

50

70

Development

开发

600

800

· Analysis

· 需求分析 (包括学习新技术)

180

200

· Design Spec

· 生成设计文档

30

60

· Design Review

· 设计复审 (和同事审核设计文档)

120

150

· Coding Standard

· 代码规范 (为目前的开发制定合适的规范)

60

50

· Design

· 具体设计

60

80

· Coding

· 具体编码

180

200

· Code Review

· 代码复审

30

50

· Test

· 测试(自我测试,修改代码,提交修改)

50

30

Reporting

报告

60

90

· Test Report

· 测试报告

30

60

· Size Measurement

· 计算工作量

20

30

· Postmortem & Process Improvement Plan

· 事后总结, 并提出过程改进计划

20

30

合计

1520

1950

 

项目小结:

这次的项目只实现了基本的功能,因为好久没有使用Java编程,对java的相关知识有点遗忘,通过这次的项目,又重新拿起书本,复习了一遍java的相关知识,对Java有了新的理解,也算收获良多。这次项目的实现起来并不复杂,主要是IO流与字符串的种种方法,采用控制台输出的方式显示结果,并没有专门设计图形界面。

虽然项目不是很复杂,但是体验了如何从零开始做一个项目,并不只是简单的编程,更包括对测试,估计项目耗时的,对软件编写有了新的认识。同时,还学会了使用GitHub来记录项目开发过程,这是之前没有接触过的,也算是一个重大收获。

软工作业 wc-java的更多相关文章

  1. 软工作业1—java实现wc.exe

    github项目地址 https://github.com/liyizhu/wc.exe WC 项目要求 基本功能列表: wc.exe -c file.c     //返回文件 file.c 的字符数 ...

  2. 软工作业(JAVA)

    github传送门:https://github.com/hhg52516/WC.git 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序 ...

  3. 软工作业-wc(Python实现)

    GitHub地址:GitHub PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划  30  40 · Esti ...

  4. 软工作业-Wc

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

  5. 软工作业-----Alpha版本第一周小结

            软工作业-----Alpha版本第一周小结   Part1.第一周周计划记录 姓名 学号 周前计划安排 每周工作记录 自我打分 yrz(队长) 1417 1.进行任务分析 2.任务分配 ...

  6. [软工作业]-软件案例分析-CSDN

    [软工作业]-软件案例分析-CSDN(app) 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人博客作业-软件案例分析 我在这个课程的目标是 ...

  7. 【软工作业&思考】关于软工的一些概念性理解暨第一次阅读作业

    概述 项目 内容 本次作业所属课程 2019BUAA软件工程 周二班 本次作业要求 第1次个人作业当然,比这个更重要百倍的还是实实在在的思考,这也是标题如此命名的原因 我在本课程的目标 在原有实践经验 ...

  8. 软工作业No.3--团队作业:甜美女孩出击!

    队名:甜美女孩 队员包括: 姓名 学号 身份 曾祎祺 3216005211 队长 邓画月 3216005212 队员 何颖琪 3216005213 队员 梁沛诗 3216005214 队员 梁子君 3 ...

  9. BUAA2020软工作业——提问回顾与个人总结

    项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 提问回顾与个人总结 我在这个课程的目标是 进一步提高自己的编码能力,工程能力 这个作业在哪个具体方 ...

  10. 软工作业No.1。Java实现WC.exe

    网址:https://github.com/a249970271/WC WC 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序,模仿已有w ...

随机推荐

  1. 支付宝小程序开发——H5跳转到小程序(获取小程序页面的链接)

    前言: 这个问题支付宝小程序官方文档并没有专门说明,钉钉群的官方技术支持给了个开发者社区的帖子,详见:如何跳转小程序. 如果配置的页面没有参数还好,不会出问题,如果有参数,很可能配出来的链接无法正常获 ...

  2. 【Vegas原创】MAC电脑升级系统无法开机的终极解决办法

    MAC OS升级Mojave .Catalina ,老一代的MacBook会产生一种情况:无法开机.按电源键没反应,会有间断性的滋滋的声音,屏幕都不亮. 终极解决方法,就一个字:等. 我升级Mojav ...

  3. Docker使用 - 容器

    查看容器 命令:docker  ps  [options] options有: -a:查看所有容器,包含不在运行中的(不带-a参数,是只显示运行中的容器) -q:只显示容器ID -s:多加一列来显示总 ...

  4. spark配置文件

    spark-env.sh export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoopexport SPARK_DIST_CLASSPATH=$(hadoop clas ...

  5. docker创建mysql5.7.22并配置主从

    debian系统 安装docker (参考网址:https://cloud.tencent.com/developer/article/1360720) 1.更新现有的包列表 sudo apt upd ...

  6. css3网站响应式写法

    css3响应式写法因为media不支持ie9以下的浏览器 所有要加个判断<pre> <!-- 全部通用的 --><link rel="stylesheet&qu ...

  7. npm与yarn命令

    npm 1. 查看npm版本 node -v npm -v 2. 更新npm至最新版 npm install npm@latest -g 3. npm install:安装依赖 # 在本地node_m ...

  8. dubbo调用服务时,利用zookeeper实现本地动态负载均衡

    利用了zookeeper的临时节点的特点,生产者将自己的服务信息注册到zookeeper当中,消费者去zookeeper当中取出服务信息的集合,本地实现负载均衡 public class TestCr ...

  9. 手撕面试官系列(十一):BAT面试必备之常问85题

    JVM专题 (面试题+答案领取方式见侧边栏)  Java 类加载过程? 描述一下 JVM 加载 Class 文件的原理机制? Java 内存分配. GC 是什么? 为什么要有 GC? 简述 Java ...

  10. 洛谷--P1028 数的计算(递推)

    题意:链接:https://www.luogu.org/problem/P1028 先输入一个自然数n (n≤1000) , 然后对此自然数按照如下方法进行处理: 不作任何处理; 在它的左边加上一个自 ...