“机房学生认证系统”与批量自动化部署方案

"机房学生认证系统"与批量自动化部署方案

⚠️注意

请先修改config.ini,配置好服务器的URL,客户端在学生机上执行,服务端在教师机上执行。不要在同一台电脑上测试,以免锁住任务管理器不能结束进程。只能注销或重启电脑。

学校机房上课时,学生乱坐座位、,一直是困扰大多数信息技术老师的痛点。为了从根源上解决这一问题,我们构建了一款轻量、美观、且防破壁的 "多机位独立核验学生认证系统" 。本文将为你深入解析该系统的架构组成,并手把手教你如何结合 "极域电子教室" 来实现全机房的高效批量部署。


🏗️ 一、 项目架构概览

本系统采用经典的 C/S(Client-Server,客户端-服务端) 架构,配合轻量级 Web 管理后台,由纯 Python 生态环境(Tkinter + Flask + SQLite)打造。

1. 服务端(教师端后台)

  • 功能定位:系统的"大脑"。负责维护班级、姓名、IP 白名单对应关系,存储登录日志与考勤,并处理所有客户端发来的上报与认证核实。
  • 技术栈 :基于 Flask 轻量级 Web 框架,配合自带的轻量级关系型数据库 SQLite 落地数据的持久化存储,脱离了配置 MySQL 带来的繁杂性。
  • 自愈能力 :数据库操作和迁移均做了自动建表(预热自建)防崩溃处理。无论是全新环境首次部署还是重做系统后数据迁移,双击即可无缝启动,不存在缺少依赖导致白屏的常见部署错误。

2. 客户端(学生机登录器)

  • 功能定位:拦截非法上机的"守卫者"。采用深黑色科技风格的玻璃拟态卡片 UI 与动态散发的星空背景,极大提升了机房软件"祖传"的简陋视觉。
  • 防破壁屏障 :采用全屏幕覆盖和置顶(-topmost)属性,并在运行时代码级接管并强制锁死了 Windows 系统的任务管理器(Task Manager),防止对电脑有一定了解的学生通过快捷键在后台强杀进程逃避验证。
  • 解耦式配置管理 :舍弃了硬编码服务器 IP 地址的落后方案,提取所有易变动环境至程序目录下的 config.ini。这就极大地服务了局域网可能遭遇 IP 变动的情况及无感分发。

💻 二、 核心操作逻辑解读

【常规上机核验流程】

  1. 客户端唤醒:学生机器开机后,登录程序覆盖全屏强行阻塞操作系统桌面。
  2. 姓名盲序匹配登录 :学生从下拉框选择自己的年级和班级,输入自己的姓名后点击【常规登录】。
    • 特色亮点 :我们创造了 "无序严格闭环匹配" 算法。假设某台固定机位的合法搭档学生白名单是"李四 张三",即使这名学生习惯问题先排了自己朋友,输入了"张三 李四"系统也依然能绿灯放行!只要保证输入的两个名字构成等价数学集合,且完全一致即算通过。避免了传统软件因位置颠倒被误伤为无资质上机的困扰。
  3. 更顺畅的输入法自适应 :利用到了 Windows 内置底层的 ImmSetConversionStatus 原生接口。学生一点击输入框,程序内部自动将机器当前的输入通道锁定挂载为"中文(全拼/微软拼音) "状态;一旦认证成功、销毁阻止层进入 Windows 桌面时,它会立刻帮学生将输入法自动复原为En(标准美式)模式,保障这节计算机课马上开始使用诸如 Python、C++ 时不会因默认中文敲下全角标点而疯狂语法报错。完全无感化!

【首批白名单座位映射流程(极简排位)】

每年九月新学期,班级重新安排大范围的新固定座位时,如果由老师挨个去记录 IP 地址录入数据库,工程量惊人。系统因此给出了两套快速对策:

  • 方案 A(学生"盖章"上报,教师后台点通过)

    学生自己来到刚分配的新座位上,开机,从面板填入该座位预定人员的身份,点击【首次上报机位 】按钮。

    为应对熊孩子乱点带来的干扰,客户端加入了极为严谨的 3秒防抖冷却降级机制 ,并会在服务端自动触发基于 IP 的 同源覆盖淘汰机制 ,确保每一台请求发来时,系统里绝不会产生垃圾冗余数据。

    最后,管理教师只需要在后台的"待审批名单"中审视列表。而且我们将列表改造为严格按照 IP 数字矩阵升序排列 ,极大提高了对排布合理的判断。鼠标轻松一点"批量同意",瞬间完成人机绑定!

  • 方案 B(电子表格直接导入)

    当然,系统也支持最传统的途径。教师在后台可以直接下载 .csv 规范模板,在 Excel 中将提前规划好的名单与机柜编号直接填写后打包一键上传导入,零停工。


🛠️ 三、 Windows 平台极速部署及注意事项

部署规范

  1. 服务端启动

    抛弃多余配置。直接把服务端编译产物 student_server.exe 存放在教师机专属的安全盘符下,直接双击运行(同目录会自动生成诸如 lab.db 等相关配置,请勿单独删除)。保持那个黑色的控制台终端存活,接着打开浏览器访问 http://127.0.0.1:5000 进入华丽的控制台。

  2. 学生机客户端放置

    在学生机放置好 student_client.execonfig.ini 这个组件。并确保 ini 文件里面的地址正确指向了教师机的 IP。

    config.ini文件内容配置服务器地址。

    复制代码
    [server]
    url = http://192.168.3.5:5000/login

⚠️ 重要注意事项

  1. 网络放行规则 :请务必确保作为中枢神经的教师机由于开启了服务,会在局域网提供 5000 端口(或者自定义的其他端口)访问。你必须前往"Windows Defender 防火墙"等高级安全出入站规则中,将其加为放行端口,否则所有学生机均会因为 Timeout 长时间无响应报出失去服务器连接。
  2. 信任机制避免杀毒封禁 :由于本客户端具有直接切入注册表修改 DisableTaskMgr (任务管理器禁用)特权组的行为,部分主防敏锐的安全卫士或者火绒等大概率会产生误报威胁拦截。在分发客户端前应当首先将该其纳入系统防护或管家的"信任排除白名单"!

🚀 四、搭配极域电子教室的挂载自启

假若您已经通过【文件分发】功能,将编译好的 student_client 打包文件夹无声无息地传送到了每一台电脑桌面,具体所在比如是:C:\Users\admin\Desktop\student_client\student_client.exe (这里的 admin 请根据你机房实际登录的用户角色名进行无缝替换,比如也可以是 Student)。

通过极域运行远程批处理,注册到启动组。

复制代码
@echo off
chcp 65001 >nul
title 添加开机自启

:: 写入系统全局启动项(所有用户,重启生效)
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "StudentClient" /t REG_SZ /d "\"C:\Users\admin\Desktop\student_client\student_client.exe\"" /f

echo 已添加开机自启!
pause >nul
exit

🚀 五、已编译程序地址

本程序我在win10,win11测试通过,并没有做广泛测试。欢迎交流!

复制代码
通过网盘分享的文件:student_login_.7z
链接: https://pan.baidu.com/s/1gX7uK5SKw9_2OGKWprS0EQ?pwd=su8f 提取码: su8f 
相关推荐
KKKlucifer2 小时前
4A 平台合规自动化:从策略配置到审计追溯的全链路技术实现
运维·网络·自动化
信创DevOps先锋2 小时前
Gitee DevOps:构筑国产化数字基座,赋能企业信创转型
运维·gitee·devops
似水এ᭄往昔2 小时前
【Linux】--进程控制
linux·运维·服务器
l14372332672 小时前
AI解说大师narrator-ai-cli:影视解说自动化工具,CLI架构让内容生产效率翻倍
运维·人工智能·自动化
Gofarlic_oms12 小时前
构建可视化监控体系实现ANSYS许可证可观测管理
大数据·运维·网络·数据库·人工智能
倦王3 小时前
在docker下部署Xinference
运维·docker·容器
zhang133830890753 小时前
守护水工安全:CG-85D振弦式渗压计在大坝与堤防监测中的核心作用
运维·服务器·网络·人工智能·自动化
SPC的存折3 小时前
自用LNMP-Redis-NFS-Discuz5.0部署指南-脚本版
linux·运维·服务器·数据库·redis·mysql·缓存
阿火~3 小时前
docker完整镜像迁移【亲测有效】
linux·运维·服务器·docker·容器