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

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

⚠️注意

请先修改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 
相关推荐
Cat_Rocky1 分钟前
Jenkins通过kubernetes连接K8s集群
运维·kubernetes·jenkins
Plastic garden1 分钟前
Docker(2)数据挂载
运维·docker·容器
Plastic garden1 分钟前
Docker(4) Compose
运维·docker·容器
utf8mb4安全女神8 分钟前
磁盘管理(交换分区)(MGR分区)(GPT分区)
linux·运维·服务器
不会就选b10 分钟前
linux之vim
linux·运维·vim
humors22116 分钟前
聊聊密码为啥会“白设”
大数据·运维·服务器·网络·网络安全
xiaobobo333032 分钟前
Ubuntu 26.04下编译s5pv210芯片的linux内核源码,无法进入menuconfig界面
linux·运维·ubuntu
kongba00732 分钟前
双轨终端监视系统部署手册tmux + ttyd 实时 SSH 操作可视化方案
运维·ssh
難釋懷34 分钟前
Nginx-Https证书配置
运维·nginx·https
爱喝热水的呀哈喽34 分钟前
多轮对话 gpt‘
运维·windows·python