数据库课程设计 高校学籍管理系统 |
您所在的位置:网站首页 › 学生学籍管理系统数据结构 › 数据库课程设计 高校学籍管理系统 |
高校学籍管理系统
目录 高校学籍管理系统 1.概述 1.1 选题背景 1.2 开发环境 1.3 开发目的和任务 1.4 开发意义 1.5 文章组织结构 2.需求分析 2.1 用户需求 2.2 功能需求 3.概念结构设计 3.1 抽象出系统的实体 3.2 实体间的联系 3.3 设计分E-R图 3.4 全局E-R图 4.逻辑结构设计 4.1 关系数据模式 4.2 数据字典 4.3 视图设计 5.数据库物理设计与实施 5.1 创建数据库 5.2 建立和管理基本表 5.3 建立和管理视图 5.4 创建触发器 5.5 创建存储过程 6.访问数据库 6.1 数据查询操作 6.2 数据更新操作 6.3 数据维护操作 7.总结 8.参考文献 声明:该数据库课程设计报告为本人期末课程作业,禁止转载。 主页:噗-噗 灵魂n连问: 1.数据库的定义是什么? 2.什么是视图?视图的作用是什么?你为何要创建视图?视图属于那种三级模式?二级映像是什么? 3.什么是E-R图?什么是实体属性图?如何合并E-R图?合并为全局E-R图时解决哪些冲突?E-R图的三要素是什么?画出E-R图的步骤是什么? 4.转换为关系模式的原则是什么?多对多联系如何转化为关系模式的?关系模式如何写? 5.数据库设计有哪些阶段?查询(包括多表)、插入、删除、更新的基本语法是啥? 6.三种完整性是什么?他们的定义?主键的定义与作用?什么是外码、码、超码?规范化的过程? 7.如何进行概念结构设计?如何进行逻辑结构设计? 以上为答辩过程中的提问的一些部分基础问题...... 注意:图如何放、如何标注?表格如何标注?sql语句运行的顺序是什么?摘要如何写?你开发的是数据库还是系统? 摘要: 高校学籍管理系统在现今的教育环境中具有不可或缺的重要性。本次数据库课程设计致力于构建一个稳健的学籍管理系统数据库,旨在提升学校的运营效率和教学质量。我们采用关系型数据库来存储和管理核心数据,包括学生信息、课程安排、成绩记录以及奖惩情况等。 在实现这一目标的过程中,我们首先通过E-R图对实体及其联系进行了概念结构设计,确保了数据的内在一致性。具体来说,我们设计了以下几个关键数据库表:学生信息表、课程表、成绩表等,并确保了这些表之间的主键和外键关系,从而维护了数据的完整性;并设计视图、分析出关系数据模式进行逻辑结构设计。该数据库不仅支持对学生信息的增删查改操作,还实现了课程的安排与成绩的精确查询,以及对奖惩信息的有效管理。为了确保系统的性能,我们还采取了多种优化措施,如创建视图、优化查询语句、使用触发器和存储过程等。 通过这次课程设计,我们不仅提升了数据库的设计和管理能力,还增强了应用程序的开发技能。高校学籍管理系统的应用将极大地提高高校的管理效率、简化维护流程、降低运营成本,并提高数据准确性。此外,我们还学习了如何运用先进的软件开发工具和数据库来实现实际的应用系统。 关键词:高校学籍管理系统;关系型数据库;学生信息;课程安排;成绩记录;奖惩情况;E-R图;数据完整性;查询优化;触发器;存储过程;管理效率;维护流程;运营成本;数据准确性。 1.概述 1.1 选题背景随着互联网的发展,传统的高校学籍管理系统存在效率低下、易出错等问题,已无法满足现代教育的需求。作为学校,除了育人,就是育知,高校学籍管理系统是计算机化是整个学校教务管理中的重要一部分,介于它的重要性,学生学籍管理系统的开发与应用就逐渐提入议程,并占着越来越重要的份量。高校学籍管理是学校管理的重要组成部分,涉及到学生的入学、选课、考试、成绩等多个环节。因此,开发一个高效、稳定的高校学籍管理系统,可以大大提高学籍管理的效率和质量。 1.2 开发环境1.Windows 11系统 2.Navicat Premium 12 3.MySQL Serve 5.7 1.3 开发目的和任务高校学籍管理系统开发的目的是为了提高学校学生学籍管理工作的效率,实现学生信息关系的科学化和规范化。通过该系统,学校可以对学生各种信息进行日常管理,如查询、修改等,针对这些要求设计了学生学籍管理系统。其任务主要包括:收集并整理学生个人信息、成绩记录、奖惩记录等;提供查询和修改功能;实现学籍变动管理等任务。 1.4 开发意义高校学籍管理对高校来说是不可或缺的一部分,它对于学校管理人员、授课教师或者学生都非常重要,所以高校学籍管理系统应该能够为用户提供足够的信息和信息的查询手段。开发高校学籍管理系统不仅仅能提高管理效率、提升服务质量更多的是为了增强安全性,保障师生权益。 1.5 文章组织结构本课程设计主要分为八个部分,每一部分组织结构如下: 第一部分 概述。这一部分主要介绍了开发高校学籍管理系统背景、目的、开发环境以及任务,简要说明了开发该系统的重要意义。 第二部分 需求分析。这一部分根据实际情况进行需求分析,主要给出用户需求、功能需求以及其他需求。 第三部分 概念结构设计。这一部分根据要求首先抽象出该管理系统的实体,然后分析实体与实体之间的联系,再根据抽象出的实体、实体间的联系画出E-R图及总E-R图。 第四部分 逻辑结构设计。这一部分主要根据Navicat12中的关系数据模型以及总E-R图写出关系模式及数据字典。 第五部分 数据库物理设计与实施。这一部分主要介绍了数据库的设计以及为实现某些功能而创建视图、触发器、存储过程。 第六部分 访问数据库。给出了数据库的具体功能实现过程,选取了具有代表性的功能进行介绍并进行数据库的维护。 第七部分 总结。这部分主要写了我在编写数据库课程设计中遇到的问题、难点以及解决方案,及在本次课程设计中的收获。 第八部分 参考文献。最后一部分给出了我在写课程设计时使用到的参考书、资料、网站等。 2.需求分析 2.1 用户需求(1)学生需求 学生一般利用此系统进行学号密码登录,查询自己的成绩、课程信息等 (2)管理员需求 管理员权限最大,可以对学生、课程等许多信息进行处理,包括对学生学籍信息的增删改查,以及对课程信息的修改或者系统出现问题时的一些相关维护。 2.2 功能需求本高校学籍管理系统具体功能有实现对学生的基本信息、班级、专业、院系等的查询、修改和删除等功能以及对课程、学生成绩信息管理、实现学生的奖惩信息管理等,具体实现如下: (1)实现学生信息、班级、院系、专业等的管理; (2)实现课程、学生成绩信息等的管理; (3)实现学生的奖惩信息的管理; (4)创建规则用于限制性别项只能输入“男”或“女”; (5)创建视图查询各个学生的学号、姓名、班级、专业、院系。 (6)给管理员、学生不同的权限,提高数据安全性; (7)创建触发器,存储过程,防止数据不一致; (8)创建存储过程查询指定学生的成绩单。 3.概念结构设计 3.1 抽象出系统的实体根据高校学生学籍管理系统的需求,可以抽象出以下实体: (1)学生信息 (2)班级信息 (3)专业信息 (4)院系信息 (5)课程信息 (6)成绩信息 (7)奖惩信息 3.2 实体间的联系(1)学生与班级:一个学生属于一个班级,一个班级有多个学生,所以是 1对多的关系。 (2)学生与专业:一个学生属于一个专业,一个专业有多个学生,所以是 1对多的关系。 (3)学生与院系:一个学生属于一个院系,一个院系有多个学生,所以是1对多的关系。 (4)学生与课程:一个学生选修一门或多门课程,同时课程可被多个学生选择,所以是多对多的关系。 (5)学生与成绩:一个学生的每门课程对应一个成绩,所以是1对1的关系。 (6)学生与奖惩:一个学生可能获得一个或多个奖惩,每个奖惩记录只属于 一个学生,所以是1对多的关系。 (7)班级与专业:一个班级属于一个专业,一个专业有多个班级,所以是1对多的关系。 (8)班级与院系:一个班级属于一个院系,一个院系有多个班级,所以是1对多的关系。 (9)专业与院系:一个专业属于一个院系,一个院系有多个专业,是1对多 (10)课程与成绩:课程成绩属于一个或多个学生,一个学生有一个课程成绩,所以是1对多的关系。 3.3 设计分E-R图3.3.1 学生与班级 图1 学生-班级E-R图 3.3.2 学生与专业 图2 学生-专业E-R图 3.3.3 学生与院系 图3 学生-院系E-R图 3.3.4 学生与课程 图4 学生-课程E-R图 3.3.5 学生与成绩 图5 学生-成绩E-R图 3.3.6 学生与奖惩 图6 学生-奖惩E-R图 3.3.7 班级与专业 图7 班级-专业E-R图 3.3.8 班级与院系 图8 班级-院系E-R图 3.3.9 课程与院系 图9 课程-院系E-R图 3.3.10 专业与院系 图10 专业-院系E-R图 3.3.11 课程与成绩 图11 课程-成绩E-R图 3.4 全局E-R图图12 全局E-R图 4.逻辑结构设计 4.1 关系数据模式(1)学生(学号,姓名,性别,班级号,专业号,院系号,民族,年龄,出生日期,家庭地址,入学时间) (2)班级(班级号,专业号,院系号,班级名称,人数) (3)专业(专业号,院系号,专业名称) (4)院系(院系号,院系名称) (5)课程(课程号,课程名,学分,学时) (6)课程成绩(课程号,学号,成绩) (7)奖惩(奖惩号,学号,专业号,院系号,奖惩名称,奖惩方案) 4.2 数据字典表1 学生数据字典 属性名 存储代码 类型 长度 备注 学号 id varchar 20 学生号 姓名 name varchar 20 学生姓名 性别 sex char 2 学生性别 班级号 Cid varchar 30 学生所在班级号 专业号 Mid varchar 30 学生所属专业号 院系号 Did varchar 30 学生所在院系号 民族 nation varchar 20 学生所属民族 年龄 age int 学生的年龄 出生日期 birthday date 学生的出生日期 家庭地址 location varchar 20 学生的家庭地址 入学时间 enrol date 学生的入学时间 表2 院系数据字典 属性名 存储代码 类型 长度 备注 院系号 Did varchar 30 院系编号 院系名称 Dname varchar 30 院系名称 表3 专业数据字典 属性名 存储代码 类型 长度 备注 专业号 Mid varchar 30 专业编号 院系号 Did varchar 30 院系编号 专业名称 Mname varchar 30 专业名称 表4 班级数据字典 属性名 存储代码 类型 长度 备注 班级号 Cid varchar 30 班级编号 专业号 Mid varchar 30 专业编号 院系号 Did varchar 30 院系编号 班级名称 Cname varchar 30 班级名称 班级人数 Cnumber int 班级人数 表5 课程数据字典 属性名 存储代码 类型 长度 备注 课程号 Kid varchar 30 课程编号 课程名称 Kname varchar 30 课程名称 学分 Kcredit int 该课程的学分 学时 Kperiod int 该课程的学时 表6 成绩数据字典 属性名 存储代码 类型 长度 备注 课程号 Kid varchar(30) 30 课程编号 学号 id varchar(20) 20 学号 成绩 Ggrade int 成绩 表7 奖惩数据字典 属性名 存储代码 类型 长度 备注 奖惩号 Aid varchar 20 奖惩号 学号 id varchar 20 学号 专业号 Mid varchar 30 专业编号 院系号 Did varchar 30 院系编号 奖惩名称 Aname varchar 30 奖惩名称 奖惩方案 Aproject varchar 100 奖惩方案 4.3 视图设计(1)创建学生基本信息视图,实现查询各个学生的学号、姓名、班级编号、专业编号、院系编号 (2)创建学生成绩视图,实现查询各个学生的学号、姓名、课程、成绩 (3)创建学生奖惩视图,实现查询各个学生的学号、姓名、班级、专业、院系、奖惩号、奖惩名、奖惩方案 5.数据库物理设计与实施 5.1 创建数据库创建数据库,数据库名为course 图13 数据库的创建 相关MySQL语句为: create database course; use course; 5.2 建立和管理基本表5.2.1 student表的创建 表8 student表 列名 数据类型 约束 说明 id varchar(20) primary key 学号 name varchar(20) 姓名 sex char(2) 性别 Cid varchar(30) foreign key 班级编号 Mid varchar(30) foreign key 专业编号 Did varchar(30) foreign key 院系编号 nation varchar(20) 民族 age int 年龄 birthday date 出生日期 location varchar(20) 家庭地址 enrol date 入学时间 相关MYSQL语句: CREATE TABLE Student( id VARCHAR(20) PRIMARY KEY , name VARCHAR(20) , sex CHAR(1) CHECK(sex IN('男','女')), 改为CHAR(1),存储单个字符 Cid VARCHAR(30) , Mid VARCHAR(30) , Did VARCHAR(30) , nation VARCHAR(20) , age INT , birthday DATE , location VARCHAR(20) , enrol DATE , FOREIGN KEY (Cid) REFERENCES Class (Cid) ON DELETE CASCADE /*当删除Class表中元组时,级联删除Student表中相应的元组*/ ON UPDATE CASCADE, /*当更新Class表中元组时,级联更新Student表中相应的元组*/ FOREIGN KEY (Mid) REFERENCES Major (Mid) ON DELETE NO ACTION /*当删除Major表中的元组造成与Student表不一致时,拒绝删除*/ ON UPDATE NO ACTION, /*当更新Major表中的元组造成与Student表不一致时,拒绝更新*/ FOREIGN KEY (Did) REFERENCES Department (Did) ON DELETE NO ACTION /*当删除Department 中的元组造成与Student表不一致时,拒绝删除*/ ON UPDATE NO ACTION /*当更新Department 中的元组造成与Student表不一致时,拒绝更新*/ );5.2.2 department表 表9 department表 列名 数据类型 约束 说明 Did varchar(30) primary key 院系编号 Dname varchar(30) 院系名称 相关MYSQL语句: create table Department( Did varchar(30) primary key, Dname varchar(30) );5.2.3 Major表 表10 major表 列名 数据类型 约束 说明 Mid varchar(30) primary key 专业编号 Did varchar(30) foreign key 院系编号 Mname varchar(30) 专业名称 相关MYSQL语句: create table Major( Mid varchar(30) primary key , Did varchar(30) , Mname varchar(30) , foreign key (Did) references Department (Did) on delete cascade /*当删除Department表中元组时,级联删除Major表中相应的元组*/ on update cascade /*当更新Department表中Did时,级联更新Major表中相应的元组*/ );5.2.4 Class表 表11 class表 列名 数据类型 约束 说明 Cid varchar(30) primary key 班级编号 Mid varchar(30) foreign key 专业编号 Did varchar(30) foreign key 院系编号 Cname varchar(30) 班级名称 Cnumber int 班级人数 相关MYSQL语句: create table Class( Cid varchar(30) primary key , Mid varchar(30) , Did varchar(30) , Cname varchar(30) , Cnumber int not null, foreign key (Did) references Department (Did) on delete cascade /*当删除Department表中元组时,级联删除Class表中相应的元组*/ on update cascade, /*当更新Department表中Did时,级联更新Class表中相应的元组*/ foreign key (Mid) references Major (Mid) on delete no action /*当删除Major表中的元组造成与Class表不一致时,拒绝删除*/ on update no action /*当更新Major表中的元组造成与Class表不一致时,拒绝更新*/ );5.2.5 Course表 表12 course表 列名 数据类型 约束 说明 Kid varchar(30) primary key 课程编号 Kname varchar(30) 课程名称 Kcredit int 学分 Kperiod int 学时 相关MYSQL语句: create table Course( Kid varchar(30) primary key , Kname varchar(30) , Kcredit int , Kperiod int );5.2.6 Grade表 表13 grade表 列名 数据类型 约束 说明 Kid varchar(30) primary key 课程编号 id varchar(20) primary key 学号 Ggrade int 成绩 相关MYSQL语句: create table Grade( Kid varchar(30) , id varchar(20) , Ggrade int , primary key(Kid,id), foreign key (Kid) references Course (Kid) on delete cascade /*当删除Course 表中元组时,级联删除Grade表中相应的元组*/ on update cascade, /*当更新Course 表中元组时,级联更新Grade表中相应的元组*/ foreign key (id) references Student (id) on delete cascade /*当删除Student 表中元组时,级联删除Grade表中相应的元组*/ on update cascade /*当更新Student 表中元组时,级联更新Grade表中相应的元组*/ );5.2.7 Award_punish表 表14 award_punish表 列名 数据类型 约束 说明 Aid varchar(20) primary key 奖惩号 id varchar(20) foreign key 学号 Mid varchar(30) foreign key 专业编号 Did varchar(30) foreign key 院系编号 Aname varchar(30) 奖惩名称 Aproject varchar(100) 奖惩方案 相关MYSQL语句: create table Award_punish( Aid varchar(20) primary key , id varchar(20) , Mid varchar(30) , Did varchar(30) , Aname varchar(30) , Aproject varchar(100) , foreign key (id) references Student (id) on delete cascade /*当删除Student 中元组时,级联删除Award_punish表中相应的元组*/ on update cascade, /*当更新Student 中元组时,级联更新Award_punish表中相应的元组*/ foreign key (Mid) references Major (Mid) on delete no action /*当删除Major 中的元组造成与Award_punish表不一致时,拒绝删除*/ on update no action, /*当更新Major 中的元组造成与Award_punish表不一致时,拒绝更新*/ foreign key (Did) references Department (Did) on delete no action /*当删除Department中的元组造成与Award_punish表不一致时,拒绝删除*/ on update no action /*当更新Department 表中的元组造成与Award_punish表不一致时,拒绝更新*/ ); 5.3 建立和管理视图(1)创建学生基本信息视图,实现查询各个学生的学号、姓名、班级编号、专业编号、院系编号,MYSQL语句: create view A_Student(id,name,Cname,Mname,Dname) as select id,name,Cname,Mname,Dname from Student,Class,Major,Department where Class.Did = Department.Did and Class.Mid = Major.Mid and Student.Did = Department.Did and Student.Mid = Major.Mid with check option;运行结果如下(以部分图为例): 图14 学生基本信息视图 (2)创建学生成绩视图,实现查询各个学生的学号、姓名、课程、成绩,MySQL语句如下: create view B_Grade(id,name,Kname,Ggrade) as select Student.id,name,Kname,Ggrade from Student,Grade,Course where Student.id = Grade.id and Grade.Kid = Course.Kid with check option;运行结果如下(以部分图为例): 图15 学生成绩视图 (3)创建学生奖惩视图,实现查询各个学生的学号、姓名、班级、专业、院系、奖惩号、奖惩名、奖惩方案,MySQL语句如下: Create view C_Award_punish (id,name,Cname,Mname,Dname,Aid,Aname,Aproject) as select Student.id,name,Cname,Mname,Dname,Aid,Aname,Aproject from Student,Class,Major,Department,Award_punish where Student.id = Award_punish.id and Award_punish.Mid = Major.Mid and Award_punish.Did = Department.Did and Class.Did = Department.Did and Class.Mid = Major.Mid with check option;图16 学生奖惩视图 5.4 创建触发器(1)创建触发器,当增加学生班级信息时自动修改相应班级学生人数,MySQL语句如下: DELIMITER $ CREATE TRIGGER insert_stu AFTER INSERT ON Student FOR EACH ROW BEGIN UPDATE Class SET Cnumber = Cnumber + 1 WHERE Cid = NEW.Cid; END $ DELIMITER ;如下图: 图17 触发器insert_stu的创建 验证该操作: 未增加时,MYSQL语句和结果如图: select * from Class where Cname = '软工一班';图18 验证操作1 增加时,MYSQL语句和结果如图: insert into Student values('221073075','普鹏磊','男','RG1','RJ11','RJ111','汉族',19,'2003-09-08','宇宙沈丘','2022-09-01'); select * from Class where Cname = '软工一班';图19 验证操作2 (2)创建触发器,当删除学生班级信息时自动修改相应班级学生人数,MySQL语句如下: DELIMITER $ CREATE TRIGGER delete_stu AFTER DELETE ON Student FOR EACH ROW BEGIN UPDATE Class SET Cnumber = Cnumber - 1 WHERE Cid = OLD.Cid; END$;图20 触发器delete_stu的创建 验证该操作:未删除时,MYSQL语句和结果如图: select * from Class where Cname = '软工一班';图21 验证操作1 删除时,MYSQL语句和结果如图: delete from Student where name = '普鹏磊'; select * from Class where Cname = '软工一班';
图22 验证操作2 (3)创建触发器,当修改学生班级信息时自动修改相应班级学生人数,MySQL语句如下: DELIMITER $ CREATE TRIGGER update_stu AFTER UPDATE ON Student FOR EACH ROW BEGIN UPDATE Class SET Cnumber = Cnumber - 1 WHERE Cid = OLD.Cid; -- 增加新班级的学生人数 UPDATE Class SET Cnumber = Cnumber + 1 WHERE Cid = NEW.Cid; END$ DELIMITER ;结果如下图 图23 触发器update_stu的创建 验证该操作:未修改时,MYSQL语句和结果如图 select * from Student where name = '王铁柱'; select * from Class where Cname = '软工一班'; select * from Class where Cname = '英语一班';图24 验证操作 1 图25 验证操作2 删除时,MYSQL语句和结果如图: update Student set Cid = 'YY1' where name = '王铁柱'; select * from Student where name = '王铁柱'; select * from Class where Cname = '软工一班'; select * from Class where Cname = '英语一班';图26 验证操作3 图27 验证操作4 5.5 创建存储过程创建存储过程查询指定学生的成绩单 相关MYSQL语句如下: DELIMITER $ CREATE PROCEDURE pro_grade( IN p_id VARCHAR(30), IN p_name VARCHAR(30) ) BEGIN IF p_id IS NULL OR p_name IS NULL THEN SELECT '请输入学号与姓名!'; ELSEIF ( (SELECT name FROM Student WHERE id = p_id) != p_name OR (SELECT id FROM Student WHERE name = p_name) != p_id) THEN SELECT '输入有误!'; ELSE SELECT Student.id, name, Kname, Ggrade FROM Student, Grade, Course WHERE Student.id = Grade.id AND Grade.Kid = Course.Kid AND name = p_name; END IF; END $ DELIMITER ;验证,查询王铁柱这个学生,如图: 图28 验证存储操作 6.访问数据库 6.1 数据查询操作(1)查询年龄小于20、班级为软工一班的学生的基本信息 MYSQL语句: select * from Student where age < 20 and Cid = 'RG1';运行结果: 图29 查询操作1 (2)查询选修了“SJK3”课程的学生的学号、姓名、成绩,其中按照成绩从大到小的顺序排列 MYSQL语句: select Student.id,name,Ggrade from Student,Grade where Student.id = Grade.id and Grade.Kid = 'SJK3' order by Ggrade desc;运行结果如图(部分为例): 图30 查询操作2 (3)查询获得“三好学生”称号的学生的学号、姓名、专业、院系MYSQL语句: select Student.id '学号',name '姓名',Mname '专业名称',Dname '院系名称' from Student,Major,Department,Award_punish where Student.id = Award_punish.id and Major.Mid = Award_punish.Mid and Department.Did = Award_punish.Did and Aname = '三好学生';图31 查询操作3 6.2 数据更新操作(1)将家庭地址为“江苏南京”的学生的家庭地址更改为“中国沈丘” MYSQL语句: update Student set location = '中国沈丘' where location = '江苏南京';图32 未更新前 图33 更新后 (2)将课程“数据库”的学时更改为99 MYSQL语句: update Course set Kperiod = 99 where Kname = '数据库' ;如图所示: 图34 未更新前 图35 更新后 6.3 数据维护操作(1)插入操作:将新数据插入到数据库表中,相关mysql语句如下: insert into Student values('221073074','xw','男','RG1','RJ11','RJ111','汉族',19,'2004-11-03','河南周口','2022-09-01'); 结果下如图所示: 图36 维护操作之插入 (2)删除操作:从数据库表中删除数据,相关mysql语句如下: delete from student where id='221073074';图37 维护操作之删除 (3)数据备份与恢复,终端进入mysql安装目录下的bin目录下,即D:\LeStoreDownload\MySQL Server 5.7\bin下运行下列语句: mysqldump -u root -p course -R>221075075普鹏磊 mysql -u root -p ppl |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |