学生管理系统代码提交
This commit is contained in:
+177
@@ -0,0 +1,177 @@
|
||||
-- ============================================================
|
||||
-- 沃林学生管理系统 数据库初始化脚本(修正版)
|
||||
-- 基于原始建表语句修正,主要变更:
|
||||
-- 1. c_lass 补充 class_name 字段(原表缺少班级名称)
|
||||
-- 2. student 补充 status 字段(在读/进入就业/已就业,就业联动依赖)
|
||||
-- 3. score 补充 is_deleted 字段(统一逻辑删除风格)
|
||||
-- 4. employment_base 补充冗余字段 stu_name / class_name(需求 2.3 设计提示)
|
||||
-- 5. user 新增用户表(JWT 登录 + RBAC 角色,原建表语句缺失)
|
||||
-- 6. 修复原语句语法错误(c_lass 末尾多余逗号)
|
||||
-- 7. 追加种子数据:初始管理员 admin/admin123 + 演示数据
|
||||
-- 使用:mysql -uroot -p < init.sql (或 docker-compose 自动执行)
|
||||
-- ============================================================
|
||||
|
||||
CREATE DATABASE IF NOT EXISTS walin_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
USE walin_db;
|
||||
|
||||
-- ---------- 班级表 ----------
|
||||
CREATE TABLE IF NOT EXISTS c_lass(
|
||||
class_id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
class_name VARCHAR(50) NOT NULL COMMENT '班级名称',
|
||||
start_time DATE NOT NULL COMMENT '开课时间',
|
||||
is_deleted INT NOT NULL DEFAULT 0 COMMENT '逻辑删除'
|
||||
);
|
||||
|
||||
-- ---------- 老师表 ----------
|
||||
CREATE TABLE IF NOT EXISTS teacher(
|
||||
teacher_id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
teacher_name VARCHAR(50) NOT NULL,
|
||||
job_name VARCHAR(50) NOT NULL COMMENT '主讲/班主任/助教',
|
||||
class_id INT NOT NULL,
|
||||
is_deleted INT NOT NULL DEFAULT 0,
|
||||
FOREIGN KEY (class_id) REFERENCES c_lass(class_id)
|
||||
);
|
||||
|
||||
-- ---------- 顾问表 ----------
|
||||
CREATE TABLE IF NOT EXISTS advisor(
|
||||
advisor_id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
advisor_name VARCHAR(50) NOT NULL,
|
||||
is_deleted INT NOT NULL DEFAULT 0
|
||||
);
|
||||
|
||||
-- ---------- 学生表 ----------
|
||||
CREATE TABLE IF NOT EXISTS student(
|
||||
stu_id INT PRIMARY KEY COMMENT '学号(支持规则生成:入学年份+班级号+序号)',
|
||||
stu_name VARCHAR(10) NOT NULL,
|
||||
native_place VARCHAR(30) NOT NULL,
|
||||
graduate_school VARCHAR(50) NOT NULL,
|
||||
major VARCHAR(20) NOT NULL,
|
||||
enroll_time DATE NOT NULL,
|
||||
graduate_time DATE NOT NULL,
|
||||
education VARCHAR(10) NOT NULL,
|
||||
age INT NOT NULL,
|
||||
gender VARCHAR(10) NOT NULL,
|
||||
class_id INT NOT NULL,
|
||||
advisor_id INT NOT NULL,
|
||||
status VARCHAR(10) NOT NULL DEFAULT '在读' COMMENT '在读/进入就业/已就业',
|
||||
is_deleted INT NOT NULL DEFAULT 0,
|
||||
FOREIGN KEY (class_id) REFERENCES c_lass(class_id),
|
||||
FOREIGN KEY (advisor_id) REFERENCES advisor(advisor_id)
|
||||
);
|
||||
|
||||
-- ---------- 成绩表 ----------
|
||||
CREATE TABLE IF NOT EXISTS score(
|
||||
stu_id INT,
|
||||
exam_id INT COMMENT '考核序次',
|
||||
score FLOAT DEFAULT NULL,
|
||||
is_deleted INT NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (stu_id, exam_id),
|
||||
FOREIGN KEY (stu_id) REFERENCES student(stu_id)
|
||||
);
|
||||
|
||||
-- ---------- 就业表-基础信息表 ----------
|
||||
CREATE TABLE IF NOT EXISTS employment_base(
|
||||
stu_id INT PRIMARY KEY,
|
||||
employment_open_time DATE NOT NULL COMMENT '就业开放时间',
|
||||
job_time DATE DEFAULT NULL COMMENT 'offer下发时间',
|
||||
company_name VARCHAR(100) DEFAULT '未就业',
|
||||
salary FLOAT DEFAULT 0,
|
||||
stu_name VARCHAR(10) NOT NULL COMMENT '冗余:学生姓名',
|
||||
class_name VARCHAR(50) NOT NULL COMMENT '冗余:班级名称',
|
||||
is_deleted INT NOT NULL DEFAULT 0,
|
||||
FOREIGN KEY (stu_id) REFERENCES student(stu_id)
|
||||
);
|
||||
|
||||
-- ---------- 就业表-offer表 ----------
|
||||
CREATE TABLE IF NOT EXISTS employment_offer(
|
||||
stu_id INT,
|
||||
offer_id INT COMMENT '同一学生内自增',
|
||||
offer_time DATE NOT NULL,
|
||||
company_name VARCHAR(100) DEFAULT '',
|
||||
salary FLOAT DEFAULT 0,
|
||||
is_deleted INT NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (stu_id, offer_id),
|
||||
FOREIGN KEY (stu_id) REFERENCES employment_base(stu_id)
|
||||
);
|
||||
|
||||
-- ---------- 用户表(新增:JWT 登录 + RBAC) ----------
|
||||
CREATE TABLE IF NOT EXISTS user(
|
||||
user_id INT PRIMARY KEY AUTO_INCREMENT,
|
||||
username VARCHAR(50) NOT NULL UNIQUE,
|
||||
password_hash VARCHAR(200) NOT NULL COMMENT 'PBKDF2-SHA256',
|
||||
role VARCHAR(20) NOT NULL COMMENT 'admin/teacher/student',
|
||||
stu_id INT NULL COMMENT 'student 角色绑定的学号',
|
||||
teacher_id INT NULL COMMENT 'teacher 角色绑定的工号',
|
||||
is_deleted INT NOT NULL DEFAULT 0,
|
||||
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (stu_id) REFERENCES student(stu_id),
|
||||
FOREIGN KEY (teacher_id) REFERENCES teacher(teacher_id)
|
||||
);
|
||||
|
||||
-- ============================================================
|
||||
-- 种子数据(演示用,可按需删减)
|
||||
-- 使用 INSERT IGNORE:重复执行本脚本不会报主键冲突(幂等)
|
||||
-- ============================================================
|
||||
|
||||
-- 班级
|
||||
INSERT IGNORE INTO c_lass(class_id, class_name, start_time) VALUES
|
||||
(1, 'Java2301', '2026-03-01'),
|
||||
(2, 'Java2302', '2026-04-10'),
|
||||
(3, 'Python2301', '2026-05-06');
|
||||
|
||||
-- 顾问
|
||||
INSERT IGNORE INTO advisor(advisor_id, advisor_name) VALUES
|
||||
(1, '王顾问'), (2, '李顾问');
|
||||
|
||||
-- 老师
|
||||
INSERT IGNORE INTO teacher(teacher_id, teacher_name, job_name, class_id) VALUES
|
||||
(1, '张主讲', '主讲', 1),
|
||||
(2, '刘班主任', '班主任', 1),
|
||||
(3, '陈主讲', '主讲', 2),
|
||||
(4, '赵班主任', '班主任', 2),
|
||||
(5, '孙助教', '助教', 3);
|
||||
|
||||
-- 学生(学号规则:入学年份4位 + 班级号2位 + 序号4位)
|
||||
INSERT IGNORE INTO student(stu_id, stu_name, native_place, graduate_school, major, enroll_time, graduate_time, education, age, gender, class_id, advisor_id, status) VALUES
|
||||
(2026010001, '张伟', '湖北武汉', '武汉大学', '软件工程', '2026-03-01', '2026-09-01', '本科', 24, '男', 1, 1, '进入就业'),
|
||||
(2026010002, '王芳', '湖南长沙', '中南大学', '计算机科学', '2026-03-01', '2026-09-01', '本科', 23, '女', 1, 1, '进入就业'),
|
||||
(2026010003, '李娜', '河南郑州', '郑州大学', '软件工程', '2026-03-01', '2026-09-01', '大专', 22, '女', 1, 1, '在读'),
|
||||
(2026010004, '刘强', '四川成都', '四川大学', '信息安全', '2026-03-01', '2026-09-01', '本科', 25, '男', 1, 1, '在读'),
|
||||
(2026020001, '陈静', '江苏南京', '南京大学', '软件工程', '2026-04-10', '2026-10-10', '本科', 24, '女', 2, 2, '在读'),
|
||||
(2026020002, '杨帆', '安徽合肥', '合肥工业大学', '计算机科学', '2026-04-10', '2026-10-10', '硕士', 27, '男', 2, 2, '在读'),
|
||||
(2026020003, '黄磊', '广东广州', '华南理工', '软件工程', '2026-04-10', '2026-10-10', '本科', 23, '男', 2, 2, '在读'),
|
||||
(2026030001, '周婷', '浙江杭州', '浙江大学', '人工智能', '2026-05-06', '2026-11-06', '硕士', 26, '女', 3, 2, '在读'),
|
||||
(2026030002, '吴涛', '陕西西安', '西安电子科大', '大数据', '2026-05-06', '2026-11-06', '本科', 24, '男', 3, 2, '在读');
|
||||
|
||||
-- 成绩(部分低于 60 分用于演示红线预警)
|
||||
INSERT IGNORE INTO score(stu_id, exam_id, score) VALUES
|
||||
(2026010001, 1, 88), (2026010001, 2, 92), (2026010001, 3, 85),
|
||||
(2026010002, 1, 76), (2026010002, 2, 58), (2026010002, 3, 81),
|
||||
(2026010003, 1, 55), (2026010003, 2, 49),
|
||||
(2026010004, 1, 67), (2026010004, 2, 72),
|
||||
(2026020001, 1, 95), (2026020001, 2, 90),
|
||||
(2026020002, 1, 82), (2026020002, 2, 60),
|
||||
(2026020003, 1, 45), (2026020003, 2, 52), (2026020003, 3, 61),
|
||||
(2026030001, 1, 89), (2026030001, 2, 94),
|
||||
(2026030002, 1, 70), (2026030002, 2, 65);
|
||||
|
||||
-- 就业基础表(张伟已拿 offer;王芳开放简历未拿 offer)
|
||||
INSERT IGNORE INTO employment_base(stu_id, employment_open_time, job_time, company_name, salary, stu_name, class_name) VALUES
|
||||
(2026010001, '2026-08-01', '2026-08-20', '腾讯科技', 18000, '张伟', 'Java2301'),
|
||||
(2026010002, '2026-08-15', NULL, '未就业', 0, '王芳', 'Java2301');
|
||||
|
||||
-- offer 记录
|
||||
INSERT IGNORE INTO employment_offer(stu_id, offer_id, offer_time, company_name, salary) VALUES
|
||||
(2026010001, 1, '2026-08-20', '腾讯科技', 18000);
|
||||
|
||||
-- ============================================================
|
||||
-- 初始账号(密码均为 PBKDF2-SHA256 哈希,120000 次迭代):
|
||||
-- admin / admin123 管理员
|
||||
-- teacher1 / teacher123 教师(工号1 张主讲,班级1)
|
||||
-- s2026010003 / student123 学生(学号 2026010003 李娜)
|
||||
-- 生产环境请立即修改密码!
|
||||
-- ============================================================
|
||||
INSERT IGNORE INTO user(username, password_hash, role, teacher_id, stu_id) VALUES
|
||||
('admin', 'pbkdf2_sha256$120000$897b4de0db4f0edf881627fc49df801e$02fc3387a341190448589f5569ef750f48ff3d9938fcea327ee2d5ee0f7258b9', 'admin', NULL, NULL),
|
||||
('teacher1', 'pbkdf2_sha256$120000$03dd3da6882e0dd77bc71e5d7ca1bcb5$f02eb626afdc528eca67644f23a39d70d898ddea4adc9b7dccb30a8e1fb788b2', 'teacher', 1, NULL),
|
||||
('s2026010003', 'pbkdf2_sha256$120000$5f9bd2dee6ff5fe7e145d3e2f9f8e11e$56b07cd8d35882547f378d62d3075e9f2eac38c47b6b917782c5199cb6864d6b', 'student', NULL, 2026010003);
|
||||
Reference in New Issue
Block a user