代码连接

https://github.com/Kalyan-zitiu/Studyroomreservationsystem

需求说明以及功能分析

用户用例需求分析及其功能

如下图,普通用户:1.查看自习室情况:普通用户可以查看自习室的预约情况。2.预约自习室:普通用户可以预约自习室。3.取消预约:普通用户可以取消已预约的自习室。4.查看预约情况:普通用户可以查看自己的预约情况。

image-20240630190654093

如下图管理员用例图,1.删除自习室:管理员可以删除系统中的自习室。2.添加自习室:管理员可以在系统中新增自习室。3.修改自习室:管理员可以对现有的自习室信息进行修改。

image-20240630191300868

如下图超级管理员用例图,1.添加自习室:超级管理员可以在系统中新增自习室。2.删除自习室:超级管理员可以删除系统中的自习室。3.修改自习室:超级管理员可以对现有的自习室信息进行修改。4.查看使用统计:超级管理员可以查看自习室的使用统计数据。5.管理用户:超级管理员可以管理系统中的用户,包括添加删除修改用户信息。6.搜索普通用户:超级管理员可以搜索普通用户的信息。

img

系统总操作流程分析

如下图,操作流程图展示了一个自习室预约系统的总操作流程。用户首先进行登录,输入用户名和密码后,系统会检查输入是否为空。如果为空,系统会提示信息不为空并要求重新输入。如果不为空,系统继续检查用户名和密码是否正确。如果不正确,系统会提示信息不正确并返回重新输入步骤。如果正确,系统会进行身份权限判断,根据用户权限执行相应的功能处理。整个过程在执行完相关功能处理后结束。这个流程图主要描述了登录验证和权限判断的过程,但缺少注册、找回密码、不同权限的具体功能分支及错误处理等环节。

image-20240630191401981

系统概要设计

系统概述以及设计

自习室预约系统是一种在线平台,旨在为学生和教职员工提供便捷、高效的自习室预订服务。该系统通过采用先进的数字化管理手段,实现了自习室资源的合理分配和高效利用,用户可以随时随地进行自习室的查看、预订、取消和管理,以满足其个性化学习需求。如下图系统工作原理图,展示了自习室预约系统的执行过程:客户端向Web服务器发送请求,Web服务器对请求进行验证后,向数据库检索相关数据或更新信息。数据库完成操作后,将结果传送回Web服务器,Web服务器再将最终结果回发给客户端。整个流程确保数据的实时性和准确性

image-20240630191517073

系统结构设计

如下图系统结构图,展示自习室预约系统的功能结构图,包含普通用户、管理员和超级管理员三个角色。普通用户可以查看自习室情况、进行预约和取消预约;管理员可以管理预约情况、添加、修改和删除自习室信息;超级管理员则具有更高级别的权限,不仅可以管理用户,还能查看使用统计,以及添加、修改和删除自习室信息。图中用方框和连接线清晰地展示了各角色的功能模块和操作权限。

img

数据库设计

  1. 数据存储

数据库包含以下主要实体:用户、角色、自习室、自习室详情、预约信息、用户角色。各实体表的设计如下:

用户表存储用户ID、用户名、密码、手机号和邮箱。

角色表存储角色ID、角色名称、角色标识和角色状态。

自习室表存储自习室ID、自习室编号、容量、设施和类型。

自习室详情表存储自习室地址、预约次数和使用次数。

预约信息表记录预约ID、用户ID、自习室详情ID、预约时间、状态原因和结束时间。

  1. 数据管理

数据库通过标准的SQL命令行管理工具以及数据库管理软件进行管理,包括数据的插入、更新、删除和查询。此外,视图、存储过程和触发器简化了数据管理操作和维护数据完整性。

  1. 数据检索

通过SQL查询语句进行数据检索。例如:

查询用户的预约记录。

查询某段时间内某自习室的使用情况。

在重要字段(如用户ID、自习室ID、预约时间)上建立索引,以提高检索效率。

  1. 数据安全

数据安全包括:

用户认证:使用加密和散列技术保护用户密码。

权限控制:通过角色和权限管理控制不同用户对数据库的访问权限。

数据传输:使用SSL/TLS保护数据传输安全。

日志记录:记录数据库访问和修改行为,以便审计。

  1. 数据一致性

数据库通过以下策略确保数据一致性:

主键约束:保证每个表的主键唯一且非空。

外键约束:确保引用完整性(如预约记录的用户ID必须在用户表中存在)。

触发器:自动检查和修正数据的一致性。

  1. 数据完整性

数据库使用以下方法保证数据完整性:

实体完整性:确保每个表的主键唯一且非空。

参照完整性:通过外键约束保持表间关系一致。

业务规则:使用存储过程和触发器实现业务逻辑,防止数据失效。

如下图用户信息实体图,用户信息实体包含以下属性:用户ID、用户名、密码、手机号和邮箱。用户实体与预约信息(reservation)实体之间存在一对多的关系,即每个用户可以有多个预约记录。用户实体还与用户角色(user_role)实体存在一对多的关系,表示每个用户可以对应多个角色,从而实现不同的权限和功能。该设计保证了用户的基本信息与其预约和角色信息的有效关联。

如下图角色信息实体图,角色信息实体(role)包含以下属性:角色ID、角色名字、角色标识和角色状态。角色信息实体与用户角色(user_role)实体之间存在一对多的关系,即每个角色可以对应多个用户角色记录。这个设计确保了每个角色的信息能够与多个用户相关联,从而在系统中实现多用户角色的管理和权限分配。

img

如下图自习室详情信息实体图,自习室详情信息实体包含以下属性:自习室详情ID、自习室地址、自习室ID、自习室预约次数和自习室使用次数。自习室详情信息实体与自习室信息实体之间存在一对一的关系,即每个自习室对应唯一的自习室详情记录。这个设计确保了每个自习室都有独立且详细的预订和使用情况描述,从而可以有效管理和监控每个自习室的使用状态。

img

如下图预约系统实体图,预约信息实体包含以下属性:预约ID、用户ID、自习室详情ID、预约开始时间、预约状态、取消或拒绝理由以及预约结束时间。预约信息实体与用户信息实体之间存在多对一关系,即多个预约记录可以对应同一个用户。同时,预约信息实体与自习室详情实体之间也存在多对一关系,即多个预约记录可以对应同一个自习室详情。这种设计确保了预约信息能够准确关联到具体的用户和自习室详情,从而实现全面的预约管理。

image-20240630192344417

如下图,自习室实体图,自习室信息实体包含以下属性:自习室ID、自习室编号、总容量、可用设备和自习室类型。自习室信息实体与自习室详情信息实体之间存在一对一的关系,即每个自习室对应唯一的自习室详情记录。这个设计确保了每个自习室在系统中都有详细且独立的描述,从而可以准确记录和管理自习室的使用情况、容量和设备等信息。

image-20240630192355875

如下表3-1,自习室表存储每个自习室的基本信息,包括自习室ID、自习室编号、容量、设施和类型。在系统内,自习室表用于记录和管理所有自习室的基础信息,并与自习室详情表存在一对一关系。这种关系确保每个自习室都有唯一的详细信息记录,用于详细描述自习室的位置和使用情况。

表3-1 自习室表

列名 数据类型 长度 约束 详情
study_room_id int 11 主键非空 Id
study_room_num varchar 50 自习室可用数量
capacity int 50 总容量
Type varchar 50 自习室类型
facilities varchar 50 自习室设备

如下表3-2,自习室详情表包含自习室的详细信息,包括位置、自习室ID、预约频率和使用频率。在系统内,自习室详情用于进一步描述自习室的具体信息,如地理位置和使用统计信息。它与自习室表存在一对一关系,确保每个自习室都有唯一的详细信息记录。

表3-2 自习室详情表

列名 数据类型 长度 约束 详情
id int 11 主键非空 自习室Id
Location varchar 50 自习室地址
study_room_id int 11 自习室归属Id
reservation_frequency int 11 自习室预约状态
usage_frequency int 11 自习室使用次数
capecity int 11 容量

如下表3-3,用户表包含用户的基本信息,包括用户ID、用户名、密码、手机号和邮箱。系统内,用户表用于存储和管理所有用户的信息,并通过多对一关系与预约记录和用户角色关联,以便管理用户的预约活动和角色分配。

表3-3 用户表

列名 数据类型 长度 约束 详情
User_id int 11 主键非空 用户Id
password varchar 50 密码
phone mediumtext 11 用户手机号码
email varchar 11 用户邮箱
User_name varchar 50 用户姓名

如下表3-4,预约表记录每个预约的详细信息,包括预约ID、用户ID、自习室详情ID、预约时间、状态、取消或拒绝的原因和结束时间。在系统内,预约表用于跟踪和管理所有的自习室预约记录。它通过多对一关系与用户表和自习室详情表关联,确保每个预约记录都与特定的用户和自习室关联。

表3-4 预约信息表

列名 数据类型 长度 约束 详情
reservation_id int 11 主键非空 预约Id
User_id int 11 用户Id
Study_details_id int 11 自习室详情Id
time_start datetime 50 预约开始时间
time_end datetime 50 预约结束时间
status tinyint 11 预约状态
reason varchar 50 申请原因

如下表3-5,角色表包含每个角色的信息,包括角色ID、角色名称、角色标识和状态。在系统内,角色表用于定义和存储不同的角色,并与用户角色表存在多对一关系。这样,每个角色可以分配给多个用户,方便进行权限管理和角色分配。

表3-5 角色表

列名 数据类型 长度 约束 详情
role_id int 11 主键非空 角色Id
role_name varchar 255 角色名字
role_sign varchar 30 角色标识
status tinyint 11 角色状态

如下表3-6,用户角色表记录用户与其分配角色之间的关系,包括用户角色ID、用户ID和角色ID。在系统内,用户角色表用来管理和存储用户与角色的映射关系。它通过多对一关系与用户表和角色表关联,确保用户可以拥有相应的角色和权限。

表3-6 用户角色表

列名 数据类型 长度 约束 详情
id int 11 主键非空 角色用户Id
user_id int 11 用户Id
role_id int 11 角色Id

如下表3-7,自习室管理员表包含管理员的信息,包括管理员ID、用户ID和自习室ID。在系统内,自习室管理员表用于指定和管理自习室的管理员。它通过多对一关系与用户表和自习室表关联,确保每个自习室有特定的管理员进行管理和维护。

表3-7 自习室管理表

列名 数据类型 长度 约束 详情
admin_id int 11 主键非空 角色用户Id
user_id int 11 用户Id
study_room_id int 11 角色Id

如下表3-8,角色权限表存储角色与权限之间的关系,包括角色权限ID、角色ID和权限ID。在系统内,角色权限表用于管理和记录每个角色与其权限之间的映射关系。它通过多对一关系与角色表和权限表关联。

表3-8 角色权限表

列名 数据类型 长度 约束 详情
id int 11 主键非空 角色权限Id
role_id int 11 角色Id
permission_id int 11 权限Id

如下表3-9,权限表存储权限的信息,包括权限ID、权限名称和权限简化表示。在系统内,权限表用于定义和存储不同的权限,并通过多对一关系与角色权限表关联。这样,每个权限可以分配给多个角色,实现灵活的权限管理。

表3-9 权限表

列名 数据类型 长度 约束 详情
permsission_id int 11 主键非空 角色用户Id
permission_simplify varchar 20 权限简化标识
permsission_name varchar 255 权限名称

安全设计

用户认证:采用安全认证机制,如密码哈希存储用户密码,使用令牌或会话管理用户登录状态。

权限控制:根据用户角色进行权限控制,确保只有具有相应权限的用户才能执行特定操作。

数据保护:对敏感数据进行加密存储和传输,确保数据的机密性和完整性。

系统详细设计

登录功能模块

如下图,在自习室预约系统的登录时序图中,用户首先在浏览器中输入用户名和密码并点击登录。接着,浏览器通过HTTP请求将表单数据发送到服务器,服务器查询数据库以验证用户名和密码。如验证成功,服务器生成会话令牌,如JWT或Session ID,并将其发送回浏览器,同时浏览器将令牌保存在CookieLocalStorage中。最后,服务器发送登录成功的信息,并可能重定向用户到主页面或个人主页。这一过程清晰展示了用户登录流程的各个关键步骤及各组件间的交互

image-20240630191841675

如下图3,用户首先在浏览器中打开自习室预约系统的登录页面,并在页面的表单中输入用户名和密码。然后,用户点击“登录”按钮,表单数据通过HTTP请求发送到服务器。服务器接收到请求后,提取用户名和密码,并查询数据库以验证用户名是否存在。如果用户名存在,服务器会对比存储的哈希密码和用户输入的密码。如果用户名或密码不匹配,服务器向用户返回登录失败的信息。如果用户名密码匹配,服务器生成会话令牌,并将令牌发送给用户的浏览器。随后,浏览器收到会话令牌(如JWT或Session ID)并将其保存到Cookie或LocalStorage中。最后,服务器向用户浏览器返回登录成功的信息,并重定向到系统的主页面或用户的个人主页。把这部分的时序图的从上面内容提取出来。

img

管理员功能模块

添加自习室:

如下图,浏览器将这些信息通过HTTP请求发送到服务器。服务器接收到请求后,首先对数据进行完整性和合法性检查,确保所有必填字段都有值且数据格式正确。然后,服务器将验证通过的自习室信息存入数据库。如果存储成功,服务器返回成功信息给浏览器;如果失败,则返回错误信息。最后,浏览器接收到服务器的响应并更新页面,根据返回的信息显示添加成功或失败的结果提示。

image-20240630192418134

如下图所示,管理员访问自习室预约系统的添加自习室页面,在表单中输入自习室的详细信息并点击“添加”按钮

image-20240630192428678

删除自习室:

如下图,该请求通过HTTP发送到服务器。服务器接收到请求后,会进行权限检查和请求有效性验证,确保管理员具有相应的操作权限。一旦验证通过,服务器指示数据库删除相关的自习室记录。数据库执行删除操作,服务器将结果返回给浏览器,显示该自习室已被成功删除或删除失败的信息。

img

如下图所示,管理员首先登录到自习室预约系统,并访问自习室管理页面,该页面列出了所有注册的自习室信息。管理员找到并选择他们想要删除的自习室,并点击该自习室旁的“删除”按钮以发起删除请求。

image-20240630192435966

修改自习室:

如下图,编辑完成后,管理员点击“提交”按钮,浏览器会将修改后的信息以HTTP请求的形式发送到服务器。服务器接收这些信息后进行权限验证和数据合法性检查,一旦确认无误,服务器会指示数据库更新这些自习室信息。数据库完成更新操作后,服务器根据操作结果向管理员返回一个成功或失败的响应。浏览器接收到响应后,将页面更新以显现修改成功或失败的通知。这个过程不仅确保了数据的准确性和操作的安全性,还通过即时反馈帮助管理员确认修改操作的最终结果。

image-20240630192447410

如下图所示,在自习室预约系统中,管理员首先登录并导航到自习室管理页面,这里列出了所有自习室的详细信息。管理员选择需要修改的自习室,并点击相对应的“编辑”按钮,这将打开一个带有当前自习室信息的表单。管理员在此表单中可以更新自习室的各类信息,如名称、容量、地点及开放时间等。

img

用户功能模块

预约自习室:

如下图,编辑完成后,管理员点击“提交”按钮,浏览器会将修改后的信息以HTTP请求的形式发送到服务器。服务器接收这些信息后进行权限验证和数据合法性检查,一旦确认无误,服务器会指示数据库更新这些自习室信息。数据库完成更新操作后,服务器根据操作结果向管理员返回一个成功或失败的响应。

image-20240630192457889

如下图,3-22所示,在自习室预约系统中,管理员首先登录并导航到自习室管理页面,这里列出了所有自习室的详细信息。管理员选择需要修改的自习室,并点击相对应的“编辑”按钮,这将打开一个带有当前自习室信息的表单。管理员在此表单中可以更新自习室的各类信息,如名称、容量、地点及开放时间等。

img

image-20240630192512225

取消预约:

如下图所示,用户首先登录到系统并导航到自己的预约历史或当前预约页面。在这里,所有的活跃预约都会被列出,包括每个预约的时间、自习室编号以及取消预约的选项。用户选择需要取消的预约后,点击“取消预约”按钮,系统会提示用户确认是否要取消。一旦用户确认取消,系统将自动发送取消请求到服务器,服务器验证请求的有效性后,更新数据库以反映预约被取消的状态。完成后,系统会通知用户预约已成功取消,并更新页面以显示最新的预约状态。用户首先登录到系统并导航到自己的预约历史或当前预约

image-20240630192521588

查看自习室情况:

如下图所示,用户可以通过系统提供的自习室状态页面来查看各自习室的当前状态和预约情况。用户访问该页面后,系统展示所有自习室的列表,包括每间自习室的位置、容量和当前的占用情况。用户可以查看每个自习室的详细信息,如开放时间和特定时间段内的预约状况,这有助于用户在预约前做出更明智的选择。

image-20240630192525619

查看预约情况:

如下图所示,用户需要了解自己的预约历史,以便于管理和规划个人时间。系统允许用户访问一个专门的页面,列出他们过去和即将进行的所有预约详情。这包括预约的日期、时间、自习室号码以及预约的状态。用户可以通过这一功能轻松跟踪自己的预约状况,并进行相应的规划和调整。

img

超级管理员功能模块

搜索用户:

如下图,服务器接收到请求后,解析其中的搜索关键字,并基于这些关键字对数据库进行查询操作,以找到符合条件的用户信息。一旦数据库查询完成,服务器会根据查询结果生成相应的响应信息。如果查询成功并找到了匹配的用户,服务器会将这些用户数据作为响应发送回浏览器;如果没有找到匹配的用户,则会发送一个表示无结果的提示信息。浏览器接收到这些信息后,便会更新用户管理页面,显示出搜索结果或者是没有找到任何用户的提示。整个过程不仅保证了超级管理员能够快速准确地获取用户信息,还优化了用户管理的效率。

img

如下图所示,超级管理员首先需要登录到自习室预约系统,并导船到用户管理页面。这个页面包括一个搜索框,允许超级管理员输入特定的搜索条件,如用户的用户名、邮箱或其他相关属性。输入完成后,超级管理员点击“搜索”按钮,此时浏览器会将这些搜索条件通过HTTP请求形式发送给服务器。

image-20240630192544783

管理用户:

如下图,此时系统会将这一角色更改请求通过HTTP请求发送到服务器。服务器接收到请求后,首先进行权限验证,确保当前操作员有权执行这一角色修改操作。若权限验证通过,服务器则指令数据库更新该用户的角色信息。数据库更新完成后,服务器会根据操作的结果生成响应,并将其发送回浏览器。浏览器接收到这一信息后,会更新用户管理页面,并向超级管理员显示角色更新成功或失败的提示。这个完整的流程不仅保证了用户角色管理的灵活性和系统的权限控制,还通过实时反馈使得超级管理员能够即刻知晓操作结果,从而提升了用户管理的效率和准确性。

image-20240630192553947

如下图所示,在自习室预约系统中,超级管理员首先需要通过浏览器登录系统,并导航至用户管理页面。此页面详细展示了系统中所有用户的列表,包括他们的基本信息和当前分配的角色。超级管理员浏览这个列表,并选择想要修改角色的特定用户。选择用户后,超级管理员可以通过一个界面元素(通常是下拉菜单)来指定新的用户角色,比如将用户从普通用户改为管理员或其他角色。一旦选择了新的角色,超级管理员会点击“更新”或“提交”按钮。

image-20240630192605509

img

查看使用统计:

如下图所示,通过合法的认证流程登录系统。登录后,超级管理员可以导航到系统提供的“统计”或“报表”页面,这里集中展示了自习室使用的各种统计数据。这些统计数据通常包括但不限于用户预约次数、自习室使用频率、高峰使用时段、取消预约的次数以及任何特定时间段内的用户活动情况。

image-20240630192613060

系统测试

系统测试综述

综述:

在自习室预约系统中,我们聚焦于测试查看自习室情况、预约和取消预约功能以确认普通用户的交互正确性;同时,管理员的添加、删除和修改自习室信息功能进行深入测试以保证系统信息的准确更新;对于超级管理员功能,特别测试了查看使用统计、管理用户以及搜索用户信息的准确性和效率。这些测试是为了确保系统各功能模块不仅符合设计要求,同时也提供了用户友好、安全和高效的操作体验,从而在系统投入实际使用前,能够识别并修正潜在问题,进一步提升服务的质量和用户满意度。通过全面的测试策略,我们的目标是确保自习室预约系统在提供必需服务的同时,保护用户信息的安全,同时确保系统跨平台的兼容性和高效性。测试覆盖了从基本功能到用户最终接受的每个阶段,确保发现并修复潜在的问题,从而提供一个既易于使用也高度可靠的系统,满足最终用户的期望和需求。这些测试不仅提高了系统的整体质量,也提升了用户信任。

测试类型及其目的:

功能测试:主要验证系统中的核心功能,如预约准确性、用户管理、通知系统以及时间选择功能。这项测试确保所有功能按预期工作,没有逻辑错误或缺陷,从而保证系统操作的正确性和预期行为。

性能测试:着重检查系统在高负载或高压力条件下的表现。该测试评估系统的响应速度和稳定性,确保在大量用户同时使用时系统能够有效地处理请求,从而提供持续的服务质量。

安全性测试:保证用户数据的安全性和隐私。通过这项测试,我们评估系统防止未授权访问以及数据泄露的能力,关注保护用户信息和转输安全。

兼容性测试:验证软件在不同的设备、操作系统和浏览器上的运行稳定性。这确保所有用户无论使用何种技术平台都能获得一致的体验。

用户接受测试:通过实际用户的操作反馈来评估系统的实用性和满意度。这项测试帮助我们了解用户在日常使用中遇到的问题和不便,以便进行调整和优化,提升用户体验。

关键测试

接口测试:

如下图所示,登录接口测试用Postman进行用户登录测试的过程。其中,发送了一个包含用户名和密码的POST请求到本地服务器,并成功接收到JSON格式响应数据。这表明登录操作被成功处理,用户被验证为“普通用户”。

image-20240630192633876

如下图所示,预约查询接口测试使用Postman来获取预约信息的过程。在图中,执行了一个GET请求至http://localhost:8989/reservations以查询预约数据。请求成功,状态码200表明查询过程顺利。返回的JSON响应数据包含一系列的预约信息,这里显示了一条预约的详细信息。该预约包含多个字段:预约ID为1,预约状态码为2(可能表示某种状态,比如"已确认"),用户姓名为空,预约类型为"设施预约",具体位置为"A2-209",预约原因是"学习讨论"。预约相关的设施包括"电脑和投影仪"。这图有效演示了如何通过API接口获取系统中的预约详情,这对于管理和监督预约系统尤为重要。

image-20240630192639167

如下图所示,审核接口测试使用Postman执行PUT请求以修改预约信息的操作。请求成功执行,返回表明预约信息已经被成功更新。这表明API已经正确处理了修改预约信息的请求。

img

如下图所示,获取用户列表接口测试使用Postman执行GET请求从服务器获取用户角色信息的过程。请求成功返回,展示了包括用户名、角色、电邮、电话和用户ID在内的详细信息,用于描绘系统中某个用户的权限和角色概况。

img

测试用例

如下表3-10,这组测试用例关注于验证系统管理用户的功能,包括添加新用户,修改现有用户信息,以及删除用户。各个用例检验系统是否能够成功执行用户管理任务并给出适当的反馈消息。

表3-10 管理用户测试用例表

测试用例描述 目标 预期结果 实际结果
添加新用户 检验添加用户功能的执行 成功添加用户,系统显示添加成功消息 成功添加,消息正确显示
修改现有用户信息 检验修改用户信息的正确性 成功修改用户信息,系统显示更新成功消息 修改成功,消息正确显示
删除用户 检验删除用户的功能 成功删除用户,系统显示删除成功消息 用户成功删除,确认消息显示

如下表3-11,测试用例集中于系统的用户搜索功能,包括对存在的用户的精确搜索,对不存在用户的搜索处理,以及使用模糊匹配进行的多用户搜索,确认系统能否在这些情况下准确显示用户信息或相关提示。

表3-11 搜索用户测试用例表

测试用例描述 目标 预期结果 实际结果
搜索存在的用户 检验搜索功能的准确性 系统正确显示匹配的用户信息 搜索成功,用户信息准确显示
搜索不存在的用户 测试系统的搜索容错能力 系统显示无结果,提示用户找不到匹配信息 搜索结果为空,系统正确显示无匹配信息提示
使用模糊匹配搜索多个用户 检验模糊搜索功能的效果 系统显示所有相关匹配的用户信息 模糊搜索成功,相关用户信息被展示

如下表3-12,这些测试用例旨在评估系统在显示自习室使用统计信息上的表现,无论是在没有使用记录的情况下还是有使用记录时,系统都应正确显示相关统计信息。

表3-12 查看使用统计测试用例表

测试用例描述 目标 预期结果 实际结果
没有任何自习室使用记录时查看统计 检验统计功能正常情况下的显示 统计结果显示无使用记录 系统正确显示无使用记录
自习室有使用记录时查看统计 检验统计功能反映实际使用情况 统计结果详细反映每个自习室的使用情况 统计正确,详细展示每个自习室的使用记录

如下表3-13,这一组测试用例检查系统在不同情况下(全部空闲、部分预约、全部预约满)展示自习室状态的准确性。

表3-13 查看自习室情况测试用例表

测试用例描述 目标 预期结果 实际结果
自习室全部空闲时进行查看 检查系统显示所有自习室空闲情况 系统显示所有自习室处于空闲状态 系统正确显示所有自习室空闲状态
自习室部分被预约时进行查看 检查系统显示部分自习室预约情况 系统显示部分自习室被预约,其余空闲 系统正确反映部分自习室被预约,其余空闲
自习室全部被预约满时查看 检查系统显示所有自习室被预约情况 系统显示所有自习室处于被预约状态 系统正确显示所有自习室被预约状态

如下表3-14,用例专注于系统处理自习室预约的能力,包括成功预约空闲的自习室、处理预约冲突以及连续预约多间自习室的情况,确保系统在这些场景下能正确执行并提供反馈。

表3-14 预约自习室测试用例表

测试用例描述 目标 预期结果 实际结果
预约一间未被预约的自习室 测试能否成功预约自习室 成功预约,系统显示预约成功信息 预约成功,系统显示预约成功信息
尝试预约已被他人预约满的自习室 测试系统处理冲突预约的能力 系统显示错误信息,指出自习室已被预约 尝试失败,系统正确显示错误信息
连续预约多间自习室 测试系统处理多项预约的能力 成功预约多间自习室,显示预约成功信息 成功预约多间,系统正确显示预约成功信息

如下表3-15,测试集包括检验用户取消自己之前成功的自习室预约,并测试系统防止用户撤销他人预约的安全性和权限管理。目的是确保系统在处理取消操作时既符合预期又维护了适当的访问控制。

表3-15 取消预约测试用例表

测试用例描述 目标 预期结果 实际结果
取消自己之前成功预约的自习室 测试能否取消自己的预约 成功取消预约,系统显示取消成功信息 预约取消成功,实际结果与预期相符
尝试取消他人的预约 测试系统的安全性和权限管理 系统显示错误信息,不允许取消他人预约 系统正确显示错

如下表3-16,这些用例测试系统如何处理自习室的删除请求,包括已安排和未安排预约的自习室,以及尝试删除不存在的自习室。这一系列测试旨在确保删除操作在不同状况下被正确处理,提供适当的反馈和错误处理。

表3-16 删除自习室测试用例表

测试用例描述 目标 预期结果 实际结果
删除系统中未被预约的自习室 检验删除功能的正常逻辑 成功删除,系统更新状态表示自习室已删除 成功删除自习室,系统正确显示删除状态
删除系统中已被预约的自习室 检验系统如何处理预约中的删除请求 系统阻止删除或需特殊处理 系统成功阻止删除,提示自习室正在被预约中
尝试删除不存在的自习室 测试系统的错误处理能力 系统显示错误信息,删除失败 系统正确显示错误信息,指出自习室不存在

如下表3-17,此部分测试用例关注于系统添加新自习室的功能,验证系统如何处理新自习室的添加,包括重复自习室编号的错误处理和在信息输入不完整时的系统反馈。

表3-17 添加自习室测试用例表

测试用例描述 目标 预期结果 实际结果
成功在系统中添加一个新的自习室 检验添加功能的正常逻辑 系统显示添加成功并更新自习室列表 添加成功,系统正确显示自习室列表更新
尝试添加已存在的自习室编号 测试系统处理重复添加的能力 系统显示错误,指出自习室编号重复 系统成功显示错误信息,防止重复添加
添加自习室时未填写完整信息 测试系统的输入验证功能 系统显示错误并要求必要信息完整 系统正确显示错误,要求填写必要信息

如下表3-18,这组测试用例评估了修改自习室信息的功能,测试了合法和非法修改案例,包括尝试修改不存在的自习室以及输入非法数据时的系统响应。目标是验证系统在更新自习室信息时的可靠性和错误处理能力。

表3-18 修改自习室测试用例表

测试用例描述 目标 预期结果 实际结果
修改自习室的信息 检验修改功能的正常逻辑 成功修改,系统显示更新成功消息 修改成功,系统正确显示更新成功消息
尝试修改不存在的自习室信息 测试系统的错误处理能力 系统显示错误信息,修改失败 系统正确显示错误信息,指出自习室不存在
修改自习室信息时输入非法数据 测试系统的输入验证功能 系统显示错误信息,阻止修改 系统正确显示错误,防止了无效的修改

测试分析

在对自习室预约系统进行细致的测试后,我们发现系统在多数关键功能上运作正常且符合预设需求。通过模拟普通用户的各种情境,如查看自习室预约状态、预约和取消自习室,系统显示了良好的反馈和正确管理冲突的能力。管理员功能测试表明,添加、删除和修改自习室的操作均得以准确执行,系统妥善处理了包括预约中的自习室不能被删除的逻辑。超级管理员的权限测试也验证了其对整个系统用户和统计信息的完全控制能力。模拟的实际结果与预期结果大致一致,验证了系统的可靠性和用户界面的友好性。然而,存在的一些预期外情况建议我们在未来增强输入验证、错误提示和系统的异常处理机制,特别是在处理重复数据和非法输入时。总体来说,自习室预约系统表现出了良好的稳定性和功能完整性,适合进行下一阶段的用户验收测试和进一步开发。

总结

在这个项目中,我使用Spring Boot作为后端框架,并结合Element Plus和Vue作为前端框架,构建了一个功能齐全的应用程序。Spring Boot提供了快速搭建后端服务的方式,支持依赖注入、自动配置和开发工具,极大地提升了开发效率,并能轻松集成各种第三方库。前端方面,Element Plus提供了一套漂亮易用的UI组件,而Vue则简化了数据绑定和组件开发,使前端代码更易维护和扩展。通过将后端和前端分离开发和部署,利用RESTful API进行通信,系统保持了松散耦合和易扩展性。我实现了用户管理功能,如登录、注册、获取和修改个人信息、搜索用户和查看所有用户等,并使用Spring Security进行权限控制,确保只有特定权限的用户能访问相应接口。项目中,用户管理功能包括注册、登录、获取和修改个人信息,这些操作通过Spring Boot的RESTful API实现,前端通过Axios进行请求处理。为了确保系统的安全性,我使用Spring Security进行权限控制,确保只有特定权限的用户可以访问相应的接口。这个项目集成了Spring Boot、Element Plus和Vue等技术,增强了我对这些技术的理解,并为今后的开发工作提供了良好的基础和参考。通过这个项目,我深刻体会到合适的技术栈能够极大地提升开发效率和系统质量,前后端分离开发的优势使得开发过程更加高效,细粒度的权限控制确保了系统的安全性,而组件化开发使得代码更加模块化和可维护。总之,这个项目不仅提升了我的技术能力,也让我对系统架构设计、用户体验和安全性有了更深刻的理解。