(最新原创毕设)基于SpringBoot的分布式存储平台/10.3(白嫖源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案 - 指南
分布式存储平台的设计与实现
摘要:随着信息技术的快速发展,资料存储需求日益增长,传统的集中式存储方式已难以满足海量数据高效管理的要求。因此,设计和实现一个分布式存储平台成为当前研究的重要方向。本研究旨在解除现有存储系统中扩展性不足、性能瓶颈等问题,依据构建一个分布式存储平台,为用户提供高效、可靠的文件管理解决方案。
在系统实现方面,平台采用了Spring Boot作为开发框架,利用Java语言实现业务逻辑,并结合MySQL数据库完毕用户信息和文件元数据的管理。此外,通过集成分布式文件系统,实现了记录的实际存储与检索功能。系统支持文件上传、下载、删除、恢复以及回收站管理等核心功能,同时为管理员提供了用户管理和全局文件监控能力。技术上,系统还引入了JWT认证机制以保障安全性,并通过Redis缓存优化性能。
本研究的价值在于提供了一种灵活且高效的分布式存储方案,能够显著提升文档管理的便捷性和可靠性。平台不仅适用于个人用户的数据存储需求,还可广泛应用于企业级场景,助力组织实现内容资产的有用管理。研究成果对推动分布式存储技术的发展具有重要意义,同时也为类似系统的开发提供了参考价值。
关键词:Java;Spring Boot;分布式存储平台;MySQL
Design and implementation of a distributed storage platform
Abstract:With the rapid development of information technology, the demand for data storage is increasing, and the traditional centralized storage method is difficult to meet the requirements of efficient management of massive data. Therefore, the design and implementation of a distributed storage platform has become an important direction of current research. This study aims to solve the problems of insufficient scalability and performance bottleneck in existing storage systems, and to provide users with efficient and reliable file management solutions by building a distributed storage platform.
In terms of system implementation, the platform adopts Spring Boot as the development framework, uses Java language to implement business logic, and combines MySQL database to complete the management of user information and file metadata. In addition, through the integration of the distributed file system, the actual storage and retrieval functions of files are realized. The system supports core functions such as file upload, download, deletion, restoration, and recycle bin management, and provides administrators with user management and global file monitoring capabilities. Technically, the system also introduces a JWT authentication mechanism to ensure security, and optimizes performance through Redis caching.
The value of this study lies in the fact that it provides a flexible and efficient distributed storage solution, which can significantly improve the convenience and reliability of file management. The platform is not only suitable for the data storage needs of individual users, but also widely used in enterprise-level scenarios to help organizations achieve effective management of data assets. The research results are of great significance for promoting the development of distributed storage technology, and also provide reference value for the development of similar systems.
Key words:Java; Spring Boot; distributed storage platform; MySQL
目录
1.1 研究背景
1.2 研究目的和意义
1.3 国内外研究现状
1.4 论文章节与内容安排
2 相关技术介绍
2.1 B/S体系结构
2.2 Java语言
2.3 Spring Boot框架
2.4 MySQL数据库
3 系统分析
3.1 可行性分析
3.1.1 技术可行性
3.1.2 经济可行性
3.1.3 操作可行性
3.2 架构需求分析
3.2.1 功能性需求分析
3.2.2 非功能需求分析
3.3 架构流程设计
3.3.1工具操作流程
3.3.2 登录流程
3.3.3 注册流程
4 环境概要设计
4.1 体系架构设计
4.2 系统功能模块设计
4.3 数据库设计
4.3.1 概念设计
4.3.2 逻辑设计
5 系统实现
5.1 用户登录模块的实现
5.2 用户注册模块的实现
5.3 系统用户模块的实现
5.4 网盘类型管理模块的实现
5.5 我的网盘管理模块的完成
5.6 文件上传管理模块的实现
5.7 文件存储管理模块的构建
5.8 文件删除管理模块的实现
5.9 材料回收管理模块的建立
5.9 文件恢复管理模块的实现
6 系统测试
6.1 测试目的
6.2 功能测试
6.3 测试结果
结 论
参考文献
致 谢
1 绪 论
1.1 研究背景
随着信息技术的迅猛发展和数字化转型的深入推进,数据量呈爆炸式增长,传统集中式存储系统在面对海量数据时逐渐暴露出扩展性不足、性能瓶颈明显等问题。尤其是在云计算和大内容时代,用户对存储系统的可靠性、可用性和高效性提出了更高的要求。然而,传统的存储架构难以满足分布式环境下的多用户并发访问、大规模数据管理以及跨地域协同工作的需求,这促使研究者们将目光转向分布式存储技术。分布式存储通过将数据分散存储在多个节点上,不仅能够管用提升系统的容错能力和扩展性,还为解决大规模数据管理问题提供了新的思路。
本文正是基于当前存储技术面临的挑战与分布式存储的优势。一方面,现有存储系统在应对复杂应用场景时存在诸多局限,例如单点故障风险高、扩展成本大等;另一方面,分布式存储技术凭借其灵活的架构设计和强大的数据处理能力,逐渐成为学术界和工业界的关注焦点。特有是在个人网盘服务和企业级数据管理领域,分布式存储的应用需求日益迫切。因此,探索一种基于现代技术栈的分布式存储平台设计方案,不仅是对现有技术的实践应用,也是对未来存储技术发展趋势的一种积极响应。
1.2 研究目的和意义
本研究旨在设计并实现一个基于Spring Boot、Java和MySQL的分布式存储平台,以满足个人用户和管理员在资料管理方面的需求。凭借构建支持记录上传、下载、删除、恢复及回收站管理等机制的系统,克服传统集中式存储在扩展性、性能和可靠性方面的不足。同时,研究重点探索分布式文件系统的集成方法,优化数据存储与访问效率,并通过权限管理机制确保环境的安全性与稳定性,为用户提供高效、可靠的文件管理解决方案。
本研究的开展对推动分布式存储技术的应用具有重要的理论与实践价值。首先,该平台能够有效应对海量数据存储和管理的需求,为个人用户和企业提供灵活、可扩展的存储服务,助力数字化转型进程。其次,利用引入分布式架构和技术,提升了系统的容错能力和并发处理能力,为类似系统的开发提供了参考范例。此外,研究成果不仅有助于改善现有存储系统的局限性,还为未来分布式存储技术的研究与创新奠定了基础,促进了信息技术领域的进一步发展。
1.3 国内外研究现状
在大规模数据一致性、跨地域数据同步等关键技术领域,仍有较大提升空间。就是国内在分布式存储领域的研究起步相对较晚,但随着云计算、大数据技术的快速发展,相关研究与应用已取得显著进展。近年来,国内学者和企业重点围绕分布式文件系统、数据管理及存储优化等方面展开深入探索,例如基于HDFS(Hadoop分布式文件系统)的二次开发以及适用于特定场景的分布式存储解决方案。同时,国产化趋势推动了如FastDFS、Ceph等开源存储系统的广泛应用。然而,目前国内在分布式存储核心技术上的自主创新仍显不足,多数研究仍依赖国外成熟框架进行改进,尤其
分布式存储技术的研究最早起源于国外,并在互联网巨头的推动下迅速发展。以Google的GFS为代表的第一代分布式文件系统奠定了基础,随后Apache Hadoop的HDFS成为行业标准之一。近年来,国外研究更加关注高性能、高可靠性的分布式存储架构设计,如Amazon S3、Google Cloud Storage等云存储服务的推出,体现了分布式存储在实际应用中的高度成熟。此外,国外学者还深入探讨了信息分片、负载均衡、故障恢复等关键技术,并结合区块链、边缘计算等新兴技术不断拓展分布式存储的应用边界,形成了较为完善的理论体系和技术生态。
1.4 论文章节与内容安排
本文共分为七章,章节内容安排如下:
第一章:引言。主要介绍了课题研究的背景,目的和意义,国内外目前相关研究现状以及本文的论文章节安排。
第二章:相关技术介绍。主要对本体系启用的相关技术和开发工具进行介绍。
第三章:系统需求分析。首要从架构的用户、功能等方面进行需求分析。
第四章:系统概要设计。主要对系统框架、系统功能模块、数据库进行功能设计。
第五章:体系完成。重要介绍了系统框架搭建、架构界面的实现。
第六章:架构测试。主导对系统的部分界面进行测试并对主要作用进行测试
第七章:总结与展望。
2 相关技术介绍
2.1 B/S体系结构
B/S(Browser/Server)体系结构是一种基于浏览器和服务器的网络应用架构,用户通过浏览器访问部署在服务器上的应用程序,无需安装额外的客户端软件,具有跨平台、易维护、成本低等优势。该架构分为表示层(前端)、业务逻辑层(后端)和资料层(数据库),各层之间通过标准协议进行通信。在本系统中,采用B/S架构搭建分布式存储平台的开发与部署,用户可通过浏览器完成文件上传、下载、搜索等运行,管理员也可通过统一的管理界面进行后台操控,极大提升了架构的可访问性和便捷性。
2.2 Java语言
Java是一种面向对象的编程语言,具有跨平台性强、安全性高、性能稳定等特点,广泛应用于企业级应用创建。其丰富的类库和强大的生态系统为开发者提供了高效的协助。Java语言支撑多线程和垃圾回收机制,能够有效处理复杂的业务逻辑和并发请求。在本系统中,Java作为主要创建语言,用于构建系统的后端逻辑,包括用户认证、资料上传与下载、数据交互等功能,确保了系统的稳定性和可靠性。
2.3 Spring Boot框架
一个基于Spring生态的轻量级开发框架,旨在简化企业级应用的开发过程。它通过“约定优于配置”的理念,减少了繁琐的XML调整,支持快速构建独立运行的应用程序。Spring Boot内置了对多种技术的支持,如JPA、Redis、Security等,便于开发者集成各种功能模块。在本系统中,Spring Boot作为核心框架,负责后端服务的搭建与运行,实现了文件管理、权限控制、材料持久化等机制,并通过其高效的依赖注入和AOP机制优化了代码结构和性能。就是Spring Boot
2.4 MySQL数据库
MySQL是一款开源的关系型数据库管理系统,以其高性能、高可靠性和易用性而闻名,广泛应用于Web应用开发中。它支持SQL标准,具备灵活的数据存储和查询能力,同时提供了事务管理和索引优化等功能,适合处理大规模数据。在本系统中,MySQL作为数据库技巧,用于存储用户信息、文件元数据等关键数据。通过合理的表结构设计和索引优化,MySQL确保了系统在高并发场景下的数据读写效率和一致性,为文件存储系统的稳定运行提供了坚实保障。
3 系统分析
3.1 可行性分析
3.1.1 技能可行性
本架构采用Spring Boot框架、Java语言和MySQL数据库等成熟技术,这些技术具备良好的稳定性和扩展性,能够满足系统开发需求。Spring Boot简化了后端服务的构建,Java语言提供了强大的功能拥护,而MySQL数据库高效处理数据存储与查询。整体技巧栈成熟且兼容性强,编写和维护成本较低,完全满足系统的技术要求。
3.1.2 经济可行性
本环境基于开源技术栈开发,无需支付高昂的软件授权费用,显著降低了初始投入成本。Spring Boot和MySQL均为免费开源软件,减少了基础设施支出,同时Java开发者资源丰富,便于后续维护与升级。此外,系统部署在本地服务器或云平台,可根据实际需求灵活选择,进一步优化成本。总体而言,该方案经济高效,适合教育领域的预算限制。
3.1.3 操作可行性
本系统的使用用户仅需经过浏览器即可完毕文件上传、下载、搜索等操控,无需安装额外软件,学习成本低。管理员界面设计简洁直观,支持批量操作和筛选导出作用,便于日常管理。系统权限控制明确,用户和管理员职责划分清晰,操作流程规范。结合详细的使用文档和提示信息,系统易于上手,具有较高的执行可行性。
3.2 系统需求分析
3.2.1 功能性需求分析
本系统旨在满足普通用户和管理员在分布式存储管理中的多样化需求,为用户提供高效、安全的文件管理服务。针对普通用户,系统提供文件上传、下载、删除、恢复及回收站管理等功能;而对于管理员,则增加系统用户管理、网盘类型配置以及全局资料监控等高级功能,确保系统的灵活性与可扩展性。功能描述具体如下:
- 普通用户功能:
我的网盘管理:用户可以添加并查看个人网盘的空间采用情况,包括已用空间和剩余空间。系统实时更新用户的存储资料,帮助用户合理规划存储资源。
文件上传管理:支持单文件或多文件上传操作,并记录文件的基本信息。文件上传搞定后,系统自动更新用户的存储使用量。
文件存储管理:用户能够浏览已上传材料的列表,并按分类或关键字进行搜索。系统支持对文件进行重命名、移动或分享操作,提升文件管理效率。
资料删除管理:用户许可选择删除不需要的文件,被删除的文件将进入回收站。删除操作不会立即清除文件,以便用户后续恢复。
文件回收管理:用户可以在回收站中查看所有已删除的文档及其删除时间。回收站中的材料会根据设定的时间策略自动清理。
文件恢复管理:用户可以从回收站中选择得恢复的文件并还原到原始位置。恢复操作便捷便捷,确保用户数据的安全性。
体系用户角色用例如图3.1所示。
图3.1 普通用户用例图
- 管理员功能:
通过系统用户:管理员能够添加、删除或禁用普通用户账号,并查看用户的核心信息。 架构支持批量操作,提高管理员的工作效率。
网盘类型管理:管理员可以定义不同类型的网盘,并设置对应的存储容量限制。不同类型的网盘可根据业务需求灵活调整。
我的网盘管理:管理员能够查看所有用户的网盘使用情况,包括总存储量和剩余空间。该能力便于管理员监控整体存储资源的分配与使用。
文件上传管理:管理员行查看所有用户的文件上传记录,包括文件名、大小和上传时间。此功能有助于管理员追踪文件来源和使用情况。
文件存储管理:管理员能够浏览系统中所有文件的存储状态,并对异常文件进行处理。系统支持文件分类统计,方便管理员分析存储分布。
文件删除管理:管理员可以直接删除用户文件,无需经过回收站。删除管理需经过权限验证,确保安全性。
通过记录回收管理:管理员能够查看所有用户的回收站文件及其删除时间。该功能便于管理员统一管理回收站中的文件。
通过档案恢复管理:管理员能够从回收站中恢复用户文件到原始位置。恢复执行需记录日志,以备后续审计和追溯。
管理员角色用例如图3.2所示。
图3.2 管理员用例图
3.2.2 非功能需求分析
非功能性分析旨在评估分布式存储平台的非效果需求和性能要求。通过对性能、可靠性、安全性、可用性和扩展性等方面进行评估,确保环境能够满足用户和系统运行的要求。具体如下3.1表格:
非功能性要求 | 说明 |
性能 | 评估响应时间、并发用户数、吞吐量等指标,以确保系统稳定高效地运行。 |
可靠性 | 评估框架的稳定性、容错能力和数据完整性,保障系统在故障情况下正常运行。 |
安全性 | 评估用户身份认证、数据加密和访问控制等,保护用户信息和交易的安全。 |
可用性 | 评估系统的稳定性、故障处理能力和用户界面友好性,提供良好的用户体验。 |
扩展性 | 评估系统的可扩展性和灵活性,以便根据需求进行功能扩展和升级。 |
3.3 架构流程设计
3.3.1程序操作流程
用户访问平台网站,可以选择进行注册或登录操作。注册成功后,用户可以使用注册的账号登录平台。登录后的用户可以进入系统效果界面,使用自己权限内的功能操作。程序操控流程图如下图所示。
图3.3 程序操作流程图
3.3.2 登录流程
用户访问平台的网站,进入登录页面页面,输入其用户名和密码,后端服务接收登录请求,验证用户提供的用户名和密码是否匹配数据库中存储的信息,验证通过即可登录成功。登录流程图如下图所示。
图3.4 登录流程图
3.3.3 注册流程
未有账号的用户可进入注册界面进行注册操作,填写注册表格,包括用户名、密码、电子邮件等必要信息。后台系统验证并保存用户提交的信息。分配唯一用户标识符。注册成功后,用户可以使用账号密码进行登录。用户注册流程图如下图所示。
图3.5 注册流程图
4 系统概要设计
4.1 系统架构设计
在架构架构设计中,我们将确定系统的整体结构和组件之间的关系。这包括选择适当的架构风格,划分系统的层次结构,并定义各个模块的职责和交互方式。架构图如下图4.1所示。
图4.1 平台功能模块图
表现层(Presentation Layer):负责与用户进行交互,将系统的功能和数据以易于理解和运行的方式展示给用户。通常包括用户界面、页面设计和用户输入验证等。
业务逻辑层(Business Logic Layer):处理系统的核心业务逻辑,包括对用户请求的处理、业务规则的执行以及素材的处理和转换。它独立于表现层和数据层,实现了业务逻辑的封装和复用。
数据层(Data Layer):负责数据的存储、访问和管理,包括数据库和持久化机制。数据层给出了对数据的增删改查操作,并与业务逻辑层进行交互,使系统能够有效地存储和检索资料。
这三个层次相互独立,凭借明确的接口和协议进行通信,实现了架构的模块化和可扩展性。表现层负责将用户的请求传递给业务逻辑层,业务逻辑层处理请求并返回结果,最后信息层负责与数据库交互并提供数据支持。这种分层架构有助于搭建系统的可维护性、灵活性和可测试性。
4.2 平台功能模块设计
本分布式存储平台的结构设计图,直观明了的行看出本项目工具的功能。就是体系在结构上的设计至关重要,要考虑周全,设计全面,一个完善的结构体系,能够满足用户在使用时的各种需求,这样会让提高程序的使用率,保证代码被长久的利用。在设计分布式存储平台的结构时,也列入重点,采用模块化的方法来进行设计,即首先将大模块确定下来,再慢慢的将大模块进行补充完善,向下分支出小模块,一起共同组成的平台的结构体系,下图
图4.2 环境功能模块图
4.3 数据库设计
一个优秀的系统必须具备完善的后台数据库,就像建筑物一样,它不是一蹴而就的,而是需要经过精心设计,以确保其稳固可靠。只有将数据库设计得完善,并且考虑到各个方面,才能保证系统的可靠性,避免出现任何问题。
4.3.1 概念设计
数据库概念结构设计主要涉及数据库的实体和实体之间的关系。通过实体-关系模型或者其他适当的模型,我们将定义系统中涉及的各个实体属性以及它们之间的联系。下面是整个分布式存储平台中核心的数据库表总E-R实体关系图。
图4.3 系统总体E-R图
4.3.2 逻辑设计
数据库逻辑结构就是将 E-R 图在数据库中用具体的字段进行描述。用字段和数据类型描述来使对象特征实体化,最后形成具有一定逻辑关系的数据库表结构。分布式存储平台所需要的部分数据结构表如下表所示。
表access_token (登陆访问时长)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | token_id | int | 10 | 0 | N | Y | 临时访问牌ID | |
2 | token | varchar | 64 | 0 | Y | N | 临时访问牌 | |
3 | info | text | 65535 | 0 | Y | N | ||
4 | maxage | int | 10 | 0 | N | N | 2 | 最大寿命:默认2小时 |
5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
7 | user_id | int | 10 | 0 | N | N | 0 | 用户编号: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | auth_id | int | 10 | 0 | N | Y | 授权ID: | |
2 | user_group | varchar | 64 | 0 | Y | N | 用户组: | |
3 | mod_name | varchar | 64 | 0 | Y | N | 模块名: | |
4 | table_name | varchar | 64 | 0 | Y | N | 表名: | |
5 | page_title | varchar | 255 | 0 | Y | N | 页面标题: | |
6 | path | varchar | 255 | 0 | Y | N | 路由路径: | |
7 | parent | varchar | 64 | 0 | Y | N | 父级菜单 | |
8 | parent_sort | int | 10 | 0 | N | N | 0 | 父级菜单排序 |
9 | position | varchar | 32 | 0 | Y | N | 位置: | |
10 | mode | varchar | 32 | 0 | N | N | _blank | 跳转方式: |
11 | add | tinyint | 3 | 0 | N | N | 1 | 是否可增加: |
12 | del | tinyint | 3 | 0 | N | N | 1 | 是否可删除: |
13 | set | tinyint | 3 | 0 | N | N | 1 | 是否可修改: |
14 | get | tinyint | 3 | 0 | N | N | 1 | 是否可查看: |
15 | field_add | text | 65535 | 0 | Y | N | 添加字段: | |
16 | field_set | text | 65535 | 0 | Y | N | 修改字段: | |
17 | field_get | text | 65535 | 0 | Y | N | 查询字段: | |
18 | table_nav_name | varchar | 500 | 0 | Y | N | 跨表导航名称: | |
19 | table_nav | varchar | 500 | 0 | Y | N | 跨表导航: | |
20 | option | text | 65535 | 0 | Y | N | 配置: | |
21 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
22 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表code_token
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | code_token_id | int | 10 | 0 | N | Y | ||
2 | token | varchar | 255 | 0 | Y | N | ||
3 | code | varchar | 255 | 0 | Y | N | 验证码 | |
4 | expire_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 失效时间 |
5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | file_deletion_id | int | 10 | 0 | N | Y | 文件删除ID | |
2 | cloud_storage_name | varchar | 64 | 0 | Y | N | 网盘名称 | |
3 | network_disk_type | varchar | 64 | 0 | Y | N | 网盘类型 | |
4 | storage_method | varchar | 64 | 0 | Y | N | 储存途径 | |
5 | ordinary_users | int | 10 | 0 | Y | N | 0 | 普通用户 |
6 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
7 | store_files | varchar | 255 | 0 | Y | N | 存储文件 | |
8 | file_size | double | 9 | 2 | Y | N | 0.00 | 文件大小 |
9 | video_storage | varchar | 255 | 0 | Y | N | 视频储存 | |
10 | music_storage | varchar | 255 | 0 | Y | N | 音乐储存 | |
11 | delete_date | date | 10 | 0 | Y | N | 删除日期 | |
12 | deleted_remarks | text | 65535 | 0 | Y | N | 删除备注 | |
13 | file_recycling_limit_times | int | 10 | 0 | N | N | 0 | 回收站限制次数 |
14 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
16 | source_table | varchar | 255 | 0 | Y | N | 来源表 | |
17 | source_id | int | 10 | 0 | Y | N | 来源ID | |
18 | source_user_id | int | 10 | 0 | Y | N | 来源用户 |
表file_recovery (文件恢复)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | file_recovery_id | int | 10 | 0 | N | Y | 文件恢复ID | |
2 | cloud_storage_name | varchar | 64 | 0 | Y | N | 网盘名称 | |
3 | network_disk_type | varchar | 64 | 0 | Y | N | 网盘类型 | |
4 | storage_method | varchar | 64 | 0 | Y | N | 储存途径 | |
5 | ordinary_users | int | 10 | 0 | Y | N | 0 | 普通用户 |
6 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
7 | store_files | varchar | 255 | 0 | Y | N | 存储文件 | |
8 | file_size | double | 9 | 2 | Y | N | 0.00 | 文件大小 |
9 | delete_date | date | 10 | 0 | Y | N | 删除日期 | |
10 | video_storage | varchar | 255 | 0 | Y | N | 视频储存 | |
11 | music_storage | varchar | 255 | 0 | Y | N | 音乐储存 | |
12 | recovery_date | date | 10 | 0 | Y | N | 恢复日期 | |
13 | restore_remarks | text | 65535 | 0 | Y | N | 恢复备注 | |
14 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
16 | source_table | varchar | 255 | 0 | Y | N | 来源表 | |
17 | source_id | int | 10 | 0 | Y | N | 来源ID | |
18 | source_user_id | int | 10 | 0 | Y | N | 来源用户 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | file_recycling_id | int | 10 | 0 | N | Y | 记录回收ID | |
2 | cloud_storage_name | varchar | 64 | 0 | Y | N | 网盘名称 | |
3 | network_disk_type | varchar | 64 | 0 | Y | N | 网盘类型 | |
4 | storage_method | varchar | 64 | 0 | Y | N | 储存途径 | |
5 | ordinary_users | int | 10 | 0 | Y | N | 0 | 普通用户 |
6 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
7 | store_files | varchar | 255 | 0 | Y | N | 存储文件 | |
8 | video_storage | varchar | 255 | 0 | Y | N | 视频储存 | |
9 | file_size | double | 9 | 2 | Y | N | 0.00 | 文件大小 |
10 | music_storage | varchar | 255 | 0 | Y | N | 音乐储存 | |
11 | delete_date | date | 10 | 0 | Y | N | 删除日期 | |
12 | file_recovery_limit_times | int | 10 | 0 | N | N | 0 | 恢复限制次数 |
13 | file_store_limit_times | int | 10 | 0 | N | N | 0 | 存储限制次数 |
14 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
16 | source_table | varchar | 255 | 0 | Y | N | 来源表 | |
17 | source_id | int | 10 | 0 | Y | N | 来源ID | |
18 | source_user_id | int | 10 | 0 | Y | N | 来源用户 |
表file_store (文件存储)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | file_store_id | int | 10 | 0 | N | Y | 记录存储ID | |
2 | cloud_storage_name | varchar | 64 | 0 | Y | N | 网盘名称 | |
3 | network_disk_type | varchar | 64 | 0 | Y | N | 网盘类型 | |
4 | storage_method | varchar | 64 | 0 | Y | N | 储存途径 | |
5 | ordinary_users | int | 10 | 0 | Y | N | 0 | 普通用户 |
6 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
7 | file_size | double | 9 | 2 | Y | N | 0.00 | 文件大小 |
8 | store_files | varchar | 255 | 0 | Y | N | 存储文件 | |
9 | music_storage | varchar | 255 | 0 | Y | N | 音乐储存 | |
10 | video_storage | varchar | 255 | 0 | Y | N | 视频储存 | |
11 | uploaded | datetime | 19 | 0 | Y | N | 上传时间 | |
12 | file_deletion_limit_times | int | 10 | 0 | N | N | 0 | 删除限制次数 |
13 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
14 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
15 | source_table | varchar | 255 | 0 | Y | N | 来源表 | |
16 | source_id | int | 10 | 0 | Y | N | 来源ID | |
17 | source_user_id | int | 10 | 0 | Y | N | 来源用户 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | file_upload_id | int | 10 | 0 | N | Y | 文件上传ID | |
2 | cloud_storage_name | varchar | 64 | 0 | Y | N | 网盘名称 | |
3 | network_disk_type | varchar | 64 | 0 | Y | N | 网盘类型 | |
4 | storage_method | varchar | 64 | 0 | Y | N | 储存途径 | |
5 | cloud_storage_memory | double | 9 | 2 | Y | N | 0.00 | 网盘内存 |
6 | ordinary_users | int | 10 | 0 | Y | N | 0 | 普通用户 |
7 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
8 | uploaded | datetime | 19 | 0 | Y | N | 上传时间 | |
9 | store_files | varchar | 255 | 0 | Y | N | 存储文件 | |
10 | video_storage | varchar | 255 | 0 | Y | N | 视频储存 | |
11 | music_storage | varchar | 255 | 0 | Y | N | 音乐储存 | |
12 | file_size | double | 9 | 2 | Y | N | 0.00 | 文件大小 |
13 | file_store_limit_times | int | 10 | 0 | N | N | 0 | 储存限制次数 |
14 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
16 | source_table | varchar | 255 | 0 | Y | N | 来源表 | |
17 | source_id | int | 10 | 0 | Y | N | 来源ID | |
18 | source_user_id | int | 10 | 0 | Y | N | 来源用户 |
表hits (用户点击)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | hits_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | my_cloud_storage_id | int | 10 | 0 | N | Y | 我的网盘ID | |
2 | cloud_storage_name | varchar | 64 | 0 | N | N | 网盘名称 | |
3 | network_disk_type | varchar | 64 | 0 | Y | N | 网盘类型 | |
4 | storage_method | varchar | 64 | 0 | Y | N | 储存途径 | |
5 | cloud_storage_memory | double | 9 | 2 | Y | N | 0.00 | 网盘内存 |
6 | ordinary_users | int | 10 | 0 | Y | N | 0 | 普通用户 |
7 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
8 | introduction_to_cloud_storage | text | 65535 | 0 | Y | N | 网盘简介 | |
9 | file_upload_limit_times | int | 10 | 0 | N | N | 0 | 上传限制次数 |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表network_disk_type (网盘类型)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | network_disk_type_id | int | 10 | 0 | N | Y | 网盘类型ID | |
2 | network_disk_type | varchar | 64 | 0 | Y | N | 网盘类型 | |
3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | ordinary_users_id | int | 10 | 0 | N | Y | 普通用户ID | |
2 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
3 | contact_information | varchar | 64 | 0 | Y | N | 联系方式 | |
4 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
5 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
6 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表schedule (日程管理)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | schedule_id | smallint | 5 | 0 | N | Y | 日程ID:[0,32767] | |
2 | content | varchar | 255 | 0 | Y | N | 日程内容 | |
3 | scheduled_time | datetime | 19 | 0 | Y | N | 计划时间 | |
4 | user_id | int | 10 | 0 | N | N | 用户id | |
5 | create_time | datetime | 19 | 0 | Y | N | 创建时间 | |
6 | update_time | datetime | 19 | 0 | Y | N | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | score_id | int | 10 | 0 | N | Y | 评分ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 评分人: |
3 | nickname | varchar | 64 | 0 | Y | N | 昵称: | |
4 | score_num | double | 5 | 2 | N | N | 0.00 | 评分: |
5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
7 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
8 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
9 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
表upload (文件上传)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | upload_id | int | 10 | 0 | N | Y | 上传ID | |
2 | name | varchar | 64 | 0 | Y | N | 文件名 | |
3 | path | varchar | 255 | 0 | Y | N | 访问路径 | |
4 | file | varchar | 255 | 0 | Y | N | 文件路径 | |
5 | display | varchar | 255 | 0 | Y | N | 显示顺序 | |
6 | father_id | int | 10 | 0 | Y | N | 0 | 父级ID |
7 | dir | varchar | 255 | 0 | Y | N | 文件夹 | |
8 | type | varchar | 32 | 0 | Y | N | 文件类型 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | user_id | int | 10 | 0 | N | Y | 用户ID:[0,8388607]用户获取其他与用户相关的数据 | |
2 | state | smallint | 5 | 0 | N | N | 1 | 账户状态:[0,10](1可用|2异常|3已冻结|4已注销) |
3 | user_group | varchar | 32 | 0 | Y | N | 所在用户组:[0,32767]决定用户身份和权限 | |
4 | login_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 上次登录时间: |
5 | phone | varchar | 11 | 0 | Y | N | 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时 | |
6 | phone_state | smallint | 5 | 0 | N | N | 0 | 手机认证:[0,1](0未认证|1审核中|2已认证) |
7 | username | varchar | 16 | 0 | N | N | 用户名:[0,16]用户登录时所用的账户名称 | |
8 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
9 | password | varchar | 64 | 0 | N | N | 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成 | |
10 | varchar | 64 | 0 | Y | N | 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时 | ||
11 | email_state | smallint | 5 | 0 | N | N | 0 | 邮箱认证:[0,1](0未认证|1审核中|2已认证) |
12 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
13 | open_id | varchar | 255 | 0 | Y | N | 针对获取用户信息字段 | |
14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
表user_group (用户组:用于用户前端身份和鉴权)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | group_id | mediumint | 8 | 0 | N | Y | 用户组ID:[0,8388607] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 呈现顺序:[0,1000] |
3 | name | varchar | 16 | 0 | N | N | 名称:[0,16] | |
4 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该用户组的特点或权限范围 | |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | register | smallint | 5 | 0 | Y | N | 0 | 注册位置: |
9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 系统实现
5.1 用户登录模块的建立
登录页面设计注重用户体验,包含用户名、密码输入框和验证码,以及“忘记密码”选项,方便用户快捷登录。页面风格统一,布局清晰,支持表单验证以确保输入正确性,同时提供注册链接引导新用户完毕账号创建。用户登录界面如下图所示。
图5.1 用户登录界面
登录的逻辑代码如下所示。
/**
* 登录
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
log.info("[执行登录接口]");
String username = data.get("username");
String email = data.get("email");
String phone = data.get("phone");
String password = data.get("password");
List resultList = null;
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}else{
return error(30000, "账号或密码不能为空");
}
if (resultList == null || password == null) {
return error(30000, "账号或密码不能为空");
}
//判断是否有这个用户
if (resultList.size()<=0){
return error(30000,"用户不存在");
}
User byUsername = (User) resultList.get(0);
Map<String, String> groupMap = new HashMap<>();
groupMap.put("name",byUsername.getUserGroup());
List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());
if (res==null){
return error(30000,"用户不存在");
}
if (!res.equals("已借助")){
return error(30000,"该用户审核未通过");
}
}
//查询用户状态
if (byUsername.getState()!=1){
return error(30000,"用户非可用状态,不能登录");
}
String md5password = service.encryption(password);
if (byUsername.getPassword().equals(md5password)) {
// 存储Token到数据库
AccessToken accessToken = new AccessToken();
accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
accessToken.setUser_id(byUsername.getUserId());
Duration duration = Duration.ofSeconds(7200L);
redisTemplate.opsForValue().set(accessToken.getToken(), accessToken,duration);
// 返回用户信息
JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
user.put("token", accessToken.getToken());
JSONObject ret = new JSONObject();
ret.put("obj",user);
return success(ret);
} else {
return error(30000, "账号或密码不正确");
}
}
5.2 用户注册模块的实现
注册页面提供完整的表单填写区域,包括用户名、密码、邮箱或手机号等必填项,并设置验证码验证以防止恶意注册。界面友好且流程简单,确保注册过程安全高效。用户注册界面如下图所示。
图5.2 用户注册界面
用户注册的关键代码如下:
/**
* 注册
* @param user
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(@RequestBody User user) {
// 查询用户
Map<String, String> query = new HashMap<>();
Map<String,Object> map = JSON.parseObject(JSON.toJSONString(user));
query.put("username",user.getUsername());
List list = service.selectBaseList(service.select(query, new HashMap<>()));
if (list.size()>0){
return error(30000, "用户已存在");
}
map.put("password",service.encryption(String.valueOf(map.get("password"))));
service.insert(map);
return success(1);
}
5.3 系统用户模块的达成
系统用户模块首要用于管理员对系统用户的增删改查处理,支持添加新用户、禁用或删除现有用户,并可查看用户的基本信息。管理员还可以通过批量操作功能高效管理多个用户账户,同时环境提供权限校验机制以确保用户资料的安全性。系统用户界面如下图所示。
图5.3 系统用户界面
5.4 网盘类型管理模块的实现
网盘类型模块允许管理员定义和管理不同类型的网盘配置,每种类型均可设置存储容量限制及附加功能。管理员能够根据业务需求灵活调整网盘类型参数,并将这些配置应用到用户账户中,从而实现差异化服务。管理员添加网盘类型界面如下图所示。
图5.4 管理员添加网盘类型界面
添加网盘类型关键代码如下:
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
service.insert(service.readBody(request.getReader()));
return success(1);
}
public Map<String, Object> addMap(Map<String,Object> map){
service.insert(map);
return success(1);
}
}
5.5 我的网盘管理模块的实现
我的网盘管理模块为用户提供个人网盘的空间启用情况展示,包括已用空间、剩余空间以及存储限额等信息。用户允许通过直观的界面了解自己的存储状态,同时管理员也可全局监控所有用户的网盘使用情况以优化资源分配。用户添加我的网盘界面如下图所示。
图5.5 用户添加我的网盘界面
管理员我的网盘管理界面如下图所示。
图5.6 管理员我的网盘管理界面
5.6 文档上传管理模块的实现
文件上传模块支撑用户上传单个或多个记录至分布式存储平台,上传过程中会记录材料的基本信息,并实时更新用户的存储使用量。平台还提供了进度显示功能以提升用户体验,并对接分布式文件系统完成实际存储。用户上传资料界面如下图所示。
图5.7 用户上传文件界面
用户文件上传管理界面如下图所示。
图5.8 用户文件上传管理界面
5.7 文件存储管理模块的达成
档案存储模块用于管理和浏览已上传的文件列表,支持按分类、关键字搜索材料,同时供应重命名、移动、分享等机制以增强文件管理效率。管理员可利用此模块查看平台内所有文档的存储状态,并进行必要的维护操作。用户储存文件界面如下图所示。
图5.9 用户储存文件界面
提交储存文件信息关键代码如下:
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
service.insert(service.readBody(request.getReader()));
return success(1);
}
public Map<String, Object> addMap(Map<String,Object> map){
service.insert(map);
return success(1);
}
}
用户档案存储管理界面如下图所示。
图5.10 用户文件存储管理界面
5.8 文件删除管理模块的实现
用户可以通过此模块选择必须删除的文件,被删除的材料将移至回收站而非立即清除,以便后续恢复。管理员则拥有直接删除文件的权限,无需经过回收站流程,且所有删除操控均需经过严格的权限验证。档案删除管理界面如下图所示。
图5.11 文件删除管理界面
@RequestMapping(value = "/del")
@Transactional
public Map<String, Object> del(HttpServletRequest request) {
service.delete(service.readQuery(request), service.readConfig(request));
return success(1);
}
public void delete(Map<String,String> query,Map<String,String> config){
QueryWrapper wrapper = new QueryWrapper<E>();
toWhereWrapper(query, "0".equals(config.get(FindConfig.GROUP_BY)),wrapper);
baseMapper.delete(wrapper);
log.info("[{}] - 删除操作:{}",wrapper.getSqlSelect());
5.9 材料回收管理模块的完成
档案回收管理模块允许用户和管理员查看回收站中的文件及其删除时间,支持按条件筛选资料记录。回收站中的文件会在设定的时间策略下自动清理,确保存储空间的实用利用。文件回收管理界面如下图所示。
图5.12 文件回收管理界面
5.9 文档恢复管理模块的建立
用户和管理员均可通过此模块从回收站中选择需要恢复的文件,并将其还原至原始位置或指定路径。恢复操作简单便捷,且体系会记录相关日志以便审计和追溯,保障数据安全与完整性。文件恢复管理界面如下图所示。
图5.13 文件恢复管理界面
6 系统测试
6.1 测试目的
通过测试目的是为了验证系统的机制、性能和稳定性,以确保系统在实际应用中能够达到预期的要求。通过测试,可以发现潜在的问题和缺陷,并及时进行修复和改进。测试还能够评估环境的可靠性、安全性和用户体验,以给出一个高质量和可信赖的产品。此外,测试也有助于验证系统是否满足用户需求和预期,是否符合相应的标准和规范。总之,测试的目的是为了确保系统的质量和可靠性,从而为用户提供良好的使用体验和价值。
6.2 功能测试
系统测试包括:用户登录功能测试、我的网盘添加功能测试、文件上传功能测试、发送系统通知功能测试、密码修改功能测试、文件回收功能测试,如表6.1、6.2、6.3、6.4、6.5、6.6所示:
(1)用户登录功能测试:
表6.1 用户登录功能测试表
用例名称 | 用户登录系统 |
目的 | 测试用户利用正确的用户名和密码可否登录功能 |
前提 | 未登录的情况下 |
测试流程 | 1) 进入登录页面 2) 输入正确的用户名和密码 |
预期结果 | 用户名和密码正确的时候,跳转到登录成功界面,反之则展示错误信息,提示重新输入 |
实际结果 | 实际结果与预期结果一致 |
(2)我的网盘添加功能测试:
表6.2 我的网盘添加功能测试表
用例名称 | 我的网盘添加 |
目的 | 测试我的网盘添加机制 |
前提 | 用户登录 |
测试流程 | 点击我的网盘添加,填写信息 |
预期结果 | 提交以后,页面会显示新的我的网盘信息 |
实际结果 | 实际结果与预期结果一致 |
(3)添加记录上传界面测试:
表6.3 添加文件上传界面测试表
用例名称 | 添加文件上传测试用例 |
目的 | 测试材料上传功能 |
前提 | 用户正常登录情况下 |
测试流程 | 1)点击文件上传,之后填写信息。 2)点击进行提交。 |
预期结果 | 提交以后,页面会显示新的文件上传信息 |
实际结果 | 实际结果与预期结果一致 |
(4)添加文件存储功能测试:
表6.4添加文件存储功能测试表
用例名称 | 添加文档存储测试 |
目的 | 测试添加资料存储功能 |
前提 | 用户登录 |
测试流程 | 1)点击文件存储,点击添加按钮。 2)填写文件存储内容,点击提交。 |
预期结果 | 提交以后,页面会展示新的文件存储 |
实际结果 | 实际结果与预期结果一致 |
(5)密码修改功能测试:
表6.5 密码修改功能测试表
用例名称 | 密码修改测试用例 |
目的 | 测试管理员密码修改功能 |
前提 | 管理员/用户正常登录情况下 |
测试流程 | 1)管理员/用户密码修改并完成填写。 2)点击进行提交。 |
预期结果 | 应用新的密码可以登录 |
实际结果 | 实际结果与预期结果一致 |
(6)文件回收功能测试:
表6.6文件回收功能测试表
用例名称 | 文件回收测试用例 |
目的 | 测试用户文件回收功能 |
前提 | 用户正常登录情况下 |
测试流程 | 1)搜索查看资料删除信息。 2)点击回收。 |
预期结果 | 成功回收文件信息。 |
实际结果 | 实际结果与预期结果一致 |
6.3 测试结果
综上所述,分布式存储平台在功能测试中表现良好,通过了所有测试用例。系统提供的用户登录、我的网盘添加、档案上传、发送系统通知、密码修改、文件回收等主要功能都能正常运行,并能够给出预期的提示信息和结果。然而,为了确保系统的全面稳定性和质量,仍建议进行更多的综合性测试,包括性能测试、安全性测试和用户体验测试等,以进一步验证和改进系统的功能和性能。
结 论
本文描述了分布式存储平台的原理和构建过程,在研发本分布式存储平台之前,首先依据网上查询现有的分布式存储平台功能、线下经过问卷调查的方式,了解用户对文件存储方面的具体需求,对系统的开发背景以及研究现状进行研究,设计了本分布式存储平台具体实现的功能;确定好功能后,第二步就是开发工具的选择,在设计分布式存储平台的时候,确定了采用现下比较流程的Java语言,采用Spring Boot框架,数据的存储方面采用的是开源的MySQL数据库,接下来就是对系统需求的分析,在文中主要通过对分布式存储平台进行可行性、性能、功能、用例四个方面进行分析,确定了本分布式存储平台的具体功能,功能确定后就是对系统的设计以及数据库等方面,最终完成环境的制作,对系统进行测试总结。
在构建本分布式存储平台的过程中我成长了很多,学习到了很多书本上没有的知识,目前系统虽然已经完成,但是还有许多地方得改进,比如界面布局方面,代码的编写方面,都允许进一步完善,由于自己专业知识的浅薄,系统做的并不是十分完美,以后我会不断进行学习,对系统进行完善,希望有机会能够投入到学校的使用当中,给同学们给出便利。
参考文献
[1]杨明.基于大数据的分布式文件存储系统架构设计[J].信息记录材料,2024,25(04):177-179.
[2]杨士永.基于Java的对象存储管理环境的设计与搭建[J].电子技术与软件工程,2022,(04):253-257.
[3]袁宏涛.基于Hadoop平台的分布式档案云存储系统设计[J].软件,2024,45(06):172-174.
[4]金宗轩,孙国皓,韩笑冬,等.一种基于嵌入式系统的远程文件传输方法[J].佳木斯大学学报(自然科学版),2024,42(08):1-4.
[5]范晓鹏.面向泛在系统的轻量化存储软件栈研究[D].华东师范大学,2024.
[6]昝乡镇.DNA存储纠错、安全与文件系统研究[D].广州大学,2024.
[7]刘承赣.多中心多模脑信息数据存储与管理云端架构研发[D].电子科技大学,2024.
[8]王景德,付喜春,董一,等.海量异构存储文件系统管理新手艺研究与应用[J].石油管材与仪器,2023,9(06):24-27.
[9]贺广胜.去中心化边缘存储服务的设计与实现[D].电子科技大学,2024.
[10]Xuhang J ,Yujue W ,Yong D , et al.Semi-shadow file system: An anonymous files storage solution[J].Peer-to-Peer Networking and Applications,2023,17(1):18-32.
[11]Jose J .The impact of integrating Microsoft Teams – Reading Progress as an Artificial Intelligence (AI) platform for promoting learners’ reading aloud skills[J].Education and Information Technologies,2024,(prepublish):1-39.
[12]杨守义,韩昊锦,郝万明,等.边缘计算中面向缓存的迁移决策和资源分配[J/OL].电子与信息学报,1-8[2024-11-23].
[13]Noone J ,Champieux R ,Taha A , et al.Implementing open educational resources: Lessons learned[J].Journal of Professional Nursing,2024,5565-69.
[14]Rasool A ,Hong J ,Hong Z , et al.An Effective DNA-Based File Storage System for Practical Archiving and Retrieval of Medical MRI Data.[J].Small methods,2024,8(10):e2301585-e2301585.
[15]K. S ,Krishnamurthy A ,G. N , et al.A Blockchain-Based Cloud File Storage System Using Fuzzy-Based Hybrid-Flash Butterfly Optimization Approach for Storage Weight Reduction[J].International Journal of Fuzzy Systems,2024,26(3):978-991.
[16]马江林,邓乐富.面向PDM系统的数据存储结构优化技巧[J].电子设计工程,2024,32(08):41-44+49.
[17]Chen Y ,Dong G ,Xu C , et al.EStore: A User-Friendly Encrypted Storage Scheme for Distributed File Systems[J].Sensors,2023,23(20):
[18]王志亮,纪松波.基于SpringBoot的Web前端与数据库的接口设计[J].工业控制计算机,2023,36(03):51-53.
[19]马庆.计算机软件开发中JAVA编程语言的应用[J].山西电子技术,2023,(06):84-86+98.
[20]张咪.基于MPQUIC架构下的个性化文件传输平台研究[D].华南理工大学,2022.
致 谢
眨眼之间,大学生活就要结束了。在本文的最终,我要感谢我和蔼可亲的导师、团结有爱的同学的帮助和鼓励。此刻,我找不到感谢之词可以用来表达我最深切的感激之情。尤其感谢我的指导老师,在选题的过程中与我进行了深入的交流,在毕业设计期间给我提供了一些指导。四年的学习生活让我受益良多,老师们的丰富的学术知识、认真负责的学习态度让我受益匪浅。在此,我深深地感谢那些曾经给予我帮助和指导的老师!
我的论文得益于许多学者的贡献,他们的研究成果为我提供了宝贵的指导,使我能够更好地完成这篇文章。感谢我的同学和朋友在我的写作以及排版过程中给予热情的帮忙,才使得我比较顺利的完成了这篇论文。
感谢大学里遇见的朋友,你们在我这四年里留下无数的温暖和快乐,让我对这个校园多了一份留念。最后,感谢我的父母、辅导员、班长,以及室友们对我大学生活上的关心和理解,让我能保持乐观和追求我所热爱的。尽管我的能力有限,但我仍然尽力去完善这篇论文,并且诚挚地希望各位老师和学友能够给予宝贵的指导与意见!
免费领取项目源码,请关注❤点赞收藏并私信博主,谢谢-
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/927027.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!