WordCount作业修改

github地址

  • 需求说明

    • 基本需求

    • 功能说明

    • PSP

  • 代码实现

    • 字符总数查询

    • 单词数查询

    • 行数查询

  • 总结

一、需求说明

  1、基本需求

  WordCount的需求可以概括为:对程序设计语言源文件统计字符数、单词数、行数,统计结果以指定格式输出到默认文件中,以及其他扩展功能,并能够快速地处理多个文件。

  2、功能说明

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

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

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

  wc.exe -o outputFile.txt //将结果输出到指定文件outputFile.txt

  3、PSP表格

PSP2.1 PSP阶段 预估耗时(分钟) 实际耗时(分钟)

Planning 计划 10 10

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

Development 开发 180 340

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

· Design Spec · 生成设计文档 5 10

· Design Review · 设计复审 (和同事审核设计文档) 10 15

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

· Design · 具体设计 15 20

· Coding · 具体编码 120 240

· Code Review · 代码复审 5 15

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

Reporting 报告 30 37

· Test Report · 测试报告 10 17

· Size Measurement · 计算工作量 10 10

· Postmortem & Process

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

合计 220 387

二、代码实现

  1、文件中字符数查询实现

    ```
int input_file(File s)
{
try
{
FileReader text = new FileReader(s);//读取文件
int inByte;
int i=0;
do
{
inByte =text.read();//按字节读取文件
if(inByte!=-1)
{
char_arr[i++]=((char)inByte);//将文件中的字符赋予数组
}
} while(inByte!=-1);
text.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//定义长度length,从零开始每次自增1,直到char_arr[i]不为'*',此时length即为字符数
for(length=0;char_arr[length]!='*';length++)
{ }
return length;
}
```

  2、单词数查询功能

    ```
int count_Wsum()
{
int word_sum=0;
int index=0;
for(int i=0;i<length;i++)
{
//此处考虑到英文写作中标点符号后会留一个空格,所以需要将多加的标点符号个数减去
if(char_arr[i]==','||char_arr[i]=='.'||char_arr[i]=='!'||char_arr[i]=='?'||char_arr[i]==';'||char_arr[i]==':')
{
word_sum++;
index++;
}
if(char_arr[i]==' ')
{
word_sum++;
}
}
word_sum-=(index-1);
return word_sum;
} ```

  在实现查询单词数是,我认为如果文件时按照英文写法的话,每个标点符号后会加一个空格,所以按照每出现一次标点符号以及空格后,单词数+1,然后要减去多加的标点数,所以我设置了一个index,故单词总数为word_sum-=(index-1)。

  3、返回行数

    ```
int count_line(File file)
{
BufferedReader br=null;
int line =0;
String str="";
StringBuffer sb=new StringBuffer();
try {
br=new BufferedReader(new FileReader(file));
while((str=br.readLine())!=null)
{
sb.append(str);
line++;
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally
{
if(br!=null)
{
try {
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return line;
}
```

三、总结

这是我第一次使用博客园进行学习,感觉新奇的同时也会觉得烦躁,因为我有时会产生“为什么非要用这东西来进行教学和学习,麻烦”的想法。但是,我想通过博客的方式来进行学习可能会有一种不一样的效果呢也说不定。通过这次作业,我也觉得这样的方式挺新奇的,认真完成作业的话,一定会收益良多。

WordCount作业修改的更多相关文章

  1. 自动化测试工具(基于WordCount作业)

    本自动化测试的程序用于自动化测试WordCount作业,采用Java开发(基于jdk1.8+),基于Maven来管理项目. 支持的语言和开发进度 语言 进度 Java 已测试并投入运行 C++ 开发完 ...

  2. wordcount作业

    搭档:201631062427,201631062627 代码地址:https://gitee.com/oyyyyyy/wordcount 作业地址: 一: 代码互审情况 我们采用的都是c语言的方式完 ...

  3. WordCount作业提交到FileInputFormat类中split切分算法和host选择算法过程源码分析

    参考 FileInputFormat类中split切分算法和host选择算法介绍  以及 Hadoop2.6.0的FileInputFormat的任务切分原理分析(即如何控制FileInputForm ...

  4. 作业---修改haproxy配置文件

    #查询 f=open("C:\\aaaaaaaaaaaaa\\haproxy.txt", "r", encoding="utf-8") ha ...

  5. 对wordcount单词字母部分的修改

    原始代码: int s; s = ch; switch (s) { case 'a':letter[0]++; break; case 'b':letter[1]++; break; case 'c' ...

  6. 软件测试第二周个人作业:WordCount

    github地址:https:/github.com/muzhailong/wc.git 第一次写博客很不容易,也算是一个好的开始吧. 1.   个人作业要求 作业简述:根据WordCount的需求描 ...

  7. JobClient学习------作业提交与初始化

    public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); ...

  8. MapReduce调度与执行原理之作业提交

    前言 :本文旨在理清在Hadoop中一个MapReduce作业(Job)在提交到框架后的整个生命周期过程,权作总结和日后参考,如有问题,请不吝赐教.本文不涉及Hadoop的架构设计,如有兴趣请参考相关 ...

  9. WordCount结对项目

    合作者:201631062124,201631062423 代码地址:https://gitee.com/yryx/WordCount 作业地址:https://edu.cnblogs.com/cam ...

随机推荐

  1. ubuntu16.04 服务器允许远程连接

    ubuntu默认安装了openssh-client,openssh-server需要手动安装. 查看是否安装了ssh服务 apt-cache policy openssh-client openssh ...

  2. VueJs(7)---计算属性和侦听器

    计算属性和侦听器 一. 概述 计算属性 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护.例如: <div id="exampl ...

  3. 缓存日志截取字段上传FTP

    #!/bin/bash awk '{print $3,$4,$5,$6,$9,$11,$12,$14,$15,$18}' /usr/local/tcacheserver/var/log/traffic ...

  4. Mybatis数据源

    在描述mybatis数据源之前,先抛出几个问题,这几个问题都能在本文得到解答 1.mybatis是如何获取到mysql连接的? 2.mybatis的Connection是怎么被创建的? 1.Datas ...

  5. Singly linked list algorithm implemented by Java

    Jeff Lee blog:   http://www.cnblogs.com/Alandre/  (泥沙砖瓦浆木匠),retain the url when reproduced ! Thanks ...

  6. struts转发和重定向action

    1.转发(服务器端跳转) <action name="rederTo"> <result type="chain">hello</ ...

  7. Hibernate学习(九)———— 二级缓存和事务级别详讲

    序言 这算是hibernate的最后一篇文章了,下一系列会讲解Struts2的东西,然后说完Struts2,在到Spring,然后在写一个SSH如何整合的案例.之后就会在去讲SSM,在之后我自己的个人 ...

  8. 前端XSS相关整理

    前端安全方面,主要需要关注 XSS(跨站脚本攻击 Cross-site scripting) 和 CSRF(跨站请求伪造 Cross-site request forgery) 当然了,也不是说要忽略 ...

  9. Go基础系列:Go实现工作池的两种方式

    worker pool简介 worker pool其实就是线程池thread pool.对于go来说,直接使用的是goroutine而非线程,不过这里仍然以线程来解释线程池. 在线程池模型中,有2个队 ...

  10. Centos 7.6配置nginx反向代理负载均衡集群

    一,实验介绍 利用三台centos7虚拟机搭建简单的nginx反向代理负载集群, 三台虚拟机地址及功能介绍 192.168.2.76    nginx负载均衡器 192.168.2.82    web ...