当前位置: 首页 > news >正文

ATMS课程管理系统 - 从零构建的MySQL实战之旅

📚 ATMS课程管理系统 - 从零构建的MySQL实战之旅 🚀

✨ 前言:当教育遇见技术

“一个好的系统,能让复杂的管理变得简单优雅” 💫

嗨!大家好~ 今天我要分享一个超级实用的课程管理系统开发经历!我是一名正在学习《数据库原理与应用》的大学生 👨‍🎓,这次老师布置的课程作业要求设计一个完整的数据库系统——设计一个ATMS课程管理系统!🚀

任务要求

二、实验内容
艺培管理系统在日常教学运行中,学员每报名一门课程学习,需对其个人信息、班级信息、预存信息、消费信息等进行录入、存储与统计分析,以便教师了解学生情况、学员知晓自身预存与消费情况、机构整体把控教学情况。
(一)创建艺培管理系统(ATMS)数据库
(二)创建数据表,具体情况如下:
表1.1 学生信息(student)表
字段名 数据类型 主键 外键 非空 唯一 备注 sNo varchar(10) 是 否 是 是 学号
sName varchar(20) 否 否 是 否 姓名 sSex enum(‘男’,‘女’) 否 否 是 否 性别
SBDate date 否 否 否 否 出生日期 sPhone varchar(10) 否 否 否 否 联系方式
sParent varchar(15) 否 否 否 否 父母姓名 表1.2学生信息数据(student)表
sNo sName sSex SBDate sPhone sParent 00001 朱皓宁 男 Null Null Null
00002 谢荣伶 女 Null Null Null 00003 罗一伊 女 Null Null Null 00004
秦梓涵 女 Null Null Null 00005 张芸嫣 女 Null Null Null 00006
刘恩辰 男 Null Null Null 00007 邓雨涵 男 Null Null Null 00008
冯钰桐 女 Null Null Null 表2.1 课程信息(course)表 字段名 数据类型 主键 外键 非空 唯一 备注
cNo varchar(10) 是 否 是 是 课程号 cName varchar(20) 否 否 是 否 课程名
cPrice decimal(5,2) 否 否 否 否 课程单价 表2.2课程信息(course)数据表 cNo cName cPrice
c0001 新概念英语 15.00 c0002 原版阅读 180 c0003 初中数学 180.00 c0004
人教英语 160.00 c0005 初数 400.00 表3.1 班级信息(class)表 字段名 数据类型 主键 外键 非空 唯一 备注
clsNo varchar(10) 是 否 是 是 班级号 clsName varchar(20) 否 否 是 否 班级名
cNo varchar(10) 否 是 否 否 课程号 clsPeriod varchar(20) 否 否 否 否 开课时段
tNo varchar(6) 否 否 否 否 授课教师号 表3.2班级信息信息数据(class)表
clsN clsName cNo clsPeriod tNo
cls001 23秋原版周五1班 c0002 周五18:30-20:30 t0001
cls002 23秋新概念周六1班 c0001 周六10:00-12:00 t0001
cls003 23秋新概念周六2班 c0001 周六13:30-15:30 t0001
cls004 23秋人教周六1班 c0004 周六16:00-18:00 t0001
cls005 23秋原版周六1班 c0002 周六18:30-20:30 t0001
cls006 23秋新概念周日1班 c0001 周日8:30-10:30 t0001 cls007
23秋原版周日1班 c0002 周日10:30-12:30 t0002
cls008 23秋人教周日1班 c0004 周日10:30-12:30 t0001
cls009 23秋新概念周日2班 c0001 周日16:00-18:00 t0001
cls010 23秋原版周日2班 c0002 周日15:45-17:45 t0003 表4.1 学生消耗课程信息(consume)表
字段名 数据类型 主键 外键 非空 唯一 备注 sNo varchar(10) 是 是 是 否 学号
clsNo varchar(10) 是 是 是 否 班级号 ConsDate date 是 否 否 否 消耗日期
ConsFlag int(11) 否 否 否 否 标记 表4.2学生消耗课程信息(consume)数据表
sNo clsNo ConsDate ConsFlag 00001 cls001 2023-09-08 0
00001 cls001 2023-09-15 0 00001 cls001 2023-09-22 0
00001 cls001 2023-09-29 0 00001 cls001 2023-10-13 0
00001 cls001 2023-11-10 0 00001 cls001 2023-11-17 0
00001 cls001 2023-11-24 0 00001 cls001 2023-12-01 0
00001 cls001 2023-12-08 0
> (三)根据上述内容,完成如下数据表操作验证:
1.完成表1.2,2.2,3.2,4.2数据表中的数据的录入 。
2.在表1.2学生信息(student)数据表中,数据记录sNo为“00007”、sName为“邓雨涵”的记录,sSex的值改为“女”。
3.在表2.2课程信息(course)数据表中,数据记录cNo为“c0001”,cName为“新概念英语”的记录,cPrice的值改为“150.00”。
4.在表4.2学生消耗课程信息(consume)数据表中,将所有记录的ConsFlag的值改为“1”。
5.删除课程信息(course)表的所有数据。
6.删除课程信息(course)数据表。

前面部分主要是创建表格,加黑部分就是主要任务

实现部分

具体实现部分请看代码,有问题可提出。

-- =============================================
-- ATMS课程管理系统数据库脚本
-- 数据库课程大作业
-- 创建数据库及数据表
-- =============================================-- 🗃️ 创建数据库
CREATE DATABASE `atms`;
USE `atms`;-- 🔧 设置数据库字符集
ALTER DATABASE `atms` CHARACTER SET utf8mb4;-- =============================================
-- 📊 数据表创建
-- =============================================-- 👨‍🎓 学生信息表
CREATE TABLE `student` (`sNo` VARCHAR(10) PRIMARY KEY COMMENT '学号',`sName` VARCHAR(20) NOT NULL COMMENT '姓名',`sSex` ENUM('男','女') NOT NULL COMMENT '性别',`SBDate` DATE COMMENT '出生日期',`sPhone` VARCHAR(10) COMMENT '联系方式',`sParent` VARCHAR(15) COMMENT '父母姓名'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生基本信息表';-- 📚 课程信息表
CREATE TABLE `course` (`cNo` VARCHAR(10) PRIMARY KEY COMMENT '课程号',`cName` VARCHAR(20) NOT NULL COMMENT '课程名',`cPrice` DECIMAL(5,2) COMMENT '课程单价'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='课程信息表';-- 🏫 班级信息表
CREATE TABLE `class` (`clsNo` VARCHAR(10) PRIMARY KEY COMMENT '班级号',`clsName` VARCHAR(20) NOT NULL COMMENT '班级名',`cNo` VARCHAR(10) COMMENT '课程号',`clsPeriod` VARCHAR(20) COMMENT '开课时段',`tNo` VARCHAR(6) COMMENT '授课教师号',FOREIGN KEY (`cNo`) REFERENCES `course` (`cNo`) ON DELETE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='班级信息表';-- ⏰ 学生消耗课程信息表
CREATE TABLE `consume` (`sNo` VARCHAR(10) COMMENT '学号',`clsNo` VARCHAR(10) COMMENT '班级号',`ConsDate` DATE COMMENT '消耗日期',`ConsFlag` INT(11) COMMENT '标记',PRIMARY KEY (`sNo`, `clsNo`, `ConsDate`),FOREIGN KEY (`sNo`) REFERENCES `student` (`sNo`) ON DELETE CASCADE,FOREIGN KEY (`clsNo`) REFERENCES `class` (`clsNo`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生课时消耗记录表';-- =============================================
-- 📥 插入示例数据
-- =============================================-- 👥 插入学生数据
INSERT INTO `student` (`sNo`, `sName`, `sSex`, `SBDate`, `sPhone`, `sParent`) VALUES
('00001', '朱皓宁', '男', NULL, NULL, NULL),
('00002', '谢荣伶', '女', NULL, NULL, NULL),
('00003', '罗一伊', '女', NULL, NULL, NULL),
('00004', '秦梓涵', '女', NULL, NULL, NULL),
('00005', '张芸嫣', '女', NULL, NULL, NULL),
('00006', '刘恩辰', '男', NULL, NULL, NULL),
('00007', '邓雨涵', '男', NULL, NULL, NULL),
('00008', '冯钰桐', '女', NULL, NULL, NULL);-- 📖 插入课程数据
INSERT INTO `course` (`cNo`, `cName`, `cPrice`) VALUES
('c0001', '新概念英语', 15.00),
('c0002', '原版阅读', 180.00),
('c0003', '初中数学', 180.00),
('c0004', '人教英语', 160.00),
('c0005', '初数', 400.00);-- 🎯 插入班级数据
INSERT INTO `class` (`clsNo`, `clsName`, `cNo`, `clsPeriod`, `tNo`) VALUES
('cls001', '23秋原版周五1班', 'c0002', '周五18:30-20:30', 't0001'),
('cls002', '23秋新概念周六1班', 'c0001', '周六10:00-12:00', 't0001'),
('cls003', '23秋新概念周六2班', 'c0001', '周六13:30-15:30', 't0001'),
('cls004', '23秋人教周六1班', 'c0004', '周六16:00-18:00', 't0001'),
('cls005', '23秋原版周六1班', 'c0002', '周六18:30-20:30', 't0001'),
('cls006', '23秋新概念周日1班', 'c0001', '周日8:30-10:30', 't0001'),
('cls007', '23秋原版周日1班', 'c0002', '周日10:30-12:30', 't0002'),
('cls008', '23秋人教周日1班', 'c0004', '周日10:30-12:30', 't0001'),
('cls009', '23秋新概念周日2班', 'c0001', '周日16:00-18:00', 't0001'),
('cls010', '23秋原版周日2班', 'c0002', '周日15:45-17:45', 't0003');-- 📅 插入课时消耗数据
INSERT INTO `consume` (`sNo`, `clsNo`, `ConsDate`, `ConsFlag`) VALUES
('00001', 'cls001', '2023-09-08', 0),
('00001', 'cls001', '2023-09-15', 0),
('00001', 'cls001', '2023-09-22', 0),
('00001', 'cls001', '2023-09-29', 0),
('00001', 'cls001', '2023-10-13', 0),
('00001', 'cls001', '2023-11-10', 0),
('00001', 'cls001', '2023-11-17', 0),
('00001', 'cls001', '2023-11-24', 0),
('00001', 'cls001', '2023-12-01', 0),
('00001', 'cls001', '2023-12-08', 0);-- =============================================
-- 🔄 数据更新操作
-- =============================================-- ✏️ 更新学生性别信息
UPDATE `student` 
SET `sSex` = '女' 
WHERE `sNo` = '00007' AND `sName` = '邓雨涵';-- 💰 更新课程价格
UPDATE `course` 
SET `cPrice` = 150.00 
WHERE `cNo` = 'c0001' AND `cName` = '新概念英语';-- 🏷️ 更新消耗标记
UPDATE `consume` 
SET `ConsFlag` = 1;-- =============================================
-- 🗑️ 数据删除操作(演示外键约束)
-- =============================================-- 由于存在外键约束,需要按特定顺序删除数据
DELETE FROM `consume` 
WHERE `clsNo` IN (SELECT `clsNo` FROM `class` WHERE `cNo` IN (SELECT `cNo` FROM `course`)
);DELETE FROM `class` 
WHERE `cNo` IN (SELECT `cNo` FROM `course`);DELETE FROM `course`;-- =============================================
-- ⚠️ 高级操作:处理外键约束
-- =============================================-- 临时禁用外键检查(用于特殊操作)
SET FOREIGN_KEY_CHECKS = 0;-- 删除课程表(演示用)
DROP TABLE IF EXISTS `course`;-- 重新启用外键检查
SET FOREIGN_KEY_CHECKS = 1;-- =============================================
-- 🎉 数据库脚本执行完成
-- =============================================-- 📝 说明:
-- 1. 使用反引号保护标识符
-- 2. 添加了完整的注释说明
-- 3. 规范了数据类型和约束
-- 4. 使用友好的格式和emoji图标
-- 5. 包含完整的外键约束处理

感谢阅读,期待你的关注。

http://www.dtcms.com/a/439081.html

相关文章:

  • 广东东莞自己建站教程做网站设计的公司叫什么
  • 网站站外引流怎么做西安动力无限网站建设
  • 智能交通顶刊TITS论文分享|一种可以提高车辆轨迹预测精度和稳定性的稀疏时空Transformer模型
  • 福州专业网站设计团队seo排名优化公司
  • 进入WSL2 Ubuntu环境的完整指南
  • 龙岗网站建设公司效果河南建筑官网首页
  • 网站前置审批怎么进网站源码的后台
  • 电商网站建设考试题网站头部优化文字怎么做
  • php做网站有哪些好处界面官方网站
  • perror与stderr:错误处理的“诊断专家“与“急诊通道“
  • 小公司做网站需要什么条件绿茶直播
  • import-route direct 概念及题目
  • K230基础-图像绘制
  • 鲜花网站设计php 企业网站 后台图片上传
  • 帮人做非法网站oa信息化管理系统平台
  • 君正T32开发笔记之固件烧写
  • MCP模型上下文协议实战:使用TKinter构建桌面AI助手
  • 网络培训视频如何快速完成网站优化托管方案文库
  • 从0-1建设数据仓库
  • 【玩泰山派】4、制作ubuntu镜像-(5)总结制作镜像流程
  • 红帽Linux-1.访问命令行
  • 永久免费建个人网站优秀个人网站推荐
  • 网站首页html制作代码深圳龙岗网络推广公司
  • 深圳公司建立网站建筑业大数据服务平台官网
  • 在电脑上哪里可以做网站向百度提交网站
  • vs做网站怎么上百度手机极速版
  • Spark专题-第三部分:性能监控与实战优化(3)-数据倾斜优化
  • gRPC从0到1系列【15】
  • 网站制作软件手机医疗机构网站模板
  • No021:具身智能——当DeepSeek拥有物理身体的全新纪元