Skip to content

Gentle-Lijie/ZY-service

Repository files navigation

ZY-Service — 学生选课信息管理系统

一个基于 PHP + MySQL 的学生信息与竞赛选课管理系统,面向教育培训机构,提供学生端与管理端双角色操作界面。支持 Docker 一键部署。

功能特性

学生端

  • 个人信息 — 查看与编辑个人资料、教育履历、家长信息
  • 竞赛选课 — 浏览可报名竞赛,根据卡类型限制进行选课 / 退选
  • 成绩查询 — 查看各竞赛成绩
  • 补考管理 — 查看补考安排并报名
  • 奖惩记录 — 查看、新增、编辑个人奖惩与项目记录
  • 密码修改 — 自主修改登录密码
  • 意见反馈 — 提交反馈,通过邮件发送至管理员

管理端

  • 学生管理 — 增删改查学生档案、重置密码
  • 竞赛管理 — 创建、编辑、删除竞赛课程
  • 选课管理 — 查看与修改学生报名情况
  • 卡片系统 — 创建卡类型、分配卡片给学生,控制选课权限
  • 奖惩日志 — 查询与编辑学生行为记录
  • 数据统计 — 班级统计、成绩分析
  • 权限管理 — 创建管理员账号、分配功能权限
  • SQL 审计 — 所有数据库操作自动写入日志

技术栈

层级 技术
后端 PHP 8.1+
数据库 MySQL 8.0+(utf8mb4)
Web 服务器 Nginx 1.25
前端 HTML / CSS / JavaScript
邮件脚本 Python 3(SMTP)
容器化 Docker + Docker Compose

项目结构

ZY-service/
├── admin/                  # 管理端
│   ├── fun/                #   后端接口(PHP)
│   ├── css/                #   样式
│   ├── scripts/            #   邮件脚本 & 配置
│   ├── index.php           #   管理端主框架
│   └── *.php               #   各功能页面
├── user/                   # 学生端
│   ├── fun/                #   后端接口
│   ├── scripts/            #   邮件脚本 & 配置
│   ├── index.php           #   学生端主框架
│   └── *.php               #   各功能页面
├── config/
│   ├── database.php        # 数据库连接(读取环境变量)
│   ├── log.php             # 日志配置
│   └── adminer.php         # 数据库管理工具
├── docker/
│   ├── nginx.conf          # Nginx 配置
│   └── php.ini             # PHP 配置
├── static/                 # 静态资源(CSS / 图片)
├── login.php               # 登录页
├── logout.php              # 登出
├── create_database.sql     # 数据库建表脚本
├── example_lite.sql        # 示例数据
├── Dockerfile              # PHP-FPM 镜像
├── docker-compose.yml      # 容器编排
├── Makefile                # 快捷命令
└── .env.example            # 环境变量模板

快速开始

前置要求

  • Docker 24+ 与 Docker Compose v2+

启动步骤

# 1. 克隆仓库
git clone https://github.com/<your-username>/ZY-service.git
cd ZY-service

# 2. 复制环境变量模板并按需修改
cp .env.example .env

# 3. 构建并启动
docker compose up -d --build

# 4. 访问系统
# 浏览器打开 http://localhost:8080

首次启动时,create_database.sqlexample_lite.sql 会自动导入 MySQL,无需手动建库。

默认管理员

字段
管理员 ID 999
用户名 Admin
密码 change_me_please

部署后请立即修改默认密码。

Makefile 快捷命令

make up        # 构建并启动容器
make down      # 停止并移除容器
make logs      # 查看实时日志
make restart   # 重启所有服务

本地开发(非 Docker)

如不使用 Docker,需自行准备:

  • PHP 8.1+(启用 mysqli、pdo_mysql 扩展)
  • MySQL 8.0+
  • Nginx 或 Apache
  • Python 3(仅邮件反馈功能需要)

将以下环境变量配置到系统或 Web 服务器中,config/database.php 会自动读取:

DB_HOST=127.0.0.1
DB_PORT=3306
DB_NAME=zy_service
DB_USER=root
DB_PASS=your_password
DB_CHARSET=utf8mb4

手动导入数据库:

mysql -u root -p < create_database.sql
mysql -u root -p school < example_lite.sql

环境变量

所有配置通过 .env 文件管理,详见 .env.example

变量 说明 默认值
TZ 时区 Asia/Shanghai
DB_HOST 数据库主机 db
DB_PORT 数据库端口 3306
DB_NAME 数据库名 zy_service
DB_USER 数据库用户 zy
DB_PASS 数据库密码 zy_secret
DB_CHARSET 字符集 utf8mb4
MYSQL_ROOT_PASSWORD MySQL root 密码 root_secret
WPDB_HOST WordPress 数据库主机(可选)
WP_URL WordPress 站点地址(可选)

WordPress 相关变量留空则自动跳过集成。

数据库结构

数据库名为 school,包含以下表:

表名 说明
course 竞赛/课程信息(名称、级别、申报时间、材料要求等)
student 学生档案(个人信息、教育履历、家长信息)
student_course 学生选课记录(联合主键 sid + cid)
student_log 学生行为日志(奖惩记录、操作记录)
user_admin 管理员账号与权限
user_student 学生登录账号
card 卡片类型定义(可选课程范围、最大选课数)
student_card 学生-卡片关联(外键约束,级联删除)

完整建表语句见 create_database.sql,示例数据见 example_lite.sql

邮件反馈(可选)

系统内置用户反馈功能,学生端和管理端均可提交。反馈通过 Python 脚本以邮件形式发送。

配置方式:

  1. 编辑 admin/scripts/config.jsonuser/scripts/config.json,填入 SMTP 信息
  2. 或通过环境变量注入 SMTP 凭据

反馈内容包括:姓名、学号、联系方式、反馈正文、设备信息、IP 地址。

安全说明

  • 所有敏感信息(IP、邮箱、密码)已从源码中移除或替换为占位符
  • .gitignore 已配置忽略 .env、日志文件等敏感内容
  • 密码使用 MD5 哈希存储(建议生产环境升级为 bcrypt 或 argon2)
  • 所有 SQL 操作自动记录到 config/sql_log.txt 用于审计
  • 反馈脚本使用 escapeshellarg() 防止命令注入
  • 建议生产环境启用 HTTPS 并添加 CSRF 防护

许可证

MIT License

贡献

欢迎提交 Issue 和 Pull Request。请先阅读 CONTRIBUTING.mdCODE_OF_CONDUCT.md

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages