Bootstrap

数据库课程设计 高校学籍管理系统

高校学籍管理系统

目录

高校学籍管理系统

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 学生与班级

106b86710701454795390edbaa0f3310.png

图1 学生-班级E-R图

3.3.2 学生与专业

7da038476f664d3da192aea9c14060a6.png

图2 学生-专业E-R图

3.3.3 学生与院系

9e5dffc87ed94eb087319502d53e6b42.png

图3 学生-院系E-R图

3.3.4 学生与课程

492d663b7d3040ad922bdd53e8bef310.png

图4 学生-课程E-R图

3.3.5 学生与成绩

7be4aeee69dc472db71968a93e53327a.png

图5 学生-成绩E-R图

3.3.6 学生与奖惩

39125cb8066b475aa8d93b4cbb012baf.png

图6 学生-奖惩E-R图

3.3.7 班级与专业

8d3e831a9f1d465daa2564115939b171.png

图7 班级-专业E-R图

3.3.8 班级与院系

b3bd7c0c6ab54a37951c3b71cfffec43.png

图8 班级-院系E-R图

3.3.9 课程与院系

d50301b1f70e4979bd1f18c0910c7ae2.png图9 课程-院系E-R图

3.3.10 专业与院系

ade48fde60e04e0695a2224f0cb82d34.png

图10 专业-院系E-R图

 3.3.11 课程与成绩

be51750cd61c4009bdedb1292949876b.png

图11 课程-成绩E-R图 

 3.4 全局E-R图

8b304c548fa04d89ba83abe7aec5217c.png图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

ff80aa99742d4e96a029e39d7e535ae3.png

                           图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;

运行结果如下(以部分图为例):

15233db26b304acbbbf1f1ef956926a1.png图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;

运行结果如下(以部分图为例):

6c295e1c0f604fb4ba5beb8ebdb0dc78.png

图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;

5615f788f7be467f97ffbeed57779a3b.png

图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 ;

如下图:

b2c25e2a69d647f28fc794ee38ed771e.png

图17 触发器insert_stu的创建 

验证该操作:

未增加时,MYSQL语句和结果如图:

select *  from Class where Cname = '软工一班';

3f17ad8fbf2b43dfbbe8daf52100c641.png

 图18 验证操作1

增加时,MYSQL语句和结果如图:

insert into Student values('221073075','普鹏磊','男','RG1','RJ11','RJ111','汉族',19,'2003-09-08','宇宙沈丘','2022-09-01');

select * from Class where Cname = '软工一班';

91269cbff6d540599a44432b23beb919.png

图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$;

21344d9bf4924ad8b31804a519cb57fe.png

图20 触发器delete_stu的创建

验证该操作:未删除时,MYSQL语句和结果如图:

 select * from Class where Cname = '软工一班';

7830be57edba43f28ff72f1cbe3d64f6.png

图21 验证操作1

删除时,MYSQL语句和结果如图:

delete from Student where name = '普鹏磊';

select * from Class where Cname = '软工一班';

 75e7d8058f9f4c24b08e43fb186490ee.png

图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 ;

结果如下图

754bf0b1dbfc470789c0ba3e476da8a1.png

图23 触发器update_stu的创建

验证该操作:未修改时,MYSQL语句和结果如图

  select * from Student where name = '王铁柱';

  select * from Class where Cname = '软工一班';

  select * from Class where Cname = '英语一班';

22a6fa76a6194c14a80b4f857cf95d14.png

图24 验证操作 1

1b27918b8e53490986e5a50e490700ef.png

图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 = '英语一班';

ce35ae33f3674f54be4587ed3b083018.png图26 验证操作33010c8c7b0924f3eb65f36c0f2363c7f.png

图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 ;

验证,查询王铁柱这个学生,如图:

1c320024f43a4079bfa75897e455aeff.png

图28 验证存储操作 

6.访问数据库

6.1 数据查询操作

     (1)查询年龄小于20、班级为软工一班的学生的基本信息

MYSQL语句:

select * from Student where age < 20 and Cid = 'RG1';

运行结果:

2d048fcb776d4e7ab4346334063d3ce1.png

图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;

运行结果如图(部分为例):

5676047e432545a5b0daf37e1dc9ba76.png

图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 = '三好学生';

148435c311ed496994e2ce1570785f57.png图31 查询操作3

6.2 数据更新操作

(1)将家庭地址为“江苏南京”的学生的家庭地址更改为“中国沈丘”

    MYSQL语句:

update Student set location = '中国沈丘' where location = '江苏南京';

af3747a604d44dfeb2b1671f3693066d.png图32 未更新前

14742d4c3e68446f81edda1cc0896d22.png

图33 更新后

(2)将课程“数据库”的学时更改为99

MYSQL语句:

update Course set Kperiod = 99 where Kname = '数据库' ;

如图所示:

e6dfbeee9c9a4f11a64eeae9831dfe59.png图34 未更新前

9601a816b631495992b65e972a699f3d.png

图35 更新后

6.3 数据维护操作

     (1)插入操作:将新数据插入到数据库表中,相关mysql语句如下:

     

  insert into Student values('221073074','xw','男','RG1','RJ11','RJ111','汉族',19,'2004-11-03','河南周口','2022-09-01');

结果下如图所示:

dae75a973fd54daba6eb8ec696416587.png

图36 维护操作之插入

     (2)删除操作:从数据库表中删除数据,相关mysql语句如下:

delete from student where id='221073074';

781db4cd49c94a6eb19ab393ca13ebb1.png

图37 维护操作之删除

        (3)数据备份与恢复,终端进入mysql安装目录下的bin目录下,即D:\LeStoreDownload\MySQL Server 5.7\bin下运行下列语句:  

     mysqldump -u root -p course -R>221075075普鹏磊

       mysql -u root -p ppl <221075075普鹏磊

7.总结

       通过这次课程设计,我更加深入地了解了数据库有关知识的基本概念和一些基本的操作并体会到了流程和数据的重要性,进行数据库设计之前,需要对开发的系统进行分析,明确数据的需求,并进行可行性研究,只有这样,才能设计出合理、高效的数据库结构。

      遇到的问题和解决方法:在课程设计过程中,我遇到了许多问题。例如,在画E-R图时,我总是出现缺少某一实体,而且在画全局E-R图时,实体与实体之间的关系容易搞混,但在练习和查阅资料后,我逐渐掌握了画E-R图的技巧和方法。此外,我在创建基本表时,先创建了student表导致出错,但院系号、专业号、班级号是学生表(student)的外键,因此应该先创建院系表(department)、专业表(major)、班级表(calss)再创建学生表(student),通过这个错误,我意识到了在数据库设计中,外键的约束是非常重要的。“ON DELETE CASCADE    ON UPDATE CASCADE,”在级联删除时,前面的ON DELETE CASCADE加上了逗号; 在创建存储过程时,一开始使用了join  on进行连接,但是出现报错,后面加入limit 1仍然不行,经过查询网上的资源后解决了这个问题。

       在课程设计过程中,我遇到了许多不懂的问题。但是,通过上网查询资料、查看参考书询问同学等,我逐渐解决了这些问题。同时,也使我对常用画图软件Visio、Word文档编辑等操作掌握得更加熟练。总之,这次课程设计让我更加巩固了数据库的基础知识,锻炼了自己的动手能力!

8.参考文献

[1] 数据库:数据库设计(需求,设计,运行,维护)-CSDN博客

[2] 王珊.《数据库系统概论》(第6版) 高等教育出版社

[3] 文心一言 (baidu.com)

[4] 高校学籍管理系统【数据库设计】2020.7.26_高效学籍管理系统-CSDN博客

到此,课程设计完结。注意排版问题,参考文献我这里写的不仅有参考书,包括网址及其他

71c74064013d4bd58ec1d476b35c479a.jpg

;