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 ...
随机推荐
- js对象按某个字段排序
var arr = [ {name:'zopp',age:0}, {name:'gpp',age:18}, {name:'yjj',age:8} ]; function compare(propert ...
- odoo开发笔记 -- 模型字段定义中设置默认值
例如: company_id = fields.Many2one('res.company', string='Company', default=lambda self: self.env['res ...
- Java虚拟机监控命令
熟悉java的人都知道jdk的bin目录中有很多小工具,其中就包括用于监视虚拟机和故障处理的工具,今天就来仔细了解下各个工具的用法 jps JVM Process Status Tool,用于显示指定 ...
- 【EF6学习笔记】(十)处理并发
本篇原文链接:Handling Concurrency Concurrency Conflicts 并发冲突 发生并发冲突很简单,一个用户点开一条数据进行编辑,另外一个用户同时也点开这条数据进行编辑, ...
- DataCleaner(4.5)第二章
Chapter 2. Getting started with DataCleaner desktop Table of Contents |--Installing the desktop appl ...
- 【原创】空中鼠标一DMP欧拉角
正在搞六轴传感器,今天移植了MPU6050的MothionDriver的DMP固件到STM32上了,能够稳定地输出欧拉角(也就是俯仰角.航向角.横滚角)和XYZ三轴加速度值,在电脑的上位机模拟了装置的 ...
- python闯关之路(五)前端开发
一,HTML部分 1,XHTML和HTML有什么区别 HTML是一种基本的WEB网页设计语言,XHTML是一个基于XML的置标语言最主要的不同: XHTML 元素必须被正确地嵌套. XHTML 元素必 ...
- IntelliJ IDEA为类和方法自动添加注释
1.为类添加自动注释模版 File-->Settings-->Editor-->File and Code Templates /** * @author :mmzs * @date ...
- [PHP] php + phpstudy + phpstrom + xdebug + postman开启调试
主体 php + phpstudy + phpstrom + xdebug + postman + vue + chrome 使用的是前后端分离的开发方式,vue 在 webpack 通过代理进行请求 ...
- Keras入门(一)搭建深度神经网络(DNN)解决多分类问题
Keras介绍 Keras是一个开源的高层神经网络API,由纯Python编写而成,其后端可以基于Tensorflow.Theano.MXNet以及CNTK.Keras 为支持快速实验而生,能够把 ...