文本文件单词的检索与计数课程设计实验报告.docx
- 文档编号:10753827
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:14
- 大小:1.45MB
文本文件单词的检索与计数课程设计实验报告.docx
《文本文件单词的检索与计数课程设计实验报告.docx》由会员分享,可在线阅读,更多相关《文本文件单词的检索与计数课程设计实验报告.docx(14页珍藏版)》请在冰豆网上搜索。
文本文件单词的检索与计数课程设计实验报告
文件检索
1需求分析
1.1建立文本文件
建立文本文件得实现思路 ﻫ (1) 定义一个串变量
(2)定义文本文件
(3)输入文件名,打开该文件
(4)循环读入文本行,写入文本文件,其过程如下:
ﻫ While(不就是文件输入结束){ﻫ 读入一文本行至串变量; ﻫ 串变量写入文件;
输入就是否结束输入标志; ﻫ }
(5)关闭文件
1、2给定单词得计数
该功能需要用到前一节中设计得模式匹配算法,逐行扫描文本文件。
匹配一个,计数器加1,直到整个文件扫描结束;然后输出单词得次数。
ﻫ1、3 检索单词出现在文本文件中得行号、次数及其位置
1、4主控菜单程序得结构
(1)头文件包含
(2)菜单选择包括:
1、建立文件ﻫ2、单词计数
3、单词定位
4、退出程序 ﻫ(3)选择1~4执行相应得操作,其她字符为非法
1.共0条评论、、、
2.概要设计
2、流程图
2.1建立文本文件
定义一个串变量,定义文本文件,输入文件名,打开该文件,循环读入文本行,写入文本文件,关闭文件。
建立文本文件得思路过程
2.2给定单词得计数
逐行扫描文本文件。
匹配一个,计数器加1,直到整个文件扫描结束;然后输出单词得次数。
给定单词计数得过程
2.3检索单词出现在文本文件中得行号、次数及其位置
逐行扫描文本文件。
扫描一个单词,单词数加1,匹配一个,计数器加1,输出该单词数,行数到底
以此,行数加1,单词数清零,直到整个文件扫描结束;然后输出单词得次数,行号,第几个单词。
检索单词得出现在文本文件中得行号,次数以及位置
3详细设计
主代码
#include
#include<string、h>
#defineMaxStrSize 256//根据用户需要自己定义大小
typedefstruct
{
charch[MaxStrSize];//ch就是一个可容纳256个字符得字符数组
ﻩintlength;
}SString;//定义顺序串类型
intPartPosition(SString s1,SString s2, intk)
{
ﻩinti,j;
ﻩi=k-1;//扫描s1得下标,因为c中数组下标就是从0开始,串中序号相差1
ﻩj=0; //扫描s2得开始下标
while(i
ﻩ{
ﻩﻩif(s1、ch[i]==s2、ch[j])
ﻩ{
ﻩﻩi++;
ﻩﻩﻩj++;//继续使下标移向下一个字符位置
ﻩﻩ}
ﻩelse
{
ﻩi=i-j+1;
ﻩﻩj=0;
ﻩ}
ﻩ}
if(j>=s2、length)
ﻩreturni-s2、length;
ﻩelse
ﻩreturn-1;//表示s1中不存在s2,返回-1
ﻩ //表示s1中不存在s2,返回其起始位置
}//函数结束
voidCreatTextFile()
{
ﻩSStringS;
ﻩcharfname[10],yn;
ﻩFILE*fp;
ﻩprintf("输入要建立得文件名:
");
ﻩscanf("%s",fname);
fp=fopen(fname,"w");
yn='n';//输入结束标志初值
ﻩwhile(yn=='n'||yn=='N')
ﻩ{
ﻩﻩprintf("请输入一行文本:
");
ﻩgets(S、ch);gets(S、ch);
ﻩS、length=strlen(S、ch);
ﻩfwrite(&S,S、length,1, fp);
ﻩfprintf(fp,"%c",10);//就是输入换行
ﻩprintf("结束输入吗?
yorn:
");
ﻩyn=getchar();
}
fclose(fp); //关闭文件
printf("建立文件结束!
");
}
ﻩvoidSubStrCount()
ﻩ{
FILE *fp;
ﻩﻩSStringS,T; //定义两个串变量
ﻩcharfname[10];
ﻩint i=0,j,k;
printf("输入文本文件名:
");
ﻩﻩscanf("%s",fname);
ﻩfp=fopen(fname ,"r");
ﻩprintf("输入要统计技术得单词:
");
ﻩscanf("%s",T、ch);
ﻩﻩT、length=strlen(T、ch);
ﻩﻩwhile(!
feof(fp))
ﻩ{ﻩﻩ//扫描整个文件文本
ﻩﻩ//fread(&S、ch,1,sizeof(S),fp); //读入一行文本
ﻩﻩﻩmemset(S、ch,'\0',256);
ﻩﻩfgets(S、ch,100,fp);
ﻩﻩﻩﻩS、length=strlen(S、ch);
ﻩﻩk=0;//初始化开始检索位置
ﻩﻩwhile(k
ﻩﻩﻩ{
ﻩj=PartPosition(S,T,k);
ﻩﻩﻩif(j<0)
ﻩﻩﻩﻩbreak;
ﻩﻩﻩﻩelse
ﻩﻩ{
ﻩﻩﻩﻩi++; //单词计数器加1
ﻩk=j+T、length;//继续下一字串得检索
ﻩﻩﻩﻩ}
ﻩﻩ}
ﻩ}printf("\n单词%s在文本文件%s中共出现%d次\n",T、ch,fname,i);
ﻩ}//统计单词出现个数
voidSubStrInd()
ﻩ{
ﻩFILE*fp;
ﻩﻩSString S,T; //定义两个串变量
charfname[10];
inti,j,k,l,m;
ﻩint wz[20];
printf("输入文本文件名:
");
ﻩﻩscanf("%s",fname);
ﻩfp=fopen(fname,"r");
printf("输入要检索得单词:
");
ﻩscanf("%s",T、ch);
ﻩﻩT、length=strlen(T、ch);
ﻩl=0;
while(!
feof(fp))
{
ﻩﻩ//fread(&S,sizeof(S),1,fp);//读入一行文本
ﻩﻩmemset(S、ch,'\0', 256);
ﻩfgets(S、ch,256,fp);
ﻩﻩS、length=strlen(S、ch);
ﻩﻩl++;
ﻩk=0;
ﻩﻩi=0;
ﻩwhile(k
ﻩﻩ{
ﻩﻩj=PartPosition(S,T,k);
ﻩﻩﻩif(j<0)
ﻩﻩﻩbreak;
ﻩﻩﻩelse
ﻩﻩﻩ{
ﻩﻩﻩi++;
ﻩﻩwz[i]=j;
ﻩﻩk=j+T、length;
ﻩ}
ﻩ}
ﻩif(i>0)
ﻩ{
ﻩﻩﻩprintf("行号:
%d, 次数:
%d,位置分别为:
",l,i);
ﻩﻩfor(m=1;m<=i;m++)
printf("%4d", wz[m]+1);
ﻩprintf("\n");
ﻩﻩ}
ﻩﻩ}
ﻩ}
intmain()
{
ﻩﻩvoid CreatTextFlie(),SubStrInd();
ﻩﻩintxz;
ﻩﻩdo
ﻩﻩ{
ﻩﻩprintf("****************************************\n");
ﻩﻩprintf("*文本文件得检索、字符串得统计及定位*****\n");
ﻩﻩprintf("****************************************\n");
ﻩprintf("* 1、建立文本文件 *\n");
ﻩﻩﻩﻩprintf("* 2、单词字符串得计数 *\n");
ﻩﻩﻩprintf("* 3、单词字符串得定位 *\n");
printf("* 4、退出程序 *\n");
ﻩprintf("****************************************\n");
ﻩﻩprintf(" 请选择(1——4) \n");
ﻩﻩscanf("%d",&xz);
ﻩﻩswitch(xz)
ﻩﻩﻩ{
ﻩﻩcase1:
CreatTextFile();break;
ﻩﻩcase2:
SubStrCount();break;
ﻩﻩcase3:
SubStrInd();break;
ﻩﻩcase4:
return0;
ﻩﻩﻩﻩdefault:
printf("选择错误,重新选\n");
ﻩﻩﻩﻩ}
ﻩﻩﻩ}while
(1);
ﻩ}
4调试分析
4、1未输入文件前得页面
4、2输入文本文件,计数单词出现得次数
4、3检索某单词得行号,出现次数,以及位置
5课程总结
经过一周得奋斗,这次数据结构得课程设计终于做完了。
通过这次设计我们也着实又感受了一次编程得乐趣,从中也学到了不少知识。
感受最深得一点就是:
以前用编程,只就是注重如何编写函数能够完成所需要得功能,似乎没有明确得战术,只就是凭单纯得意识与简单得语句来堆砌出一段程序。
现在编程感觉完全不同了。
在编写一个程序之前,先对这个课程设计进行了一下分析,将每个要求都花了一下算法流程图,使得自己得思路更加得清晰了。
然后进行编程,不断得在电脑上调试程序,终于完成了此次得课程设计。
另外,我还体会到深刻理解数据结构得重要性。
只有真正理解这样定义数据类型得好处,才能用好这样一种数据结构。
了解典型数据结构得性质就是非常有用得,它往往就是编写程序得关键。
通过这次课程设计逐渐提高了自己得程序设计与调试能力,我以前对算法一直很害怕,总就是瞧不明白究竟这程序中间得过程就是怎么进行得。
在这次实验中我终于克服了这一障碍,一遍遍在心中自己默默得走,终于弄明白了,真得就是功夫不负有心人啊!
这次试验也让我瞧到了自己得不足,还就是不太用模板类。
还有许多关于C语言得一些比较具体得东西还不太懂,需要进一步了解。
这次试验还让我意识到只有不断得在电脑上调试程序,自己得水平才能得到提高。
我会继续我们得兴趣编写程序得,相信在越来越多得尝试之后,自己会不断进步与提高。
在此我要感谢尹四清老师与薛海丽老师在数据结构及课程设计中对我们得指引与帮助。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 文本文件 单词 检索 计数 课程设计 实验 报告