文本文件资料单词地检索与计数课程设计实验报告材料.docx

上传人:b****7 文档编号:25102337 上传时间:2023-06-05 格式:DOCX 页数:14 大小:1.45MB
下载 相关 举报
文本文件资料单词地检索与计数课程设计实验报告材料.docx_第1页
第1页 / 共14页
文本文件资料单词地检索与计数课程设计实验报告材料.docx_第2页
第2页 / 共14页
文本文件资料单词地检索与计数课程设计实验报告材料.docx_第3页
第3页 / 共14页
文本文件资料单词地检索与计数课程设计实验报告材料.docx_第4页
第4页 / 共14页
文本文件资料单词地检索与计数课程设计实验报告材料.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

文本文件资料单词地检索与计数课程设计实验报告材料.docx

《文本文件资料单词地检索与计数课程设计实验报告材料.docx》由会员分享,可在线阅读,更多相关《文本文件资料单词地检索与计数课程设计实验报告材料.docx(14页珍藏版)》请在冰豆网上搜索。

文本文件资料单词地检索与计数课程设计实验报告材料.docx

文本文件资料单词地检索与计数课程设计实验报告材料

文件检索

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

#defineMaxStrSize256//根据用户需要自己定义大小

typedefstruct

{

charch[MaxStrSize];//ch是一个可容纳256个字符的字符数组

intlength;

}SString;//定义顺序串类型

intPartPosition(SStrings1,SStrings2,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];

inti=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;

SStringS,T;//定义两个串变量

charfname[10];

inti,j,k,l,m;

intwz[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()

{

voidCreatTextFlie(),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语言的一些比较具体的东西还不太懂,需要进一步了解。

这次试验还让我意识到只有不断的在电脑上调试程序,自己的水平才能得到提高。

我会继续我们的兴趣编写程序的,相信在越来越多的尝试之后,自己会不断进步和提高。

在此我要感谢尹四清老师和薛海丽老师在数据结构及课程设计中对我们的指引和帮助。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 解决方案

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1