github项目传送门:https://github.com/zzh010/My-wc

一、WC 项目要求

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

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

wc.exe [parameter] [file_name]

基本功能列表:

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

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

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

二、PSP开发耗时

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

60

80

· Estimate

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

40

40

Development

开发

200

250

· Analysis

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

60

60

· Design Spec

· 生成设计文档

60

60

· Design Review

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

60

60

· Coding Standard

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

40

40

· Design

· 具体设计

60

60

· Coding

· 具体编码

120

120

· Code Review

· 代码复审

60

60

· Test

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

40

40

Reporting

报告

30

30

· Test Report

· 测试报告

30

40

· Size Measurement

· 计算工作量

30

30

· Postmortem & Process Improvement Plan

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

20

20

合计

910

990

三、设计实现

readLine每次读取一行

countChar += s.length()  实现字符个数的统计

countword += s.split(" ").length  split() 方法用于把一个字符串分割成字符串数组,实现单词个数的统计

countline++  通过按行读取,所以每次增加一即可计算出行的数目

四、关键代码

public class wordcounter {

public static void main(String[] args) throws Exception {

  Scanner input = new Scanner(System.in);
  System.out.println("please input path:");
  String path = input.next();
  int countChar = 0;
  int countword = 0;
  int countline = 0;
  InputStreamReader isr = new InputStreamReader(new FileInputStream(path));
 
Bufferedreader br = new BufferedReader(isr);   while(br.read()!=-1)
 
{
   String s = br.readLine();
   countChar += s.length();
   countword += s.split(" ").length;
   countline++;
  }
  isr.close();
  System.out.println("char cont "+countChar);
  System.out.println("word count "+countword );
  System.out.println("line count "+countline); 
  }
}

五、测试运行

测试文档

测试结果

六 、项目小结

通过本次作业,我了解到了软件工程设计的主要流程和要点,了解到前期对于项目的分析在整个设计的过程中是非常重要的,由于之前对java知识掌握得不够,导致本次作业进度做得比较慢。但是这次作业也重新让我回顾了java知识,对我以后的项目开发起到较大的帮助。本次项目仍有没能实现的扩展功能,希望能够在接下来的过程中不断完善。

软工作业WordCount的更多相关文章

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

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

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

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

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

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

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

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

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

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

  6. 软工作业NO.2小学生线上杨永信——四则运算题目生成

    项目题目:实现一个自动生成小学四则运算题目的命令行程序 github地址:https://github.com/a249970271/Formula 驾驶员:梁沛诗 副驾驶:曾祎祺 项目说明 自然数: ...

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

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

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

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

  9. BUAA2020软工作业(五)——软件案例分析

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

随机推荐

  1. Use the dkms from EPEL when install CUDA Toolkits on CentOS

    ###Use the dkms from EPEL. yum install epel-release yum install dkms # download the rpm from the NVi ...

  2. 使用Collections类对 集合排序

    对Set<Object>集合进行排序 根据类型的某一个属性去排序 public Set<School> sortByValue(Set<School> set){ ...

  3. FIR滤波器相关解释

    LTI(Linear Time-Invariant) 线性时不变: 线性时不变系统是根据系统输入和输出是否具有线性关系来定义的.满足叠加原理的系统具有线性特性.线性满足y=kx函数. 根据系统的输入和 ...

  4. java代码从键盘输入n的值,计算1+1/2+1/3+...+1/n的值,,

    总结:谢谢陈勇老师.很棒的指导.超有爱. 总是不思考++++如内存的分析.堆和栈.堆内存里对象,字符串,栈里基本数据类型 来龙去脉,属性方法的调用,都不是很理解.... package com.c2; ...

  5. 复制书稿(book) (二分,贪心+dp)

    复制书稿(book) 时间限制: 1 Sec  内存限制: 128 MB提交: 3  解决: 1[提交][状态][讨论版][命题人:quanxing] 题目描述 现在要把m本有顺序的书分给k个人复制( ...

  6. mysql表的增删改查

    一.表介绍 表相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称为表的字段 id,name,qq,age称为字段,其余的,一行内容称为一条记录 二.创建表 cr ...

  7. 0004-程序流程2之ui-router大意

    按照传统的操作方式,一般是点击某个按钮或者某个菜单项,我们将页面通过指定URL的方式跳转, 在HTML中,使用的是传统的a标签的href属性作跳转,在使用ui-router的情况下,我们对一个按钮 添 ...

  8. java成神之——数值操作BigDecimal,BigInteger,Random,SecureRandom

    数值操作 数值新特性 包装类 浮点 BigDecimal BigInteger 数值本地化 随机数 假随机数 真随机数 播种 结语 数值操作 数值新特性 123_456 等价于 123456,增加可读 ...

  9. C#使用protobuf

    C# protobuf的使用方法 通过.proto文件导出C#支持的.cs类文件 protocolbuffer(以下简称PB)是google 的一种数据交换的格式,它独立于语言,独立于平台.googl ...

  10. JS判断IE,FF,Opera,Safari等浏览器类型

    第一种,只区分浏览器,不考虑版本 function myBrowser(){ var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串 var ...