From 9c3470e60bb0684a0ba6f3ec564b7fc29e6dc686 Mon Sep 17 00:00:00 2001 From: yovinchen Date: Mon, 30 Jun 2025 21:22:02 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=9F=BA=E6=9C=AC=E5=AE=8C?= =?UTF-8?q?=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/vcs.xml | 6 + seat_allocation.spec | 128 +++++++++++ seat_allocation_log.txt | 465 ++++++++++++++++++++++++++++++++++++++++ 人员信息.xlsx | Bin 16191 -> 16331 bytes 座位信息_最终分配.xlsx | Bin 0 -> 11609 bytes 最终座位分配日志.xlsx | Bin 0 -> 9383 bytes 6 files changed, 599 insertions(+) create mode 100644 .idea/vcs.xml create mode 100644 seat_allocation.spec create mode 100644 seat_allocation_log.txt create mode 100644 座位信息_最终分配.xlsx create mode 100644 最终座位分配日志.xlsx diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/seat_allocation.spec b/seat_allocation.spec new file mode 100644 index 0000000..7c38a5d --- /dev/null +++ b/seat_allocation.spec @@ -0,0 +1,128 @@ +# -*- mode: python ; coding: utf-8 -*- +# 完全独立的PyInstaller配置 +# 包含Python解释器和所有依赖,无需目标机器安装Python + +import sys +from pathlib import Path + +block_cipher = None + +a = Analysis( + ['seat_allocation_system.py'], + pathex=[str(Path.cwd())], + binaries=[], + datas=[ + # 包含必要的数据文件(如果有的话) + ], + hiddenimports=[ + # 核心依赖 + 'pandas', + 'openpyxl', + 'numpy', + 'xlsxwriter', + 'xlrd', + 'datetime', + 'pathlib', + 'subprocess', + 'platform', + 'sys', + 'os', + + # openpyxl相关 + 'openpyxl.workbook', + 'openpyxl.worksheet', + 'openpyxl.styles', + 'openpyxl.utils', + 'openpyxl.writer.excel', + 'openpyxl.reader.excel', + 'openpyxl.cell', + 'openpyxl.formatting', + 'openpyxl.formatting.rule', + + # pandas相关 + 'pandas.io.excel', + 'pandas.io.common', + 'pandas.io.parsers', + 'pandas.io.formats', + 'pandas.io.formats.excel', + 'pandas._libs.tslibs.timedeltas', + 'pandas._libs.tslibs.np_datetime', + 'pandas._libs.tslibs.nattype', + 'pandas._libs.skiplist', + + # numpy相关 + 'numpy.core.multiarray', + 'numpy.core.umath', + 'numpy.core._methods', + 'numpy.lib.format', + 'numpy.random._pickle', + + # 编码相关 + 'encodings', + 'encodings.utf_8', + 'encodings.gbk', + 'encodings.cp1252', + + # 其他必要模块 + 'pkg_resources.py2_warn', + '_ctypes', + 'ctypes.util' + ], + hookspath=[], + hooksconfig={}, + runtime_hooks=[], + excludes=[ + # 排除不必要的大型库 + 'matplotlib', + 'scipy', + 'IPython', + 'jupyter', + 'notebook', + 'tkinter', + 'PyQt5', + 'PyQt6', + 'PySide2', + 'PySide6', + 'test', + 'tests', + 'unittest', + 'doctest', + 'pdb', + 'pydoc', + 'setuptools', + 'pip', + 'wheel', + 'distutils' + ], + win_no_prefer_redirects=False, + win_private_assemblies=False, + cipher=block_cipher, + noarchive=False, +) + +# 过滤和优化 +pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) + +exe = EXE( + pyz, + a.scripts, + a.binaries, + a.zipfiles, + a.datas, + [], + name='座位分配系统', + debug=False, + bootloader_ignore_signals=False, + strip=False, # 保留符号信息以便调试 + upx=False, # 不使用UPX压缩以提高兼容性 + upx_exclude=[], + runtime_tmpdir=None, + console=True, + disable_windowed_traceback=False, + argv_emulation=False, + target_arch=None, + codesign_identity=None, + entitlements_file=None, + # 确保包含Python运行时 + exclude_binaries=False, +) \ No newline at end of file diff --git a/seat_allocation_log.txt b/seat_allocation_log.txt new file mode 100644 index 0000000..6c6c342 --- /dev/null +++ b/seat_allocation_log.txt @@ -0,0 +1,465 @@ +[2025-06-30 20:58:50] ============================================================ +[2025-06-30 20:58:50] 座位分配系统 - 文件校验 +[2025-06-30 20:58:50] ============================================================ +[2025-06-30 20:58:50] === 开始加载数据 === +[2025-06-30 20:58:50] 清理文字数据中的空格... +[2025-06-30 20:58:50] ✅ 文字数据清理完成 +[2025-06-30 20:58:50] ✅ 文件加载成功 +[2025-06-30 20:58:50] 人员信息: 100 行 × 6 列 +[2025-06-30 20:58:50] 座位信息: 100 行 × 12 列 +[2025-06-30 20:58:50] +=== 人员信息结构校验 === +[2025-06-30 20:58:50] ✅ 所有必需列都存在 +[2025-06-30 20:58:50] +数据完整性检查: +[2025-06-30 20:58:50] ✅ 姓名 列数据完整 +[2025-06-30 20:58:50] ✅ 证件类型 列数据完整 +[2025-06-30 20:58:50] ✅ 证件号 列数据完整 +[2025-06-30 20:58:50] ✅ 手机号 列数据完整 +[2025-06-30 20:58:50] ✅ 姓名无重复 +[2025-06-30 20:58:50] +=== 连坐组校验 === +[2025-06-30 20:58:50] ✅ 第 1 组: 安春利, 杨茗珺 (2人连坐) +[2025-06-30 20:58:50] ✅ 第 2 组: 侯俊帆, 杨璇羽 (2人连坐) +[2025-06-30 20:58:50] ✅ 第 3 组: 刘金龙, 杨宇航 (2人连坐) +[2025-06-30 20:58:50] ✅ 第 4 组: 张城, 张倩 (2人连坐) +[2025-06-30 20:58:50] ✅ 第 5 组: 陈新闻, 刘佳欢 (2人连坐) +[2025-06-30 20:58:50] ✅ 第 6 组: 王鹏舒 (1人连坐) +[2025-06-30 20:58:50] ✅ 第 7 组: 孙昊, 晋秋跃 (2人连坐) +[2025-06-30 20:58:50] ✅ 第 8 组: 刘晓雨, 李宇峥, 李霞 (3人连坐) +[2025-06-30 20:58:50] ✅ 第 9 组: 常洁, 陈媛, 王晨婧, 胡艳彬 (4人连坐) +[2025-06-30 20:58:50] ✅ 第 10 组: 高尚谦, 胡梦幻 (2人连坐) +[2025-06-30 20:58:50] ✅ 第 11 组: 郝罡, 林杰 (2人连坐) +[2025-06-30 20:58:50] ✅ 第 12 组: 王璐瑶, 刘昌昊 (2人连坐) +[2025-06-30 20:58:50] ✅ 第 13 组: 吴旭 (1人连坐) +[2025-06-30 20:58:50] ✅ 第 14 组: 刘捷 (1人连坐) +[2025-06-30 20:58:50] ✅ 第 15 组: 尹泽, 尹依伊, 夏明慧, 贾娜 (4人连坐) +[2025-06-30 20:58:50] ✅ 第 16 组: 张艺馨 (单独) +[2025-06-30 20:58:50] ✅ 第 17 组: 陈宇, 房晨 (2人连坐) +[2025-06-30 20:58:50] ✅ 第 18 组: 赵瑞, 郭闯远 (2人连坐) +[2025-06-30 20:58:50] ✅ 第 19 组: 张然殊 (1人连坐) +[2025-06-30 20:58:50] ✅ 第 20 组: 王莲 (1人连坐) +[2025-06-30 20:58:50] ✅ 第 21 组: 王建华, 赵雅楠, 王格 (3人连坐) +[2025-06-30 20:58:50] ✅ 第 22 组: 尚校, 尚冕 (2人连坐) +[2025-06-30 20:58:50] ✅ 第 23 组: 徐金瑞, 赵春颖 (2人连坐) +[2025-06-30 20:58:50] ✅ 第 24 组: 赵占博, 孙羽佳, 季海洋, 刘柳 (4人连坐) +[2025-06-30 20:58:50] ✅ 第 25 组: 解子辰 (1人连坐) +[2025-06-30 20:58:50] ✅ 第 26 组: 杨文, 马新雨 (2人连坐) +[2025-06-30 20:58:50] ✅ 第 27 组: 白建新, 李海生, 李苓 (3人连坐) +[2025-06-30 20:58:50] ✅ 第 28 组: 周勇, 常佳琦 (2人连坐) +[2025-06-30 20:58:50] ✅ 第 29 组: 马志鑫, 肖金玲, 马学利 (3人连坐) +[2025-06-30 20:58:50] ✅ 第 30 组: 张瑞 (1人连坐) +[2025-06-30 20:58:50] ✅ 第 31 组: 李慧, 白杨 (2人连坐) +[2025-06-30 20:58:50] ✅ 第 32 组: 赵欣悦, 金子昂 (2人连坐) +[2025-06-30 20:58:50] ✅ 第 33 组: 马梓涵, 宋晓娟 (2人连坐) +[2025-06-30 20:58:50] ✅ 第 34 组: 杨文彦, 彭玉荣, 袁会池, 杨文芳, 张艳芳 (5人连坐) +[2025-06-30 20:58:50] ✅ 第 35 组: 张春红, 蒋梦娇 (2人连坐) +[2025-06-30 20:58:50] ✅ 第 36 组: 肖垚, 韩文娟 (2人连坐) +[2025-06-30 20:58:50] ✅ 第 37 组: 朱仁龙, 肖俊斌, 孙铭泽 (3人连坐) +[2025-06-30 20:58:50] ✅ 第 38 组: 黄鹤, 张刚, 张宸宁 (3人连坐) +[2025-06-30 20:58:50] ✅ 第 39 组: 粘旻环, 李怡台 (2人连坐) +[2025-06-30 20:58:50] ✅ 第 40 组: 文志, 刘薇 (2人连坐) +[2025-06-30 20:58:50] ✅ 第 41 组: 李薏 (单独) +[2025-06-30 20:58:50] ✅ 第 42 组: 于浩, 王雅暄 (2人连坐) +[2025-06-30 20:58:50] ✅ 第 43 组: 高跃, 李敏 (2人连坐) +[2025-06-30 20:58:50] ✅ 第 44 组: 张松 (1人连坐) +[2025-06-30 20:58:50] ✅ 第 45 组: 吴晓辉, 王子宁 (2人连坐) +[2025-06-30 20:58:50] ✅ 第 46 组: 丁勇, 焦雯 (2人连坐) +[2025-06-30 20:58:50] ✅ 第 47 组: 游伊萌 (1人连坐) +[2025-06-30 20:58:50] ✅ 第 48 组: 田悦, 叶贵天 (2人连坐) +[2025-06-30 20:58:50] +=== 座位信息结构校验 === +[2025-06-30 20:58:50] ✅ 所有必需列都存在 +[2025-06-30 20:58:50] ✅ 区域 列数据完整 +[2025-06-30 20:58:50] ✅ 楼层 列数据完整 +[2025-06-30 20:58:50] ✅ 排号 列数据完整 +[2025-06-30 20:58:50] ✅ 座位号 列数据完整 +[2025-06-30 20:58:50] +座位结构分析: +[2025-06-30 20:58:50] +座位结构分析: +[2025-06-30 20:58:50] ✅ L区7895通道-五层-8排: 4 个座位完全连续 (1-4) +[2025-06-30 20:58:50] ✅ L区7895通道-五层-9排: 10 个座位完全连续 (1-10) +[2025-06-30 20:58:50] ✅ L区7895通道-五层-10排: 5 个座位完全连续 (1-5) +[2025-06-30 20:58:50] ✅ A区136通道-五层-10排: 5 个座位完全连续 (6-10) +[2025-06-30 20:58:50] 📊 A区136通道-五层-11排: 11 个座位,2 个连续段: 1-2, 5-13 +[2025-06-30 20:58:50] 最大连续段: 9 个座位 +[2025-06-30 20:58:50] ✅ A区136通道-五层-12排: 1 个座位完全连续 (1-1) +[2025-06-30 20:58:50] ✅ A区136通道-三层-12排: 10 个座位完全连续 (2-11) +[2025-06-30 20:58:50] ✅ L区552通道-三层-12排: 2 个座位完全连续 (12-13) +[2025-06-30 20:58:50] ✅ L区552通道-三层-13排: 13 个座位完全连续 (1-13) +[2025-06-30 20:58:50] ✅ L区552通道-三层-14排: 9 个座位完全连续 (1-9) +[2025-06-30 20:58:50] ✅ L区552通道-五层-14排: 4 个座位完全连续 (10-13) +[2025-06-30 20:58:50] 📊 L区552通道-五层-15排: 11 个座位,2 个连续段: 1-7, 10-13 +[2025-06-30 20:58:50] 最大连续段: 7 个座位 +[2025-06-30 20:58:50] ✅ L区552通道-五层-16排: 13 个座位完全连续 (1-13) +[2025-06-30 20:58:50] ✅ L区552通道-五层-17排: 2 个座位完全连续 (1-2) +[2025-06-30 20:58:50] +=== 容量和可行性校验 === +[2025-06-30 20:58:50] 总人数: 100 +[2025-06-30 20:58:50] 总座位数: 100 +[2025-06-30 20:58:50] ✅ 座位充足: 剩余 0 个座位 +[2025-06-30 20:58:50] +连坐组需求分析: +[2025-06-30 20:58:50] 最大连坐组: 5 人 +[2025-06-30 20:58:50] +连续座位可行性分析: +[2025-06-30 20:58:50] L区7895通道-五层-8排: 最大连续 4 个座位 +[2025-06-30 20:58:50] L区7895通道-五层-9排: 最大连续 10 个座位 +[2025-06-30 20:58:50] L区7895通道-五层-10排: 最大连续 5 个座位 +[2025-06-30 20:58:50] A区136通道-五层-10排: 最大连续 5 个座位 +[2025-06-30 20:58:50] A区136通道-五层-11排: 最大连续 9 个座位 +[2025-06-30 20:58:50] A区136通道-五层-12排: 最大连续 1 个座位 +[2025-06-30 20:58:50] A区136通道-三层-12排: 最大连续 10 个座位 +[2025-06-30 20:58:50] L区552通道-三层-12排: 最大连续 2 个座位 +[2025-06-30 20:58:50] L区552通道-三层-13排: 最大连续 13 个座位 +[2025-06-30 20:58:50] L区552通道-三层-14排: 最大连续 9 个座位 +[2025-06-30 20:58:50] L区552通道-五层-14排: 最大连续 4 个座位 +[2025-06-30 20:58:50] L区552通道-五层-15排: 最大连续 7 个座位 +[2025-06-30 20:58:50] L区552通道-五层-16排: 最大连续 13 个座位 +[2025-06-30 20:58:50] L区552通道-五层-17排: 最大连续 2 个座位 +[2025-06-30 20:58:50] +全场最大连续座位: 13 个 +[2025-06-30 20:58:50] ✅ 可以容纳最大连坐组 +[2025-06-30 20:58:50] 可容纳最大连坐组的排数: 9 个 +[2025-06-30 20:58:50] +连坐组分布: +[2025-06-30 20:58:50] 单人组: 11 个 +[2025-06-30 20:58:50] 2人连坐组: 27 个 +[2025-06-30 20:58:50] 3人连坐组: 6 个 +[2025-06-30 20:58:50] 4人连坐组: 3 个 +[2025-06-30 20:58:50] 5人连坐组: 1 个 +[2025-06-30 20:58:50] +============================================================ +[2025-06-30 20:58:50] 校验结果总结 +[2025-06-30 20:58:50] ============================================================ +[2025-06-30 20:58:50] 人员信息结构: ✅ 通过 +[2025-06-30 20:58:50] 连坐组完整性: ✅ 通过 +[2025-06-30 20:58:50] 座位信息结构: ✅ 通过 +[2025-06-30 20:58:50] 容量可行性: ✅ 通过 +[2025-06-30 20:58:50] +总体校验结果: ✅ 全部通过 +[2025-06-30 20:58:50] +🎉 文件校验通过,可以进行座位分配! +[2025-06-30 20:58:53] +============================================================ +[2025-06-30 20:58:53] 开始座位分配 +[2025-06-30 20:58:53] ============================================================ +[2025-06-30 20:58:53] +=== 人员连坐需求分析 === +[2025-06-30 20:58:53] 总共识别出 48 个座位组: +[2025-06-30 20:58:53] 单人组: 11 个 +[2025-06-30 20:58:53] 2人连坐组: 27 个 +[2025-06-30 20:58:53] 3人连坐组: 6 个 +[2025-06-30 20:58:53] 4人连坐组: 3 个 +[2025-06-30 20:58:53] 5人连坐组: 1 个 +[2025-06-30 20:58:53] +=== 高级座位结构分析 === +[2025-06-30 20:58:53] ✅ L区7895通道-五层-8排: 4 个座位完全连续 +[2025-06-30 20:58:53] ✅ L区7895通道-五层-9排: 10 个座位完全连续 +[2025-06-30 20:58:53] ✅ L区7895通道-五层-10排: 5 个座位完全连续 +[2025-06-30 20:58:53] ✅ A区136通道-五层-10排: 5 个座位完全连续 +[2025-06-30 20:58:53] 📊 A区136通道-五层-11排: 11 个座位,2 段: 1-2, 5-13 +[2025-06-30 20:58:53] 最大连续段: 9 个座位 +[2025-06-30 20:58:53] ✅ A区136通道-五层-12排: 1 个座位完全连续 +[2025-06-30 20:58:53] ✅ A区136通道-三层-12排: 10 个座位完全连续 +[2025-06-30 20:58:53] ✅ L区552通道-三层-12排: 2 个座位完全连续 +[2025-06-30 20:58:53] ✅ L区552通道-三层-13排: 13 个座位完全连续 +[2025-06-30 20:58:53] ✅ L区552通道-三层-14排: 9 个座位完全连续 +[2025-06-30 20:58:53] ✅ L区552通道-五层-14排: 4 个座位完全连续 +[2025-06-30 20:58:53] 📊 L区552通道-五层-15排: 11 个座位,2 段: 1-7, 10-13 +[2025-06-30 20:58:53] 最大连续段: 7 个座位 +[2025-06-30 20:58:53] ✅ L区552通道-五层-16排: 13 个座位完全连续 +[2025-06-30 20:58:53] ✅ L区552通道-五层-17排: 2 个座位完全连续 +[2025-06-30 20:58:53] +=== 开始智能座位分配 === +[2025-06-30 20:58:53] 需要分配 48 个组 +[2025-06-30 20:58:53] +处理第 1 组: 杨文彦 (group, 5 人) +[2025-06-30 20:58:53] 分配到 L区7895通道-五层-9排 (连续座位: 1-5) +[2025-06-30 20:58:53] 杨文彦 -> 1号 +[2025-06-30 20:58:53] 彭玉荣 -> 2号 +[2025-06-30 20:58:53] 袁会池 -> 3号 +[2025-06-30 20:58:53] 杨文芳 -> 4号 +[2025-06-30 20:58:53] 张艳芳 -> 5号 +[2025-06-30 20:58:53] +处理第 2 组: 常洁 (group, 4 人) +[2025-06-30 20:58:53] 分配到 L区7895通道-五层-8排 (连续座位: 1-4) +[2025-06-30 20:58:53] 常洁 -> 1号 +[2025-06-30 20:58:53] 陈媛 -> 2号 +[2025-06-30 20:58:53] 王晨婧 -> 3号 +[2025-06-30 20:58:53] 胡艳彬 -> 4号 +[2025-06-30 20:58:53] +处理第 3 组: 尹泽 (group, 4 人) +[2025-06-30 20:58:53] 分配到 L区7895通道-五层-9排 (连续座位: 6-9) +[2025-06-30 20:58:53] 尹泽 -> 6号 +[2025-06-30 20:58:53] 尹依伊 -> 7号 +[2025-06-30 20:58:53] 夏明慧 -> 8号 +[2025-06-30 20:58:53] 贾娜 -> 9号 +[2025-06-30 20:58:53] +处理第 4 组: 赵占博 (group, 4 人) +[2025-06-30 20:58:53] 分配到 L区7895通道-五层-10排 (连续座位: 1-4) +[2025-06-30 20:58:53] 赵占博 -> 1号 +[2025-06-30 20:58:53] 孙羽佳 -> 2号 +[2025-06-30 20:58:53] 季海洋 -> 3号 +[2025-06-30 20:58:53] 刘柳 -> 4号 +[2025-06-30 20:58:53] +处理第 5 组: 刘晓雨 (group, 3 人) +[2025-06-30 20:58:53] 分配到 A区136通道-五层-10排 (连续座位: 6-8) +[2025-06-30 20:58:53] 刘晓雨 -> 6号 +[2025-06-30 20:58:53] 李宇峥 -> 7号 +[2025-06-30 20:58:53] 李霞 -> 8号 +[2025-06-30 20:58:53] +处理第 6 组: 王建华 (group, 3 人) +[2025-06-30 20:58:53] 分配到 A区136通道-五层-11排 (连续座位: 5-7) +[2025-06-30 20:58:53] 王建华 -> 5号 +[2025-06-30 20:58:53] 赵雅楠 -> 6号 +[2025-06-30 20:58:53] 王格 -> 7号 +[2025-06-30 20:58:53] +处理第 7 组: 白建新 (group, 3 人) +[2025-06-30 20:58:53] 分配到 A区136通道-五层-11排 (连续座位: 8-10) +[2025-06-30 20:58:53] 白建新 -> 8号 +[2025-06-30 20:58:53] 李海生 -> 9号 +[2025-06-30 20:58:53] 李苓 -> 10号 +[2025-06-30 20:58:53] +处理第 8 组: 马志鑫 (group, 3 人) +[2025-06-30 20:58:53] 分配到 A区136通道-五层-11排 (连续座位: 11-13) +[2025-06-30 20:58:53] 马志鑫 -> 11号 +[2025-06-30 20:58:53] 肖金玲 -> 12号 +[2025-06-30 20:58:53] 马学利 -> 13号 +[2025-06-30 20:58:53] +处理第 9 组: 朱仁龙 (group, 3 人) +[2025-06-30 20:58:53] 分配到 A区136通道-三层-12排 (连续座位: 2-4) +[2025-06-30 20:58:53] 朱仁龙 -> 2号 +[2025-06-30 20:58:53] 肖俊斌 -> 3号 +[2025-06-30 20:58:53] 孙铭泽 -> 4号 +[2025-06-30 20:58:53] +处理第 10 组: 黄鹤 (group, 3 人) +[2025-06-30 20:58:53] 分配到 A区136通道-三层-12排 (连续座位: 5-7) +[2025-06-30 20:58:53] 黄鹤 -> 5号 +[2025-06-30 20:58:53] 张刚 -> 6号 +[2025-06-30 20:58:53] 张宸宁 -> 7号 +[2025-06-30 20:58:53] +处理第 11 组: 安春利 (group, 2 人) +[2025-06-30 20:58:53] 分配到 A区136通道-五层-10排 (连续座位: 9-10) +[2025-06-30 20:58:53] 安春利 -> 9号 +[2025-06-30 20:58:53] 杨茗珺 -> 10号 +[2025-06-30 20:58:53] +处理第 12 组: 侯俊帆 (group, 2 人) +[2025-06-30 20:58:53] 分配到 A区136通道-五层-11排 (连续座位: 1-2) +[2025-06-30 20:58:53] 侯俊帆 -> 1号 +[2025-06-30 20:58:53] 杨璇羽 -> 2号 +[2025-06-30 20:58:53] +处理第 13 组: 刘金龙 (group, 2 人) +[2025-06-30 20:58:53] 分配到 A区136通道-三层-12排 (连续座位: 8-9) +[2025-06-30 20:58:53] 刘金龙 -> 8号 +[2025-06-30 20:58:53] 杨宇航 -> 9号 +[2025-06-30 20:58:53] +处理第 14 组: 张城 (group, 2 人) +[2025-06-30 20:58:53] 分配到 A区136通道-三层-12排 (连续座位: 10-11) +[2025-06-30 20:58:53] 张城 -> 10号 +[2025-06-30 20:58:53] 张倩 -> 11号 +[2025-06-30 20:58:53] +处理第 15 组: 陈新闻 (group, 2 人) +[2025-06-30 20:58:53] 分配到 L区552通道-三层-12排 (连续座位: 12-13) +[2025-06-30 20:58:53] 陈新闻 -> 12号 +[2025-06-30 20:58:53] 刘佳欢 -> 13号 +[2025-06-30 20:58:53] +处理第 16 组: 孙昊 (group, 2 人) +[2025-06-30 20:58:53] 分配到 L区552通道-三层-13排 (连续座位: 1-2) +[2025-06-30 20:58:53] 孙昊 -> 1号 +[2025-06-30 20:58:53] 晋秋跃 -> 2号 +[2025-06-30 20:58:53] +处理第 17 组: 高尚谦 (group, 2 人) +[2025-06-30 20:58:53] 分配到 L区552通道-三层-13排 (连续座位: 3-4) +[2025-06-30 20:58:53] 高尚谦 -> 3号 +[2025-06-30 20:58:53] 胡梦幻 -> 4号 +[2025-06-30 20:58:53] +处理第 18 组: 郝罡 (group, 2 人) +[2025-06-30 20:58:53] 分配到 L区552通道-三层-13排 (连续座位: 5-6) +[2025-06-30 20:58:53] 郝罡 -> 5号 +[2025-06-30 20:58:53] 林杰 -> 6号 +[2025-06-30 20:58:53] +处理第 19 组: 王璐瑶 (group, 2 人) +[2025-06-30 20:58:53] 分配到 L区552通道-三层-13排 (连续座位: 7-8) +[2025-06-30 20:58:53] 王璐瑶 -> 7号 +[2025-06-30 20:58:53] 刘昌昊 -> 8号 +[2025-06-30 20:58:53] +处理第 20 组: 陈宇 (group, 2 人) +[2025-06-30 20:58:53] 分配到 L区552通道-三层-13排 (连续座位: 9-10) +[2025-06-30 20:58:53] 陈宇 -> 9号 +[2025-06-30 20:58:53] 房晨 -> 10号 +[2025-06-30 20:58:53] +处理第 21 组: 赵瑞 (group, 2 人) +[2025-06-30 20:58:53] 分配到 L区552通道-三层-13排 (连续座位: 11-12) +[2025-06-30 20:58:53] 赵瑞 -> 11号 +[2025-06-30 20:58:53] 郭闯远 -> 12号 +[2025-06-30 20:58:53] +处理第 22 组: 尚校 (group, 2 人) +[2025-06-30 20:58:53] 分配到 L区552通道-三层-14排 (连续座位: 1-2) +[2025-06-30 20:58:53] 尚校 -> 1号 +[2025-06-30 20:58:53] 尚冕 -> 2号 +[2025-06-30 20:58:53] +处理第 23 组: 徐金瑞 (group, 2 人) +[2025-06-30 20:58:53] 分配到 L区552通道-三层-14排 (连续座位: 3-4) +[2025-06-30 20:58:53] 徐金瑞 -> 3号 +[2025-06-30 20:58:53] 赵春颖 -> 4号 +[2025-06-30 20:58:53] +处理第 24 组: 杨文 (group, 2 人) +[2025-06-30 20:58:53] 分配到 L区552通道-三层-14排 (连续座位: 5-6) +[2025-06-30 20:58:53] 杨文 -> 5号 +[2025-06-30 20:58:53] 马新雨 -> 6号 +[2025-06-30 20:58:53] +处理第 25 组: 周勇 (group, 2 人) +[2025-06-30 20:58:53] 分配到 L区552通道-三层-14排 (连续座位: 7-8) +[2025-06-30 20:58:53] 周勇 -> 7号 +[2025-06-30 20:58:53] 常佳琦 -> 8号 +[2025-06-30 20:58:53] +处理第 26 组: 李慧 (group, 2 人) +[2025-06-30 20:58:53] 分配到 L区552通道-五层-14排 (连续座位: 10-11) +[2025-06-30 20:58:53] 李慧 -> 10号 +[2025-06-30 20:58:53] 白杨 -> 11号 +[2025-06-30 20:58:53] +处理第 27 组: 赵欣悦 (group, 2 人) +[2025-06-30 20:58:53] 分配到 L区552通道-五层-14排 (连续座位: 12-13) +[2025-06-30 20:58:53] 赵欣悦 -> 12号 +[2025-06-30 20:58:53] 金子昂 -> 13号 +[2025-06-30 20:58:53] +处理第 28 组: 马梓涵 (group, 2 人) +[2025-06-30 20:58:53] 分配到 L区552通道-五层-15排 (连续座位: 1-2) +[2025-06-30 20:58:53] 马梓涵 -> 1号 +[2025-06-30 20:58:53] 宋晓娟 -> 2号 +[2025-06-30 20:58:53] +处理第 29 组: 张春红 (group, 2 人) +[2025-06-30 20:58:53] 分配到 L区552通道-五层-15排 (连续座位: 3-4) +[2025-06-30 20:58:53] 张春红 -> 3号 +[2025-06-30 20:58:53] 蒋梦娇 -> 4号 +[2025-06-30 20:58:53] +处理第 30 组: 肖垚 (group, 2 人) +[2025-06-30 20:58:53] 分配到 L区552通道-五层-15排 (连续座位: 5-6) +[2025-06-30 20:58:53] 肖垚 -> 5号 +[2025-06-30 20:58:53] 韩文娟 -> 6号 +[2025-06-30 20:58:53] +处理第 31 组: 粘旻环 (group, 2 人) +[2025-06-30 20:58:53] 分配到 L区552通道-五层-15排 (连续座位: 10-11) +[2025-06-30 20:58:53] 粘旻环 -> 10号 +[2025-06-30 20:58:53] 李怡台 -> 11号 +[2025-06-30 20:58:53] +处理第 32 组: 文志 (group, 2 人) +[2025-06-30 20:58:53] 分配到 L区552通道-五层-15排 (连续座位: 12-13) +[2025-06-30 20:58:53] 文志 -> 12号 +[2025-06-30 20:58:53] 刘薇 -> 13号 +[2025-06-30 20:58:53] +处理第 33 组: 于浩 (group, 2 人) +[2025-06-30 20:58:53] 分配到 L区552通道-五层-16排 (连续座位: 1-2) +[2025-06-30 20:58:53] 于浩 -> 1号 +[2025-06-30 20:58:53] 王雅暄 -> 2号 +[2025-06-30 20:58:53] +处理第 34 组: 高跃 (group, 2 人) +[2025-06-30 20:58:53] 分配到 L区552通道-五层-16排 (连续座位: 3-4) +[2025-06-30 20:58:53] 高跃 -> 3号 +[2025-06-30 20:58:53] 李敏 -> 4号 +[2025-06-30 20:58:53] +处理第 35 组: 吴晓辉 (group, 2 人) +[2025-06-30 20:58:53] 分配到 L区552通道-五层-16排 (连续座位: 5-6) +[2025-06-30 20:58:53] 吴晓辉 -> 5号 +[2025-06-30 20:58:53] 王子宁 -> 6号 +[2025-06-30 20:58:53] +处理第 36 组: 丁勇 (group, 2 人) +[2025-06-30 20:58:53] 分配到 L区552通道-五层-16排 (连续座位: 7-8) +[2025-06-30 20:58:53] 丁勇 -> 7号 +[2025-06-30 20:58:53] 焦雯 -> 8号 +[2025-06-30 20:58:53] +处理第 37 组: 田悦 (group, 2 人) +[2025-06-30 20:58:53] 分配到 L区552通道-五层-16排 (连续座位: 9-10) +[2025-06-30 20:58:53] 田悦 -> 9号 +[2025-06-30 20:58:53] 叶贵天 -> 10号 +[2025-06-30 20:58:53] +处理第 38 组: 王鹏舒 (single, 1 人) +[2025-06-30 20:58:53] 分配到 L区7895通道-五层-9排: 王鹏舒 -> 10号 +[2025-06-30 20:58:53] +处理第 39 组: 吴旭 (single, 1 人) +[2025-06-30 20:58:53] 分配到 L区7895通道-五层-10排: 吴旭 -> 5号 +[2025-06-30 20:58:53] +处理第 40 组: 刘捷 (single, 1 人) +[2025-06-30 20:58:53] 分配到 A区136通道-五层-12排: 刘捷 -> 1号 +[2025-06-30 20:58:53] +处理第 41 组: 张艺馨 (single, 1 人) +[2025-06-30 20:58:53] 分配到 L区552通道-三层-13排: 张艺馨 -> 13号 +[2025-06-30 20:58:53] +处理第 42 组: 张然殊 (single, 1 人) +[2025-06-30 20:58:53] 分配到 L区552通道-三层-14排: 张然殊 -> 9号 +[2025-06-30 20:58:53] +处理第 43 组: 王莲 (single, 1 人) +[2025-06-30 20:58:53] 分配到 L区552通道-五层-15排: 王莲 -> 7号 +[2025-06-30 20:58:53] +处理第 44 组: 解子辰 (single, 1 人) +[2025-06-30 20:58:53] 分配到 L区552通道-五层-16排: 解子辰 -> 11号 +[2025-06-30 20:58:53] +处理第 45 组: 张瑞 (single, 1 人) +[2025-06-30 20:58:53] 分配到 L区552通道-五层-16排: 张瑞 -> 12号 +[2025-06-30 20:58:53] +处理第 46 组: 李薏 (single, 1 人) +[2025-06-30 20:58:53] 分配到 L区552通道-五层-16排: 李薏 -> 13号 +[2025-06-30 20:58:53] +处理第 47 组: 张松 (single, 1 人) +[2025-06-30 20:58:53] 分配到 L区552通道-五层-17排: 张松 -> 1号 +[2025-06-30 20:58:53] +处理第 48 组: 游伊萌 (single, 1 人) +[2025-06-30 20:58:53] 分配到 L区552通道-五层-17排: 游伊萌 -> 2号 +[2025-06-30 20:58:53] +座位分配结果已保存到: 座位信息_最终分配.xlsx +[2025-06-30 20:58:53] 分配日志已保存到: 最终座位分配日志.xlsx +[2025-06-30 20:58:53] +=== 分配统计 === +[2025-06-30 20:58:53] 总共分配了 100 个座位 +[2025-06-30 20:58:53] +按组大小统计: +[2025-06-30 20:58:53] 单人组: 11 个组, 11 人 +[2025-06-30 20:58:53] 2人连坐组: 27 个组, 54 人 +[2025-06-30 20:58:53] 3人连坐组: 6 个组, 18 人 +[2025-06-30 20:58:53] 4人连坐组: 3 个组, 12 人 +[2025-06-30 20:58:53] 5人连坐组: 1 个组, 5 人 +[2025-06-30 20:58:53] +=== 连续性验证 === +[2025-06-30 20:58:53] ✅ 组 1 (杨文彦): 5人连坐,座位连续 [1, 2, 3, 4, 5] +[2025-06-30 20:58:53] ✅ 组 2 (常洁): 4人连坐,座位连续 [1, 2, 3, 4] +[2025-06-30 20:58:53] ✅ 组 3 (尹泽): 4人连坐,座位连续 [6, 7, 8, 9] +[2025-06-30 20:58:53] ✅ 组 4 (赵占博): 4人连坐,座位连续 [1, 2, 3, 4] +[2025-06-30 20:58:53] ✅ 组 5 (刘晓雨): 3人连坐,座位连续 [6, 7, 8] +[2025-06-30 20:58:53] ✅ 组 6 (王建华): 3人连坐,座位连续 [5, 6, 7] +[2025-06-30 20:58:53] ✅ 组 7 (白建新): 3人连坐,座位连续 [8, 9, 10] +[2025-06-30 20:58:53] ✅ 组 8 (马志鑫): 3人连坐,座位连续 [11, 12, 13] +[2025-06-30 20:58:53] ✅ 组 9 (朱仁龙): 3人连坐,座位连续 [2, 3, 4] +[2025-06-30 20:58:53] ✅ 组 10 (黄鹤): 3人连坐,座位连续 [5, 6, 7] +[2025-06-30 20:58:53] ✅ 组 11 (安春利): 2人连坐,座位连续 [9, 10] +[2025-06-30 20:58:53] ✅ 组 12 (侯俊帆): 2人连坐,座位连续 [1, 2] +[2025-06-30 20:58:53] ✅ 组 13 (刘金龙): 2人连坐,座位连续 [8, 9] +[2025-06-30 20:58:53] ✅ 组 14 (张城): 2人连坐,座位连续 [10, 11] +[2025-06-30 20:58:53] ✅ 组 15 (陈新闻): 2人连坐,座位连续 [12, 13] +[2025-06-30 20:58:53] ✅ 组 16 (孙昊): 2人连坐,座位连续 [1, 2] +[2025-06-30 20:58:53] ✅ 组 17 (高尚谦): 2人连坐,座位连续 [3, 4] +[2025-06-30 20:58:53] ✅ 组 18 (郝罡): 2人连坐,座位连续 [5, 6] +[2025-06-30 20:58:53] ✅ 组 19 (王璐瑶): 2人连坐,座位连续 [7, 8] +[2025-06-30 20:58:53] ✅ 组 20 (陈宇): 2人连坐,座位连续 [9, 10] +[2025-06-30 20:58:53] ✅ 组 21 (赵瑞): 2人连坐,座位连续 [11, 12] +[2025-06-30 20:58:53] ✅ 组 22 (尚校): 2人连坐,座位连续 [1, 2] +[2025-06-30 20:58:53] ✅ 组 23 (徐金瑞): 2人连坐,座位连续 [3, 4] +[2025-06-30 20:58:53] ✅ 组 24 (杨文): 2人连坐,座位连续 [5, 6] +[2025-06-30 20:58:53] ✅ 组 25 (周勇): 2人连坐,座位连续 [7, 8] +[2025-06-30 20:58:53] ✅ 组 26 (李慧): 2人连坐,座位连续 [10, 11] +[2025-06-30 20:58:53] ✅ 组 27 (赵欣悦): 2人连坐,座位连续 [12, 13] +[2025-06-30 20:58:53] ✅ 组 28 (马梓涵): 2人连坐,座位连续 [1, 2] +[2025-06-30 20:58:53] ✅ 组 29 (张春红): 2人连坐,座位连续 [3, 4] +[2025-06-30 20:58:53] ✅ 组 30 (肖垚): 2人连坐,座位连续 [5, 6] +[2025-06-30 20:58:53] ✅ 组 31 (粘旻环): 2人连坐,座位连续 [10, 11] +[2025-06-30 20:58:53] ✅ 组 32 (文志): 2人连坐,座位连续 [12, 13] +[2025-06-30 20:58:53] ✅ 组 33 (于浩): 2人连坐,座位连续 [1, 2] +[2025-06-30 20:58:53] ✅ 组 34 (高跃): 2人连坐,座位连续 [3, 4] +[2025-06-30 20:58:53] ✅ 组 35 (吴晓辉): 2人连坐,座位连续 [5, 6] +[2025-06-30 20:58:53] ✅ 组 36 (丁勇): 2人连坐,座位连续 [7, 8] +[2025-06-30 20:58:53] ✅ 组 37 (田悦): 2人连坐,座位连续 [9, 10] +[2025-06-30 20:58:53] +连续性检查结果: 37/37 个多人组座位连续 (100.0%) +[2025-06-30 20:58:53] +🎉 座位分配完成! \ No newline at end of file diff --git a/人员信息.xlsx b/人员信息.xlsx index 366820a3bd5b2af0b472eb972bb9e9951e0f9701..3c32e218fdad10aa0dd755bd26f71cde6fbcfcad 100644 GIT binary patch delta 7492 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 delta 7326 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 literal 0 HcmV?d00001