-- 创建数据库  
CREATE DATABASE IF NOT EXISTS course_selection_system;
USE course_selection_system;

-- 创建学生表
CREATE TABLE IF NOT EXISTS Student (
student_id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
phone VARCHAR(15),
major VARCHAR(50),
password VARCHAR(255) NOT NULL
);

-- 创建教师表
CREATE TABLE IF NOT EXISTS Teacher (
teacher_id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
department VARCHAR(100),
password VARCHAR(255) NOT NULL
);

-- 创建课程表
CREATE TABLE IF NOT EXISTS Course (
course_id INT PRIMARY KEY AUTO_INCREMENT,
course_name VARCHAR(100) NOT NULL,
course_code VARCHAR(10) UNIQUE NOT NULL,
credits INT,
max_students INT DEFAULT 50,
current_students INT DEFAULT 0,
teacher_id INT,
FOREIGN KEY (teacher_id) REFERENCES Teacher(teacher_id)
);

-- 创建选课表
CREATE TABLE IF NOT EXISTS Enrollment (
enrollment_id INT PRIMARY KEY AUTO_INCREMENT,
student_id INT,
course_id INT,
enrollment_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
grade FLOAT DEFAULT NULL,
FOREIGN KEY (student_id) REFERENCES Student(student_id),
FOREIGN KEY (course_id) REFERENCES Course(course_id)
);

-- 创建管理员表
CREATE TABLE IF NOT EXISTS Admin (
admin_id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL
);

1. 一、绪论

2. 二、系统分析

(一)用例图、分角色功能图

用例图

分角色功能图

(二)数据需求—数据流图

3. 三、系统设计

3.1.1. (一)概念结构设计-ER图系统功能模块图

er 图

学生

画板

教师

画板

课程

画板

选课表

画板

管理员表

画板

整体

画板

(二)系统功能模块图

3.1.1.1. 用户注册流程

3.1.1.2. 选课流程

成绩管理流程

课程管理流程图

3.1.2. (三)逻辑结构设计-关系模式-表

  1. 学生表(Student)
字段名 数据类型 长度 约束条件 说明
学生编号 INT - PRIMARY KEY, AUTO_INCREMENT 主键
姓名 VARCHAR 100 NOT NULL 学生姓名
邮箱 VARCHAR 100 UNIQUE, NOT NULL 登录账号
电话 VARCHAR 15 - 联系方式
专业 VARCHAR 50 - 所属专业
密码 VARCHAR 255 NOT NULL 登录密码
  1. 教师表(Teacher)
字段名 数据类型 长度 约束条件 说明
教师编号 INT - PRIMARY KEY, AUTO_INCREMENT 主键
姓名 VARCHAR 100 NOT NULL 教师姓名
邮箱 VARCHAR 100 UNIQUE, NOT NULL 登录账号
所属院系 VARCHAR 100 - 院系信息
密码 VARCHAR 255 NOT NULL 登录密码
  1. 课程表(Course)
字段名 数据类型 长度 约束条件 说明
课程编号 INT - PRIMARY KEY, AUTO_INCREMENT 主键
课程名称 VARCHAR 100 NOT NULL 课程名称
课程代码 VARCHAR 10 UNIQUE, NOT NULL 唯一代码
学分 INT - - 课程学分
最大人数 INT - DEFAULT 50 课程容量
当前人数 INT - DEFAULT 0 已选人数
教师编号 INT - FOREIGN KEY 授课教师
  1. 选课表(Enrollment)
字段名 数据类型 长度 约束条件 说明
选课编号 INT - PRIMARY KEY, AUTO_INCREMENT 主键
学生编号 INT - FOREIGN KEY 选课学生
课程编号 INT - FOREIGN KEY 所选课程
选课时间 TIMESTAMP - DEFAULT CURRENT_TIMESTAMP 记录时间
成绩 FLOAT - DEFAULT NULL 课程成绩
  1. 管理员表(Admin)
字段名 数据类型 长度 约束条件 说明
管理员编号 INT - PRIMARY KEY, AUTO_INCREMENT 主键
姓名 VARCHAR 100 NOT NULL 管理员姓名
邮箱 VARCHAR 100 UNIQUE, NOT NULL 登录账号
密码 VARCHAR 255 NOT NULL 登录密码

表关系说明:

  1. 一个学生可以选择多门课程(学生表和课程表是多对多关系)
  2. 一个教师可以教授多门课程(教师表和课程表是一对多关系)
  3. 选课表作为学生表和课程表的中间表,记录选课信息

约束说明:

  1. 所有编号字段都设置为自动递增的主键
  2. 邮箱字段作为登录账号,需要唯一性约束
  3. 选课表通过外键关联学生表和课程表
  4. 课程表通过外键关联教师表
  5. 关键信息(如姓名、邮箱、密码等)设置非空约束

3.2. 四、系统实现(程序流程图,实现的界面)数据库连接

代码下载链接

student_course_management.zip

点击这个

此处为语雀卡片,点击链接查看

代码下载链接