diff --git a/build_windows.bat b/build_windows.bat new file mode 100644 index 0000000..f989d6a --- /dev/null +++ b/build_windows.bat @@ -0,0 +1,138 @@ +@echo off +chcp 65001 >nul +echo ================================ +echo 座位分配系统 Windows 打包脚本 +echo ================================ +echo. + +:: 检查Python是否安装 +python --version >nul 2>&1 +if %errorlevel% neq 0 ( + echo [错误] Python未安装或不在PATH中 + echo 请先安装Python 3.7+ + pause + exit /b 1 +) + +echo [信息] 检查Python版本... +python --version + +:: 检查pip是否可用 +pip --version >nul 2>&1 +if %errorlevel% neq 0 ( + echo [错误] pip不可用 + pause + exit /b 1 +) + +:: 安装PyInstaller +echo. +echo [步骤1] 安装PyInstaller... +pip install pyinstaller + +:: 检查PyInstaller是否安装成功 +pyinstaller --version >nul 2>&1 +if %errorlevel% neq 0 ( + echo [错误] PyInstaller安装失败 + pause + exit /b 1 +) + +:: 创建build目录 +echo. +echo [步骤2] 创建构建目录... +if not exist "build" mkdir build +if not exist "dist" mkdir dist + +:: 安装依赖包 +echo. +echo [步骤3] 安装依赖包... +pip install pandas numpy openpyxl + +:: 打包主程序 +echo. +echo [步骤4] 开始打包座位分配系统... +pyinstaller --onefile ^ + --console ^ + --name "座位分配系统" ^ + --icon=icon.ico ^ + --add-data "README.md;." ^ + --distpath "dist" ^ + --workpath "build" ^ + --specpath "build" ^ + --clean ^ + seat_allocation_system.py + +:: 检查打包是否成功 +if exist "dist\座位分配系统.exe" ( + echo. + echo [成功] 打包完成! + echo 可执行文件位置: dist\座位分配系统.exe + + :: 创建发布目录 + echo. + echo [步骤5] 创建发布包... + if not exist "release" mkdir release + + :: 复制可执行文件 + copy "dist\座位分配系统.exe" "release\" + + :: 创建示例文件夹 + if not exist "release\示例文件" mkdir "release\示例文件" + + :: 复制示例文件(如果存在) + if exist "人员信息_示例.xlsx" copy "人员信息_示例.xlsx" "release\示例文件\" + if exist "座位信息_示例.xlsx" copy "座位信息_示例.xlsx" "release\示例文件\" + + :: 创建使用说明 + echo. + echo [步骤6] 创建使用说明... + ( + echo 座位分配系统 v2.0 + echo ================== + echo. + echo 使用方法: + echo 1. 将人员信息和座位信息的Excel文件放在程序同一目录下 + echo 2. 双击运行"座位分配系统.exe" + echo 3. 按照提示操作 + echo. + echo 文件要求: + echo - 人员信息文件:包含姓名、证件类型、证件号、手机号、备注等列 + echo - 座位信息文件:包含区域、楼层、排号、座位号等列 + echo. + echo 输出文件: + echo - log/座位信息_最终分配.xlsx (分配结果) + echo - log/最终座位分配日志.xlsx (详细日志) + echo - log/seat_allocation_log.txt (运行日志) + echo. + echo 注意事项: + echo - 程序支持智能文件识别 + echo - 支持1-10人连坐需求 + echo - 支持备注分组和手机号分组两种模式 + echo. + echo 如有问题请查看日志文件 + ) > "release\使用说明.txt" + + echo. + echo ================================ + echo 打包完成! + echo ================================ + echo. + echo 发布文件位置: release\ + echo 主程序: release\座位分配系统.exe + echo 使用说明: release\使用说明.txt + echo 示例文件: release\示例文件\ + echo. + echo 您可以将整个release文件夹分发给用户 + +) else ( + echo. + echo [错误] 打包失败! + echo 请检查错误信息并重试 + pause + exit /b 1 +) + +echo. +echo 按任意键继续... +pause >nul \ No newline at end of file diff --git a/build_windows.ps1 b/build_windows.ps1 new file mode 100644 index 0000000..87f11c5 --- /dev/null +++ b/build_windows.ps1 @@ -0,0 +1,226 @@ +# 座位分配系统 Windows 打包脚本 (PowerShell版本) +# 编码:UTF-8 + +Write-Host "================================" -ForegroundColor Cyan +Write-Host " 座位分配系统 Windows 打包脚本" -ForegroundColor Cyan +Write-Host "================================" -ForegroundColor Cyan +Write-Host "" + +# 设置错误处理 +$ErrorActionPreference = "Stop" + +try { + # 检查Python是否安装 + Write-Host "[信息] 检查Python环境..." -ForegroundColor Yellow + $pythonVersion = python --version 2>&1 + if ($LASTEXITCODE -ne 0) { + throw "Python未安装或不在PATH中,请先安装Python 3.7+" + } + Write-Host "Python版本: $pythonVersion" -ForegroundColor Green + + # 检查pip + $pipVersion = pip --version 2>&1 + if ($LASTEXITCODE -ne 0) { + throw "pip不可用" + } + Write-Host "pip版本: $pipVersion" -ForegroundColor Green + + # 升级pip + Write-Host "" + Write-Host "[步骤1] 升级pip..." -ForegroundColor Yellow + python -m pip install --upgrade pip + + # 安装PyInstaller + Write-Host "" + Write-Host "[步骤2] 安装PyInstaller..." -ForegroundColor Yellow + pip install pyinstaller + + # 安装依赖包 + Write-Host "" + Write-Host "[步骤3] 安装依赖包..." -ForegroundColor Yellow + pip install pandas numpy openpyxl + + # 创建必要的目录 + Write-Host "" + Write-Host "[步骤4] 创建构建目录..." -ForegroundColor Yellow + $dirs = @("build", "dist", "release", "release\示例文件") + foreach ($dir in $dirs) { + if (!(Test-Path $dir)) { + New-Item -ItemType Directory -Path $dir -Force | Out-Null + Write-Host "创建目录: $dir" -ForegroundColor Gray + } + } + + # 检查主文件是否存在 + if (!(Test-Path "seat_allocation_system.py")) { + throw "找不到主程序文件 seat_allocation_system.py" + } + + # 打包主程序 + Write-Host "" + Write-Host "[步骤5] 开始打包座位分配系统..." -ForegroundColor Yellow + Write-Host "这可能需要几分钟时间,请耐心等待..." -ForegroundColor Gray + + $pyinstallerArgs = @( + "--onefile", + "--console", + "--name", "座位分配系统", + "--distpath", "dist", + "--workpath", "build", + "--specpath", "build", + "--clean", + "seat_allocation_system.py" + ) + + # 如果存在图标文件,添加图标参数 + if (Test-Path "icon.ico") { + $pyinstallerArgs += "--icon", "icon.ico" + } + + # 如果存在README文件,添加数据文件 + if (Test-Path "README.md") { + $pyinstallerArgs += "--add-data", "README.md;." + } + + & pyinstaller @pyinstallerArgs + + if ($LASTEXITCODE -ne 0) { + throw "PyInstaller打包失败" + } + + # 检查打包结果 + $exePath = "dist\座位分配系统.exe" + if (!(Test-Path $exePath)) { + throw "打包失败:找不到生成的可执行文件" + } + + # 复制文件到发布目录 + Write-Host "" + Write-Host "[步骤6] 创建发布包..." -ForegroundColor Yellow + + # 复制主程序 + Copy-Item $exePath "release\" -Force + Write-Host "复制主程序到发布目录" -ForegroundColor Gray + + # 复制示例文件 + $exampleFiles = @("人员信息_示例.xlsx", "座位信息_示例.xlsx", "*.xlsx") + foreach ($pattern in $exampleFiles) { + $files = Get-ChildItem -Path . -Name $pattern -ErrorAction SilentlyContinue + foreach ($file in $files) { + if ($file -notlike "*_最终分配*" -and $file -notlike "*日志*") { + Copy-Item $file "release\示例文件\" -Force -ErrorAction SilentlyContinue + Write-Host "复制示例文件: $file" -ForegroundColor Gray + } + } + } + + # 创建使用说明 + Write-Host "" + Write-Host "[步骤7] 创建使用说明..." -ForegroundColor Yellow + + $readme = @" +座位分配系统 v2.0 +================== + +使用方法: +1. 将人员信息和座位信息的Excel文件放在程序同一目录下 +2. 双击运行"座位分配系统.exe" +3. 按照提示操作 + +文件要求: +- 人员信息文件:包含姓名、证件类型、证件号、手机号、备注等列 +- 座位信息文件:包含区域、楼层、排号、座位号等列 + +程序特性: +- ✅ 智能文件识别(自动识别Excel文件类型) +- ✅ 支持1-10人连坐需求 +- ✅ 支持备注分组和手机号分组两种模式 +- ✅ 自动验证数据完整性和可行性 +- ✅ 智能座位分配算法 +- ✅ 详细的分配日志和统计 + +输出文件: +程序运行后会在当前目录创建log文件夹,包含: +- log/座位信息_最终分配.xlsx (分配结果) +- log/最终座位分配日志.xlsx (详细日志) +- log/seat_allocation_log.txt (运行日志) + +操作步骤: +1. 选择文件识别模式(默认文件名 或 智能识别) +2. 选择连坐分组方式(备注分组 或 手机号分组) +3. 程序自动校验数据完整性 +4. 执行智能座位分配 +5. 查看输出结果 + +注意事项: +- 确保Excel文件格式正确 +- 人员信息文件的"备注"列用数字表示连坐人数 +- 程序会自动过滤无效数据 +- 如有问题请查看详细日志文件 + +技术支持: +如遇到问题,请查看log文件夹中的日志文件获取详细信息。 + +版本信息: +- 版本:v2.0 (智能识别版) +- 支持:Windows 7/8/10/11 +- 依赖:无需额外安装Python环境 +"@ + + $readme | Out-File -FilePath "release\使用说明.txt" -Encoding UTF8 + + # 创建批处理启动文件(可选) + $batchContent = @" +@echo off +chcp 65001 >nul +echo 启动座位分配系统... +echo. +座位分配系统.exe +echo. +echo 程序已结束 +pause +"@ + $batchContent | Out-File -FilePath "release\启动座位分配系统.bat" -Encoding UTF8 + + # 显示完成信息 + Write-Host "" + Write-Host "================================" -ForegroundColor Green + Write-Host " 打包完成!" -ForegroundColor Green + Write-Host "================================" -ForegroundColor Green + Write-Host "" + Write-Host "发布文件位置:" -ForegroundColor Cyan + Write-Host "📁 release\" -ForegroundColor Yellow + Write-Host " ├── 座位分配系统.exe (主程序)" -ForegroundColor White + Write-Host " ├── 启动座位分配系统.bat (启动脚本)" -ForegroundColor White + Write-Host " ├── 使用说明.txt (使用说明)" -ForegroundColor White + Write-Host " └── 示例文件\ (示例文件夹)" -ForegroundColor White + Write-Host "" + Write-Host "文件大小信息:" -ForegroundColor Cyan + $fileSize = (Get-Item $exePath).Length / 1MB + Write-Host "主程序大小: $([math]::Round($fileSize, 2)) MB" -ForegroundColor Yellow + + Write-Host "" + Write-Host "部署说明:" -ForegroundColor Cyan + Write-Host "1. 将整个 release 文件夹分发给用户" -ForegroundColor White + Write-Host "2. 用户直接运行 座位分配系统.exe 或 启动座位分配系统.bat" -ForegroundColor White + Write-Host "3. 无需安装Python环境" -ForegroundColor White + + Write-Host "" + Write-Host "✅ 打包成功完成!" -ForegroundColor Green + +} catch { + Write-Host "" + Write-Host "❌ 打包过程中出现错误:" -ForegroundColor Red + Write-Host $_.Exception.Message -ForegroundColor Red + Write-Host "" + Write-Host "常见解决方案:" -ForegroundColor Yellow + Write-Host "1. 确保已安装Python 3.7+" -ForegroundColor White + Write-Host "2. 确保网络连接正常(需要下载依赖包)" -ForegroundColor White + Write-Host "3. 确保有足够的磁盘空间" -ForegroundColor White + Write-Host "4. 尝试以管理员权限运行此脚本" -ForegroundColor White + exit 1 +} + +Write-Host "" +Write-Host "按任意键继续..." -ForegroundColor Gray +$null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") \ No newline at end of file diff --git a/快速打包.bat b/快速打包.bat new file mode 100644 index 0000000..3a8accb --- /dev/null +++ b/快速打包.bat @@ -0,0 +1,79 @@ +@echo off +chcp 65001 >nul +title 座位分配系统 - 快速打包 + +echo. +echo ╔══════════════════════════════════════╗ +echo ║ 座位分配系统 快速打包 ║ +echo ╚══════════════════════════════════════╝ +echo. + +:: 检查Python +python --version >nul 2>&1 +if %errorlevel% neq 0 ( + echo ❌ Python未安装,请先安装Python + goto :error +) + +:: 安装打包工具 +echo 📦 安装打包工具... +pip install pyinstaller pandas numpy openpyxl --quiet + +:: 清理旧文件 +echo 🧹 清理旧文件... +if exist "dist" rmdir /s /q "dist" +if exist "build" rmdir /s /q "build" +if exist "release" rmdir /s /q "release" + +:: 开始打包 +echo 🔨 开始打包... +pyinstaller --onefile --console --name "座位分配系统" --clean seat_allocation_system.py + +:: 检查结果 +if not exist "dist\座位分配系统.exe" ( + echo ❌ 打包失败 + goto :error +) + +:: 创建发布目录 +echo 📁 创建发布目录... +mkdir "release" +copy "dist\座位分配系统.exe" "release\" + +:: 创建说明文件 +echo 📝 创建说明文件... +( +echo 座位分配系统 v2.0 +echo ================== +echo. +echo 使用方法: +echo 1. 将Excel数据文件放在本程序同一目录 +echo 2. 双击运行"座位分配系统.exe" +echo 3. 按提示操作即可 +echo. +echo 输出文件将保存在log文件夹中 +echo. +echo 如有问题请查看log文件夹中的日志 +) > "release\使用说明.txt" + +:: 完成 +echo. +echo ✅ 打包完成! +echo. +echo 📍 发布文件位置: release\座位分配系统.exe +echo 📍 使用说明: release\使用说明.txt +echo. +echo 可以将release文件夹分发给用户使用 +goto :end + +:error +echo. +echo ❌ 打包失败,请检查错误信息 +echo. +pause +exit /b 1 + +:end +echo. +echo 按任意键退出... +pause >nul \ No newline at end of file