# C语言实现的基于查找表的单词检索软件
# 1 引言
## 1.1 课题背景与意义
数据结构是计算机科学技术与信息安全等专业的一门重要专业基础课,牢固掌握数据结构的基础知识,熟练地运用数据结构的思想与技术方法解决实际应用问题是本课程学习的基本任务与目标。而课程设计是实现这一学习目标的重要环节和组成部分。通过课程设计的联系,学生加深对数据结构知识的理解,牢固掌握其应用方法,并灵活地解决一定实际问题,增强和提高综合分析问题与解决问题的能力。
### 1.1.1 课题背景
当今社会,大数据的研究与发展突飞猛进,这同样也推动了搜索引擎的进步,对于习惯了百度、谷歌等搜索工具的我们来说,查找与搜索看起来不是一件很难的事,但是要知道搜索引擎的发展也经历了一段艰难的历程。在单词查找和在线翻译上,现在比较成熟的有有道词典和百度翻译等。抛弃传统的搜索查找思想,用大数据的思维研究单词查找软件,不失为顺应时代潮流的做法。
### 1.1.2 课题意义
作为计算机专业的学生,应该跟上信息时代的变化节奏。以大数据为基础的查找统计算法算是必修课,必须掌握才能适应环境。随着数据的井喷,数据的处理软件也同样如雨后春笋,层出不穷。以单词检索为例,在线的检索网站就有百度等,检索软件更是有金山词霸、有道词典等,还包括现今流行的记单词软件、驾考宝典、打车软件等,都与单词检索软件有着相似的算法思想。因此,在课程设计中研究检索算法是很有必要的,是为了将来的发展进行一次知识储备,或者说一次演习。
## 1.2 国内外研究现状
### 1.2.1 国内现状
我国全文检索技术的研究起步于20世纪80年代,但发展速度较快。汉字激光照排技术的发明和使用,为全文数据库的开发奠定了基础。至此我国全文数据库进入大规模研制时期基于汉语自身特点,我国学者已提出了自己的全文检索模式——单汉字无标引全文检索系统和全文后控检索系统,并不断深入研究构造新的全文检索模式。
### 1.2.2 国外现状
全文检索这种情报检索技术最早出现于20世纪50年代的美国。80年代以来,英文全文检索发展得较为迅速和完善,如今已成为国外文字型信息检索的主流。主要有分词技术和自动标引技术等。发展趋势上,智能检索、知识检索和基于XML的信息检索将成为将来检索技术的主流。
## 1.3 课程设计的主要研究工作
人工智能是很目前热门的一个研究方向。站在用户的角度来考虑,我们的单词检索软件也应该尽量智能。但是由于水平有限,并不能做到真正的智能,而只能利用现有的知识,把界面做得尽可能地友好。
在功能实现方面,主要分为读取电子书、创建查找表、保存查找表和查找等模块。要求准确无误地读取电子书的内容,并以此为根据建立查找表,查找表又分为静态查找表和哈希表两种方式,都要完整地实现,在此过程中,选择合适的数据结构相当重要,这与我们数据结构课程紧密相关。保存查找表和恢复查找表是相辅相成的,只实现其中一个,另一个就没有意义,因此必须同步实现。在单词查找上,分别用静态查找表和哈希表实现查找,将结果完整地反馈给用户。此外还可以根据自己的想法增加一些有意义的功能。
# 2 系统需求分析与总体设计
## 2.1 系统需求分析
用户提供一个电子书文档,软件要能够打开并读取电子书的内容,根据书中的单词,创建查找表。在创建表的过程中要分别创建静态查找表和哈希表。创建表以后还要能够遍历输出表的内容,以及销毁表。
以上这些都只是查找表框架的构建,系统最重要的功能是单词查找。由于一个单词有多个关键字:单词、页码、行数、出现次数,故可以根据这些关键字分别查询单词,也可以用其中若干个关键字组合来查询,所以能够实现多种方式查询,具体实现步骤较为灵活。查询之外还需要能够增删单词,以及对单词的某些关键字进行修改,修改以后可以调用查询功能进行验证。
上述是必须实现的功能,此外还可以自行增加功能模块。比如可以选择以适当的方式保存查找表,具体方式自由选择,但要求重启系统后能够根据保存的文件恢复查找表。还可以按照单词出现次数等关键字进行统计,比如统计出现频率最高的100个单词等,可以自由发挥。
## 2.2 系统总体设计
根据查找表的存储结构,可将系统主要分为两大块:静态查找表部分和哈希表部分。
### 2.2.1 共有功能
两个部分有很多功能都是相同的,只是在内存和算法上有些许不同。共有的功能有:创建查找表、保存查找表至文件、从文件导入查找表、单词查找、销毁查找表、遍历查找表。其中各模块具体功能为:
- **创建查找表**是根据用户输入的电子书名称,以只读方式打开相应电子书,读取其中的单词,当创建静态查找表时则直接存入静态表中,创建哈希表时则需要先计算单词的哈希函数值,再存入相应的位置。文件读取完毕,查找表也就创建完毕。
- **保存查找表**是指将已经创建的查找表保存至文件中,下一次打开系统时不必再次创建查找表,而可以直接从文件导入。将查找表的结点信息按照一定的顺序依次存入文件,然后再用同样的规则读入文件,达到恢复查找表的目的。保存和导入函数配套使用,方可完成这一功能。
- **销毁查找表**就是将查找表所占的内存空间全部释放,由于静态查找表和哈希表在存储上稍有不同,因此销毁函数也有区别,但大体原理相同。
- **遍历查找表**把查找表中的所有单词遍历输出,原则上要输出每个单词的所有出现次数,等于把电子书的原文输出,但是考虑到电子书有几万个单词,全部输出工作量太大,因此只输出所有不重复的单词,以及该单词在文中的出现次数。
- **单词查找**用户输入需要查找的单词,系统在查找表中找到该单词并输出该单词所有出现次数以及每次出现的页码和行号。在查找时,静态查找表采用遍历顺序表的方式查找,而哈希表则先根据系统的哈希函数计算出单词对应的哈希函数值,在表中相应位置找到该单词并输出。
### 2.2.2 静态查找表特有功能
静态查找表采用线性表形式存储,因此排序后可以进行二分查找,并用来与静态查找进行对比,分析两种查找方式的性能优劣。为了保留原有的静态查找表,在排序前,先将原有的静态表复制一份,在新建的查找表中进行排序和二分查找操作。用计时器计算查找所用的时间,通过时间长短来衡量查找方法的效率。
### 2.2.3 哈希表特有功能
哈希表特有功能为:插入哈希表和删除哈希表。
- **插入哈希表**,用户输入想要插入的单词以及单词出现的页码和行号,无论原来的表中是否存在该单词,都将进行插入,但是会提示用户该单词是否已经存在于哈希表中。
- **删除哈希表**,可以选择删除单词的所有出现位置和特定出现位置。选择前者时,用户只需输入待删除的单词,系统会删除该单词的所有结点。若选择后者,则还需要输入待删除位置的页码和行号。删除以后可以调用查询功能进行�
精选_C语言实现的基于查找表的单词检索软件_源码打包
版权申诉
7 浏览量
2022-03-11
08:47:33
上传
评论
收藏 1.26MB ZIP 举报
工具盒子
- 粉丝: 59
- 资源: 1313
最新资源
- STC15单片机串口2使用程序例子
- 读取日志的excel生成周报 用python3开发weekplan-master.zip
- python 读取excel数据导入dbimport-data-master.zip
- K折交叉验证BP神经网络,多输入多输出BP神经网络(代码完整,数据齐全)
- B07训练原图.zip
- python-对Excel数据处理做可视化分析.zip
- 人工智能大作业-无人机图像目标检测的python源代码+文档说明.zip
- 基于GoogLeNet实现Cifar-10图像分类项目python源码(高分项目).zip
- 数据库 sql 面试题目及答案解析.docx
- 汽车常见 10 种传感器故障后的表现与解决措施.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈