文件系统搜索课程设计报告
- 格式:doc
- 大小:247.00 KB
- 文档页数:20
实验名称:文件检索系统设计与实现实验时间:2023年3月10日实验地点:计算机实验室一、实验目的1. 理解文件检索系统的基本原理和设计方法。
2. 掌握文件检索系统的主要功能模块及其实现技术。
3. 提高编程能力和系统设计能力。
二、实验原理文件检索系统是一种信息检索系统,主要用于对大量文件进行高效、准确的检索。
其基本原理包括:1. 文件索引:将文件内容转换为索引数据,以便快速检索。
2. 检索算法:根据用户输入的查询条件,从索引数据中找到匹配的文件。
3. 结果排序:根据相关性、文件大小、文件类型等因素对检索结果进行排序。
三、实验内容1. 系统设计(1)系统架构:采用分层设计,包括数据层、业务逻辑层和表现层。
(2)功能模块:1)数据层:负责文件的存储、读取和更新。
2)业务逻辑层:负责文件索引、检索算法和结果排序。
3)表现层:负责用户界面设计和交互。
2. 实现技术(1)文件存储:采用关系型数据库(如MySQL)存储文件信息。
(2)文件索引:采用倒排索引技术,将文件内容转换为索引数据。
(3)检索算法:采用布尔检索算法,根据用户输入的查询条件,从索引数据中找到匹配的文件。
(4)结果排序:根据相关性、文件大小、文件类型等因素对检索结果进行排序。
3. 实验步骤(1)设计数据库表结构,包括文件信息、索引数据等。
(2)编写代码实现文件存储、读取和更新功能。
(3)实现文件索引功能,将文件内容转换为索引数据。
(4)实现检索算法,根据用户输入的查询条件,从索引数据中找到匹配的文件。
(5)实现结果排序功能,根据相关性、文件大小、文件类型等因素对检索结果进行排序。
(6)编写代码实现用户界面,包括输入查询条件、显示检索结果等。
四、实验结果与分析1. 实验结果(1)成功实现了文件检索系统的基本功能,包括文件存储、索引、检索和排序。
(2)系统运行稳定,检索速度快,用户界面友好。
2. 实验分析(1)通过本次实验,掌握了文件检索系统的基本原理和设计方法。
文件系统设计课程设计一、教学目标本课程的教学目标是使学生掌握文件系统设计的基本原理和方法,培养学生分析和解决文件系统相关问题的能力。
具体分为以下三个部分:1.知识目标:学生需要掌握文件系统的概念、组成、基本操作和存储分配策略等基本知识;了解不同类型的文件系统结构及其优缺点;熟悉文件系统的性能评价指标和优化方法。
2.技能目标:学生能够运用所学知识分析和设计简单的文件系统;具备使用文件系统相关工具软件进行维护和优化的能力;能够阅读和理解文件系统相关的技术文档。
3.情感态度价值观目标:培养学生对文件系统的兴趣,使其认识到文件系统在计算机系统中的重要性;培养学生严谨的科学态度和良好的团队合作精神。
二、教学内容本课程的教学内容主要包括以下几个部分:1.文件系统概述:介绍文件系统的基本概念、作用、发展历程和分类。
2.文件系统的组成:讲解文件系统的结构、组件及其功能,包括文件、目录、存储器等。
3.文件系统的实现:深入剖析文件系统的核心实现技术,如文件分配策略、目录结构、文件访问控制等。
4.文件系统的性能评价:介绍文件系统的性能评价指标,如读写速度、空间利用率等,并讲解优化方法。
5.常见文件系统分析:对比分析不同类型的文件系统结构及其适用场景,如FAT32、NTFS、ext4等。
6.文件系统的维护与优化:讲解如何使用文件系统工具软件进行维护和优化,以提高系统性能。
三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式进行教学:1.讲授法:教师通过讲解、演示等方式,向学生传授文件系统的基本概念、原理和实现方法。
2.案例分析法:教师通过分析实际案例,引导学生运用所学知识解决实际问题。
3.实验法:学生通过动手实验,加深对文件系统结构、操作和维护的理解。
4.讨论法:学生在课堂上相互交流、讨论,分享学习心得和经验,提高团队合作能力。
四、教学资源为了支持本课程的教学,我们将准备以下教学资源:1.教材:选用国内外优秀教材,如《计算机操作系统》、《文件系统设计与实现》等。
文件查找系统课程设计一、课程目标知识目标:1. 学生理解文件查找系统的基本原理,掌握文件组织、存储和检索的方法。
2. 学生掌握至少两种文件查找算法,并能分析其优缺点。
3. 学生了解文件查找系统在生活中的应用,例如图书馆检索、网络搜索等。
技能目标:1. 学生能够运用所学知识,设计简单的文件查找系统。
2. 学生通过实践操作,提高计算机编程能力和解决问题的能力。
3. 学生学会利用文件查找系统提高信息检索效率,为日常生活和学习提供便利。
情感态度价值观目标:1. 学生培养对计算机科学技术的兴趣,激发探索精神和创新意识。
2. 学生认识到文件查找系统在信息时代的重要性,增强信息素养和社会责任感。
3. 学生通过合作学习,培养团队精神和沟通能力,树立合作共赢的观念。
课程性质分析:本课程为计算机科学与技术学科的一门应用性课程,旨在帮助学生掌握文件查找系统的基本知识和技能,提高信息检索效率。
学生特点分析:本课程针对初中年级学生,他们对计算机有一定的基础,对新知识充满好奇心,但需要通过具体案例和实践活动来巩固和运用所学知识。
教学要求:1. 教师应注重理论与实践相结合,提高学生的实际操作能力。
2. 教师引导学生运用所学知识解决实际问题,培养学生的创新意识和解决问题的能力。
3. 教师关注学生的情感态度价值观培养,将课程与生活实际相结合,提高学生的信息素养和社会责任感。
二、教学内容1. 文件查找系统基本原理:包括文件组织结构、文件存储方式、文件检索方法等。
- 教材章节:第二章 文件查找系统概述- 内容列举:文件分类、文件存储格式、索引查找、顺序查找等。
2. 文件查找算法:重点讲解二分查找法和哈希查找法。
- 教材章节:第三章 文件查找算法- 内容列举:二分查找算法原理、哈希查找算法原理、算法优缺点分析等。
3. 文件查找系统应用案例分析:介绍文件查找系统在图书馆检索、网络搜索等领域的应用。
- 教材章节:第四章 文件查找系统应用- 内容列举:图书馆检索系统、搜索引擎工作原理、实际应用场景等。
文件检索实验报告一、引言文件检索是一种通过关键词或查询语句来查找和检索目标文件的方法。
它在信息检索领域有着广泛的应用,包括大规模文本搜索、网络搜索引擎等。
本实验旨在通过设计和实现一个简单的文件检索系统,来探讨文件检索的原理和实现方法。
二、文件检索系统设计2.1 系统架构文件检索系统主要包括以下三个组件:1.文本预处理器:负责对待检索的文件进行预处理,包括文本分词、去除停用词等。
2.索引构建器:将预处理后的文本构建成倒排索引,以便后续的查询操作。
3.查询处理器:接收用户的查询请求,根据倒排索引进行检索,并返回与查询相关的文件列表。
2.2 文件预处理文件预处理是文件检索的第一步,目的是将待检索的文件转化为可以建立索引的形式。
常见的预处理步骤包括:1.分词:将文本切分成一个个单词或词组,常用的方法有基于规则的切分和基于统计的切分。
2.去除停用词:将一些常见且无实际检索意义的词汇去除,例如“的”、“是”等。
3.大小写转换:将文本中的英文字母统一转换为小写,以方便后续的索引构建和查询处理。
2.3 索引构建索引构建是文件检索的核心步骤,其目的是根据预处理后的文本构建倒排索引。
倒排索引是一种将单词映射到包含该单词的文件列表的数据结构。
索引构建的过程主要包括以下几个步骤:1.单词统计:对预处理后的文本进行单词的统计,得到每个单词在不同文档中的出现次数。
2.倒排列表生成:根据单词的统计信息,生成每个单词对应的倒排列表,记录该单词在哪些文档中出现。
3.索引存储:将生成的倒排列表存储到磁盘上,以便后续的查询操作。
2.4 查询处理查询处理是文件检索的关键步骤,通过用户的查询请求,在倒排索引中查找与查询相关的文档列表,并按照相关性进行排序。
查询处理的过程主要包括以下几个步骤:1.查询解析:将用户的查询请求解析为一组关键词,例如对查询语句进行分词。
2.查询扩展:根据倒排索引,将查询中的关键词进行扩展,找到与之相关的同义词或相关词。
文件系统的课程设计一、课程目标知识目标:1. 理解文件系统的基本概念,掌握文件、目录、磁盘存储等基础知识;2. 学习文件系统的组织结构,了解不同类型的文件系统及其特点;3. 掌握文件操作的基本命令,如创建、删除、复制、移动、重命名等;4. 了解文件权限和访问控制,掌握基本的文件权限设置方法。
技能目标:1. 能够运用所学知识,对文件系统进行有效管理,提高文件存储和检索效率;2. 学会使用文件系统工具进行磁盘空间分析,解决磁盘空间不足的问题;3. 能够运用文件权限设置,保障文件系统的安全性和隐私性;4. 培养学生动手操作能力,通过实践加深对文件系统知识的理解和应用。
情感态度价值观目标:1. 培养学生对计算机科学的学习兴趣,激发他们探索文件系统原理的欲望;2. 培养学生的团队合作意识,学会在团队中分享、交流、协作;3. 增强学生的信息安全和隐私保护意识,让他们认识到文件系统安全的重要性;4. 培养学生勇于尝试、克服困难的品质,提高他们解决问题的自信心。
本课程针对高年级学生,结合学科特点和教学要求,注重理论与实践相结合,旨在帮助学生掌握文件系统知识,提高实际操作能力,培养良好的信息素养和价值观。
通过具体、可衡量的课程目标,使学生在课程结束后能够达到预期的学习成果,为后续学习打下坚实基础。
二、教学内容1. 文件系统基础知识:文件、目录、磁盘存储等概念;文件系统的功能、分类及特点。
2. 文件系统组织结构:文件系统的逻辑结构、物理结构;不同类型文件系统的结构特点。
3. 文件操作命令:创建、删除、复制、移动、重命名等文件操作命令的使用方法和应用场景。
4. 文件权限和访问控制:文件权限的设置与修改;访问控制列表(ACL)的配置和应用。
5. 磁盘空间管理:磁盘空间分析工具的使用;磁盘分区、格式化、挂载等操作。
6. 文件系统安全与保护:文件系统的安全级别;加密、压缩、备份等文件保护方法。
教学大纲安排:第一课时:文件系统基础知识及组织结构第二课时:文件操作命令第三课时:文件权限和访问控制第四课时:磁盘空间管理第五课时:文件系统安全与保护教学内容关联教材章节:1. 文件系统基础知识:教材第3章第1节2. 文件系统组织结构:教材第3章第2节3. 文件操作命令:教材第4章4. 文件权限和访问控制:教材第5章5. 磁盘空间管理:教材第6章6. 文件系统安全与保护:教材第7章三、教学方法针对文件系统这一章节的内容,采用以下教学方法:1. 讲授法:通过教师系统地讲解文件系统的理论知识,使学生掌握基本概念、组织结构和文件操作命令等。
文件搜索课程设计c语言一、教学目标本课程的目标是让学生掌握C语言中文件搜索的基本概念和实现方法。
通过本课程的学习,学生应能够:1.理解文件搜索的概念和原理,包括文件的读取、写入、打开、关闭等操作。
2.熟练使用C语言中的文件搜索函数,如fopen、fclose、fread、fwrite等。
3.编写C语言程序实现文件的搜索功能,包括文件的创建、删除、复制等操作。
4.能够对文件进行排序和查找,提高文件搜索的效率。
二、教学内容本课程的教学内容主要包括以下几个部分:1.文件的基本概念和操作,包括文件的读取、写入、打开、关闭等。
2.文件搜索的原理和算法,包括顺序搜索、二分搜索等。
3.C语言中的文件搜索函数,如fopen、fclose、fread、fwrite等。
4.文件的排序和查找算法,包括冒泡排序、选择排序、二分查找等。
5.文件的创建、删除、复制等操作。
三、教学方法本课程的教学方法主要包括以下几种:1.讲授法:通过讲解文件的基本概念、原理和算法,让学生掌握文件搜索的基本知识。
2.案例分析法:通过分析实际案例,让学生了解文件搜索的应用场景和实现方法。
3.实验法:通过编写C语言程序,让学生动手实现文件的搜索、排序和查找等功能。
4.讨论法:通过分组讨论和交流,让学生分享学习心得和经验,提高解决问题的能力。
四、教学资源本课程的教学资源包括以下几种:1.教材:选用权威、实用的C语言教材,为学生提供系统的学习资料。
2.参考书:推荐一些经典的C语言编程书籍,供学生课后自学和参考。
3.多媒体资料:制作课件、教学视频等,以直观、生动的方式呈现教学内容。
4.实验设备:提供计算机、编程环境等实验设备,让学生能够动手实践。
五、教学评估本课程的评估方式包括以下几个方面:1.平时表现:通过课堂参与、提问、回答问题等方式评估学生的学习态度和积极性。
2.作业:布置适量的作业,评估学生的理解和掌握程度,包括编程练习、算法设计等。
3.考试:进行期中和期末考试,评估学生对课程知识的掌握和应用能力。
一、实验目的1. 熟悉Windows操作系统的文件查找功能。
2. 掌握使用文件查找功能查找特定文件的方法。
3. 提高文件管理的效率。
二、实验环境1. 操作系统:Windows 102. 软件环境:Windows自带的文件查找功能三、实验内容1. 熟悉文件查找功能界面2. 查找特定文件3. 查找特定文件类型4. 查找包含特定文字的文件5. 查找最近修改的文件6. 使用高级搜索功能四、实验步骤1. 熟悉文件查找功能界面(1)打开Windows资源管理器,点击左上角的搜索框。
(2)在搜索框中输入需要查找的文件名或文件类型。
(3)点击搜索框右侧的下拉菜单,选择查找方式,如:所有文件、图片、视频等。
2. 查找特定文件(1)在搜索框中输入文件名,如:example.txt。
(2)点击搜索按钮,系统将自动查找与输入文件名完全匹配的文件。
3. 查找特定文件类型(1)在搜索框中输入文件扩展名,如:.jpg。
(2)点击搜索按钮,系统将自动查找与输入文件扩展名匹配的所有文件。
4. 查找包含特定文字的文件(1)在搜索框中输入需要查找的文字,如:重要。
(2)点击搜索按钮,系统将自动查找包含输入文字的所有文件。
5. 查找最近修改的文件(1)在搜索框右侧的下拉菜单中选择“高级搜索”。
(2)在“修改日期”选项中,选择“修改日期”。
(3)在“时间范围”中,选择“最近一天”、“最近一周”、“最近一个月”或“最近一年”。
(4)点击搜索按钮,系统将自动查找在指定时间内修改过的所有文件。
6. 使用高级搜索功能(1)在搜索框右侧的下拉菜单中选择“高级搜索”。
(2)在弹出的高级搜索对话框中,可以设置以下条件:a. 搜索文件名:输入文件名或文件名的一部分。
b. 搜索位置:选择要搜索的文件夹路径。
c. 文件类型:选择要搜索的文件类型。
d. 文件大小:设置文件大小的范围。
e. 修改日期:设置文件的修改日期范围。
f. 包含文字:输入需要查找的文字。
《操作系统》课程设计题目名称多用户多级目录共享文件系统的实现_学生学院计算机学院专业班级 10级计算机科学与技术7班学号学生姓名指导教师刘老师20年月日一、可行性分析随着信息化进程,文件管理越来越受到重视,并且逐渐成为国内外业界研究的热点。
在现有的操作系统中,几乎都是通过文件系统来组织和管理计算机中所存储的程序和数据等大量的文件。
在现代OS中,几乎毫毛例外地是通过文件系统来组织和管理在计算机中存储和大量程序和数据的;或者说,文件系统的管理功能,是通过把它所管理的程序和数据组织成一系列文件的方法来实现的。
而文件则是指具有文件名的若干相关元素的集合。
元素通常是记录,而记录又是一组有意义的数据项的集合。
通过分析,可知文件系统对大多数文件的操作,器过程大致都是这样两步:第一步是通过检索文件目录来找到指定文件的属性及其在外存上的位置;第二步是对文件实施相应的操作,如读文件或写文件。
为了便于管理和控制文件,根据系统管理员或用户所规定的存取控制属性,将文件分为只读文件、读写文件和只执行文件三类。
而文件系统的模型主要分为三个层次,分别是对象及其属性、对对象的操纵和管理的软件集合、文件系统接口,其最底层的是对象及其属性;中间层对对象进行操纵和管理的软件集合;最高层是文件系统提供给用户的接口。
用户通过文件系统所提供的系统调用实施对文件的操作,如创建文件、删除无文件、读文件、写文件等,为了方便用户使用文件而提供了更多对文件的操作,如打开和关闭文件。
软硬件可行性分析:本模拟系统的实现需要一台PC机作为硬件设备,此外,软件开发环境包括:Win7、VC++6.0,.因此,该模拟系统具备实现条件,综合分析,系统在成本、技术、操作上,都是可行的。
技术可行性分析:在当前的技术条件下,该系统的各个功能模块在理论上而言都是能实现的;根据自己掌握的技术情况,在规定的期限内,系统的开发设计能完成。
二、需求分析1、功能需求分析功能划分:本模拟系统主要针对文件的管理和操作名主要有:创建用户、文件、文件夹,读文件,写文件,执行文件,关闭文件,删除用户、文件夹、文件的功能。
文件检索实验报告模板1. 实验目的本实验主要目的是通过设计并实现文件检索系统,了解和掌握文件检索的基本原理和技术,以及对文件进行建立索引并进行关键字检索的方法。
2. 实验环境- 操作系统:Windows 10- 开发工具:Python 3.9.2- 依赖库:PyQt5, Whoosh3. 实验过程3.1 数据准备首先,我们在本地选择一些文本文件作为实验的数据集,包括文章、新闻、报告等。
这些文件将被用于建立索引和进行关键字检索。
3.2 文件索引在系统中,我们使用Whoosh库来建立文件的索引。
首先,我们需要定义文件的索引结构,包括文件名、路径、内容等字段。
然后,我们通过遍历数据集中的所有文件,将文件的这些信息添加到索引中。
3.3 关键字检索通过Whoosh库提供的API,我们可以方便地进行关键字检索。
用户可以在系统界面中输入关键字,并点击搜索按钮进行检索。
系统会根据用户输入的关键字查询索引,并返回匹配的文件列表。
3.4 界面设计为了方便用户使用,我们设计了一个简单的图形界面。
用户可以通过界面中的输入框输入关键字,并点击搜索按钮进行检索。
搜索结果将以列表形式展示在界面中的另一个窗口中,用户可以选择点击某一项来打开对应的文件。
4. 实验结果经过实验,我们成功地建立了文件的索引并实现了关键字检索功能。
用户可以通过输入关键字来搜索他们感兴趣的文件,并且可以通过点击搜索结果来打开对应的文件。
实验结果表明,我们设计的文件检索系统能够满足用户的需求,并具有良好的检索性能。
5. 实验总结通过本次实验,我们深入了解了文件检索的原理和技术,并实践了文件检索系统的设计与实现。
实验过程中,通过使用Whoosh库,我们学会了如何建立文件索引和进行关键字检索。
同时,通过设计简单的图形界面,我们使文件检索系统更加易用和友好。
实验结果表明,我们成功完成了实验目标,并取得了满意的效果。
然而,我们也发现了一些不足之处。
首先,我们的文件检索系统只能处理文本文件,并不能处理其他类型的文件。
一、课程概述1. 课程名称:文档查询课程2. 课程目标:使学生掌握文档查询的基本原理、方法和技巧,提高信息检索能力,培养高效的信息获取和处理能力。
3. 课程内容:包括文档查询的基本概念、搜索引擎的使用、高级查询技巧、特定领域文档查询等。
4. 教学方法:理论教学、案例教学、实践操作、小组讨论等。
5. 教学对象:大学生、职场人士、对信息检索有兴趣的学习者。
二、课程设计原则1. 实用性:课程内容紧密结合实际需求,使学生能够学以致用。
2. 系统性:课程内容结构合理,逻辑清晰,使学生对文档查询有全面的认识。
3. 可行性:课程设计考虑教学资源、师资力量等因素,确保课程顺利实施。
4. 创新性:在教学方法上,采用多种教学手段,激发学生的学习兴趣。
三、课程教学大纲1. 课程模块划分- 模块一:文档查询基础- 模块二:搜索引擎使用技巧- 模块三:高级查询技巧- 模块四:特定领域文档查询- 模块五:实践操作与案例分析2. 模块一:文档查询基础- 课时:2课时- 内容:文档查询的基本概念、信息检索的基本原理、信息检索的分类等。
3. 模块二:搜索引擎使用技巧- 课时:4课时- 内容:搜索引擎的基本使用方法、高级搜索技巧、搜索引擎的优缺点等。
4. 模块三:高级查询技巧- 课时:3课时- 内容:布尔逻辑查询、字段查询、排序与筛选、分组与统计等。
5. 模块四:特定领域文档查询- 课时:2课时- 内容:学术文献查询、专利查询、新闻报道查询等。
6. 模块五:实践操作与案例分析- 课时:4课时- 内容:实际操作练习、案例分析、课程总结与展望。
四、教学方法与手段1. 理论教学:通过课堂讲授、多媒体演示等方式,使学生掌握文档查询的基本知识和技能。
2. 案例教学:结合实际案例,引导学生分析问题、解决问题,提高学生的实际操作能力。
3. 实践操作:提供丰富的实践资源,让学生在操作中掌握文档查询技巧。
4. 小组讨论:通过小组合作,培养学生的团队协作能力和沟通能力。
XXX大学课程设计文件系统搜索课程名称计算机系统开发综合训练(2)姓名XXX院(系)信息科学与技术学院专业班级计算机123班学号XXX指导教师XXX源代码下载:/s/1mgy2PBU目录1.需求分析 (1)1.1实验原理 (1)1.2数据结构 (2)1.3算法描述 (2)1.4算法流程图 (3)2.概要设计 (3)2.1系统流程图 (3)2.2 模块划分 (4)3.详细设计 (5)3.1视图控制模块 (5)3.2目录管理模块 (10)3.3关键字管理模块 (11)3.4文件搜索模块 (11)3.5结果显示模块 (14)4.调试分析 (14)4.1搭建测试环境 (14)4.2测试结果 (15)5.总结 (16)1.需求分析在日常的学习和办公中,在查找一个或多个文件时,经常要使用到文件搜索的功能。
所谓文件搜索,是指用户输入一个关键字,该关键字通常是完整的文件名,或者是部分的文件名,又或者是文件的扩展名,通过匹配用户给出的关键字,从指定的目录中筛选出满足条件的文件。
文件系统搜索应该实现以下几个功能:1. 接受用户输入的关键字;2. 接受用户指定的搜索路径;3. 从指定的路径中搜索所有满足条件的文件;4. 列举出所有筛选出的文件。
1.1实验原理在Windows文件系统中,文件都以树型的结构存放。
通常在一台计算机中,有多个磁盘,每个磁盘分别为一棵树,其根目录通常形如:C:\,在该目录下,可以有多个子目录,每个子目录下又可以有多个子目录,但每个目录只能有一个父节点(根节点除外,根节点没有父节点)。
在一个目录下,每一个文件可以看作是一片叶子,叶子节点没有子目录。
根据文件系统的树型结果原理,在对一个文件进行搜索时,可以先给定一个节点,并以这个节点为根节点,依次遍历该节点下的所有子孙节点。
遍历的算法是一个递归的算法,其遍历方式又分为发下几种:1. 先序遍历;2. 中序遍历;3. 后序遍历;先序遍历:先访问根节点,再访问左子树,最后访问右子树;中序遍历:先遍历左子树,然后访问根结点,最后遍历右子树。
后序遍历:先遍历左子树,然后遍历右子树,最后访问根结点。
在Java 1.7版本中,新增了两个对文件和目录操作的两个类:Path、Files。
通过调用Files类的静态方法Files.walkFileTree(),就可以实现对某一个目录的递归搜索。
Files.walkFileTree()方法需要FileVisitor参数,FileVisitor代表一个文件访问器,walkFileTree()方法会自动遍历start路径下的所有文件和子目录,遍历文件和子目录都会触发FileVisitor中相应的方法。
这四个方法在下面的代码中出现。
FileVisitor中的四个方法会返回一个FileVisitorResult,它代是一个枚举类,代表访问之后的行为。
FileVisitor定义了如下几种行为:CONTINUE:代表访问之后的继续行为SKIP_SIBLINGS:代表继续访问,但不访问该文件或目录的兄弟文件或目录SKIP_SUBTREE:继续访问,但不访问该目录或文件的子目录TERMINATE:终止访问1.2数据结构文件搜索的结果是一个字符串集合,其中每个字符串是搜索出的文件的完整路径。
因此应该使用一个集合类存放搜索的结果,在此程序中使用实现了List接口的ArrayList 来存放搜索的结果。
List集合提供了以下几个常用的操作集合的方法:add(E elem):住集合中添加元素。
contains(Object o):判断集合中是否存在元素o。
remove(Object o):从集合中移除指定的元素。
size():获取集合中元素的个数。
get(int index):获取集合中先给定索引的元素。
1.3算法描述扫描目录搜索文件的算法如下:1. 先确定一个根目录,依次扫描该目录下的所有文件;2. 匹配用户给出的关键字,如果存在匹配的项,则把该文件的详细路径输出到列表中。
3. 如果当前目录下还有未扫描的目录,则把一个未扫描的子目录作为根目录,转到第1步;如果没有未扫描的子目录且当前不是最开始的根节点,则转到第4步;如果当前根是最开始的根目录,转到第5步;4. 返回上一级目录,执行第3步;5. 结束扫描。
1.4算法流程图2.概要设计2.1系统流程图文件系统搜索的整体流程图如图2所示。
2.2 模块划分系统可分为5大模块:1. 视图控制模块2. 目录管理模块3. 关键字管理模块4. 文件搜索模块5. 结果显示模块视图管理模块:主要负责对整个程序的界面进行管理,绘制软件界面,管理软件中使用的控件,并对控件发出的事件进行响应。
目录管理模块:主要负责对用户输入的目录进行判断,判断用户输入的是不是一个合法的路径,其次判断用户输入的目录是否存在。
若路径不存在,则提示用户重新输入,若路径存在,则把用户输入的路径保存起来。
关键字管理模块:主要负责接收用户输入的关键字。
如果用户未输入任何关键字,则提示用户应输入内容。
如果用户已正确输入了关键字,则把用户输入的关键字保存起来。
文件搜索模块:主要负责在指定的目录下对用户输入的关键字进行搜索,并把搜索的结果保存起来。
结果显示模块:主要负责把文件搜索模块中的搜索结果显示到一个列表中。
3.详细设计3.1视图控制模块系统界面上主要有以下几个组件:1. 路径文本框2. 路径选择按钮3. 关键字文本框4. 搜索按钮5. 结果显示列表框具体实现方式如下:设计一个类MainFrame,即程序的主窗体,该类继承于Jframe类。
整个界面分割成两个部分:上半部分用记获取用户输入的搜索路径及关键字,下半部分主要用于显示搜索的结果。
在MainFrame类中,创建下列成员:private DefaultListModel<String> model = new DefaultListModel<String>();private JList<String> list = new JList<String>(model);private JScrollPane scrollPane = new JScrollPane(list);private JPopupMenu popupMenu = new JPopupMenu();private JMenuItem deleteItem = new JMenuItem("删除");private JTextField searchFolder = new JTextField(); // 搜索的目录private JPanel searchPanel = new JPanel();private JButton buttonSkim = new JButton("浏览"); // 浏览按钮private JLabel folderLabel = new JLabel(" 选择搜索的路径:");private JLabel fileLabel = new JLabel(" 输入要查找的文件:");private JTextField searchFile = new JTextField(); // 搜索的文件JButton buttonSearch = new JButton("搜索");private JPanel folderPanel = new JPanel();private JPanel filePanel = new JPanel();private JLabel messageLabel = new JLabel(" 搜索结果:");private JPanel resultPanel = new JPanel();其中searchFolder是JTextFild类的一个对象,用于接收用户输入的路径。
buttonSkim 是JButton类的一个对象,当用点击该按钮时,将弹出一个路径选择框,供用户选择搜索的目录。
searchFile是JTextFild类的一个对象,用于接收用户输入的关键字。
buttonSearch 是JButton类的一个对象,当用点击该按钮时,将开始执行搜索操作。
list是JList类的一个对象,用于列举出所有搜索的结果。
在MainFrame的构造器中,分别把上述的组件添加到窗体中:popupMenu.add(deleteItem);list.add(popupMenu);list.setFixedCellHeight(30);list.setFixedCellWidth(50);searchPanel.setLayout(new GridLayout(2, 1)); searchPanel.add(folderPanel);searchPanel.add(filePanel);searchFolder.setColumns(25);searchFile.setColumns(25);folderPanel.add(folderLabel);folderPanel.add(searchFolder);folderPanel.add(buttonSkim);filePanel.add(fileLabel);filePanel.add(searchFile);filePanel.add(buttonSearch);resultPanel.setLayout(new BorderLayout(5, 5)); resultPanel.add(messageLabel, BorderLayout.NORTH);resultPanel.add(scrollPane, BorderLayout.CENTER);this.add(searchPanel, BorderLayout.NORTH);this.add(resultPanel, BorderLayout.CENTER);为“搜索”按钮添加事件处理程序,当用户点击该按钮时,将开始搜索。
其代码如下:buttonSearch.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e){// 先清除先前所有的记录model.removeAllElements();if (searchFolder.getText().trim().equals("")){JOptionPane.showMessageDialog(MainFrame.this, "请输入查找的路径!");return;}if (searchFile.getText().trim().equals("")){JOptionPane.showMessageDialog(MainFrame.this, "请输入查找的文件!");return;}FileSearcher searcher = new FileSearcher(searchFolder.getText());try{List<String>result = searcher.search(searchFile.getText());// 把搜索结果显示到列表中for (String file : result){model.addElement(file);}messageLabel.setText(" 搜索结果:共查找到" + result.size() + "个项目"); }catch (IOException e1){e1.printStackTrace();}}});3.2目录管理模块为“浏览按钮”添加事件处理程序,当用点击该按钮时,将弹出一个路径选择框,供用户选择搜索的目录。