数据库-MySQL 实战项目——学生选课系统数据库设计与实现(附源码)

article/2025/8/15 7:44:04

一、前言

        该项目非常适合MySQL入门学习的小伙伴,博主提供了源码、数据和一些查询语句,供大家学习和参考,代码和表设计有什么不恰当还请各位大佬多多指点。

所需环境

  1.  MySQL可视化工具:navicat;
  2.  数据库:MySql 5.7/8.0等版本均可;

需求: 

     学生选课系统主要完成某学校教务系统中选课功能:

  1. 学生信息管理
  2. 教师信息管理
  3. 课程信息管理
  4. 教室信息管理
  5. 选课管理 

备注:

  1. 每个学生可选多门课程,每门课程有多个学生。
  2. 每位教师教授一门课程。
  3. 每个班级有多个学生,每个学生对应一个班级。

        其中:

                学生包含以下属性:学号、学生姓名、学生性别。

                教师包含以下属性:教工号、教师姓名、教师职称。

                课程包含以下属性:课程号、课程名、课程学分。

                教室包含以下属性:班级编号、学生人数、班级名称。

                选课包含以下属性:学生成绩。

二、E-R图

eedbf2009cfb413a9326774d130c2956.png

三、关系模式

 课程(课程号、课程名、课程学分、教工号)

教师(教工号、教师姓名、教师职称)

选课(课程号学号、成绩)

学生(学号、学生姓名、学生性别、班级编号)

班级(班级编号、学生人数、班级名称)

 备注:

        下划线为主键,红色字为外键;

四、数据表的设计

表1:课程

字段

数据类型

长度

备注

 

课程号

varchar

50

主键

 

课程名

varchar

50

Not.null

 

课程学分

int

3

 

 

教工号

varchar

50

外键

 

 表2:教师

字段

数据类型

长度

备注

 

教工号

varchar

50

主键

 

教师姓名

varchar

50

Not.null

 

教师职称

varchar

50

 

 

 表3:学生

字段

数据类型

长度

备注

 

学号

varchar

50

主键

 

学生姓名

varchar

50

Not.null

 

学生性别

varchar

50

 

 

班级编号

varchar

50

外键

 

表4:班级

字段

数据类型

长度

备注

 

班级编号

varchar

50

主键

 

班级名称

varchar

50

Not.null

 

学生数量

int

5

 

 

表5:选课

字段

数据类型

长度

备注

 

学号

varchar

50

主键

 

课程号

varchar

50

主键

 

成绩

int

5

Not.null

 

五、创建数据库 

Create database 学生选课系统 character set utf8 collate utf8_general_ci
-- 在新建查询选择前选择数据库
use 学生选课系统  

 创建各实体表:

1. 老师

create table 老师
(
教工号 varchar(50) primary key,
教师姓名 varchar(50) not null,
教师职称 varchar(50)
)

2. 班级

create table 班级
(
班级编号 varchar(50) primary key,
班级名称 varchar(50) not null,
学生数量 int(5)
)

3. 课程

create table 课程
(
课程号 varchar(50) PRIMARY key,
课程名 varchar(50) not null,
课程学分 int(3),
教工号 char(5),
CONSTRAINT FK教工号 FOREIGN KEY (教工号) REFERENCES 老师(教工号)
)

4. 学生

create table 学生
(
学号 varchar(50) PRIMARY key,
学生姓名 varchar(50) not null,
学生性别 varchar(50),
班级编号 varchar(50),
CONSTRAINT FK 班级编号 FOREIGN KEY (班级编号) REFERENCES 班级(班级编号)
)

5. 选课

create table 选课
(
学号 varchar(50),
课程号 varchar(50),
成绩 int(5) not null,
PRIMARY KEY(学号, 课程号)
)

插入数据:

1. 老师 

INSERT INTO 老师 VALUES ('J001','wuping','教授');
INSERT INTO 老师 VALUES ('J002','zhangshuai','讲师');
INSERT INTO 老师 VALUES ('J003','liguoqiang','副教授');
INSERT INTO 老师 VALUES ('J004','wangni','讲师');
INSERT INTO 老师 VALUES ('J005','liubo','讲师');

2. 班级 

INSERT INTO 班级 VALUES ('B001','软件1班','30');
INSERT INTO 班级 VALUES ('B002','软件2班','29');
INSERT INTO 班级 VALUES ('B003','软件3班','31');
INSERT INTO 班级 VALUES ('B004','嵌入式1班','32');
INSERT INTO 班级 VALUES ('B005','嵌入式2班','33');
INSERT INTO 班级 VALUES ('B006','嵌入式3班','30');

3. 课程 

INSERT INTO 课程 VALUES ('K001','数据库','4','J002');
INSERT INTO 课程 VALUES ('K002','java','4','J003');
INSERT INTO 课程 VALUES ('K003','python','6','J001');
INSERT INTO 课程 VALUES ('K004','英语','2','J005');
INSERT INTO 课程 VALUES ('K005','数学','8','J004');

4. 学生 

INSERT INTO 学生 VALUES ('X005','zhangsan','男','B002');
INSERT INTO 学生 VALUES ('X004','lisi','女','B003');
INSERT INTO 学生 VALUES ('X003','wangwu','男','B004');
INSERT INTO 学生 VALUES ('X002','liuyu','男','B005');
INSERT INTO 学生 VALUES ('X001','chenqi','男','B001');
INSERT INTO 学生 VALUES ('X006','wangxin','女','B001');
INSERT INTO 学生 VALUES ('X007','yangli','男','B002');
INSERT INTO 学生 VALUES ('X008','qinyan','女','B006');

5. 选课 

INSERT INTO 选课 VALUES ('X001','K002','82');
INSERT INTO 选课 VALUES ('X001','K003','78');
INSERT INTO 选课 VALUES ('X002','K005','90');
INSERT INTO 选课 VALUES ('X002','K003','74');
INSERT INTO 选课 VALUES ('X003','K001','66');
INSERT INTO 选课 VALUES ('X003','K002','75');
INSERT INTO 选课 VALUES ('X004','K005','95');
INSERT INTO 选课 VALUES ('X004','K004','83');
INSERT INTO 选课 VALUES ('X005','K001','75');
INSERT INTO 选课 VALUES ('X005','K004','87');
INSERT INTO 选课 VALUES ('X007','K001','79');

六、基础查询命令

1. 查看xxx表所有信息:

   select * from xxxx  *表示全部,查看xxx的全部数据

select * from 老师

6070cacb904342cf826da15511cb7f34.png

2. 查询表的某个或多个字段:

  select field1,field2…… from tablenname(表名)

select 学号,学生姓名 from 学生

d90ce149f24343df85cf9dada136eedd.png

3. 查询满足条件的信息:

  and满足所有条件。or满足其中任何一个条件就可以

select * from 学生 where 学生性别 ='男' and 班级编号 ='B002' and 学生姓名 = 'yangli'
7e5806468eb74b0688dde76724199382.png

4. 区间查询:

  从选课中选取分数在80~90的(可取端点)

select * from 选课 where 成绩 between 80 and 90

03c159ed95c344f985fe01994d917eba.png

5. 模糊查询: 

  在选课中查询分数以9开头的信息,%9%是查询信息中含有9的。%表示模糊数据

select * from 选课 where 成绩 like '9%'

73da1f12138648b0875caf09e39cfd50.png

 6. count()统计函数:

  从学生表格中统计B002班的有几个

select count(*) from 学生 where 班级编号 ='B002'

0673d2bce977456ea8611c1875cab0c5.png

7. sum()求和函数 :

  从选课表格中计算分数和。

select sum(成绩) from 选课

903d878c05d843a496945bcc793ffbe7.png

8. avg()平均函数:

   求所有学生的平均成绩。

select avg(成绩) from 选课

a6fdc5a191364e9e88a1c3672f5810af.png

9. max()最大函数 :

  从选课表格中查询课程号K003课的最高分。

select max(成绩) from 选课 where 课程号 ='K003'

4e0ba256f64341c693ce46c763930d09.png

10. min()最小值函数:

  从选课表格中查询课程号K003课的最低分

select min(成绩) from 选课 where 课程号 ='K003'

ba23121e4e194c4f848d51fe952ff82d.png

七、答疑解惑 

        代码有问题或需要其他的查询语句,都可以随时评论留言或联系博主。

        还多请各位小伙伴多多点赞支持,你们的支持是我最大的动力。

博主V:18884281851

谢谢各位的支持~~

 


http://www.hkcw.cn/article/lRSOrmMrLf.shtml

相关文章

中小型企业大数据平台全栈搭建:Hive+HDFS+YARN+Hue+ZooKeeper+MySQL+Sqoop+Azkaban 保姆级配置指南

目录 背景‌一、环境规划与依赖准备‌1. 服务器规划(3节点集群)2. 系统与依赖‌3. Hadoop生态组件版本与下载路径4. 架构图二、Hadoop(HDFS+YARN)安装与配置‌1. 下载与解压(所有节点)2. HDFS高可用配置3. YARN资源配置‌4. 启动Hadoop集群三、MySQL安装与Hive元数据配置…

从 0~1 保姆级 详细版 PostgreSQL 数据库安装教程

PostgreSQL数据库安装 PostgreSQL官网 【PostgreSQL官网】 | 【PostgreSQL安装官网_Windows】 安装步骤 step1: 选择与电脑相对应的PostgreSQL版本进行下载。 step2: 双击打开刚才下载好的文件。 step3: 在弹出的setup窗口中点击 …

【Spring Boot】网页五子棋项目中遇到的困难及解决方法

目录 一、HikariPool-1 - Starting异常二、Invalid bound statement (not found)异常三、The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary异常四、The server time zone value时区报错异常五、补充知识点…

上海启动3-6岁儿童近视监测 推进视力健康关口前移

6月1日,第30个全国“爱眼日”上海市儿童青少年眼健康主题活动发布了上海市儿童青少年近视率最新监测情况。2024年上海市6-18岁儿童青少年近视率比2023年下降1.5个百分点。为推进近视预防关口前移,上海市眼病防治中心启动了“低龄儿童近视监测与干预服务项目”,聚焦3-6岁近视…

郑钦文首次晋级法网8强 刷新个人最佳战绩

北京时间6月1日晚,在法网女单1/8决赛中,8号种子郑钦文以7-6(5)、1-6、6-3战胜19号种子俄罗斯选手萨姆索诺娃,职业生涯首次跻身法网女单八强,刷新个人赛会最佳战绩。这也是中国选手时隔14年再次闯进法网八强。首盘比赛中,郑钦文两次先被破发但迅速回破,双方战至抢七。最终…

新势力5月销量榜解读 零跑三连冠

零跑汽车再次夺得新势力月销量冠军。6月1日,各大造车新势力发布了5月份的交付数据。零跑汽车连续三个月稳居榜首,鸿蒙智行和理想汽车分别位列第二、第三,销量均重回4万辆。整体来看,5月车市进一步回暖,尤其是极氪获得了最高的环比增速,达37.74%。5月,零跑汽车全系交付再…

江苏城市联赛:南通队4-0客胜泰州队 多点开花完胜对手

北京时间6月1日,江苏城市联赛第3轮比赛中,泰州队主场迎战南通队。下半场,郭凯楠单刀过掉门将后推射破门,为南通队首开纪录。随后张浩楠边路超车后传球,文俊秀破门扩大比分。接着程鑫门前补射得手,进一步巩固了南通队的领先优势。比赛尾声,李贤成过掉对手后单刀推射再下一…

当地回应上海迪士尼游客扭打 因拍照起冲突

5月31日,有网友发布视频称,在上海迪士尼发生了一起情侣和一家三口之间的冲突事件,引发了广泛关注。视频中可以看到双方在现场扭打,周围的人纷纷上前劝阻。据了解,该事件发生在5月31日,地点并非排队区域,而是游客自由打卡拍照的地方。情侣和一家三口因拍照问题产生了争执…

上海迪士尼有游客打架 警方通报 因拍照引发冲突

近日,一段上海迪士尼度假区内情侣与带孩子的夫妇发生争执的视频引起了网友们的广泛关注。根据浦东公安分局的通报,5月31日傍晚6点左右,警方接到报警称迪士尼乐园内有人打架。经初步调查,事件起因是22岁的闫某某与女友在拍照时,36岁的刘某某夫妻的女儿进入了拍摄画面,双方…

生涯首次!郑钦文晋级法网8强 三盘激战创佳绩

北京时间6月1日晚,法网女单第四轮较量中,中国选手郑钦文与俄罗斯选手萨姆索诺娃展开激烈对决。经过三盘大战,郑钦文以2比1胜出,成功晋级八强,创造了个人在法网的最佳战绩。郑钦文和萨姆索诺娃此前曾交手5次,郑钦文以2胜3负略处下风。不过,在红土场上两人唯一的一次交手中…

苏超为何“比赛第一友谊第十四” 城市荣耀与纯粹竞技

足球世界中,许多充满底蕴比拼与恩怨情仇的高手对决,被冠以“德比”之名享誉全球。例如意大利米兰德比、西班牙国家德比、英格兰曼彻斯特德比以及阿根廷河床和博卡青年超级德比等,无不令球迷激动不已,话题度极高。然而在2025年初夏,首届江苏城市足球联赛舞台上,“十三太保…

百名“奇迹宝宝”庆六一 抗癌妈妈的希望之光

“我想当航天员,飞向太空。”“我想当白衣天使,治愈患者。”“我想有个美丽的花园。”31日,在北京大学人民医院综合行政楼10层的小会议厅里,孩子们的欢声笑语充满了整个空间。他们都是在妈妈抗癌过程中出生的“奇迹宝宝”,这次聚会是为了迎接即将到来的“六一”国际儿童节…

上海警方通报迪士尼游客打架 因拍照引发冲突

近日,一段上海迪士尼度假区内两对游客发生纠纷的视频引起了广泛关注。事件发生在5月31日18时左右,浦东公安分局接到报警称迪士尼乐园内有人打架。经初步调查,22岁的闫某某与女友在拍照时,因36岁的刘某某夫妻的女儿进入拍摄画面而引发争执,随后双方发生了肢体冲突。冲突导致…

法网:斯瓦泰克艰难逆转莱巴金娜 豪取25连胜

6月1日,在法国网球公开赛女单第四轮比赛中,四届赛会冠军、5号种子斯瓦泰克以2-1(1-6、6-3、7-5)逆转战胜12号种子莱巴金娜,本赛季第三次击败对手,实现了法网25连胜。波兰名将因此获得了430分和44万欧元奖金。她已连续六年闯入法网八强,并且这是她第11次跻身大满贯八强。…

姆巴佩去年采访称不希望巴黎赢欧冠 未来再夺桂冠

北京时间6月1日,巴黎圣日耳曼在欧冠决赛中以5-0战胜国际米兰,夺得冠军。这一胜利让人们重新关注姆巴佩去年12月份接受CANAL+采访时的言论。当时,姆巴佩被问及“巴黎能否赢得欧冠冠军”的问题时,他表示自己并不希望巴黎立即拿到欧冠奖杯。姆巴佩在那次采访中谈到了许多场内场…

一舟载千年的中式浪漫具象化了 从古至今的文化传承

端午节活动中最具节日气氛的莫过于赛龙舟。“舟”在中国历史悠久,不仅是一种交通工具,还承载着丰富的文化内涵。我国古代造船技艺可以追溯到新石器时代。浙江跨湖桥遗址出土的一艘距今8000年的马尾松独木舟被称为“中华第一舟”。这艘独木舟采用“火焦法”凿制而成,证明了刳…

液态神经网络(Liquid Neural Networks,LNN ):动态时序建模的生物学革命——MIT用微分方程重构AI的时变认知系统

一、通俗解读:当神经网络学会“流动” 1.1 核心思想突破 ​​液态神经网络(Liquid Neural Networks, LNN)​​ 的核心创新在于:​​将静态神经网络转化为由微分方程驱动的动态系统​​,其革命性体现在: ​…

AI 编码新王炸,Augment (SWE-bench 冠军)免费登场,专治复杂大项目,硬刚 Cursor?

🍹 Insight Daily 🪺 Aitrainee | 公众号:AI进修生 Hi,这里是Aitrainee,欢迎阅读本期新文章。 AI 圈又 来了个新玩家 :Augment Code,专治大项目、复杂代码库。 提供 200K 上下文 token、持…

技术演进中的抗拒与共生:全栈工程师视角看AI焦虑

无论是想要学习人工智能当做主业营收,还是像我一样作为开发工程师但依然要了解这个颠覆开发的时代宠儿,都有必要了解、学习一下人工智能。 近期发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,入行门槛低&#x…

探展2024世界人工智能大会之合合信息扫描黑科技~

文章目录 ⭐️ 前言⭐️ AIGC古籍修复文化遗产焕新⭐️ 高效的文档图像处理解决方案⭐️ AIGC扫描黑科技一键全搞定⭐️ 行业级的大模型加速器⭐️ 结语 ⭐️ 前言 大家好,我是 哈哥(哈哥撩编程) ,这次非常荣幸受邀作为专业观众参…