WordCount作业修改
需求说明
基本需求
功能说明
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作业修改的更多相关文章
- 自动化测试工具(基于WordCount作业)
本自动化测试的程序用于自动化测试WordCount作业,采用Java开发(基于jdk1.8+),基于Maven来管理项目. 支持的语言和开发进度 语言 进度 Java 已测试并投入运行 C++ 开发完 ...
- wordcount作业
搭档:201631062427,201631062627 代码地址:https://gitee.com/oyyyyyy/wordcount 作业地址: 一: 代码互审情况 我们采用的都是c语言的方式完 ...
- WordCount作业提交到FileInputFormat类中split切分算法和host选择算法过程源码分析
参考 FileInputFormat类中split切分算法和host选择算法介绍 以及 Hadoop2.6.0的FileInputFormat的任务切分原理分析(即如何控制FileInputForm ...
- 作业---修改haproxy配置文件
#查询 f=open("C:\\aaaaaaaaaaaaa\\haproxy.txt", "r", encoding="utf-8") ha ...
- 对wordcount单词字母部分的修改
原始代码: int s; s = ch; switch (s) { case 'a':letter[0]++; break; case 'b':letter[1]++; break; case 'c' ...
- 软件测试第二周个人作业:WordCount
github地址:https:/github.com/muzhailong/wc.git 第一次写博客很不容易,也算是一个好的开始吧. 1. 个人作业要求 作业简述:根据WordCount的需求描 ...
- JobClient学习------作业提交与初始化
public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); ...
- MapReduce调度与执行原理之作业提交
前言 :本文旨在理清在Hadoop中一个MapReduce作业(Job)在提交到框架后的整个生命周期过程,权作总结和日后参考,如有问题,请不吝赐教.本文不涉及Hadoop的架构设计,如有兴趣请参考相关 ...
- WordCount结对项目
合作者:201631062124,201631062423 代码地址:https://gitee.com/yryx/WordCount 作业地址:https://edu.cnblogs.com/cam ...
随机推荐
- excel表格中打开可以显示整个表格但是打印却只能打印一个单元格
excel表格中打开可以显示整个表格但是打印却只能打印一个单元格 如下图显示 解决办法 2007 版菜单栏上 ----->页面布局----->打印区域----->取消打印.即可正常. ...
- 8.python面向对象编程
基本概念 Class 类一个类即是对一类拥有相同属性的对象的抽象.蓝图.原型.在类中定义了这些对象的都具备的属性(variables(data)).共同的方法 Object 对象 一个对象即是一个类的 ...
- springBoot(4)---热部署,配置文件使用
热部署,配置文件使用 一.热加载 spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Sprin ...
- Android UI(五)云通讯录项目之联系人列表,带侧滑选择,带搜索框
作者:泥沙砖瓦浆木匠网站:http://blog.csdn.net/jeffli1993个人签名:打算起手不凡写出鸿篇巨作的人,往往坚持不了完成第一章节.交流QQ群:[编程之美 365234583]h ...
- 代理模式(静态代理、JDK动态代理原理分析、CGLIB动态代理)
代理模式 代理模式是设计模式之一,为一个对象提供一个替身或者占位符以控制对这个对象的访问,它给目标对象提供一个代理对象,由代理对象控制对目标对象的访问. 那么为什么要使用代理模式呢? 1.隔离,客户端 ...
- 《用OpenResty搭建高性能服务端》笔记
概要 <用OpenResty搭建高性能服务端>是OpenResty系列课程中的入门课程,主讲人:温铭老师.课程分为10个章节,侧重于OpenResty的基本概念和主要特点的介绍,包括它的指 ...
- Elasticsearch实践(二):搜索
本文以 Elasticsearch 6.2.4为例. 经过前面的基础入门,我们对ES的基本操作也会了.现在来学习ES最强大的部分:全文检索. 准备工作 批量导入数据 先需要准备点数据,然后导入: wg ...
- python使用多线程
threading 模块支持守护线程, 其工作方式是:守护线程一般是一个等待客户端请求服务的服务器. 如果把一个线程设置为守护线程,进程退出时不需要等待这个线程执行完成. 如果主线程准备退出时,不需要 ...
- Mycat - 高可用与负载均衡实现,满满的干货!
前言 开心一刻 和朋友去吃小龙虾,隔壁桌一个小女孩问妈妈:"妈妈,小龙虾回不了家,它妈妈会不会着急?" 她妈妈愣住了,我扒虾的手停下了,这么善良的问题,怎么下得了口.这是老板急忙过 ...
- SHELL脚本--多命令逻辑执行顺序
bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html Linux中可以使用分号“;”.双and号“&& ...