关键词:
实验要求
- 对源文件(*.txt,*.cpp,*.h,*.cs,*.html,*.js,*.java,*.py,*.php等,文件夹内的所有文件)统计字符数、单词数、行数、词频,统计结果以指定格式输出到默认文件中,以及其他扩展功能,并能够快速地处理多个文件。
- 使用性能测试工具进行分析,找到性能的瓶颈并改进
- 对代码进行质量分析,消除所有警告
- 设计10个测试样例用于测试,确保程序正常运行(例如:空文件,只包含一个词的文件,只有一行的文件,典型文件等等)
- 使用Github进行代码管理
- 撰写博客
前期准备
需求分析
本次作业要求对任意文件或者特定目录下所有文件中的字符、单词、词组做相应的统计分析,并将统计结果输出到result文件中。其中主要有以下需要特别注意的:
- 质量要求高,要求使用VS分析热行,提高程序性能,并且要做到没有“警告”;
- 要求跨平台;
- 甲方的要求很“反人类”,不容易理解;
- 博客的撰写、作业进程的记录与分析等。
代码规范
VS会自动换行,加空格之类的,在此基础上根据我个人的习惯,结合之前看的一些书,制定了以下规范:
- 变量的定义,如果涉及到2个单词,第一个单词首字母大写,第二个单词首字母小写;
- 对于每个代码块,使用 4 空格或等长的 Tab 缩进;
-
定义变量不同行;
花括号独占一行; -
不应该有两个连续的空行;
-
main
函数的返回值类型必须是int
,可以省略return 0;
传参时,应该根据实际需要使用「引用」、「
const
引用」和「值传递」,比如定义bool cmp的时候一定要使用const;-
应该尽量少使用全局变量。
PSP表格----随着进度会随时更新
PSP2.1 |
任务内容 |
计划完成需要的时间(min) |
实际完成需要的时间(min) |
Planning |
计划 |
30 |
30 |
Estimate |
估计这个任务需要多少时间,并规划大致工作步骤 |
30 |
30 |
Development |
开发 |
650 |
- |
Analysis |
需求分析 (包括学习新技术) |
0 |
0 |
Design Spec |
生成设计文档 |
30 |
- |
Design Review |
设计复审 (和同事审核设计文档) |
10 |
- |
Coding Standard |
代码规范 (为目前的开发制定合适的规范) |
20 |
20 |
Design |
具体设计 |
40 |
40 |
Coding |
具体编码 |
400 |
- |
Code Review |
代码复审 |
100 |
- |
est |
测试(自我测试,修改代码,提交修改) |
50 |
- |
Reporting |
报告 |
240 |
- |
Test Report |
测试报告 |
60 |
- |
Size Measurement |
计算工作量 |
30 |
- |
Postmortem & Process Improvement Plan |
事后总结 ,并提出过程改进计划 |
150 |
- |
Summary |
合计 |
920 |
- |
设计思路
- 根据输入的目录或文件名将所有的文件路径以及文件夹保存在vector<string>,对每个文件依次进行统计。
- 将每个文件的字符流读入一个string,从头到尾进行处理。
- 单词、词组信息利用C++中的unordered map实现。定义结构体strint,存储字典序最小的str以及对应的频率。对于单词来说,采用unordered_map<string, strint> Wordfre,其中第一个str是去除了单词后缀数字并且全部转化为小写字母的串,便于hash。对于词组来说,采用数据结构unordered_map<string, int> Phrasefre来存储,其中string是2个单词的连接,其中用 _来划分。词组在输出时,拆分,利用Wordfre中的信息更新字母的大小写信息。
- 判断统计单词的实现如下:依次读取string的字符,结合已经输入的字符的信息,判断能否成词。细节见代码。一旦成词,清空之前已经输入的信息。
- 判断统计词组的实现如下:结合当前的单词,和上一次的单词Lastword结合成为词组
- 关于Top10单词的获得, 这里采用C++的优先队列,队列维持出现最频繁的10个元素,时间复杂度O(nlogk).
第一次作业——词频统计(代码片段)
一,需要满足的需求1.统计文件的字符数2.统计文件的单词书3.统计文件的行数4.统计文件中各单词的出现次数5.对给定文件夹及其递归文件夹下的所有文件进行统计6.统计两个单词(词组)在一起的频率,输出频率最高的前10个。&... 查看详情
现代软件工程第一次作业——词频统计(代码片段)
目录 1.1基本功能 1.2设计实现 1.3代码结构 1.4测试运行 1.5性能分析 1.6项目总结 1.7PSP展示 1.1基本功能 1. 统计文件的字符数(只需要统计Ascii码,汉字不用考虑,换行符不用考虑,‘\0‘不用考... 查看详情
第一次个人项目词频统计——关键程序思路详述(代码片段)
考虑使用平衡二叉树实现单词和词组数目的统计。 二叉树节点定义:1structtnode2char*word;3intcount;4intheight;//recordnode‘sheight5structtnode*left;6structtnode*right;7; 节点中的成员char*word既可以存储单词,也可以存储词组。比较好的... 查看详情
第一次个人项目词频统计——需求分析,代码规范,设计思路(代码片段)
需求分析由于程序需要在Windows平台和Linux平台都能运行,因此对代码的可移植性有一定的要求由于需要对文件夹进行遍历,因此数据量相对较大,需要选择合适的数据结构,在此项目中,树和哈希表都是可供选择的数据结构由于... 查看详情
个人作业:词频统计
个人作业:词频统计Github项目地址:https://github.com/USTChuomiao/homework1/blob/master/PB15061351/hw1.cpp PSPPSP2.1PersonalSoftwareProcessStages预估耗时(分钟)实际耗时(分钟)Planning计划53·Estimate 查看详情
个人作业——词频统计
本次编程项目的主题为英文单词词频统计,主要分为下面四个小项目: 1、统计已存在的文档中的英文单词词频统计,并降序输出; 2、用户输入文件名,程序对其中的内容进行词频统计并降序输出; 3、用户输入... 查看详情
个人作业——词频统计
个人 查看详情
作业之词频统计
项目需求:1编一程序,统计一篇英文文章中各单词出现的次数。2输入:英文文章,为文本文件,扩展名.txt3输出:按次数降序排列设计如下。1#pragmawarning(disable:4996)2#include<iostream>3#include<map>4#include<vector>5#in... 查看详情
软件工程之词频统计(代码片段)
...我们一起讨论了代码结构,如何用python实现来更快的进行词频统计。然后是分工合作,队友负责python实现,我负责代码复审、单元测试、回归测试 查看详情
20180918-1词频统计(代码片段)
作业要求参见[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2126]作业代码地址[https://coding.net/u/shishishaonian/p/word_count/git]功能一:需要正确区分单词,在控制台实现命令行输入,打开目标文件,对单词进行词频排序。用fopen函数去找目... 查看详情
20180918-1词频统计(代码片段)
作业要求参见https://edu.cnblogs.com/campus/nenu/2018fall/homework/2126本次作业代码地址:https://coding.net/u/KamiForever/p/SPEC20180918/git/blob/master/wf.cpp。一,重点分析和代码实现:1.关于单词的输入,我才去每次都只选取一个字母,如果字母是... 查看详情
201671010432词频统计软件项目报告(代码片段)
...似一个简单的实验,对于我来说却是个挑战,在完成这次作业的过程中查阅了书籍也上网查找了相关的内容。由于Java编程中很多自己都没有学到的知识,复杂的代码都看不懂,通过上网来一步步去了解去认识。就那么几个知识... 查看详情
201671010454词频统计软件项目报告(代码片段)
...件工程(西北师范大学)二、课程要求:实验二软件工程个人项目三、实验目标:(1)掌握软件项目个人开发流程。(2)掌握Github上发布软件项目的操作方法。四、实验内容:(一)需求分析程序可读入任意英文文本文件,改文... 查看详情
个人作业项目报告(代码片段)
实验要求基本功能统计文件的字符数统计文件的单词总数统计文件的总行数统计文件中各单词的出现次数对给定文件夹及其递归子文件夹下的所有文件进行统计统计两个单词(词组)在一起的频率,输出频率最高的前10个。在Linu... 查看详情
第二周-频统计效能分析
根据作业要求对个人项目词频统计进行效能分析工具:vs2015自带的效能分析工具;1.第一次分析结果 string.split()方法和dictionary.contain()方法占比例较高;由于水平问题暂时未想到解决方案,会继续探索,完善个人项目; 查看详情
软件工程第二次作业词频统计
1.项目名称:词频统计2.代码地址:https://coding.net/u/songyuu/p/python_wf/git3.代码如下:1importos2importre3importcollections4#print(os.getcwd())#显示wf.py路径5#print(os.listdir())#显示目录下的文件6file_name=input("wf")7ifnotos.path 查看详情
作业10-中文词频统计
中文分词下载一中文长篇小说,并转换成UTF-8编码。使用jieba库,进行中文词频统计,输出TOP20的词及出现次数。排除一些无意义词、合并同一词。对词频统计结果做简单的解读。运行结果:分析:讲的是岛村和一名女子的故事。 查看详情
软件工程第二周作业----词频统计
实验要求:统计文件中出现过的单词数目,并按数目和字典顺序排序,将结果输出到指定文件中。需要统计单词的文件名从命令行输入。 实验分工:代码编写&测试:张文杰博客编写:朱昱青 实验思路:1.在主函数中... 查看详情