结对编程第4小组-词频统计

(项目源代码路径:https://github.com/miaozhongfeng/PairProject2018.git)

一、PSP表格预估时间花费


PSP2.1


Personal Software Process Stages


预估耗时(分钟)


实际耗时(分钟)


Planning


计划

   

· Estimate


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


30


30


Development


开发

   

· Analysis


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


30


30


· Design Spec


· 生成设计文档


15


10


· Design Review


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


15


10


· Coding Standard


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


15


10


· Design


· 具体设计


30


50


· Coding


· 具体编码


60


110


· Code Review


· 代码复审


30


60


· Test


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


30


50


Reporting


报告

   

· Test Report


· 测试报告


15


10


· Size Measurement


· 计算工作量


15


10


· Postmortem & Process Improvement Plan


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


15


15

 
合计


300


395

二、计算模块接口的设计与实现过程

根据基本需求进行分析,需要实现统计文本总字符数、统计特定单词数、统计各单词出现频率并写入文件。所以我们小组在设计结构时设计了3个类:CountStr、CountWord、WordsRate分别实现3个模块功能。

(1)在CountStr类中,设计了coutAllNumber(char*inputfilename)方法,用于文本字符统计。在实现该功能时,使用open()方法打开文本,在eof()返回值为false时统计变量自增。

(2)在CountWord类中,设计了countWord(char*inputfile)方法,用于统计文本中单词个数。在该函数中,使用String类型变量接收读取的字符(包括空格),使用vector容器存放单词,最终返回容器大小。

(3)在WordsRate类中,设计了display_map(map<string, int> &wmap)方法,用于统计词频并写入文本,采用Map映射方式,其中排序使用了sort()函数实现。但是由于sort()函数无法直接对map排序,需要先将map用vector容器接收,在用sort()对vector容器的内容进行排序,排序参数为cmp,定义为Value值按从大到小排序。关键代码如下:

  map<string, int>::const_iterator map_it;
  map<string, int>::iterator iter_it;
  vector<PAIR>vec_it;
  for (iter_it = wmap.begin(); iter_it != wmap.end();iter_it++)
    {
        vec_it.push_back(*iter_it);
    }
   sort(vec_it.begin(), vec_it.end(), cmp());

三、性能分析

通过性能分析工具得出耗时最大的函数为countword(),主要耗费在读取字符和放入容器的语句上,如下图:

四、结对编程总结

结对编程的优点是:一个人的思维有限,结对编程双方可以相互学习,相互提高,集两人之智商讨问题解决方案;结对编程的缺点是双方的编程习惯不同,在少数问题上就会产生1+1<2的情形,降低了效率。苗助教的优点:接受新知识能力快;对库函数的运用熟练; 善于总结问题。

原文地址:https://www.cnblogs.com/mzfeng/p/9286829.html

时间: 2024-10-18 15:01:05

结对编程第4小组-词频统计的相关文章

结对编程-第9小组

1.Fork仓库的Github项目地址: https://github.com/linlkg/PairProject2018 2.预估各个模块开发耗费的时间: PSP2.1 PersonalSoftware Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 20 20 -Estimate -估计这个任务需要多少时间 20 20 Development 开发 230 303 -Analysis -需求分析(包括学习新技术) 20 25 -Design Spe

结对编程心得

结对编程是我第一次听说到的一个编程方式,结对编程就是两个人组成一个小队伍进行编程,是一种新的编程思想.结对编程的优点有以下这几点第一点,就是思考问题的角度,一个人思考问题肯定没有两个人思考问题来的明白,看的清楚.当一个东西你理解了,并且还能清楚的表达的时候,那么思路会更清晰.第二点,就是加强交流,使得知识能够更快的再整个团队传播,使得代码全员共享.第三点就是所有的代码都会有备份,防止丢失.但结对编程也是有缺点的,首先是编码的效率低下问题.接下来是结对对象的交换,因为结对编程是在一个小组成员中进行

第二周结对编程作业——词频统计

本周作业是结对编写一个词频统计的程序,我们组是我(欧阳思琪)和贺晋飞同学共同完成这项任务.在仔细阅读了要求之后,我们组对程序编程进行了讨论.由于语言可以不必局限于要求中的C.C++,我们便考虑JAVA或python,两者各有优缺点,JAVA写起来比较繁重,而基于以往用python处理NLP相关项目的经验觉得python较为简单,但觉得在简单要求下,使用JAVA的运行速度明显更快,所以我们选择使用JAVA来完成本次作业. 分工:欧阳思琪 代码编写与博客编写 贺晋飞   代码审查与代码测试 实际:由

作业4:结对编程—词频统计

结对对象:石莉静 博客地址:http://www.cnblogs.com/shilijing/ Github地址:https://github.com/cchenhui/-4 贡献比例:1:1 结对编程照片: [必做 2] 读取小文本文件A_Tale_of_Two_Cities.txt 或者 大文本文件Gone_with_the_wind.txt,统计某一指定单词在该文本文件中出现的频率. 源程序: #include <iostream> #include <vector> #in

结对编程——词频统计 2

[必做 2] 读取小文本文件A_Tale_of_Two_Cities.txt 或者 大文本文件Gone_with_the_wind.txt,统计某一指定单词在该文本文件中出现的频率. 命令行格式: 提示符> Myapp.exe -f filename.txt -w word (PS:C++ 程序,Java 程序输出方式类似) 解释: 选项 -f 表示打开某一文件(filename.txt) 选项 -w 表示统计其后单词(word)在打开的文件(filename.txt)中的频率 结对伙伴:陈晖,

结对编程__词频统计

搭档:施蓓蓓 源码:Github 贡献比例:50% 结对编程照片: 1.要求     基于作业3的结果,读取一个较小的文本文件A_Tale_of_Two_Cities.txt,统计该文件中的单词的频率,并将统计结果输出到当前目录下的 Result1.txt 文件 2.主程序 void main(void) { char b[30], Str[30000];//定义单词数组,字符串数组 ifstream infile("A_Tale_of_Two_Cities.txt"); //读入文件

结对&amp;词频统计

结对编程 Pathner 濮成林(博客:http://www.cnblogs.com/charliePU/) 1.词频统计 环境依赖: 开发环境.myeclipse 2013, jdk1.7.0_04, echart.mini.js, tomcat 7.0. 运行环境.tomcat 7.0, jre7. 对濮成林词频统计进行需求的再讨论 确定输入:TXT格式纯英文文档大小不超过10M 分析结果排序:按顺序输出前N个 结果显示内容:显示内容在原有基础上增加排序结果显示.增加文章标题显示.修改横坐标

结对项目 - 词频统计

目的与要求 代码复审练习 结对练习 编写单元测试 基于作业3的结果,读取一个较小的文本文件A_Tale_of_Two_Cities.txt,统计该文件中的单词的频率,并将统计结果输出到当前目录下的 Result1.txt 文件. (第一阶段初稿完成该要求) 命令行格式: 提示符> Myapp.exe -f filename.txt > Result.txt (PS:C++ 程序,Java 程序输出方式类似) filename.txt 为前面下载的文件名. 解释: 选项 -f 表示后面跟文件名

第二次结对编程-字词短语统计

第二次结对编程项目总结 第二次结对项目(词频统计要求网址): https://www.cnblogs.com/xinz/archive/2011/11/27/2265000.html 项目网址: https://github.com/QishenDatui/WordFrequency 基本要求 详细要求位于这里. 简要概括:根据输入的命令行参数,对文本中的字符进行对应的统计,例如使用-c命令统计字符出现次数,利用-f统计单词出现次数等等.项目一共分为5个步骤,4个必做项和一个附加项.分别为统计字