文本文件单词的检索 数据结构

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

滁州学院

课程设计报告课程名称:数据结构

设计题目:文本文件单词的检索

系别:网络与通信工程系

专业:网络工程

组别:

起止日期:2012 年6月14 日~ 2012 年6月21日指导教师:

计算机与信息工程学院二○一二年制

目录

1 引言 (3)

2 分析 (3)

2.1建立文本文件建立文本文件的实现思路 (3)

2.2给定单词的计数 (3)

2.3检索单词出现在文本文件中的行号、次数及其位置 (3)

2.4主控菜单程序的结构 (3)

3 详细分析 (3)

3.1流程图 (3)

3.1.1建立文本文件 (3)

3.1.2给定单词的计数 (4)

3.2程序的实现 (6)

3,2.1预编命令,定义结构体和全局变量 (7)

3.2.2建立文本文件 (7)

3.2.3检索某单词的行号,出现次数,以及位置 (8)

3.2.4菜单函数 (9)

3.2.4退出整个程序 (10)

3.2.5主体函数 (10)

4 调试与操作说明 (10)

4.1开始界面如图4-1所示 (11)

4.2输入文本文件,计数单词出现的次数。如图4-2所示 (11)

4.3检索某单词的行号,出现次数,以及位置。如图4-3,4-4所示 (11)

5 总结讨论 (12)

6 致谢 (13)

7 参考文献 (13)

1 引言

本程序主要围绕的是文本文件单词的检索与计数,正文包括:对文本文件单词的检索与计数程序的详细要求,对程序的分析,勾画程序思路及内容的流程图,主程序代码,程序运行后相对应要求的所有截图,还有我们做完程序后的总结讨论,以及我们在本次程序中的详细分工。

2 分析

2.1 建立文本文件建立文本文件的实现思路

(1)定义一个串变量

(2)定义文本文件

(3)输入文件名,打开该文件

(4)循环读入文本行,写入文本文件,其过程如下:

While(不是文件输入结束){

读入一文本行至串变量;

串变量写入文件;

输入是否结束输入标志;

}

(5)关闭文件

2.2给定单词的计数

该功能需要用到前一节中设计的模式匹配算法,逐行扫描文本文件。匹配一个,计数器加1,直到整个文件扫描结束;然后输出单词的次数。

2.3 检索单词出现在文本文件中的行号、次数及其位置

2.4 主控菜单程序的结构

(1)头文件包含

(2)菜单选择包括:

1、建立文件

2、单词计数

3、单词定位

4、退出程序

(3)选择1~4执行相应的操作,其他字符为非法

3 详细分析

3.1流程图

3.1.1建立文本文件

定义一个串变量,定义文本文件,输入文件名,打开该文件,循环读入文本行,写入文件。如图3-1所示

图3-1 建立文本基本流程图

建立文本文件的思路过程

3.1.2给定单词的计数

逐行扫描文本文件。匹配一个,计数器加1,直到整个文件扫描结束;然后输出单词的次数。如图3-2所示

图3-2 单词计数流程图

给定单词计数的过程

逐行扫描文本文件。扫描一个单词,单词数加1,匹配一个,计数器加1,输出该单词数,行数到底

以此,行数加1,单词数清零,直到整个文件扫描结束;然后输出单词的次数,行号,第几个单词。

如图3-3所示

如3-3 检索单词行号、次数和位置流程图

检索单词的出现在文本文件中的行号,次数以及位置

3.2程序的实现

3,2.1预编命令,定义结构体和全局变量

/////////////////////////////////////////////////////////////////////////////// ///// 文本文件单词的检索系统//////////////////////////// //////////////////////////////////////////////////////////////////////////////

#include

#include

#define MaxStrSize 256 /* 根据用户需要自己定义大小*/

typedef struct {

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

int length;

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

int PartPosition (SString s1,SString s2,int k)

{ int i,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)

return i-s2.length;

else

return -1;/* 表示s1中不存在s2,返回-1 */

/* 表示s1中存在s2,返回其起始位置*/

} /* 函数结束*/

3.2.2建立文本文件

////////////////////////////////////////////////////////////////////

/*件一个文本文件,在里面输入想要的文本*/

void CreatTextFile()

{

SString S;

char fname[10],yn;

FILE *fp;

printf("输入要建立的文件名:");

scanf("%s",fname);

相关文档
最新文档