# 校园活动管理系统 **Repository Path**: dm_team/campus-activity-management-system ## Basic Information - **Project Name**: 校园活动管理系统 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-09 - **Last Updated**: 2026-08-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 校园活动管理系统 本项目是一个可运行的校园活动全流程管理系统,覆盖活动发布、报名审核、签到执行、结项发证、经费报销、用户管理和业务类别管理。系统已经把原来写死在代码里的少量类别扩展为数据库维护的类别字典,目前内置 **22 个类别分组、203 个类别项**,管理员可以在页面上继续新增、编辑、停用或删除类别。 ## 一、技术栈和环境要求 | 项目 | 说明 | | --- | --- | | 前端 | React 18.3.1、Vite 6.2.0、Ant Design 5.24.8、Recharts 2.15.1 | | 后端 | Python、FastAPI 0.115.0、Uvicorn 0.32.0 | | 数据库 | SQLite,本项目不需要安装 MySQL、SQL Server 或 Redis | | 推荐 Python | Python 3.10 及以上,推荐 Python 3.11 | | 推荐 Node.js | Node.js 18.20 及以上,推荐 Node.js 20 LTS | | 前端端口 | `5181` | | 后端端口 | `9019` | | 数据库文件 | `backend\data\campus-activity-management-system.db` | ## 二、目录结构 ```text 09-campus-activity-management-system ├─ backend │ ├─ main.py FastAPI 主服务 │ ├─ category_seed.py 22 个类别分组、203 个默认类别项 │ ├─ category_service.py 类别字典服务 │ ├─ test_category_service.py 类别服务测试 │ └─ data SQLite 数据库运行目录,已在 .gitignore 中排除 ├─ frontend │ └─ src │ ├─ App.jsx 页面入口和菜单 │ └─ views 活动、报名、签到、报销、类别、用户页面 ├─ database │ ├─ init.sql 建表脚本 │ └─ sample_data.sql 演示数据脚本 ├─ docs 项目说明文档 └─ start-project.bat Windows 快速启动脚本 ``` ## 三、首次运行步骤(Windows 新手版) 1. 安装 Python 到 Python 官网下载安装 Python 3.10 或以上版本。安装时勾选 `Add Python to PATH`。安装完成后重新打开命令提示符,执行: ```bat python --version pip --version ``` 2. 安装 Node.js 到 Node.js 官网下载安装 Node.js 20 LTS。安装完成后重新打开命令提示符,执行: ```bat node -v npm -v ``` 3. 进入项目目录 ```bat cd /d D:\Ten-Projects\09-campus-activity-management-system ``` 4. 安装并启动后端 ```bat cd backend python -m pip install -r requirements.txt python -m uvicorn main:app --reload --port 9019 ``` 看到 Uvicorn running on `http://127.0.0.1:9019` 表示后端启动成功。这个窗口不要关闭。 5. 新开一个命令提示符窗口,安装并启动前端 ```bat cd /d D:\Ten-Projects\09-campus-activity-management-system\frontend npm install npm run dev ``` 6. 打开浏览器访问: ```text http://127.0.0.1:5181 ``` 运行到这里后,浏览器会打开登录页。可直接使用下面账号登录: - 管理员: `activity_admin` / `Pass@123` - 活动运营: `activity_user` / `Pass@123` 建议第一次演示或检查时先使用管理员账号,因为管理员可以看到类别管理、用户管理和完整业务功能。 ## 四、登录账号 | 角色 | 账号 | 密码 | 说明 | | --- | --- | --- | --- | | 管理员 | `activity_admin` | `Pass@123` | 可维护类别、用户和全部业务数据 | | 活动运营 | `activity_user` | `Pass@123` | 可使用活动、报名、签到、报销等业务功能 | ## 五、类别管理说明 老师说的“类太少”,在本系统里可以理解为活动类型、状态、方式、费用类型、渠道、岗位、风险等级等业务分类太少,并且原来不能在页面上维护。现在管理员登录后可以进入“类别管理”,维护以下 22 个分组: 活动类型、活动状态、签到方式、报名状态、证明状态、签到结果、费用类型、报销状态、场地类型、组织部门、参与对象、学时类型、宣传渠道、物资类型、预算科目、志愿岗位、风险等级、审批阶段、通知渠道、用户状态、操作类型等。 当前默认类别数量为 **203 项**。新增或停用类别后,活动中心、报名审核、签到执行、经费报销、用户总览等页面会读取最新下拉项。 注意:活动流程中的核心状态,例如“筹备中、报名中、进行中、已结束、待审核、已通过、已签到、待审批、已打款”等会被后端流程判断使用。可以新增展示类别,但不要随意删除这些默认核心状态。 ## 六、数据库说明 系统使用 SQLite。第一次启动后端时会自动创建数据库文件: ```text D:\Ten-Projects\09-campus-activity-management-system\backend\data\campus-activity-management-system.db ``` 如果想恢复初始演示数据,先关闭后端服务,然后删除上面的 `.db` 文件,再重新运行: ```bat cd /d D:\Ten-Projects\09-campus-activity-management-system\backend python -m uvicorn main:app --reload --port 9019 ``` 系统会重新执行 `database\init.sql` 和 `database\sample_data.sql`,并自动写入 22 个类别分组和 203 个类别项。 ## 七、常用命令 后端: ```bat cd /d D:\Ten-Projects\09-campus-activity-management-system\backend python -m pip install -r requirements.txt python -m uvicorn main:app --reload --port 9019 python test_category_service.py python -m py_compile main.py category_service.py category_seed.py ``` 前端: ```bat cd /d D:\Ten-Projects\09-campus-activity-management-system\frontend npm install npm run dev npm run build ``` ## 八、上传到 Gitee 的注意事项 本项目已经通过 `.gitignore` 排除了: - `backend/data` - `backend/.venv` - `backend/__pycache__` - `frontend/node_modules` - `frontend/dist` - `*.db` 上传到 Gitee 时提交源代码、`database`、`docs`、`README.md` 即可,不要提交本机数据库文件和依赖目录。别人下载后按本文“三、首次运行步骤”重新安装依赖即可运行。 ## 九、常见问题 1. 后端启动失败 确认 Python 已安装,并在 `backend` 目录执行 `python -m pip install -r requirements.txt`。 2. 前端页面打不开 确认前端命令窗口里 `npm run dev` 没报错,并访问 `http://127.0.0.1:5181`。 3. 页面提示接口失败 检查后端窗口是否还在运行,并访问 `http://127.0.0.1:9019/api/health`。 4. 类别下拉框没有新增项 新增类别时要保持“是否启用”为启用状态;如果页面已打开,刷新页面或重新登录即可读取最新类别。