![(完整word版)文本文件单词的检索与计数课程设计实验报告_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-1/20/351227cc-4404-4345-864f-91261f235242/351227cc-4404-4345-864f-91261f2352421.gif)
![(完整word版)文本文件单词的检索与计数课程设计实验报告_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-1/20/351227cc-4404-4345-864f-91261f235242/351227cc-4404-4345-864f-91261f2352422.gif)
![(完整word版)文本文件单词的检索与计数课程设计实验报告_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-1/20/351227cc-4404-4345-864f-91261f235242/351227cc-4404-4345-864f-91261f2352423.gif)
![(完整word版)文本文件单词的检索与计数课程设计实验报告_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-1/20/351227cc-4404-4345-864f-91261f235242/351227cc-4404-4345-864f-91261f2352424.gif)
![(完整word版)文本文件单词的检索与计数课程设计实验报告_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-1/20/351227cc-4404-4345-864f-91261f235242/351227cc-4404-4345-864f-91261f2352425.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、文件检索1 需求分析11 建立文本文件建立文本文件的实现思路( 1) 定义一个串变量( 2) 定义文本文件( 3) 输入文件名,打开该文件( 4) 循环读入文本行,写入文本文件,其过程如下: While (不是文件输入结束) 读入一文本行至串变量; 串变量写入文件; 输入是否结束输入标志;( 5) 关闭文件1.2 给定单词的计数匹配一个, 计数器该功能需要用到前一节中设计的模式匹配算法, 逐行扫描文本文件。加 1,直到整个文件扫描结束;然后输出单词的次数。1.3 检索单词出现在文本文件中的行号、次数及其位置1.4 主控菜单程序的结构( 1) 头文件包含( 2) 菜单选择包括:1 、 建立文件2
2、 、 单词计数3 、 单词定位4 、 退出程序( 3)选择 14 执行相应的操作,其他字符为非法2概要设计2. 流程图2 1 建立文本文件循环读入文本行,写定义一个串变量 ,定义文本文件, 输入文件名,打开该文件 , 入文本文件, 关闭文件关闭文件建立文本文件的思路过程2 2 给定单词的计数逐行扫描文本文件。匹配一个,计数器加1,直到整个文件扫描结束;然后输出单词的次数。给定一个单词定义 N=1 , S=0一共给了 M个单词扫描第N个单词N=N+1If第N个单词与所给 单词相同<If N<=M输出S及为单词的计数给定单词计数的过程23 检索单词出现在文本文件中的行号、次数及其位置
3、逐行扫描文本文件。扫描一个单词,单词数加1,匹配一个,计数器加 1,输出该单词数,行数到底以此,行数加 1,单词数清零,直到整个文件扫描结束;然后输出单词的次数,行号,第几 个单词。输入文本文件名假设一共X行 每行Y个单词检索单词的出现在文本文件中的行号,次数以及位置3详细设计主代码#include<stdio.h>#include<string.h>#define MaxStrSize 256/根据用户需要自己定义大小typedef structchar chMaxStrSize; /ch 是一个可容纳 256 个字符的字符数组 int length;SString;
4、 / 定义顺序串类型int PartPosition(SString s1, SString s2, int k)int i, j;i=k-1;扫描si的下标,因为c中数组下标是从0开始,串中序号相差 1j=0;/扫描 s2 的开始下标while (i<s1.length&&j<s2.length) if(s1.chi=s2.chj)i+;j+;/继续使下标移向下一个字符位置elsei=i-j+1; j=0; if(j>=s2.length)return i-s2.length;elsereturn -1;/表示si中不存在s2,返回-1/表示si中不存在s2
5、,返回其起始位置 /函数结束void CreatTextFile()SString S;char fname10, 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.c
6、h); fwrite(&S, S.length, 1, fp); fprintf(fp,"%c", 10); / 是输入换行 printf(" 结束输入吗? y or n: "); yn=getchar();fclose(fp); / 关闭文件 printf(" 建立文件结束! ");void SubStrCount()FILE *fp;SString S,T; /定义两个串变量 char fname10;int i=0,j,k; printf(" 输入文本文件名: "); scanf("%s&q
7、uot;, 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<S.l
8、ength-1)/检索整个主串 Sj=PartPosition(S,T,k); if(j<0) break;elsei+; /单词计数器加 1 k=j+T.length; /继续下一字串的检索printf("n 单词 %s 在文本文件 %s 中共出现 %d 次 n", T.ch, fname,i); / 统计单词出现个数void SubStrInd()FILE *fp;SString S,T; / 定义两个串变量char fname10;int i,j,k,l,m;int wz20;printf(" 输入文本文件名: ");scanf("
9、%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<S.length-1)j=Pa
10、rtPosition(S,T,k);if(j<0)break;elsei+;wzi=j; k=j+T.length;if(i>0)printf(" 行号: %d , 次数: %d, 位置分别为: ",l, i); for(m=1;m<=i;m+) printf("%4d", wzm+1);printf("n");int main()void CreatTextFlie(), SubStrInd(); int xz;doprintf(" *printf("* 文本文件的检索、字符串的统计及定位 *n
11、");printf("*n");printf("*n");*n");*n");*n");*n");printf("*1.建立文本文件printf("*2.单词字符串的计数printf("*3.单词字符串的定位printf("*4.退出程序printf("请选择( 1 4)n");scanf("%d", &xz);switch(xz)case 1:CreatTextFile(); break;case 2:SubStrC
12、ount(); break;case 3:SubStrInd(); break;case 4:return 0;default: printf(" 选择错误,重新选 n");while(1);4 调试分析4.1 未输入文件前的页面4.2 输入文本文件,计数单词出现的次数4.3 检索某单词的行号,出现次数,以及位置5课程总结 经过一周的奋斗,这次数据结构的课程设计终于做完了。通过这次设计我们 也着实又感受了一次编程的乐趣,从中也学到了不少知识。感受最深的一点是:以前用编程,只是注重如何编写函数能够完成所需要的 功能,似乎没有明确的战术, 只是凭单纯的意识和简单的语句来堆砌出一段程序。 现在编程感觉完全不同了。 在编写一个程序之前, 先对这个课程设计进行了一下 分析,将每个要求都花了一下算法流程图, 使得自己的思路更加的清晰了 。 然 后进行编程,不断的在电脑上调试程序,终于完成了此次的课程设计。另外,我还体会到深刻理解数据结构的重要性。只有真正理解这样定义数据 类型的好处, 才能用好这样一种数据结构。 了解典型数据结构的性质是非常有用 的,它往往是编写程序的关键。通过这次课程设计逐渐提高了自己的程序设计和调试能力, 我以前对算法一 直很害怕, 总是看不明白究竟这程序中间的过程是怎么进行的。 在这次实验中我 终于克服了这一障碍, 一遍遍在心中自己默默
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《预应力混凝土施工》课件
- 《上汽培训资料》课件
- 2025年泰州货运从业资格证模拟考试题库下载
- 年度财务总结报告模板
- 幼教课程创新开设和利用论文
- 新员工企业文化培训模板
- 美容特训申请书
- 申请律师执业申请书
- 国家基金申请书
- 大学生创业摆摊项目计划书
- 振动振动测试基础知识培训课件
- 教学设计 分数的再认识 省赛一等奖
- sbl-ep16高低压开关柜培训中法文kyn6140.5安装使用说明书
- DBJ51-T 151-2020 四川省海绵城市建设工程评价标准
- GB/T 3795-2006锰铁
- GB/T 31329-2014循环冷却水节水技术规范
- 全科医疗服务模式及服务内容课件
- 京东1+X理论考试试题及答案
- 人教版四年级下册数学应用题练习全
- 清新淡雅简洁通用模板课件
- 北京市乡镇卫生院街道社区卫生服务中心地址医疗机构名单(344家)
评论
0/150
提交评论