整理文本文件单词的检索与计数课程设计实验报告.docx

上传人:b****6 文档编号:14051817 上传时间:2023-06-20 格式:DOCX 页数:15 大小:1.46MB
下载 相关 举报
整理文本文件单词的检索与计数课程设计实验报告.docx_第1页
第1页 / 共15页
整理文本文件单词的检索与计数课程设计实验报告.docx_第2页
第2页 / 共15页
整理文本文件单词的检索与计数课程设计实验报告.docx_第3页
第3页 / 共15页
整理文本文件单词的检索与计数课程设计实验报告.docx_第4页
第4页 / 共15页
整理文本文件单词的检索与计数课程设计实验报告.docx_第5页
第5页 / 共15页
整理文本文件单词的检索与计数课程设计实验报告.docx_第6页
第6页 / 共15页
整理文本文件单词的检索与计数课程设计实验报告.docx_第7页
第7页 / 共15页
整理文本文件单词的检索与计数课程设计实验报告.docx_第8页
第8页 / 共15页
整理文本文件单词的检索与计数课程设计实验报告.docx_第9页
第9页 / 共15页
整理文本文件单词的检索与计数课程设计实验报告.docx_第10页
第10页 / 共15页
整理文本文件单词的检索与计数课程设计实验报告.docx_第11页
第11页 / 共15页
整理文本文件单词的检索与计数课程设计实验报告.docx_第12页
第12页 / 共15页
整理文本文件单词的检索与计数课程设计实验报告.docx_第13页
第13页 / 共15页
整理文本文件单词的检索与计数课程设计实验报告.docx_第14页
第14页 / 共15页
整理文本文件单词的检索与计数课程设计实验报告.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

整理文本文件单词的检索与计数课程设计实验报告.docx

《整理文本文件单词的检索与计数课程设计实验报告.docx》由会员分享,可在线阅读,更多相关《整理文本文件单词的检索与计数课程设计实验报告.docx(15页珍藏版)》请在冰点文库上搜索。

整理文本文件单词的检索与计数课程设计实验报告.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〈string.h>

#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

length-1)

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-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2