ACM俱乐部人员管理系统
- 操作系统: Windows / Linux / macOS
- 编程语言: Python 3.8+, HTML5, CSS3, JavaScript
- 后端框架: Flask 2.3.2
- 前端: 原生HTML/CSS/JavaScript
- 数据库: SQLite3
- 开发工具: VS Code, Git
- ✅ 成员信息管理(增删改查)
- ✅ 队伍管理与组队申请
- ✅ 多级权限控制(普通用户、管理员、教练)
- ✅ 消息与任务发送系统
- ✅ 数据持久化存储
- 系统响应时间 < 1 秒
- 支持100+并发用户
- 数据查询效率高效
ACM_club/
├── backend/ # 后端服务
│ ├── app.py # Flask应用主文件
│ └── acm_club.db # SQLite数据库(运行时生成)
├── frontend/ # 前端应用
│ ├── templates/ # HTML模板
│ │ ├── index.html
│ │ ├── login.html
│ │ ├── members.html
│ │ ├── teams.html
│ │ └── admin.html
│ └── static/ # 静态资源
│ └── style.css
├── requirements.txt # Python依赖
└── README.md # 项目文档
| 功能模块 | 完成度 | 说明 |
|---|---|---|
| 用户认证 | ✅ 100% | 登录/登出功能完整 |
| 成员管理 | ✅ 100% | 支持增删改查 |
| 队伍管理 | ✅ 100% | 队伍创建、解散、队长管理 |
| 组队申请 | ✅ 100% | 申请提交、管理员审核 |
| 消息系统 | ✅ 100% | 消息发送、任务分配 |
| 权限控制 | ✅ 100% | 三级权限(普通用户/管理员/教练) |
| 数据持久化 | ✅ 100% | SQLite数据库存储 |
┌─────────────────────────────────────────────────────────┐
│ ACM俱乐部人员管理系统 │
├─────────────────────────────────────────────────────────┤
│ │
│ 普通用户用例层 │
│ ├── 查看成员信息 │
│ ├── 查看队伍信息 │
│ ├── 申请组队 │
│ ├── 解散队伍(队长) │
│ ├── 发送消息 │
│ └── 查看消息 │
│ │
│ 管理员用例层 │
│ ├── 添加成员 │
│ ├── 删除成员 │
│ ├── 修改成员信息 │
│ ├── 审核组队申请 │
│ ├── 发送任务 │
│ └── 查看消息 │
│ │
│ 教练用例层(最高权限) │
│ ├── 添加/移除管理员 │
│ └── 所有管理员权限 │
│ │
└─────────────────────────────────────────────────────────┘
| 参与者 | 描述 | 主要职责 |
|---|---|---|
| 普通用户 | 俱乐部成员 | 查看信息、申请组队、收发消息 |
| 管理员 | 会长、副会长 | 管理成员、审核申请、发送任务 |
| 教练 | 俱乐部教练 | 管理管理员、所有管理权限 |
- 参与者: 所有用户
- 前置条件: 用户已注册
- 基本流程:
- 用户输入用户名和密码
- 系统验证凭证
- 验证通过,进入系统
- 验证失败,显示错误提示
- 后置条件: 用户进入系统主页
- 参与者: 普通用户
- 前置条件: 用户已登录
- 基本流程:
- 用户点击"成员展示"
- 系统按队伍分组显示成员
- 标注队长和未组队成员
- 后置条件: 显示完整的成员信息列表
- 参与者: 普通用户
- 前置条件: 用户未组队,已登录
- 基本流程:
- 用户选择最多2名队友
- 提交申请
- 管理员收到申请
- 管理员同意申请,队伍自动创建
- 队伍成员自动更新
- 后置条件: 用户加入新队伍或申请待审核
- 参与者: 普通用户、管理员
- 前置条件: 用户已登录
- 基本流程:
- 用户选择收件人
- 输入消息内容
- 点击发送
- 消息进入收件人的收件箱
- 后置条件: 消息被保存并对方可以查看
┌──────────────────────────┐
│ User │
├──────────────────────────┤
│ - id: int │
│ - name: string │
│ - student_id: string │
│ - phone: string │
│ - qq: string │
│ - email: string │
│ - entrance_year: int │
│ - position: string │
│ - password: string │
│ - is_admin: int │
│ - team_id: int │
├──────────────────────────┤
│ + login() │
│ + logout() │
│ + getInfo() │
│ + updateInfo() │
└──────────────────────────┘
│
│ has many
▼
┌──────────────────────────┐
│ Team │
├──────────────────────────┤
│ - id: int │
│ - name: string │
│ - team_leader_id: int │
│ - member_count: int │
├──────────────────────────┤
│ + dissolveTeam() │
│ + getMembers() │
└──────────────────────────┘
│
│ has
▼
┌──────────────────────────┐
│ TeamApplication │
├──────────────────────────┤
│ - id: int │
│ - applicant_id: int │
│ - teammate_ids: string │
│ - status: string │
│ - applied_at: timestamp │
├──────────────────────────┤
│ + createApplication() │
│ + approveApplication() │
│ + rejectApplication() │
└──────────────────────────┘
┌──────────────────────────┐
│ Message │
├──────────────────────────┤
│ - id: int │
│ - sender_id: int │
│ - receiver_id: int │
│ - content: string │
│ - message_type: string │
│ - is_read: int │
│ - created_at: timestamp │
├──────────────────────────┤
│ + sendMessage() │
│ + markRead() │
│ + getMessages() │
└──────────────────────────┘
入口 ──→ 输入用户名密码 ──→ 校验输入
│
┌────────┴────────┐
▼ ▼
输入有效 输入无效
│ │
▼ ▼
查询数据库 显示错误
│ │
┌──────────┴──────────┐ │
▼ ▼ │
密码正确 密码错误 │
│ │ │
▼ ▼ │
登入成功 显示错误 │
│ │ │
└────────────────────────┬──┘
▼
重试或返回
普通用户 系统 管理员
│ │ │
├─申请组队─────→ │ │
│ ├─保存申请─────→│
│ │ │
│ ┌─────────────────────────┤
│ │ 审核(同意/拒绝) │
│ ├──────────→ │
│ ├─更新申请状态
│ ├─创建队伍(同意)
│ ├─分配成员
│ ├─返回结果─────→ │
│ ←─返回结果─┤ │
│ │ │
成员管理流程:
管理员 → 添加/修改/删除 → 更新数据库 → 成员列表更新
组队申请流程:
普通用户 → 提交申请 → 管理员审核 → 同意 → 创建队伍 → 更新成员
↓
拒绝 → 申请记录更新
消息系统流程:
发送方 → 编写消息 → 选择接收方 → 发送 → 存储数据库 → 接收方查看
- 安装依赖
cd ACM_club
pip install -r requirements.txt- 启动数据库初始化
cd backend
python app.py- 访问系统
打开浏览器访问:
http://localhost:5000
| 用户名 | 密码 | 权限 |
|---|---|---|
| 教练 | 123456 | 教练(最高权限) |
| 会长 | 123456 | 管理员 |
测试用例1: 正确凭证登录
- 输入: 用户名="教练", 密码="123456"
- 预期结果: ✅ 登录成功,进入首页
- 实际结果: ✅ 通过
测试用例2: 错误密码
- 输入: 用户名="教练", 密码="wrong"
- 预期结果: ✅ 显示错误提示
- 实际结果: ✅ 通过
测试用例3: 添加成员
- 操作: 管理员添加姓名"张三", 学号"001"
- 预期结果: ✅ 成员列表中出现新成员
- 实际结果: ✅ 通过
测试用例4: 删除成员
- 操作: 管理员删除学号"001"的成员
- 预期结果: ✅ 成员从列表中删除
- 实际结果: ✅ 通过
测试用例5: 申请组队
- 操作: 普通用户选择2名队友,提交申请
- 预期结果: ✅ 申请出现在管理员的审核列表
- 实际结果: ✅ 通过
测试用例6: 批准申请自动创建队伍
- 操作: 管理员点击"同意"按钮
- 预期结果: ✅ 队伍自动创建,成员加入队伍
- 实际结果: ✅ 通过
测试用例7: 队长解散队伍
- 操作: 队长点击"解散队伍"按钮
- 预期结果: ✅ 队伍被删除,成员回到未组队状态
- 实际结果: ✅ 通过
测试用例8: 发送消息
- 操作: 普通用户选择接收人,输入消息,点击发送
- 预期结果: ✅ 消息出现在接收人的收件箱
- 实际结果: ✅ 通过
测试用例9: 管理员发送任务
- 操作: 管理员选择成员,输入任务内容,点击发送
- 预期结果: ✅ 任务标记为"任务"类型,出现在成员收件箱
- 实际结果: ✅ 通过
显示系统欢迎信息、快速导航、登录状态
- 用户名输入框
- 密码输入框
- 登录按钮
- 演示账录提示
- 教练信息展示区
- 按队伍分组显示的成员列表
- 标注队长身份
- 未组队成员独立展示
- 我的队伍信息
- 申请组队表单
- 消息收发功能
- 成员管理表单(增删改)
- 组队申请审核列表
- 消息管理和任务发送
✅ 完全实现所有功能需求 ✅ 采用B/S架构,易于使用 ✅ 数据持久化存储 ✅ 权限管理严格有效 ✅ 界面友好,操作简便 ✅ 代码结构清晰,易于维护
- 后端: Python Flask框架,完整的REST API设计
- 前端: 原生JavaScript,无外部框架依赖,加载快速
- 数据库: SQLite3,轻量级,部署方便
- 通信: HTTP JSON,跨平台兼容
- 三级权限体系: 普通用户→管理员→教练,权限控制严格
- 灵活的组队机制: 支持申请、审核、自动创建队伍
- 完整的消息系统: 支持消息和任务两种类型
- 数据安全: 密码加密存储,会话管理
- 批量导入成员(XLSX文件)
- 队伍排名与成绩管理
- 邮件通知功能
- 前端框架升级(Vue.js/React)
- 移动端App
- 数据分析和统计报表
- 参赛历史记录
快速部署步骤:
# 1. 克隆或下载项目
# 2. 安装依赖
pip install -r requirements.txt
# 3. 启动应用
cd backend
python app.py
# 4. 浏览器访问
# http://localhost:5000
# 5. 使用默认账户登录
# 用户名: 教练, 密码: 123456users表 - 用户信息表
CREATE TABLE users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
student_id TEXT UNIQUE,
phone TEXT,
qq TEXT,
email TEXT,
entrance_year INTEGER,
position TEXT,
password TEXT,
is_admin INTEGER,
team_id INTEGER
)teams表 - 队伍表
CREATE TABLE teams (
id INTEGER PRIMARY KEY,
name TEXT UNIQUE,
team_leader_id INTEGER,
member_count INTEGER
)team_applications表 - 申请记录
CREATE TABLE team_applications (
id INTEGER PRIMARY KEY,
applicant_id INTEGER,
teammate_ids TEXT,
status TEXT,
applied_at TIMESTAMP
)messages表 - 消息表
CREATE TABLE messages (
id INTEGER PRIMARY KEY,
sender_id INTEGER,
receiver_id INTEGER,
content TEXT,
message_type TEXT,
is_read INTEGER,
created_at TIMESTAMP
)| 方法 | 端点 | 功能 |
|---|---|---|
| POST | /api/login | 用户登录 |
| POST | /api/logout | 用户登出 |
| GET | /api/user/info | 获取当前用户信息 |
| GET | /api/members | 获取所有成员 |
| GET | /api/members/grouped | 获取分组成员 |
| POST | /api/members | 添加成员(管理员) |
| PUT | /api/members/ | 修改成员(管理员) |
| DELETE | /api/members/ | 删除成员(管理员) |
| GET | /api/teams | 获取所有队伍 |
| DELETE | /api/teams/ | 解散队伍(队长) |
| POST | /api/team-applications | 申请组队 |
| GET | /api/team-applications | 获取申请列表(管理员) |
| POST | /api/team-applications//approve | 通过申请(管理员) |
| POST | /api/team-applications//reject | 拒绝申请(管理员) |
| GET | /api/messages | 获取消息 |
| POST | /api/messages | 发送消息 |
项目完成日期: 2024年 版本: 1.0 开发者: ACM俱乐部管理系统开发团队