文本文件单词检索实验报告
文本文件单词的检索与计数课程设计实验报告(可编辑修改word版)

文件检索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 执行相应的操作,其他字符为非法2.概要设计2.流程图2.1建立文本文件定义一个串变量,定义文本文件,输入文件名,打开该文件,循环读入文本行,写入文本文件,关闭文件。
定义一个串变量定义文本文件输入文件名,打开该文件循环读入文本行,写入文本文件N While是文本文件Y读入一文本行至串变量串变量写入文件文件输入结束关闭文件建立文本文件的思路过程2.2给定单词的计数逐行扫描文本文件。
匹配一个,计数器加 1,直到整个文件扫描结束;然后输出单词的次数。
给定一个单词定义N=1,S=0一共给了M个单词扫描第N个单词NIf第N个单词与所给单词相同YS=S+1 N=N+1YIf N<=MN输出S及为单词的计数结束给定单词计数的过程2.3检索单词出现在文本文件中的行号、次数及其位置逐行扫描文本文件。
扫描一个单词,单词数加 1,匹配一个,计数器加 1,输出该单词数,行数到底以此,行数加 1,单词数清零,直到整个文件扫描结束;然后输出单词的次数,行号,第几个单词。
输入文本文件名假设一共X行每行Y个单词输入要检索的单词定义L=1,I=0,N=1L为行数I为次数N为第几个单词扫描第L行第N个单词If第N个单词与Y所给单词相同N输出NI=I+1N=N+1YIf N<=XN输出L输出IN=1I=0L=L+1YIf L<=YN结束检索单词的出现在文本文件中的行号,次数以及位置3详细设计主代码#include<stdio.h>#include<string.h>#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<s1.length&&j<s2.length){if(s1.ch[i]==s2.ch[j]){}else{} } i++;j++; //继续使下标移向下一个字符位置i=i-j+1;j=0;if(j>=s2.length)return i-s2.length;elsereturn -1; //表示s1 中不存在s2,返回-1//表示s1 中不存在s2,返回其起始位置} // 函数结束void CreatTextFile(){SString S;char fname[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("结束输入吗?y or n: ");yn=getchar();}fclose(fp); //关闭文件printf("建立文件结束!");}void SubStrCount(){FILE *fp;SString S,T; //定义两个串变量char fname[10];int i=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<S.length-1) //检索整个主串S{j=PartPosition(S,T,k);if(j<0)break;else{i++; // 单词计数器加1k=j+T.length; //继续下一字串的检索}}}printf("\n 单词%s 在文本文件%s 中共出现%d 次\n", T.ch, fname,i);} //统计单词出现个数void SubStrInd(){FILE *fp;SString S,T; //定义两个串变量char fname[10];int i,j,k,l,m;int wz[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<S.length-1){j=PartPosition(S,T,k);if(j<0)break;else{} } i++;wz[i]=j;k=j+T.length;if(i>0) {}}int main(){printf("行号:%d , 次数:%d, 位置分别为:",l, i); for(m=1;m<=i;m++) printf("%4d", wz[m]+1);printf("\n");}void CreatTextFlie(), SubStrInd();int xz;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){} }while(1); case 1:CreatTextFile(); break;case 2:SubStrCount(); break;case 3:SubStrInd(); break;case 4:return 0;default: printf("选择错误,重新选\n");}4调试分析4.1未输入文件前的页面4.2输入文本文件,计数单词出现的次数4.3检索某单词的行号,出现次数,以及位置5课程总结经过一周的奋斗,这次数据结构的课程设计终于做完了。
电子词典实训报告

实训报告院系:计算机与通信工程学院班级:学号:姓名:指导老师:电子词典(英译汉)实训目的:本次试验主要的目的是在VC6.0的环境下,建立一个电子词典,通过函数实现英文单词的查找、翻译、添加等功能。
一、实训分析这次试验的内容是实现英文单词的查找、翻译和添加功能,所以,要有相应的查找函数、翻译文本文件和添加函数。
其次,这些函数之间的调用关系,当然,main函数是主体函数。
那么,还需要一个测试函数,需要对下面所编写的查找等函数进行测试。
具体造作步骤是:首先,先建立一个空工程,然后建立一个.h文件,即dict.h 文件,然后是.C文件,.C文件需要多建立几个,以备使用。
然后就可以进行下一步代码的书写了。
二、代码分析毫无疑问,main函数是要先写出来的,这个函数也是最简单的函数,在这个函数体里面只需要去调用测试函数即可,也即调用函数text1(void)。
再看测试函数,需要输入需要查找的函数,输入完毕后,会牵扯到查找问题,也就是说要调用查找函数search(),如果查找不到,要调用函数get_txt_usr(),在文本文件dict_usr.txt中继续进行查找,如果还是没有查找到的话,那么就调用添加函数add_txt_usr(),把所查找到的单词添加到文本文档中,以备以后的使用。
最后,清除缓冲区,程序调用结束。
具体的函数调用流程如下:1、调用函数get_nword(),打开文本dict.txt2、调用函数get_wordarr(),实现从文件中读取文件内容,放在数据结构内存储,以便实现快速的查询。
3、输入需要查找的单词。
4、判断需要查找的单词是不是exit:(1)、如果是exit,那么,退出程序。
(2)、如果不是,那么调用函数search()进行查找,如果查找到了就打印输出;找不到就调用函数get_txt_usr()(找到返回的是0,找不到返回值是1)在文本dict_usr.txt中查找,如果在这个文本中能查找到,那么打印输出,这个过程实现了单词的查找功能。
文本文件单词的检索与计数

软件综合课程设计文本文件单词的检索与计数实时监控报警系统二〇一四年六月文本文件单词的检索与计数1.问题陈述要求编程建立一个文本文件,每个单词不包含空格且不跨行,单词由字符序列构成且区分大小写;统计给定单词在文本文件中出现的总次数;检索输出某个单词出现在文本中的行号、在该行中出现的次数以及位置。
该设计要求可分为三个部分实现:其一,建立文本文件,文件名由用户用键盘输入;其二,给定单词的计数,输入一个不含空格的单词,统计输出该单词在文本中的出现次数;其三,检索给定单词,输入一个单词,检索并输出该单词所在的行号、该行中出现的次数以及在该行中的相应位置。
(1).建立文本文件(2)给定单词的计数(3)检索单词出现在文本文件中的行号、次数及其位置(4)主控菜单程序的结构①头文件包含②菜单选项包含建立文件、单词定位、单词计数、退出程序③选择1-4执行相应的操作,其他字符为非法。
2.程序代码#include<stdio.h>#include<string.h>#include<iostream>#define MaxStrSize 256 //根据用户需要自己定义大小using namespace std;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<s1.length && j<s2.length){if(s1.ch[i]==s2.ch[j]){ i++;j++; //继续使下标移向下一个字符位置}else{i=i-j+1; j=0;} }if (j>=s2.length)return i-s2.length;elsereturn -1;//表示s1中不存在s2,返回-1//表示s1中存在s2,返回其起始位置} //函数结束void CreatTextFile(){SString S;char fname[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("结束输入吗?y or n :");yn=getchar();}fclose(fp);//关闭文件printf("建立文件结束!");}void SubStrCount(){FILE *fp;SString S,T;//定义两个串变量char fname[10];int i=0,j,k;printf("输入文本文件名:");scanf("%s",fname);fp=fopen(fname,"r");printf("输入要统计计数的单词:");cin>>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.length-1) //检索整个主串S{j=PartPosition(S,T,k);//调用串匹配函数if(j<0 ) break;else {i++;//单词计数器加1k=j+T.length;//继续下一字串的检索 }}}printf("\n单词%s在文本文件%s中共出现%d次\n",T.ch,fname,i);}//统计单词出现的个数void SubStrInd(){ FILE *fp;SString S,T; //定义两个串变量char fname[10];int i,j,k,l,m;int wz[20]; //存放一行中字串匹配的多个位置printf("输入文本文件名:");scanf("%s",fname);fp=fopen(fname,"r");printf("输入要检索的单词:");scanf("%s",T.ch);T.length=strlen(T.ch);l=0; //行计数器置0while(!feof(fp)) { //扫描整个文本文件//fread(&S,sizeof(S),1,fp); //读入一行文本memset(S.ch,'\0',256);fgets(S.ch,256,fp);S.length=strlen(S.ch);l++; //行计数器自增1k=0;//初始化开始检索位置i=0; //初始化单词计数器while(k<S.length-1) //检索整个主串S{ j=PartPosition(S,T,k); //调用串匹配函数if(j<0) break;else {i++;//单词计数器加1wz[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");}}}//检索单词出现在文本文件中的行号、次数及其位置int main(){ void CreatTextFile(),SubStrCount(),SubStrInd();int xz;do {printf("* * * * * * * * * * * * * * * * * * * ** * * * *\n");printf("*文本文件的检索、字串的统计及定位*\n");printf("* * * * * * * * * * * * * * * * * * * ** * * * *\n");printf("* 1. 建立文本文件*\n");printf("* 2. 单词字串的计数*\n");printf("* 3. 单词字串的定位*\n");printf("* 4. 退出整个程序*\n");printf("* * * * * * * * * * * * * * * * * * * ** * * * *\n");printf(" 请选择(1--4) ");scanf("%d",&xz);switch(xz) {case 1 : CreatTextFile();break;case 2 : SubStrCount();break;case 3 : SubStrInd();break;case 4 : return 0;default:printf("选择错误,重新选\n");}}while(1);}3.运行结果4.设计体会与总结我的课程设计题目是文本文件单词的检索与计数。
段落单词统计 (实验报告+源程序)C++

实验报告2实验名称:数据结构与软件设计实习题目:文章段落单词统计专业:生物信息学班级:01 姓名:学号:实验日期2010.07.23一、实验目的:掌握基本的输入输出方法,实现链表下的条件判断和循环程序程序的设计;掌握结构体的应用;二、实验要求:待统计的段落要一次输入完毕,统计工作一次完成,程序输出结果为每个词出现的次数和出现位置。
二、实验内容:对某段英文统计某些单词出现的位置和次数。
统计的词汇要一次输入完毕,统计工作一次完成,程序输出结果为每个词出现的次数和出现位置。
编程解决一些实际应用问题。
四、实验编程结果或过程:1. 数据定义struct node{int col; //行坐标int row; //所在行的列坐标node* next; //指向下一个坐标结点的指针}; //单词坐标坐点类型struct Node{char words[20]; //单词数组node* ptr; //指向单词坐标结点的指针Node* next; //指向下一个单词结点的指针int num; //单词所含字符个数}; //单词结点class TLink{public:TLink() { head = NULL; } //构造函数~TLink()//析构函数{while( head != NULL ){Node* temp;temp = head;head = head -> next;delete temp;}}void Insert( char* Item );void calcute(char *szFile,int size);Node* gethead();private:Node* head;};char A_to_a( char alp );void showwindow();void show_text();void input();2. 函数如下,代码详见文件“单词统计.cpp”3. 运行测试结果,运行结果无误,如下图显示要查找的单词显示所有单词数量及位置错误调试,能够正确处理错误,如下图调试分析输入要查找的单词之后,单词插入链表,停止输入后,程序开始在文本字符中查找链表中的单词。
信息检索实验报告范文

信息检索实验报告范文一、实验目的本次实验的目的是熟练掌握基本的信息检索技术,包括使用IR工具进行文本的预处理、建立索引、查询等步骤,并通过实践掌握各种常见评价指标的使用及评价方法。
二、实验内容1. 数据集介绍本次实验使用的数据集是TREC3的文本数据集,该数据集共包含251多个文件,其中包括了美国汽车行业、计算机科学、新闻报道等多个主题,涵盖面广,内容复杂。
2. 实验过程(1)预处理我们需要对数据集进行预处理,包括分词、去停用词、词干提取等。
本次实验使用了开源工具Lucene进行预处理,并使用了英文停用词表和Porter词干提取器。
(2)建立索引接着,我们使用Lucene对预处理后的文本进行索引建立。
在建立索引的过程中,我们需要设置各种索引参数,如统计分词的词频、文档频率、文档长度等。
为了提高索引检索效率,在本次实验中我们使用了TF-IDF作为文档权重,并设置了文档最大长度、最小长度等参数。
(3)查询在索引建立完成后,我们需要对数据集进行查询。
本次实验使用了TREC3数据集中的查询内容进行查询。
查询时,我们需要设置查询的查询语句、查询的字段、查询的权重等。
为了提高查询效率,在查询中我们设置了BM25作为文档评价函数,并使用了默认的参数设置。
(4)评价在完成查询后,我们需要对查询结果进行评价。
在本次实验中,我们使用了常见的评价指标,如准确率、查准率、查全率、P@k等指标。
我们还根据实验要求使用了MAP、NDCG 等指标进行评价。
三、实验结果本次实验所使用的评价指标结果如下表:| 指标 | 查询1 | 查询2 | 查询3 | 查询4 | 查询5 | 平均值 ||--------|-------|-------|-------|-------|-------|------|| MAP | 0.425 | 0.286 | 0.659 | 0.489 | 0.284 | 0.427|| NDCG | 0.662 | 0.651 | 0.718 | 0.694 | 0.683 | 0.682|| P@5 | 0.400 | 0.800 | 1.000 | 0.800 | 0.200 | 0.720|| P@10 | 0.400 | 0.600 | 0.800 | 0.600 | 0.200 | 0.520|| 准确率 | 0.690 | 0.350 | 0.760 | 0.580 | 0.170 | 0.510|| 查准率 | 0.690 | 0.467 | 0.800 | 0.621 | 0.200 | 0.575|| 查全率 | 0.292 | 0.162 | 0.476 | 0.386 | 0.130 | 0.289|从表中结果可以看出,本次实验所使用的各项评价指标具有不同的特点。
文本文件资料单词的检索 大数据结构

滁州学院课程设计报告课程名称:数据结构设计题目:文本文件单词的检索系别:网络与通信工程系专业:网络工程组别:起止日期: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给定单词的计数该功能需要用到前一节中设计的模式匹配算法,逐行扫描文本文件。
数据结构课程设计-文本文件单词检索和计数

合肥学院计算机科学与技术系课程设计报告2017~2018学年第二学期课程数据结构与算法课程设计名称文本文件单词的检索与计数学生姓名陈映而学号**********专业班级16软件工程(1)班指导教师孙斐文本文件单词的检索与计数一、问题分析和任务定义要求编程建立一个文本文件,每个单词不包含空格且不跨行,单词由字符序列构成且区分大小写;统计给定单词在文本文件中出现的总次数;检索输出某个单词出现在文本中的行号、在该行中出现的次数以及位置。
(1)建立文本文件(2)给定单词的计数(3)检索单词出现在文本文件中的行号、次数及其位置(4)主控菜单程序的结构二、数据结构的选择和概要设计数据结构:1.所有存储形式都用顺序存储2.用矩阵检索单词出现的位置和次数概要设计:该设计要求可分为三个部分实现:1.对文件的操作,其中包括文本文档的建立,文件名由用户用键盘输入;以及读取文本文档内容并显示在屏幕上;2.给定单词的计数,输入一个不含空格的单词,统计输出该单词在文本中的出现次数;3.检索给定单词,输入一个单词,检索并输出该单词所在的行号、该行中出现的次数以及在该行中的相应位置。
图2-1 课题目录图2-2 流程图图2-3 函数关系开始输入number 显示主菜单 n=1? Y Nn=2? Y Nn=3? Y Nn=4?Y结束 文件操作单词定位输入numbern=1? 单词计数Y 创建文件内容显示N主菜单n=2? Y Nn=3? Y 写入文本N返回主菜单三、详细设计和编码1.头文件包含:#include<stdio.h>#include<stdlib.h>#include<string.h>2.功能细分(1)创建自定义名字文档①用字符数组filename存放特定的文件路径(D:\\Dev-Cpp\\课程设计数据\\)②从键盘输入自定义的文档名字name,把name和“.txt”用strcat连接③再用strcat把路径filename与文档名name连接起来④打开文件时用变量(filename)表示文件名,若无该文件则创建图3-1 创建自定义名字文档编码(2)打开文件读取内容并输出①输入文档名字,根据名字打开文件②打开文件后,用fgets读取文档内容③fgets读取一行输出一行,并用i记录行数④fgets返回EOF(END OF FILE)表示文件结尾(3)写入文本①输入文档名字,根据名字打开文档,若无该文档,则重新建立一个。
单词的检索和计数心得体会

单词的检索和计数心得体会篇一:单词的检索与计数内江师范学院计算机科学学院数据结构课程设计报告课题名称:文本文件单词的检索与计数姓名:学号:专业班级:软件工程系(院):计算机科学学院设计时间: 20XX 年 X 月 X日设计地点:成绩:篇二:文本文件单词的检索与计数(流程图)《数据结构》课程设计报告一、设计时间XX年01月5日-----XX年01月11日二、设计地点实验楼计算机511机房三、设计目的1.巩固和加深对数据结构课程所学知识的理解,了解并掌握数据结构与算法的设计方法;2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和方法,独立分析和解决问题的能力; 4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风;5.培养查阅资料,独立思考问题的能力。
四.设计小组成员五.指导老师六.设计课题文本文件单词的检索与计数七.基本思路及关键问题的解决方法(需求分析和概要设计) (一)需求分析:1.建立文本文件建立文本文件的实现思路:(1)定义一个串变量(2)定义文本文件(3)输入文件名,打开该文件(4)循环读入文本行,写入文本文件,其过程如下:While(不是文件输入结束){读入一文本行至串变量;串变量写入文件;输入是否结束输入标志; } (5)关闭文件2.给定单词的计数该功能需要用到前一节中设计的模式匹配算法,逐行扫描文本文件。
匹配一个,计数器加1,直到整个文件扫描结束;然后输出单词的次数。
3 .检索单词出现在文本文件中的行号、次数及其位置4.主控菜单程序的结构(1)头文件包含(2)菜单选择包括: 1、建立文件 2、单词计数 3、单词定位 4、退出程序(3)选择1~4执行相应的操作,其他字符为非法 (二)概要设计:1.建立文本文件:定义一个串变量,定义文本文件,输入文件名,打开该文件,循环读入文本行,写入文本文件,关闭文件。
python英语词典实验报告实践报告(一)

python英语词典实验报告实践报告(一)Python英语词典实验实践报告引言本报告旨在介绍Python英语词典实验实践的相关内容。
通过实践,我们将构建一个功能完善的英语词典,利用Python编程语言的强大功能,提高用户在英语学习中的便利性和体验。
实验目的•掌握Python编程语言的基本语法和数据类型•学习使用Python编写英语词典的基本功能•了解如何使用Python调用API获取单词解释•提高英语学习者的词汇积累能力和应用能力实验环境1.Python编程环境:建议使用最新版本的Python2.文本编辑器:可自行选择,推荐使用Atom、Sublime Text等3.英语词典API:可选择在线API或本地数据库实验步骤1.设计程序的界面和交互方式–将界面设计简洁明了,方便用户操作–设置适当的输入框和按钮,以便用户输入待查询的单词并获取解释2.编写程序的基本功能–获取用户输入的单词并保存–调用API或数据库查询单词解释–将查询结果显示在界面上3.实现高级功能–添加单词收藏功能,方便用户保存学习过的单词–提供单词朗读功能,帮助用户正确发音–支持模糊查询,提高用户查词的便利性4.进行功能测试和优化–针对不同的输入情况进行测试,确保程序能正确处理各种情况–优化程序性能,提高查询速度和用户体验实验结果经过实验,我们成功构建了一个功能完善的Python英语词典。
用户可以通过简洁明了的界面输入待查询的单词,并获得准确的解释。
同时,我们还添加了单词收藏、朗读和模糊查询等高级功能,提高了用户的学习效果和体验。
总结与展望通过本次实验,我们掌握了Python编程语言的基本语法和数据类型,学会了使用Python编写英语词典的基本功能。
同时,通过调用API和数据库查询单词解释,提高了用户的学习效果和便利性。
未来,我们将继续改进和完善Python英语词典,在功能和用户体验上提供更多的选择和优化。
实验心得体会在这次实验中,我们深入了解了Python编程语言的基本语法和数据类型,并将其应用于实际项目中。
课程设计 基于不同策略的英文单词的词频统计和检索系统_数据结构习题解析与实验指导_[共4页]
![课程设计 基于不同策略的英文单词的词频统计和检索系统_数据结构习题解析与实验指导_[共4页]](https://img.taocdn.com/s3/m/fbd737f5aaea998fcc220ee7.png)
2121课程设计基于不同策略的英文单词的词频统计和检索系统【实验目的】1.掌握基于线性表、二叉排序树和散列表不同存储结构的查找算法。
2.掌握不同检索策略对应的平均查找长度(ASL)的计算方法,明确不同检索策略的时间性能的差别。
3.掌握相关的排序算法。
【实验内容】一篇英文文章存储在一个文本文件中,分别基于线性表、二叉排序树和哈希表不同的存储结构,实现单词词频的统计和单词的检索功能。
同时计算不同检索策略下的ASL,通过比较ASL 的大小,对不同检索策略的时间性能做出相应的比较分析(在课程设计报告中给出)。
具体内容如下。
1.一篇包括标点符号的英文文章存储在文本文件InFile.txt中,假设文件中单词的个数最多不超过5 000个。
从该文件中读取英文单词,过滤掉所有的标点。
2.分别基于线性表、二叉排序树和哈希表不同的存储结构,实现单词词频的统计和单词的检索功能。
其中,线性表采用顺序表和链表两种不同的存储结构分别实现顺序查找,同时实现基于顺序表的折半查找;哈希表分别实现基于开放地址法的哈希查找和基于链地址法的哈希查找。
因此,总计实现6种不同的检索策略。
3.不论采取哪种检索策略,实现的功能均相同。
(1)词频统计。
当读取一个单词后,若该单词还未出现,则在适当的位置上添加该单词,将其词频计为1;若该单词已经出现过,则将其词频增加1。
统计结束后,将所有单词及其频率按照词典顺序写入文本文件中。
其中,不同的检索策略分别写入6个不同的文件。
基于顺序表的顺序查找:OutFile1.txt。
基于链表的顺序查找:OutFile2.txt。
基于顺序表的折半查找:OutFile3.txt。
基于二叉排序树的查找:OutFile4.txt。
基于开放地址法的哈希查找:OutFile5.txt。
基于链地址法的哈希查找:OutFile6.txt。
注:如果实现方法正确,6个文件的内容应该是一致的。
统计文本中单词的个数

江西理工大学软件学院计算机类课程实验报告课程名称:统计文本中单词个数班级:11软件会计4班姓名:黄健学号:11222122江西理工大学软件学院一、目录1、目录--------------------------------------------------------------22、实验目的--------------------------------------------------------33、实验要求--------------------------------------------------------34、实验仪器设备与材料-----------------------------------------35、实验原理--------------------------------------------------------46、实验步骤--------------------------------------------------------57、实验原始记录--------------------------------------------------68、实验数据分析计算结果--------------------------------------109、实验心得体会--------------------------------------------------1110、思考题----------------------------------------------------------12二:实验目的:一个文本可以看成是一个字符序列,在这个序列中,有效字符被空格分隔为一个个单词。
设计出一种算法来去统计出一个文本中单词的个数。
三:实验要求:1.被处理文本的内容可以由键盘读入2.可以读取任意文本内容,包括英文、汉字等3.设计算法统计文本中单词的个数4.分析算法的时间性能四:实验仪器设备和材料参考书籍电脑及其配件Microsoft Visulai C++ 6.0五:实验原理设计一个计数器count 统计文本中单词的个数。
计算机文件检索实习报告

实习报告一、实习背景与目的随着信息技术的飞速发展,计算机文件检索技术在各行各业中得到了广泛的应用。
为了提高自己的实际操作能力和理论知识的应用能力,我选择了计算机文件检索作为实习课题。
本次实习的主要目的是学习并掌握文件检索的基本原理和方法,提高自己在实际工作中解决问题的能力。
二、实习时间与地点实习时间:2022年6月1日至2022年6月30日实习地点:XX大学计算机实验室三、实习内容与过程1. 学习文件检索基本原理在实习初期,我首先学习了文件检索的基本原理,包括文件检索的定义、分类和基本方法。
通过学习,我了解到文件检索是指从大量的文件中找到满足用户需要的信息的过程。
文件检索主要分为目录检索、全文检索和元数据检索等几种方式。
2. 学习文件检索技术在了解基本原理的基础上,我学习了文件检索的相关技术。
包括索引创建、查询优化、检索算法等。
索引创建是文件检索的关键步骤,通过创建索引,可以提高检索速度。
查询优化技术旨在提高查询效率,包括查询解析、查询重写和查询转换等。
检索算法是实现文件检索的核心,常见的检索算法有布尔检索算法、向量空间模型算法和基于深度学习的检索算法等。
3. 实践操作在理论学习的基础上,我进行了实践操作。
首先,我使用实验室的计算机系统进行了文件检索实践,掌握了检索工具的使用方法和技巧。
然后,我使用编程语言(如Python)实现了简单的文件检索系统,通过编写代码,深入理解了文件检索的实现过程。
4. 分析与总结在实践过程中,我遇到了一些问题,如检索速度慢、结果不准确等。
针对这些问题,我进行了分析,找出了原因,并采取了相应的解决措施。
同时,我对整个实习过程进行了总结,得出了自己在文件检索方面的不足和需要改进的地方。
四、实习成果与反思通过本次实习,我掌握了文件检索的基本原理和方法,提高了自己在实际工作中解决问题的能力。
然而,我也意识到自己在文件检索方面还存在一些不足,如对某些检索技术的理解和应用不够深入,需要进一步加强学习和实践。
查找英文文献实验报告总结

查找英文文献实验报告总结Finding English literature lab report conclusions may vary depending on the specific topic or experiment you are looking for. However, here is a general step-by-step guide to help you find lab report conclusions in English literature:1. Start by identifying relevant keywords related to your topic or experiment. For example, if you are looking for lab report conclusions on the effect of temperature on enzyme activity, you could use keywords such as "enzyme activity," "temperature," and "effect."2. Use academic search engines or databases such as PubMed, Google Scholar, or ScienceDirect. Enter your keywords into the search bar and select the filters for English language and research papers or articles.3. Browse through the search results and read the abstracts of each paper to determine if the study includes a lab report or experimentation section.4. Once you have identified a relevant paper, click on the title or the PDF link to access the full text.5. Search for the section within the paper labeled "Conclusion" or "Discussion." This is where you are most likely to find the lab report summary or conclusions.6. Read the relevant section to find the key findings, implications, and conclusions of the experiment.7. Take note of any important information or findings that are relevant to your own research or lab report.Remember, the process may vary slightly depending on the specific research database or search engine you are using. Adjust your search strategies accordingly and use different combinations of keywords to increase your chances of finding the desired lab report conclusions.。
文本文件单词的检索与计数课程设计实验报告

2.3检索单词出现在文本文件中得行号、次数及其位置
逐行扫描文本文件。扫描一个单词,单词数加1,匹配一个,计数器加1,输出该单词数,行数到底
以此,行数加1,单词数清零,直到整个文件扫描结束;然后输出单词得次数,行号,第几个单词。
检索单词得出现在文本文件中得行号,次数以及位置
3详细设计
ﻩﻩﻩmemset(S、ch,'\0',256);
ﻩﻩfgets(S、ch,100,fp);
ﻩﻩﻩﻩS、length=strlen(S、ch);
ﻩﻩk=0;//初始化开始检索位置
ﻩﻩwhile(k<S、length-1)//检索整个主串S
ﻩﻩﻩ{
ﻩj=PartPosition(S,T,k);
ﻩﻩﻩif(j<0)
(5) 关闭文件
1、2给定单词得计数
该功能需要用到前一节中设计得模式匹配算法,逐行扫描文本文件。匹配一个,计数器加1,直到整个文件扫描结束;然后输出单词得次数。 ﻫ1、3 检索单词出现在文本文件中得行号、次数及其位置
1、4 主控菜单程序得结构
(1) 头文件包含
(2) 菜单选择包括:
1、 建立文件 ﻫ2、 单词计数
ﻩyn=getchar();
}
fclose(fp);//关闭文件
printf("建立文件结束!");
}
ﻩvoid SubStrCount()
ﻩ{
FILE*fp;
ﻩﻩSString S,T;//定义两个串变量
ﻩchar fname[10];
ﻩinti=0,j,k;
printf("输入文本文件名: ");
voidCreatTextFile()
数据结构课程设计报告-文本文件单词检索和计数

合肥学院计算机科学与技术系课程设计报告2017~2018学年第二学期课程数据结构与算法课程设计名称文本文件单词的检索与计数学生姓名陈映而学号专业班级16软件工程(1)班指导教师孙斐文本文件单词的检索与计数一、问题分析和任务定义要求编程建立一个文本文件,每个单词不包含空格且不跨行,单词由字符序列构成且区分大小写;统计给定单词在文本文件中出现的总次数;检索输出某个单词出现在文本中的行号、在该行中出现的次数以及位置。
(1)建立文本文件(2)给定单词的计数(3)检索单词出现在文本文件中的行号、次数及其位置(4)主控菜单程序的结构二、数据结构的选择和概要设计数据结构:1.所有存储形式都用顺序存储2.用矩阵检索单词出现的位置和次数概要设计:该设计要求可分为三个部分实现:1.对文件的操作,其中包括文本文档的建立,文件名由用户用键盘输入;以及读取文本文档内容并显示在屏幕上;2.给定单词的计数,输入一个不含空格的单词,统计输出该单词在文本中的出现次数;3.检索给定单词,输入一个单词,检索并输出该单词所在的行号、该行中出现的次数以及在该行中的相应位置。
图2-1 课题目录图2-2 流程图图2-3 函数关系开始输入number 显示主菜单 n=1? Y Nn=2? Y Nn=3? Y Nn=4?Y结束 文件操作单词定位输入numbern=1? 单词计数Y 创建文件内容显示N主菜单n=2? Y Nn=3? Y 写入文本N返回主菜单三、详细设计和编码1.头文件包含:#include<stdio.h>#include<stdlib.h>#include<string.h>2.功能细分(1)创建自定义名字文档①用字符数组filename存放特定的文件路径(D:\\Dev-Cpp\\课程设计数据\\)②从键盘输入自定义的文档名字name,把name和“.txt”用strcat连接③再用strcat把路径filename与文档名name连接起来④打开文件时用变量(filename)表示文件名,若无该文件则创建图3-1 创建自定义名字文档编码(2)打开文件读取内容并输出①输入文档名字,根据名字打开文件②打开文件后,用fgets读取文档内容③fgets读取一行输出一行,并用i记录行数④fgets返回EOF(END OF FILE)表示文件结尾(3)写入文本①输入文档名字,根据名字打开文档,若无该文档,则重新建立一个。
中英文搜索引擎应用实验报告

实验报告课程名称计算机信息检索实验项目名称中英文搜索引擎应用班级与班级代码实验室名称(或课室)专业任课教师学号:姓名:实验日期:姓名实验报告成绩评语:指导教师(签名)年月日说明:指导教师评分后,学年论文交院(系)办公室保存。
实验三中英文搜索引擎应用一、实验目的1.认识和了解中英文搜索引擎的基本知识和种类;2.认识和了解中英文搜索引擎的基本知识和种类;3.了解和掌握中英文搜索引擎的多种检索方法;4.深入了解和掌握几种中英文搜索引擎的使用方法;5.分析和对比各种中英文搜索引擎的共性与区别。
二、实验内容:1.找网上的中英文搜索引擎,并列出50个搜索引擎的名称;2.学会使用中英文搜索引擎的初级检索与高级检索两种方式;3. 用5个中文、5个英文搜索引擎对同一主题\同一检索词(关键词)进行检索,从检索效果分析得到的检索结果,并比较分析你所选择的搜索引擎的共性与区别。
三、实验环境CPU:Intel(R) core™2 CPU内存:1G软件:搜索引擎:百度、谷歌、搜狗、雅虎、中国搜索Ask Jeeves、AltaVista、Gigablast、lycos、HotBot 资源:互联网四、实验步骤*以“雷曼兄弟破产案”为主题在以下搜索引擎进行搜索:关键词:雷曼兄弟破产回购1051.百度(1)打开IE浏览器,输入网址:/,打开网页(2)在检索框内输入文字“雷曼兄弟破产回购105”点击查看结果(3)在百度首页中点击,并在检索框内输入如下内容并查看结果2.谷歌(1)在IE浏览器中输入网址:/,打开网页(2)在检索框内输入文字“雷曼兄弟破产回购105”点击,查看结果(3)在谷歌首页中点击,在检索框内输入如下内容并查看结果3.搜狗(1)打开IE浏览器,输入网址:/,打开网页(2)在检索框内输入文字“雷曼兄弟破产回购105”点击查看结果(3)在搜狗首页中点击,并在检索框内输入如下内容查看结果4.雅虎(1)打开IE浏览器,输入网址:/,打开网页(2)在检索框内输入文字“雷曼兄弟破产回购105”点击查看结果5.中国搜索(1)打开IE浏览器,输入网址:/打开网页(2)在检索框内输入文字“雷曼兄弟破产回购105”点击查看结果(3)在中搜首页中点击,并在检索框内输入如下内容查看结果6.Ask Jeeves(1)打开IE浏览器,输入网址:/,打开网页(2)在检索框内输入文字“Lehman Brothers bankrupt Repo105”点击查看结果(3)在ASK首页中点击,并在检索框内输入如下内容查看结果7.AltaVista(1)打开IE浏览器,输入网址:/打开网页(2)在检索框内输入文字“Lehman Brothers bankrupt Repo105”点击查看结果(3)在AltaVista首页中点击,并在检索框内输入如下内容查看结果8.Gigablast(1)打开IE浏览器,输入网址:/打开网页(2)在检索框内输入文字“Lehman Brothers bankrupt Repo105”点击查看结果(3)在Gigablast首页中点击,并在检索框内输入如下内容查看结果9.Lycos(1)打开IE浏览器,输入网址:/打开网页(2)在检索框内输入文字“Lehman Brothers bankrupt Repo105”点击查看结果(3)在Lycos首页中点击,并在检索框内输入关键字,图略10.HotBot(1)打开IE浏览器,输入网址:打开网页(2)在检索框内输入文字“Lehman Brothers bankrupt Repo105”点击查看结果(3)在HotBot首页中点击,并在检索框内输入关键字五、试验结果(一)找网上的中英文搜索引擎,并列出50个搜索引擎的名称:1.中文搜索引擎:百度、Google谷歌、搜狗、Bing(必应) 、雅虎全能搜索、SOSO搜搜有道、爱问搜索引擎、中国搜索、搜网全能搜索引擎、新华网搜索、网易搜索引擎、中华网搜索引擎、搜索客、搜豹、中文司南搜索、中国导航、搜罗、多来米搜索引擎、Biboo、天虎网、网典、找到啦、常青藤、熊猫搜索引擎、21世纪搜索引擎、网上居、国邦在线、酷必搜索、广州视窗、上海在线、北极星、搜友、中经搜索、263搜索、搜易、2. 英文搜索引擎: Google、Yahoo、Windows Live Search、AskJeeves、、AOL Search、HotBot、MSN Search、Teoma、AltaVista、Gigablast、LookSmart、Lycos、Open Directory、Netscape Search(二)使用关键字“雷曼兄弟破产回购105”在中文搜索引擎进行搜索,使用相应的关键字“Lehman Brothers bankrupt Repo105”在英文搜索引擎进行搜索,搜索结果如下:略六、实验分析1.根据上述检索,易看出,在对“雷曼兄弟破产案”的主题检索中,百度中文搜索引擎和Ask Jeeves英文搜索引擎通过初级检索查到的网页数目是分别是中英搜索引擎中最多的,它们分别检索到170,000和4290条记录。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
文本文件单词的检索与计数实验目的和要求1.实践用字符串解决具有一定规模的问题的方法和编程思路;2.掌握文件的操作方法;3.编写实验报告;实验内容要求编程建立一文本文件,每个单词不含空格且不跨行,单词由字符序列构成且区分大小写,统计给定单词在文本文件中出现的总次数,检索输出某个单词出现在文本中的行号、实验步骤1、问题分析该设计分三个部分实现:一,建立文本文件,文件名由用户键盘输入;二,给定单词的计数,输入一个不含空格的单词,统计输出该单词在文本中的出现次数;三,检索给定单词,输入一个单词,检索并输出该单词所在的行号、该行中出现的次数及在该行中的相应位置。
2、系统设计2.1顶层菜单设计●设计菜单内容程序运行后、给出菜单项的内容和输入提示:1、建立文本文件;2、单词子串的计数;3、单词子串的定位;4、退出整个程序;请选择1-4:2.2功能模块函数设计●建立文本文件函数⏹实现思路1)定义一个串变量;2)定义文本文件;3)输入文件名,打开该文件;4)循环读入文本行,写入文本文件While(不是文件输入结束){读入一文本行到串变量;串变量写入文件;输入是否结束(输入标志);}5)关闭文件;⏹函数名void CreatTextFile()●文本文件单词计数函数⏹实现思路1)输入要检索的文件名,打开相应的文件;2)输入要检索统计的单词;3)循环读入文本文件,读入一行,将其送入定义好的串中,并求该串的实际长度,调用串匹配函数进行计数。
While(不是文件结束){读入一行到串中;求出串长度;模式匹配函数计数;}4)关闭文件,输出统计结果;⏹函数名void SubStrCount();●检索单词出现在文本文件中的行号、位置及在该行中出现的次数函数⏹实现思路1)输入要检索的文件名,打开相应的文件;2)输入要检索统计的单词;3)行计数器初值置0;4)While(不是文件结束){读入一行到指定串中;求出串长度;行计数器初值置0;调用模式匹配函数匹配单词定位、该行匹配单词计数;行计数器+1;If(行计数器!=0)输出行号、该行有匹配单词的个数及相应位置;}⏹函数名void SubStrInd()3、完整的程序清单假设串类型说明及串匹配算法都已存在头文件“strpp”中;#include<stdio.h>#include<string.h>#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<s1.length && j<s2.length){if(s1.ch[i]==s2.ch[j]){ i++;j++; /* 继续使下标移向下一个字符位置*/}else{i=i-j+1; j=0;} }if (j>=s2.length)return i-s2.length;elsereturn -1;/* 表示s1中不存在s2,返回-1 *//* 表示s1中存在s2,返回其起始位置*/} /* 函数结束*//*件一个文本文件,在里面输入想要的文本*/void CreatTextFile(){SString S;char fname[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("结束输入吗?y or n :");yn=getchar();}fclose(fp);/* 关闭文件*/printf("建立文件结束!\n");}/*输入2进行计算出现次数,输入3可以确定文本出现的位置,以此实现检索单词的出现在文本文件中的行号,次数以及位置*/void SubStrCount(){FILE *fp;SString S,T;/* 定义两个串变量*/char fname[10];int i=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<S.length-1) /* 检索整个主串S */{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); }/* 统计单词出现的个数*/void SubStrInd(){ FILE *fp;SString S,T; /* 定义两个串变量*/char fname[10];int i,j,k,l,m;int wz[20]; /* 存放一行中字串匹配的多个位置*/printf("输入文本文件名:");scanf("%s",fname);fp=fopen(fname,"r");printf("输入要检索的单词:");scanf("%s",T.ch);T.length=strlen(T.ch);l=0; /* 行计数器置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++; /* 行计数器自增1 */k=0;/* 初始化开始检索位置*/i=0; /* 初始化单词计数器*/while(k<S.length-1) /* 检索整个主串S */{j=PartPosition(S,T,k); /* 调用串匹配函数*/if(j<0) break;else {i++;/* 单词计数器加1 */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");}}}/* 检索单词出现在文本文件中的行号、次数及其位置*//*编写菜单函数,以便使用者方便运行使用。
按1建立文本文件,按2进行单词字符串的计数,按3进行单词字符串的定位,按4退出程序程序*/void CreatTextFile(),SubStrCount(),SubStrInd();int xz;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) {case 1 : CreatTextFile();break;case 2 : SubStrCount();break;case 3 : SubStrInd();break;case 4 : return 0;default:printf("选择错误,重新选\n");}}/*用此函数来退出文本文件的单词检索*/void end(){printf("谢谢使用文本文件的单词检索!\n");exit(0);}/*主函数,利用无限循环可以进行连续的操作*/ int main(){ while(1);{CreatTextFile(),SubStrCount(),SubStrInd();}}4、程序运行测试。