文本文件单词的检索 数据结构
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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);