学生成绩管理系统

作为《学生成绩管理系统》项目开发组程序员,需完成数据库创建、数据表创建及相关数据操作。文中给出系统的E - R图、逻辑和物理数据模型及数据表字段名定义,还包含相关代码。

一、概要

作为《学生成绩管理系统》项目开发组的程序员,请按要求完成:
数据库的创建;
数据表的创建;
相关数据的操作。

二、实施步骤及内容

《学生成绩管理系统》的E-R图如图2.25所示,逻辑数据模型如图2.26所示,物理数据模型如图2.27所示, 数据表字段名定义见表2.11。请按要求完成数据库创建、数据表创建和数据操作任务:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、代码

-- 创建数据库表
CREATE TABLE IF NOT EXISTS T_student_info(
	Student_no CHAR(6) NOT NULL COMMENT '学号,主键',
	Student_name VARCHAR(20) NOT NULL COMMENT '姓名',
	Sex CHAR(2) NOT NULL COMMENT '性别' DEFAULT '男',
	Birth DATETIME NOT NULL COMMENT '出生年月',
	Enter_date DATETIME NOT NULL COMMENT '入学年份',
	Address VARCHAR(50) COMMENT '家庭住址',
	PRIMARY KEY(Student_no)
)ENGINE=INNODB DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS T_course_info(
	Course_no CHAR(8) NOT NULL COMMENT '课程编号,主键',
	Course_name VARCHAR(50) NOT NULL COMMENT '课程名',
	Credit TINYINT NOT NULL COMMENT '学分',
	Classhour TINYINT NOT NULL COMMENT '学时',
	PRIMARY KEY(Course_no)
)ENGINE=INNODB DEFAULT CHARSET=utf8;



CREATE TABLE IF NOT EXISTS T_student_scores(
	Student_no CHAR(6) NOT NULL COMMENT '学号',
	Course_no CHAR(8) NOT NULL COMMENT '课程编号',
	Ordinary_scores FLOAT COMMENT '平时成绩',
	End_scores FLOAT COMMENT '期末成绩',
	Total_scores FLOAT COMMENT '总评成绩',
	PRIMARY KEY(Student_no,Course_no)
)ENGINE=INNODB DEFAULT CHARSET=utf8;

INSERT INTO T_student_scores VALUES('102011','1020001',60,80,70);
INSERT INTO T_student_scores VALUES('102012','1020002',50,90,80);
INSERT INTO T_student_scores VALUES('102013','1020003',40,90,80);

-- 插入数据
INSERT INTO T_student_info VALUES('102011','刘德华','男','1991-03-23','2009-09-01','湖南长沙劳动东路168号');
INSERT INTO T_student_info VALUES('102012','张三','男','1990-03-23','2009-09-01','湖南长沙劳动东路169号');
INSERT INTO T_student_info VALUES('102013','李四','男','1992-03-13','2009-09-01','湖南长沙劳动东路170号');

INSERT INTO T_course_info VALUES('1020001','高等数学',25,64);
INSERT INTO T_course_info VALUES('1020002','大学语文',25,64);
INSERT INTO T_course_info VALUES('1020003','英语',25,64);

-- 查询出1991年出生的学生信息
SELECT * FROM T_student_info WHERE YEAR(Birth)='1991'

-- 查询选修了“高等数学”的学生姓名、平时成绩、期末成绩、总评成绩
SELECT Student_name,Ordinary_scores,End_scores,Total_scores FROM T_student_info INNER JOIN T_student_scores
ON T_student_info.`Student_no` = T_student_scores.`Student_no`
WHERE T_student_scores.`Course_no` = 
(SELECT Course_no FROM T_course_info WHERE Course_name='高等数学')

SELECT Student_name,Ordinary_scores,End_scores,Total_scores FROM T_student_info,T_student_scores,T_course_info
WHERE T_student_info.`Student_no` = T_student_scores.`Student_no`
AND T_student_scores.`Course_no` = T_course_info.`Course_no`
AND Course_name = '高等数学'

-- 创建视图查询学生的学号、姓名、课程名、总评成绩
CREATE VIEW Stu_cou_sco_view
AS
SELECT T_student_info.`Student_no`,Student_name,Course_name,Total_scores FROM T_student_info,T_student_scores,T_course_info
WHERE T_student_info.`Student_no` = T_student_scores.`Student_no`
AND T_student_scores.`Course_no` = T_course_info.`Course_no`

SELECT * FROM Stu_cou_sco_view

-- 统计每门课程的选课人数、最高分、平均分,并将统计结果保存在表T_total中
CREATE TABLE IF NOT EXISTS T_total(
	Course_no VARCHAR(50),
	People_num INT,
	Max_scores FLOAT,
	Avg_scores FLOAT
)ENGINE=INNODB DEFAULT CHARSET=utf8;

INSERT INTO T_total
SELECT Course_no AS '课程编号' ,COUNT(*) AS '人数' ,MAX(Total_scores) AS '最高分',AVG(Total_scores) AS '平均分'
FROM T_student_scores
GROUP BY Course_no



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值