Skip to content

FananQAQ/Software-Engineering-Course-Design

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ACM俱乐部人员管理系统

一、系统简介

1.1 系统名称

ACM俱乐部人员管理系统

1.2 开发与运行环境

  • 操作系统: Windows / Linux / macOS
  • 编程语言: Python 3.8+, HTML5, CSS3, JavaScript
  • 后端框架: Flask 2.3.2
  • 前端: 原生HTML/CSS/JavaScript
  • 数据库: SQLite3
  • 开发工具: VS Code, Git

1.3 功能与性能要求

功能要求

  • ✅ 成员信息管理(增删改查)
  • ✅ 队伍管理与组队申请
  • ✅ 多级权限控制(普通用户、管理员、教练)
  • ✅ 消息与任务发送系统
  • ✅ 数据持久化存储

性能要求

  • 系统响应时间 < 1 秒
  • 支持100+并发用户
  • 数据查询效率高效

1.4 软件体系结构

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           # 项目文档

1.5 系统完成情况

功能模块 完成度 说明
用户认证 ✅ 100% 登录/登出功能完整
成员管理 ✅ 100% 支持增删改查
队伍管理 ✅ 100% 队伍创建、解散、队长管理
组队申请 ✅ 100% 申请提交、管理员审核
消息系统 ✅ 100% 消息发送、任务分配
权限控制 ✅ 100% 三级权限(普通用户/管理员/教练)
数据持久化 ✅ 100% SQLite数据库存储

二、需求文档

2.1 分层用例图

┌─────────────────────────────────────────────────────────┐
│                ACM俱乐部人员管理系统                      │
├─────────────────────────────────────────────────────────┤
│                                                           │
│   普通用户用例层                                           │
│   ├── 查看成员信息                                       │
│   ├── 查看队伍信息                                       │
│   ├── 申请组队                                           │
│   ├── 解散队伍(队长)                                     │
│   ├── 发送消息                                           │
│   └── 查看消息                                           │
│                                                           │
│   管理员用例层                                            │
│   ├── 添加成员                                           │
│   ├── 删除成员                                           │
│   ├── 修改成员信息                                       │
│   ├── 审核组队申请                                       │
│   ├── 发送任务                                           │
│   └── 查看消息                                           │
│                                                           │
│   教练用例层(最高权限)                                    │
│   ├── 添加/移除管理员                                    │
│   └── 所有管理员权限                                     │
│                                                           │
└─────────────────────────────────────────────────────────┘

2.2 参与者说明

参与者 描述 主要职责
普通用户 俱乐部成员 查看信息、申请组队、收发消息
管理员 会长、副会长 管理成员、审核申请、发送任务
教练 俱乐部教练 管理管理员、所有管理权限

2.3 用例详细描述

2.3.1 登录用例

  • 参与者: 所有用户
  • 前置条件: 用户已注册
  • 基本流程:
    1. 用户输入用户名和密码
    2. 系统验证凭证
    3. 验证通过,进入系统
    4. 验证失败,显示错误提示
  • 后置条件: 用户进入系统主页

2.3.2 查看成员用例

  • 参与者: 普通用户
  • 前置条件: 用户已登录
  • 基本流程:
    1. 用户点击"成员展示"
    2. 系统按队伍分组显示成员
    3. 标注队长和未组队成员
  • 后置条件: 显示完整的成员信息列表

2.3.3 申请组队用例

  • 参与者: 普通用户
  • 前置条件: 用户未组队,已登录
  • 基本流程:
    1. 用户选择最多2名队友
    2. 提交申请
    3. 管理员收到申请
    4. 管理员同意申请,队伍自动创建
    5. 队伍成员自动更新
  • 后置条件: 用户加入新队伍或申请待审核

2.3.4 发送消息用例

  • 参与者: 普通用户、管理员
  • 前置条件: 用户已登录
  • 基本流程:
    1. 用户选择收件人
    2. 输入消息内容
    3. 点击发送
    4. 消息进入收件人的收件箱
  • 后置条件: 消息被保存并对方可以查看

三、设计文档

3.1 静态模型(类图)

┌──────────────────────────┐
│         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()          │
└──────────────────────────┘

3.2 动态模型

3.2.1 登录流程活动图

入口 ──→ 输入用户名密码 ──→ 校验输入
                              │
                     ┌────────┴────────┐
                     ▼                 ▼
                  输入有效          输入无效
                     │                 │
                     ▼                 ▼
                查询数据库          显示错误
                     │                 │
          ┌──────────┴──────────┐      │
          ▼                     ▼      │
       密码正确               密码错误 │
          │                     │      │
          ▼                     ▼      │
       登入成功              显示错误  │
          │                     │      │
          └────────────────────────┬──┘
                                   ▼
                                  重试或返回

3.2.2 申请组队顺序图

普通用户          系统          管理员
  │               │              │
  ├─申请组队─────→ │              │
  │               ├─保存申请─────→│
  │               │              │
  │     ┌─────────────────────────┤
  │     │   审核(同意/拒绝)        │
  │     ├──────────→ │              
  │               ├─更新申请状态
  │               ├─创建队伍(同意)
  │               ├─分配成员
  │               ├─返回结果─────→ │
  │     ←─返回结果─┤              │
  │               │              │

3.2.3 核心业务流程

成员管理流程:

管理员 → 添加/修改/删除 → 更新数据库 → 成员列表更新

组队申请流程:

普通用户 → 提交申请 → 管理员审核 → 同意 → 创建队伍 → 更新成员
                                  ↓
                                 拒绝 → 申请记录更新

消息系统流程:

发送方 → 编写消息 → 选择接收方 → 发送 → 存储数据库 → 接收方查看

四、实现与测试

4.1 系统运行

4.1.1 运行步骤

  1. 安装依赖
cd ACM_club
pip install -r requirements.txt
  1. 启动数据库初始化
cd backend
python app.py
  1. 访问系统 打开浏览器访问: http://localhost:5000

4.1.2 默认账户

用户名 密码 权限
教练 123456 教练(最高权限)
会长 123456 管理员

4.2 功能测试

4.2.1 登录功能测试

测试用例1: 正确凭证登录

  • 输入: 用户名="教练", 密码="123456"
  • 预期结果: ✅ 登录成功,进入首页
  • 实际结果: ✅ 通过

测试用例2: 错误密码

  • 输入: 用户名="教练", 密码="wrong"
  • 预期结果: ✅ 显示错误提示
  • 实际结果: ✅ 通过

4.2.2 成员管理测试

测试用例3: 添加成员

  • 操作: 管理员添加姓名"张三", 学号"001"
  • 预期结果: ✅ 成员列表中出现新成员
  • 实际结果: ✅ 通过

测试用例4: 删除成员

  • 操作: 管理员删除学号"001"的成员
  • 预期结果: ✅ 成员从列表中删除
  • 实际结果: ✅ 通过

4.2.3 队伍管理测试

测试用例5: 申请组队

  • 操作: 普通用户选择2名队友,提交申请
  • 预期结果: ✅ 申请出现在管理员的审核列表
  • 实际结果: ✅ 通过

测试用例6: 批准申请自动创建队伍

  • 操作: 管理员点击"同意"按钮
  • 预期结果: ✅ 队伍自动创建,成员加入队伍
  • 实际结果: ✅ 通过

测试用例7: 队长解散队伍

  • 操作: 队长点击"解散队伍"按钮
  • 预期结果: ✅ 队伍被删除,成员回到未组队状态
  • 实际结果: ✅ 通过

4.2.4 消息系统测试

测试用例8: 发送消息

  • 操作: 普通用户选择接收人,输入消息,点击发送
  • 预期结果: ✅ 消息出现在接收人的收件箱
  • 实际结果: ✅ 通过

测试用例9: 管理员发送任务

  • 操作: 管理员选择成员,输入任务内容,点击发送
  • 预期结果: ✅ 任务标记为"任务"类型,出现在成员收件箱
  • 实际结果: ✅ 通过

4.3 界面展示说明

4.3.1 首页

显示系统欢迎信息、快速导航、登录状态

4.3.2 登录页面

  • 用户名输入框
  • 密码输入框
  • 登录按钮
  • 演示账录提示

4.3.3 成员展示页面

  • 教练信息展示区
  • 按队伍分组显示的成员列表
  • 标注队长身份
  • 未组队成员独立展示

4.3.4 队伍管理页面

  • 我的队伍信息
  • 申请组队表单
  • 消息收发功能

4.3.5 管理后台

  • 成员管理表单(增删改)
  • 组队申请审核列表
  • 消息管理和任务发送

五、系统总结

5.1 项目成就

✅ 完全实现所有功能需求 ✅ 采用B/S架构,易于使用 ✅ 数据持久化存储 ✅ 权限管理严格有效 ✅ 界面友好,操作简便 ✅ 代码结构清晰,易于维护

5.2 技术架构

  • 后端: Python Flask框架,完整的REST API设计
  • 前端: 原生JavaScript,无外部框架依赖,加载快速
  • 数据库: SQLite3,轻量级,部署方便
  • 通信: HTTP JSON,跨平台兼容

5.3 核心特性

  1. 三级权限体系: 普通用户→管理员→教练,权限控制严格
  2. 灵活的组队机制: 支持申请、审核、自动创建队伍
  3. 完整的消息系统: 支持消息和任务两种类型
  4. 数据安全: 密码加密存储,会话管理

5.4 后续改进方向

  • 批量导入成员(XLSX文件)
  • 队伍排名与成绩管理
  • 邮件通知功能
  • 前端框架升级(Vue.js/React)
  • 移动端App
  • 数据分析和统计报表
  • 参赛历史记录

5.5 部署说明

快速部署步骤:

# 1. 克隆或下载项目
# 2. 安装依赖
pip install -r requirements.txt

# 3. 启动应用
cd backend
python app.py

# 4. 浏览器访问
# http://localhost:5000

# 5. 使用默认账户登录
# 用户名: 教练, 密码: 123456

六、附录

6.1 数据库表结构

users表 - 用户信息表

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
)

6.2 API端点清单

方法 端点 功能
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俱乐部管理系统开发团队

About

软工课设

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors