学生成绩管理系统

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、概要

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

二、实施步骤及内容

《学生成绩管理系统》的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



### 学生成绩管理系统 ER 设计 学生成绩管理系统的实体关系(Entity-Relationship Diagram, ERD)是系统数据库设计的重要组成部分。它通过形化的方式描述了系统中的主要实体及其之间的关联关系。 #### 实体定义 以下是学生成绩管理系统中常见的几个核心实体: 1. **学生 (Student)** 描述学生的个人信息及相关属性,例如学号、姓名、性别、年龄等。 属性可能包括:`student_id`, `name`, `gender`, `age`, `class_id` 等[^1]。 2. **教师 (Teacher)** 教师负责教授课程并录入成绩。其基本信息通常包括工号、姓名、职称等。 属性可能包括:`teacher_id`, `name`, `title`, `department_id` 等。 3. **课程 (Course)** 表示学校开设的具体课程信息,如课程编号、名称、学分等。 属性可能包括:`course_id`, `name`, `credit_hours`, `teacher_id` 等。 4. **班级 (Class)** 记录不同年级和专业的班级信息。 属性可能包括:`class_id`, `grade`, `major` 等。 5. **成绩 (Grade)** 反映学生选修某门课程后的考试得分情况。这是一个典型的多对多关系连接表。 属性可能包括:`student_id`, `course_id`, `score` 等。 6. **部门 (Department)** 部门用于划分不同的院系或学科领域。 属性可能包括:`department_id`, `name` 等。 --- #### 关联关系 在 ER 中,这些实体之间存在多种类型的关联关系: 1. **学生与班级** 一名学生属于某个特定的班级,而一个班级可以有多个学生。这是“一对多”的关系。 2. **教师与课程** 一位教师可以讲授多门课程,一门课程也可能由多位教师共同授课。这构成了“多对多”的关系。 3. **学生与成绩** 成绩记录的是某一具体的学生在其所选修的一门课上的表现。“学生”和“成绩”形成了一种强依赖的关系,“成绩”作为中间表来维护这种联系。 4. **课程与成绩** 同样地,“课程”也同“成绩”建立了类似的纽带——即每条成绩数据都对应着唯一的课程实例。 --- #### ER 表示法 下面是一个简化版的 ER 设计方案: ```plaintext [ Student ] --< [ Grade ] >-- [ Course ] | | v v [ Class ] [ Teacher ] | v [ Department ] ``` 其中: - 方括号 `[ ]` 表示实体; - 连接线两端标注箭头方向说明两者间数量约束条件,比如 “一对一”,“一对多”。 --- #### 数据库表结构建议 为了便于实际操作,这里给出部分表格字段示意: ##### Students Table (`students`) | Column Name | Data Type | Description | |----------------|------------------|-------------------------------| | student_id | INT PRIMARY KEY | 唯一标识符 | | name | VARCHAR(50) | 名字 | | gender | CHAR(1) | 性别 ('M'/'F') | | age | TINYINT UNSIGNED | 年龄 | ##### Courses Table (`courses`) | Column Name | Data Type | Description | |---------------|-----------------|-----------------------------| | course_id | INT PRIMARY KEY | 主键 | | title | VARCHAR(100) | 科目名 | | credits | DECIMAL(3,1) | 学分数 | ##### Grades Table (`grades`) | Column Name | Data Type | Description | |---------------|----------------------|---------------------------| | grade_id | INT AUTO_INCREMENT | 自增主键 | | student_id | INT FOREIGN KEY | 外键指向 students 表 | | course_id | INT FOREIGN KEY | 外键指向 courses 表 | | score | FLOAT | 考试分数 | 以上仅为基本框架,可根据项目需求进一步扩展调整[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值