该实验为软件工程实验5,有三部分:数据库设计、 E_R 图、功能流程图。

成员

230809010118---张艳

230809010119---田吉琼

230809010127---马秀兰

一、数据库设计概述----负责人--田吉琼

为支撑智能手势控制系统的数据持久化需求,本项目采用 SQL Server 关系型数据库,设计了 gesture_control 数据库,包含 6 张核心数据表,实现了手势定义、指令映射、用户日志等业务数据的结构化存储。

数据库整体设计遵循第三范式,各表通过外键建立关联,保证数据一致性与完整性,同时便于后续功能扩展与维护。

1. dbo.app 应用信息表

app 表是系统的基础配置表,用于存储所有支持手势控制的应用信息,为手势指令的场景适配提供数据依据。表中记录了应用的名称、类型、路径及创建时间,支持对办公软件、浏览器、多媒体播放器等不同类型应用的统一管理。

image

2. dbo.gesture 手势信息表

gesture 表是系统的核心基础表,存储所有预定义手势的元数据,包括手势名称、类型、关键点特征及识别置信度阈值,是手势识别模块的数据来源。

image

3. dbo.app_command_map 手势 - 指令映射表

app_command_map 表是系统的业务核心表,定义了 “手势 + 应用” 对应的具体操作指令,实现手势到功能的映射,例如 “上划手势 + PPT → 上翻页”,是系统控制逻辑的关键。

image

4. dbo.operation_log 操作日志表

operation_log 表用于记录用户所有手势操作行为,包括操作时间、手势类型、应用场景及执行结果,为系统调试、行为分析与功能优化提供数据支持。

image

5. dbo.user 用户信息表

user 表存储系统用户信息,支持多用户使用场景,实现用户账号管理与操作行为的关联追踪。

image

6. dbo.gesture_usage_count 手势统计表

gesture_usage_count 表用于统计各手势的使用频率,记录使用次数与最后使用时间,为后续手势识别优化与用户行为分析提供数据依据。

image

二、团队项目的 ER 图----负责人--张艳

1. 四个实体(用方框画)

用户(User)
手势(Gesture)
应用(Application)
指令(Command)

2. 每个实体的属性(用椭圆 / 圆角矩形画)

用户(User):用户 ID(主键)、用户名、操作权限
手势(Gesture):手势 ID(主键)、手势名称、手势类型、关键点描述
应用(Application):应用 ID(主键)、应用名称、应用类型
指令(Command):指令 ID(主键)、指令名称、指令功能

3. 关系(用菱形画,标注基数)

手势 ↔ 指令:关系菱形写对应,标注1:N(一个手势对应多个指令)
指令 ↔ 应用:关系菱形写适配,标注1:N(一个指令适配多个应用)
用户 ↔ 手势:关系菱形写触发,标注1:N(一个用户触发多个手势)

ER 图的几个基础符号:

image

下图是ER 图以及文字说介绍

image

本项目 ER 图以实体 - 关系模型为基础,包含用户、手势、指令、应用四个核心实体。其中,用户实体通过 “触发” 关系与手势实体建立一对多联系(1:N),一个用户可触发多个手势;手势实体通过 “对应” 关系与指令实体建立一对一联系(1:N),每个手势在不同场景对应不同的操作指令;指令实体通过 “适配” 关系与应用实体建立一对多联系(1:N),一个指令可适配多个应用场景。

各实体的主键属性通过双线椭圆标识,清晰表达了系统中用户、手势、指令、应用之间的关联逻辑,为数据库设计提供了直观的依据。

三、 团队项目主要功能流程描述----负责人--马秀兰

本智能手势控制系统整体运行流程完整闭环,主要分为系统启动与初始化流程、手势采集与识别流程、指令映射与执行流程、操作日志与数据统计流程、系统关闭流程五大核心模块。各模块依次联动、循环执行,实现从设备启动、手势识别、智能控制、数据记录到安全退出的完整业务流程。

3.1 系统启动与初始化流程

系统启动后自动完成全局初始化工作,为后续手势识别与控制功能提供运行环境,具体流程如下:
1. 加载系统核心功能模块,包括摄像头采集模块、图像预处理模块、手势识别算法模块、指令执行模块。
2. 连接 SQL Server 数据库,读取 gesture_control 数据库中的基础数据,包含用户信息、手势参数、应用列表、手势与指令映射规则等配置内容。

3. 检测本地摄像头设备,获取设备权限并初始化分辨率、帧率等参数,若无摄像头则给出提示,设备正常则开启实时画面采集。

4. 支持默认免登录模式与账号密码登录模式,登录成功后加载用户个性化手势配置与历史操作数据,进入系统主界面。

3.2 手势采集与识别流程

手势采集与识别是本项目的核心业务流程,系统基于 OpenCV 图像处理与 MediaPipe 关键点检测技术,实现静态手势与动态手势的精准识别,流程如下:

1. 手势采集:摄像头实时读取画面,采集用户手部动作图像与连续运动轨迹,实时输出手部21个关键点坐标,为手势判断提供原始数据。

2. 图像预处理:对画面进行去噪、图像增强、色彩转换、手部区域分割,消除背景干扰与抖动误差,输出标准化手部图像数据。

3. 手势特征匹配:系统提取手势关键点距离、角度、运动轨迹等特征,与数据库中预存的手势特征参数进行比对。

4. 识别结果判定:当匹配置信度大于0.7阈值时判定识别成功,返回对应手势名称;匹配度不足则识别失败,系统继续监听下一帧画面。

5. 自定义手势流程:支持用户自定义新手势,采集手势特征后保存手势参数、手势类型,并绑定对应控制指令,存入数据库实现个性化手势扩展。

3.3 指令映射与执行流程

手势识别成功后,系统根据当前应用场景自动匹配并执行对应操作指令,实现智能化自动控制,流程如下:

1. 活跃应用检测:系统实时获取当前电脑前台活跃应用,包括办公软件、浏览器、播放器等,若无活跃应用则执行系统全局指令。

2. 手势指令匹配:根据识别得到的 gesture_id 与当前 app_id,查询 app_command_map 映射表,查询该场景下对应的控制指令内容、指令类型与执行延迟。

3. 自动化指令执行:通过 PyAutoGUI 模拟键盘、鼠标、系统操作,完成翻页、保存、音量调节、播放暂停等功能。若应用不支持或执行异常,系统记录错误信息并提示用户。

4. 映射关系管理:用户可自主修改、启用、禁用手势与指令的映射关系,所有修改实时更新至数据库,实现个性化自定义控制逻辑。

3.4 操作日志与数据统计流程

系统具备完整的数据记录与统计功能,全程记录用户操作行为,为系统优化和问题排查提供数据支撑:

1. 操作日志记录:每一次登录、手势识别、指令执行、自定义手势操作均写入 operation_log 日志表,记录用户ID、手势ID、应用ID、操作内容、操作时间与执行结果。

2. 手势使用统计:每次手势成功执行后,自动更新 gesture_usage_count 统计表,更新手势使用次数与最新使用时间,实现手势使用数据长期统计。

3. 数据分析应用:通过日志与统计数据,可分析高频手势、识别失败场景、用户使用习惯,为算法优化与功能迭代提供依据。

3.5 系统关闭流程

用户关闭程序时,系统执行完整的安全退出流程:依次关闭摄像头采集、手势识别与指令监听模块,同步保存所有未写入的日志数据与用户配置,释放硬件与内存资源,保证数据不丢失,实现安全稳定退出。

下图是智能手势控制系统整体运行说明图

image

流程总结

整套系统从启动初始化、手势识别、指令执行、数据记录到安全退出,形成完整闭环业务流程。各模块分工明确、联动稳定,既实现了多场景智能手势控制核心功能,又具备日志追溯、数据统计、个性化配置等扩展能力,系统稳定性与可维护性较强。

实验总结

本次团队项目围绕智能手势控制系统的核心需求,完成了数据库设计、ER 图建模与系统功能流程梳理,为项目后续开发奠定了坚实的理论与数据基础。

在数据库设计方面,我们基于 SQL Server 构建了gesture_control数据库,设计了app、gesture、app_command_map、operation_log、user、gesture_usage_count等核心数据表,实现了对用户信息、手势定义、应用配置、指令映射及操作日志的结构化存储。各表通过主键与外键建立关联,形成了完整的数据模型,既保证了数据的一致性与完整性,也为系统的业务逻辑提供了可靠的数据支撑。

在 ER 图设计方面,我们以实体 - 关系模型为基础,梳理了用户、手势、指令、应用四大核心实体及其关联关系。通过 ER 图清晰表达了 “用户 - 手势 - 指令 - 应用” 之间的映射逻辑,明确了各实体的属性特征与关联基数,为数据库表结构设计提供了直观依据,也让系统的业务逻辑更加清晰可追溯。

在系统功能流程梳理方面,我们完整设计了系统从启动初始化、手势采集与识别、指令映射与执行,到操作日志记录与系统关闭的全流程闭环。各模块分工明确、联动顺畅,既实现了多场景手势控制的核心功能,也通过日志记录与数据统计为系统优化提供了数据支撑,同时兼顾了用户个性化配置与系统稳定性、可维护性。

本次实验不仅让我们掌握了数据库设计、ER 图建模与系统流程梳理的基本方法,也加深了对智能控制系统业务逻辑的理解,为后续项目开发与功能实现奠定了坚实的基础。