1、 成绩:成绩: _ 课程设计(数据结构)课程设计(数据结构) 院、系院、系 计算机与软件学院专业专业 软件工程 二零一二二零一二 年年 十二十二 月二十五日月二十五日 文本文件单词的检索与计数 摘要:摘要:本程序的功能是进行文本文件单词的检索与计数,报告正文包括:对文本文件单词的检索与计数程序的题目的阐 述以及详细要求、对程序步骤的分析、程序代码、程序运行后相关对应要求的所有截图等。另外,还有我做完课程设计后的 总结。 关键词:关键词:文本文件、单词、计数、主菜单 1.课程设计题目 编程建立一个文本文件,每个单词不包含空格且不跨行,单词由字符序列构成且区分大小写;统计给 定单词在文本文件中出现
2、的总次数;检索输出某个单词出现在文本中的行号、在该行中出现的次数以及位 置。具体要求如下: 1.1 建立文本文件,文件名由用户用键盘输入; 1.2 给定单词的计数,输入一个不含空格的单词,统计输出该单词在文本中的出现次数; 1.3 检索给定单词,输入一个单词,检索并输出该单词所在的行号、该行中出现的次数以及在该行中 的相应位置。 (1)建立文本文件 (2)对给定单词的计数 (3)检索单词出现在文本文件中的行号、次数及其位置 (4)主控菜单程序的结构 头文件包含 菜单选项包含 建立文件、单词定位、单词计数、退出程序 选择 1-4 执行相应的操作,其他字符为非法。 2.对程序步骤的分析 2.1 建
3、立文本文件 建立文本文件算法的实现思路: (1) 定义一个串变量 (2) 定义文本文件 (3) 输入文件名,打开该文件 (4) 循环读入文本行,写入文本文件,其过程如下: While(不是,则文件输入结束) 读入一文本行至串变量; 串变量写入文件; 输入是否结束输入标志; (5) 关闭文件 2.2 给定单词的计数 该功能的实现需要用到前面部分设计的模式匹配算法,逐行扫描文本文件。每匹配一个,计数器加 1, 直到整个文件扫描结束,然后输出单词的次数。其过程如下: while(!feof(fp) / fread(/读入一行文本 memset(S.ch,0,256); fgets(S.ch,100,
4、fp); S.length=strlen(S.ch); k=0; while(kT.ch; T.length=strlen(T.ch); while(!feof(fp) / fread(/读入一行文本 memset(S.ch,0,256); fgets(S.ch,100,fp); S.length=strlen(S.ch); k=0; while(kS.length-1) j=PartPosition(S,T,k); if(j0 ) break; else i+; k=j+T.length; printf(“n 单词%s 在文本文件%s 中共出现%d 次n“,T.ch,fname,i); vo
5、id SubStrInd() FILE *fp; SString S,T; char fname10; int i,j,k,l,m; int wz20; printf(“输入文本文件名:“); scanf(“%s“,fname); fp=fopen(fname,“r“); printf(“输入要检索的单词:“); scanf(“%s“,T.ch); T.length=strlen(T.ch); l=0; while(!feof(fp) /fread( /读入一行文本 memset(S.ch,0,256); fgets(S.ch,256,fp); S.length=strlen(S.ch); l+; k=0; i=0; while(kS.length-1) j=PartPosition(S,T,k); if(j0) printf(“行号:%d,次数:%d,位置分别为:“,l,i); for(m=1;m=i;m+) printf(“%4d“,wzm+1); printf(“n“); int main() void CreatTextFile(),SubStrCount(),SubStrInd(); int xz; do printf(“*n“); printf(“* 文本文件的检索、字串的统计及定位 *n“); printf(“*