第一次个人项目为“文件内容统计”,我对作业要求进行了分析,并且设计了程序结构。
完成了部分编码工作。
1、基本功能:统计字符、单词、行数量,单词频率
拓展功能:统计词组频率
2、输入为文件名/文件夹名,输出为文本文件result.txt
格式:
characters: number
words: number
lines: number
"word": number(word按照字典【ASCII】排列、且为文件中真实单词格式)
3、可处理多个文件
4、可以判断并遍历文件夹
语言使用C/C++,但由于面向对象方法不甚熟悉,且本次作业使用面向过程更容易思考,仍采用面向过程的编程思想。
单词统计采用hash_map
过程:
1、输入文件名->根据文件名确定文件、判断文件类型。
若为文件夹,判断是否为空,若为空,输出错误信息;若非空,递归遍历文件夹。
遍历文件夹时,对源文件进行2中的统计,跳过非源文件。
若为文件,判断是否为源文件,若是,则执行2;若否,输出错误信息。
2、统计对应文件中的字符、单词、行数和单词频率
3、在文件中输出统计结果(*字典排序)
结构如下:
void fileRead(string p); //读取单个文件,并进行统计
void folderTraverse(string p); //遍历文件夹
bool isSourceFile(string p); //判断是否为源文件,在main的开头和folderTraverse中被调用
long charaStat(string p); //字符统计
long lineStat(string p); //行统计
long wordStat(string p);//单词统计,使用hash_map,按照键排序即可得到字典顺序
void resultPrint(long charanum, long wordnum, long linenum, long wordfrequency); //输入结果,缺省参数“文件名”为默认的“result.txt”,可以直接在函数中写出
int main(); //主函数,实现用户交互、统领以上函数
1、文件夹的遍历和非源文件的跳过方法需要学习。
2、词组频率统计仍然没有思路。