.github/workflows | ||
.idea | ||
1.xlsx | ||
2.xlsx | ||
BUILD_FIXES.md | ||
build_simple.bat | ||
build_windows.bat | ||
build_windows.ps1 | ||
fix_dll_build.bat | ||
fix_dll_build.py | ||
README.md | ||
requirements.txt | ||
seat_allocation_system.py | ||
simple_windows_build.py | ||
test_build.py | ||
test_pandas_dll.py | ||
windows_build.py | ||
快速打包.bat |
座位分配系统
智能座位分配工具,支持1-10人连坐需求,能够处理不连续座位的复杂情况。
🎯 功能特点
- ✅ 智能分配: 支持1-10人的各种连坐需求
- ✅ 智能识别: 自动识别Excel文件类型,支持默认文件名和智能识别两种模式
- ✅ 双重分组: 支持备注分组和手机号分组两种模式
- ✅ 数据校验: 完整的文件格式和逻辑校验,支持重名+身份证号校验
- ✅ 不连续座位: 自动处理座位号间隙
- ✅ 详细日志: 完整的操作记录和结果验证
- ✅ 跨平台: 支持Windows、macOS、Linux
- ✅ 智能覆盖: 人员信息覆盖座位表对应列,分配备注单独存储在第13列
📋 使用方法
准备Excel文件
-
人员信息文件 - 包含以下列:
- 姓名、证件类型、证件号、手机号、备注
- 备注模式: 备注数字表示连坐人数(如:备注4表示当前行+后3行共4人连坐)
- 手机号模式: 相同手机号的人员自动识别为连坐组
-
座位信息文件 - 包含以下列:
- 区域、楼层、排号、座位号
文件识别方式
程序启动时会提供两种文件识别方式:
- 默认文件名 - 读取固定文件名
人员信息.xlsx
和座位信息.xlsx
- 智能识别 - 自动分析目录中的Excel文件并识别类型
- 根据列名特征自动判断文件类型
- 支持任意文件名(如
1.xlsx
、2.xlsx
) - 提供手动选择功能作为备选
运行程序
Python环境运行
# 安装依赖
pip install pandas openpyxl
# 运行程序
python seat_allocation_system.py
构建可执行文件
# 在当前平台构建
python simple_build.py
# 跨平台构建(macOS构建Windows版本)
python cross_platform_build.py
选择文件识别模式
程序运行时首先选择文件识别模式:
- 默认文件名 - 读取
人员信息.xlsx
和座位信息.xlsx
- 智能识别 - 自动识别目录中的Excel文件
选择分组方式
然后选择连坐分组方式:
- 备注分组 - 根据备注数字识别连坐组(默认)
- 手机号分组 - 根据相同手机号识别连坐组
查看结果
程序运行后会生成:
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自动构建多平台版本:
- 将
build_workflow.yml
放入.github/workflows/
目录 - 推送到GitHub仓库
- 自动构建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号
⚠️ 注意事项
- 备注逻辑: 备注数字表示连坐人数,只有组长填写备注,成员留空
- 手机号逻辑: 相同手机号的人员会被识别为连坐组
- 重名处理: 支持重名人员,通过姓名+身份证号组合进行唯一性校验
- 证件号格式: 支持包含X的身份证号,自动处理为字符串格式
- 文字清理: 自动清除姓名等字段的多余空格
- 座位连续性: 支持不连续座位号,算法会自动寻找合适的连续段
- 智能覆盖: 人员信息覆盖座位表对应列,分配备注单独存储
🔍 故障排除
常见问题
- 文件格式错误: 确保Excel文件包含必需的列
- 编码问题: 确保Excel文件使用UTF-8编码
- 权限问题: 确保有读写Excel文件的权限
- 内存不足: 处理大量数据时可能需要更多内存
技术支持
如遇问题,请查看生成的日志文件:
seat_allocation_log.txt
- 详细的运行日志- 控制台输出 - 实时处理信息
📈 版本历史
- v1.0 - 初始版本,支持基本座位分配
- v1.1 - 添加数据校验和错误处理
- v1.2 - 支持不连续座位处理
- v1.3 - 优化数据类型处理,支持跨平台构建
📄 许可证
本项目采用MIT许可证,详见LICENSE文件。