Go to file
2025-07-02 20:08:23 +08:00
.github/workflows Create main.yml 2025-06-30 11:08:24 +08:00
.idea 删除 .idea/vcs.xml 2025-06-30 21:25:09 +08:00
1.xlsx 增加按照手机号排序 2025-07-02 16:26:35 +08:00
2.xlsx 增加按照手机号排序 2025-07-02 16:26:35 +08:00
BUILD_FIXES.md 修改打包交脚本 2025-07-02 19:59:41 +08:00
build_simple.bat 修改打包交脚本 2025-07-02 19:59:41 +08:00
build_windows.bat 修改打包交脚本 2025-07-02 19:43:52 +08:00
build_windows.ps1 修改打包交脚本 2025-07-02 19:43:52 +08:00
fix_dll_build.bat 修改打包交脚本 2025-07-02 20:08:23 +08:00
fix_dll_build.py 修改打包交脚本 2025-07-02 20:08:23 +08:00
README.md 增加按照手机号排序 2025-07-02 16:26:35 +08:00
requirements.txt 项目基本完成 2025-06-30 10:55:09 +08:00
seat_allocation_system.py 增加按照手机号排序 2025-07-02 16:26:35 +08:00
simple_windows_build.py 修改打包交脚本 2025-07-02 19:59:41 +08:00
test_build.py 修改打包交脚本 2025-07-02 19:37:10 +08:00
test_pandas_dll.py 修改打包交脚本 2025-07-02 20:08:23 +08:00
windows_build.py 修改打包交脚本 2025-07-02 19:59:41 +08:00
快速打包.bat 修改打包交脚本 2025-07-02 19:43:52 +08:00

座位分配系统

智能座位分配工具支持1-10人连坐需求能够处理不连续座位的复杂情况。

🎯 功能特点

  • 智能分配: 支持1-10人的各种连坐需求
  • 智能识别: 自动识别Excel文件类型支持默认文件名和智能识别两种模式
  • 双重分组: 支持备注分组和手机号分组两种模式
  • 数据校验: 完整的文件格式和逻辑校验,支持重名+身份证号校验
  • 不连续座位: 自动处理座位号间隙
  • 详细日志: 完整的操作记录和结果验证
  • 跨平台: 支持Windows、macOS、Linux
  • 智能覆盖: 人员信息覆盖座位表对应列分配备注单独存储在第13列

📋 使用方法

准备Excel文件

  1. 人员信息文件 - 包含以下列:

    • 姓名、证件类型、证件号、手机号、备注
    • 备注模式: 备注数字表示连坐人数备注4表示当前行+后3行共4人连坐
    • 手机号模式: 相同手机号的人员自动识别为连坐组
  2. 座位信息文件 - 包含以下列:

    • 区域、楼层、排号、座位号

文件识别方式

程序启动时会提供两种文件识别方式:

  1. 默认文件名 - 读取固定文件名 人员信息.xlsx座位信息.xlsx
  2. 智能识别 - 自动分析目录中的Excel文件并识别类型
    • 根据列名特征自动判断文件类型
    • 支持任意文件名(如 1.xlsx2.xlsx
    • 提供手动选择功能作为备选

运行程序

Python环境运行

# 安装依赖
pip install pandas openpyxl

# 运行程序
python seat_allocation_system.py

构建可执行文件

# 在当前平台构建
python simple_build.py

# 跨平台构建macOS构建Windows版本
python cross_platform_build.py

选择文件识别模式

程序运行时首先选择文件识别模式:

  1. 默认文件名 - 读取 人员信息.xlsx座位信息.xlsx
  2. 智能识别 - 自动识别目录中的Excel文件

选择分组方式

然后选择连坐分组方式:

  1. 备注分组 - 根据备注数字识别连坐组(默认)
  2. 手机号分组 - 根据相同手机号识别连坐组

查看结果

程序运行后会生成:

  • log/座位信息_最终分配.xlsx - 最终分配结果
    • 第1-5列座位基本信息保持不变
    • 第6-10列人员信息覆盖原座位表数据
    • 第11-12列原座位表其他列保持不变
    • 第13列分配备注新增列
  • log/最终座位分配日志.xlsx - 详细分配记录
  • log/seat_allocation_log.txt - 完整运行日志

🔧 构建选项

本地构建

# 简单构建(推荐)
python simple_build.py

跨平台构建

# 在macOS上构建Windows版本
python cross_platform_build.py

自动化构建

使用GitHub Actions自动构建多平台版本

  1. build_workflow.yml 放入 .github/workflows/ 目录
  2. 推送到GitHub仓库
  3. 自动构建Windows x86/x64和macOS版本

📁 文件说明

核心文件

  • seat_allocation_system.py - 主程序
  • simple_build.py - 简化构建脚本
  • cross_platform_build.py - 跨平台构建脚本
  • requirements.txt - Python依赖

配置文件

  • build_workflow.yml - GitHub Actions工作流
  • 人员信息.xlsx - 示例人员数据
  • 座位信息.xlsx - 示例座位数据

🎯 支持的平台

直接运行

  • Windows 7/8/10/11 (x86/x64/ARM64)
  • macOS 10.14+ (Intel/Apple Silicon)
  • Linux (x86_64/ARM64)

构建目标

  • Windows x86 - 32位兼容版本
  • Windows x64 - 64位主流版本
  • macOS - Intel和Apple Silicon
  • Linux - 主流发行版

📊 数据格式要求

人员信息格式

姓名    | 证件类型 | 证件号              | 手机号      | 备注
张三    | 身份证   | 123456789012345678  | 13800138000 | 2
李四    | 身份证   | 123456789012345679  | 13800138001 | 
王五    | 身份证   | 12345678901234567X  | 13800138002 | 3
赵六    | 身份证   | 123456789012345680  | 13800138003 | 
钱七    | 身份证   | 123456789012345681  | 13800138004 | 

座位信息格式

区域      | 楼层 | 排号 | 座位号
A区通道   | 一层 | 1排  | 1号
A区通道   | 一层 | 1排  | 2号
A区通道   | 一层 | 1排  | 3号

⚠️ 注意事项

  1. 备注逻辑: 备注数字表示连坐人数,只有组长填写备注,成员留空
  2. 手机号逻辑: 相同手机号的人员会被识别为连坐组
  3. 重名处理: 支持重名人员,通过姓名+身份证号组合进行唯一性校验
  4. 证件号格式: 支持包含X的身份证号自动处理为字符串格式
  5. 文字清理: 自动清除姓名等字段的多余空格
  6. 座位连续性: 支持不连续座位号,算法会自动寻找合适的连续段
  7. 智能覆盖: 人员信息覆盖座位表对应列,分配备注单独存储

🔍 故障排除

常见问题

  1. 文件格式错误: 确保Excel文件包含必需的列
  2. 编码问题: 确保Excel文件使用UTF-8编码
  3. 权限问题: 确保有读写Excel文件的权限
  4. 内存不足: 处理大量数据时可能需要更多内存

技术支持

如遇问题,请查看生成的日志文件:

  • seat_allocation_log.txt - 详细的运行日志
  • 控制台输出 - 实时处理信息

📈 版本历史

  • v1.0 - 初始版本,支持基本座位分配
  • v1.1 - 添加数据校验和错误处理
  • v1.2 - 支持不连续座位处理
  • v1.3 - 优化数据类型处理,支持跨平台构建

📄 许可证

本项目采用MIT许可证详见LICENSE文件。