(写在前面:下面的内容为本人在学习数据库原理及应用课程时的课程设计,由于本人能力有限,如在文档中发现有不正确的地方恳请各位读者批评指正,谢谢。)
设计内容:
建立高校学籍管理系统,实现学生信息、班级、院系、专业等的管理;实现课程、学生成绩信息管理; 实现学生的奖惩信息管理;创建规则用于限制性别项只能输入“男”或“女”;创建视图查询各个学生的学号、姓名、班级、专业、院系;创建存储过程查询指定学生的成绩单;创建触发器当增加、删除学生和修改学生班级信息时自动修改相应班级学生人数;建立数据库相关表之间的参照完整性约束。
根据以上叙述完成下列要求:
①针对以上的需求利用面向对象分析方法进行需求分析。
②设计数据库的概念结构。
③设计数据库的逻辑结构。
④设计数据库的物理结构。
⑤在SQL SERVER中建立数据库。
⑥根据查询和统计的需要,建立数据库中的视图。
⑦根据数据操作需要,建立数据库中的存储过程。
⑧建立数据库的备份作业,要求在每天2:00备份数据库。
⑨根据题目的需求,写出完成各个功能操作的SQL语句
摘 要
本课程设计围绕高校学籍管理系统展开,通过SQL server平台,旨在建立一个高效、准确的数据库管理系统以实现对学生信息、班级、院系、专业、课程、成绩及奖惩信息的综合管理。通过对各个功能模块的测试与验证,确保了系统的稳定性和功能的正确性。本次课程设计成功构建了高校学籍管理系统数据库,提高了数据库设计与开发能力,为高校学籍管理提供了有效的解决方案。
关键词:高校学籍管理系统;SQL server;数据库管理系统
目 录
随着信息技术的不断发展,高校对学生学籍管理的要求越来越高。传统管理方式效率低下、易出错,难以满足现代高校对学籍管理的需求。因此,开发一个高效、准确的高校学籍管理系统成为当务之急。
本课题旨在设计并实现学生信息、班级、院系、专业等的管理; 课程、学生成绩信息管理; 学生的奖惩信息管理;性别项只能输入“男”或“女”;查询各个学生的学号、姓名、班级、专业、院系;查询指定学生的成绩单;增加、删除学生和修改学生班级信息时自动修改相应班级学生人数等功能,以提高学籍管理的效率和质量。
(1)学生需求
学生一般利用此系统进行学号密码登录,查询自己的成绩、课程信息等。
(2)管理员(教师)需求
对学生、课程等许多信息进行处理,包括对学生学籍信息的增删改查,以及对课程信息的修改或者系统出现问题时的一些相关维护。
学生信息管理:包括学生的学号、姓名、性别、班级、专业、院系等信息的录入、查询、修改和删除。
班级管理:实现班级的创建、查询、修改和删除,以及班级学生人数的统计。
院系管理:对院系信息进行管理,包括院系名称的录入、查询、修改和删除。
专业管理:管理专业信息,如专业名称、所属院系等。
课程管理:课程的添加、查询、修改和删除。
成绩管理:记录学生的课程成绩,可进行成绩查询和统计。
奖惩管理:记录学生的奖惩情况。
根据需求分析结果,学生,班级,专业,院系,课程,成绩,奖惩可建模为基本实体集。
各基本实体集的属性定义如下:
(1)学生实体集。其属性有:(学号,姓名,性别,班级编号,院系编号,民族,年龄,出生日期,入学时间)
(2)班级实体集。其属性有:(班级编号,专业编号,班级名称,人数)
(3)院系实体集。其属性有:(院系编号,院系名称)
(4)专业实体集。其属性有:(专业编号,院系编号,专业名称)
(5)课程实体集。其属性有:(课程号,课程名,学分,学时)
(6)课程成绩实体集。其属性有:(课程号,学号,成绩)
(7)奖惩实体集。其属性有:(奖惩编号,学号,奖惩名称)
(1)学生与班级的关系:一个学生只能属于一个班级,而一个班级可以有多个学生,因此学生与班级之间是多对一的关系。通过学生表中的班级编号属性与班级表中的班级编号主键进行关联,实现学生对班级的归属。
(2)班级与专业的关系:一个班级只能属于一个专业,而一个专业可以有多个班级,所以班级与专业之间也是多对一的关系。班级表中的专业编号属性作为外键,与专业表中的专业编号主键相关联,明确班级所属的专业。
(3)专业与院系的关系:一个专业只能属于一个院系,而一个院系可以有多个专业,故专业与院系之间同样是多对一的关系。专业表中的院系编号属性作为外键,与院系表中的院系编号主键相连接,表明专业所属的院系。
(4)学生与成绩的关系:一个学生可以有多门课程的成绩,而一门课程的成绩可以对应多个学生,所以学生与成绩之间是一对多的关系。成绩表中的学号属性作为外键,与学生表中的学号主键相关联,同时成绩表中的课程编号属性与课程表中的课程编号主键相关联,确定学生在特定课程上的成绩。
(5)学生与奖惩的关系:一个学生可以有多个奖惩记录,而一个奖惩记录只对应一个学生,因此学生与奖惩之间是一对多的关系。奖惩表中的学号属性作为外键,与学生表中的学号主键相关联,记录学生的奖惩情况。
图3.1 学生实体属性图
图3.2 班级实体属性图
图3.3 院系实体属性图
图3.4 专业实体属性图
图3.5 课程实体属性图
图3.6 成绩实体属性图
图3.7 奖惩实体属性图
图3.8 全局E-R图
图3.9 数据库关系图
(1)学生Student表:由学生关系实体集转化而来。
学生(学号,姓名,性别,年龄,民族,籍贯,出生日期,入学时间,班级编号,院系编号)
(2)班级Class表:由班级实体集转化而来。
班级(班级编号,班级名称,人数,院系编号)
(3)院系(Depart)表:由院系实体集转化而来。
院系(院系编号,院系名称)
(4)专业Major表:由专业实体集转化而来。
专业(专业编号,专业名称,院系编号);
(5)课程Course表:由课程实体集转化而来。
课程(课程号,课程名,学分,学时)
(6)成绩Grade表:由成绩实体集转化而来。
课程成绩(课程编号,学号,成绩)
(7)奖惩(Award_punish) 表: 奖惩实体集转化的关系模式。
奖惩(奖惩编号,学号,奖惩名称)
(1)创建学生基本信息视图,实现查询各个学生的学号、姓名、班级编号、专业编号、院系编号
(2)创建学生成绩视图,实现查询各个学生的学号、姓名、课程、成绩
(3)创建学生奖惩视图,实现查询各个学生的学号、姓名、班级、专业、院系、奖惩号、奖惩名、奖惩方案
本数据库的物理结构设计主要针对逻辑模式的存储结构,主要任务是依据逻辑结构设计的结果,确定数据库模式在DBMS中存储的逻辑结构。由逻辑结构设计阶段得到的高校学籍管理系统数据库的关系数据库模式,在SQL Server 2022环境下,使用T-SQL定义学籍管理数据库的三级模式结构,包括数据库名称,各关系模式的名称,属性的名称、数据类型、长度,该属性是否允许为空值、是否是主码、是否为索引项及约束条件等,确定视图名称、属性以及索引名称等。其中,名称的定义要符合标识符的命名规则,为了便于数据库的操作和维护,一般用英文单词代替,名称命名使用中文。表5.1~表 5.7详细列出了学籍管理数据库中各关系模式的设计情况。
表5.1 学生表
列名 | 备注 | 数据类型 | 长度 | 表级约束 |
Sno | 学号 | char | 12 | 主键 |
Sname | 姓名 | char | 8 | not nu |
Ssex | 性别 | char | 2 | 非空 |
Sage | 年龄 | smallint | 非空 | |
Snation | 民族 | varchar | 20 | 非空 |
Sorigin | 籍贯 | varchar | 30 | 非空 |
Sbirth | 出生日期 | date | 非空 | |
Stime | 入学时间 | date | 非空 | |
Cno | 班级编号 | char | 8 | 外键 |
Dno | 院系编号 | char | 8 | 外键 |
表5.2 班级表
列名 | 备注 | 数据类型 | 长度 | 表级约束 |
Cno | 班级编号 | char | 8 | 主键 |
Cname | 班级名称 | varchar | 50 | 非空 |
Cnumber | 班级人数 | int | 非空 | |
Mno | 专业编号 | char | 8 | 外键 |
表5.3 院系表
列名 | 备注 | 数据类型 | 长度 | 表级约束 |
Dno | 院系编号 | char | 8 | 主键 |
Dname | 院系名称 | varchar | 30 | 非空 |
表5.4 专业表
列名 | 备注 | 数据类型 | 长度 | 表级约束 |
Mno | 专业编号 | char | 8 | 主键 |
Mname | 专业名称 | varchar | 30 | 非空 |
Dno | 院系编号 | char | 8 | 外键 |
表5.5 课程表
列名 | 备注 | 数据类型 | 长度 | 表级约束 |
Kno | 课程编号 | char | 8 | 主键 |
Kname | 课程名称 | char | 20 | 非空 |
Kperiod | 学时 | smallint | 非空 | |
Kcredit | 学分 | smallint | 非空 |
表5.6 成绩表
列名 | 备注 | 数据类型 | 长度 | 表级约束 |
Kno | 课程编号 | char | 8 | 主键(外键) |
Sno | 学号 | char | 16 | 主键(外键) |
Ggrade | 成绩 | int |
表5.7 奖惩表
列名 | 备注 | 数据类型 | 长度 | 表级约束 |
APno | 奖惩编号 | char | 16 | 外键 |
Sno | 学号 | vchar | 12 | 非空 |
APname | 奖惩名称 | varchar | 30 | 非空 |
创建高校学籍管理系统数据库
create database 学籍管理;
go
use 学籍管理;
go
1.创建学生表
create table Student(
Sno char(12) primary key,
Sname char(8) not null,
Ssex char(2) not null,check(Ssex='男' or Ssex='女'),
Sage smallint not null,
Snation varchar(20) not null,
Sbirth date not null,
Sorigin varchar(30) not null,
Stime date not null,
Dno char(8) not null,
Cno char(8) not null,
foreign key (Dno) references Major(Dno),
foreign key (Cno) references Class(Cno))
2.创建班级表
create table Class(
Cno char(8) not null primary key,
Cname varchar(50) not null,
Cnumber smallint not null,
Mno char(8) not null,
foreign key (Mno) references Major(Mno));
3.创建专业表
create table Major(
Mno char(8) primary key,
Mname varchar(30) not null,
Dno char(8) not null,
foreign key (Dno) references Depart(Dno));
4.创建院系表
create table Depart(
Dno char(8) not null primary key,
Dname varchar(30) not null);
5.创建课程表
create table Course(
Kno char(8) not null primary key,
Kname varchar(20) not null,
Kperiod smallint not null,
Kcredit smallint not null);
6.创建成绩表
create table Grade(
Kno char(8) not null,
Sno char(12) not null,
Ggrade int,
primary key(Sno,Kno),
foreign key(Sno) references Student(Sno),
foreign key(Kno) references Course(Kno));
7.创建奖惩表
create table Award_Punish(
APno char(8) not null primary key,
Sno char(12) not null,
APname varchar(30) not null,
foreign key (Sno) references Student(Sno));
6.2 相关功能测试
图6.1 创建视图查询学生信息
图6.2 视图检验
图6.3 创建视图查询学生成绩信息
图6.4 视图检验
图6.5创建存储过程
图6.6 对存储过程检验
图6.7 创建增加学生信息触发器
图6.8 增加学生信息
(说明:为保护本文中出现的真实姓名等信息,本张截图对其进行了打码处理,输入格式为“学号+姓名+性别+年龄+民族+出生日期+地址+入学年份+班级编号+系别编号”)
图6.9 结果检验
图6.10 创建删除学生信息触发器
图6.11 删除学生信息
图6.12 结果检验
图6.13 创建信息修改触发器
例:将张三同学的班级改为2301
图6.14 信息修改
设置每日2:00进行备份
图6.15 建立备份作业步骤1
图6.16 建立备份作业步骤2
图6.17 建立备份作业步骤3
图6.18 创建管理员(教师)角色并授权
图6.19 创建学生角色并授权
通过本次课程设计,成功构建了高校学籍管理系统的数据库,实现了学生信息、班级、院系、专业、课程、成绩和奖惩信息的管理。在设计过程中,遇到了很多问题,最终在网上寻找解决方案以及和同学探讨成功解决了问题。例如,使用data数据类型时,输入的格式应为Y-M-D格式,除此以外的格式是无法成功输入到表中的;对数据库进行每日备份,不会操作,经过查阅教材和网络查询,找到了解决方法,并成功按要求设置了数据库备份操作。通过本次一周的数据库课程设计,深入理解了数据库设计的各个阶段,掌握了 SQL Server 的使用方法,提高了数据库设计与开发的能力,以及对流程图绘图软件和word的熟练使用。同时,也认识到在实际开发中需要充分考虑用户需求和数据的完整性、一致性,以确保系统的稳定运行。
[1] 肖海蓉,任民宏.数据库原理与应用(第2版)[M].北京:清华大学出版社,2023
[2] 万常选,廖国琼,吴京慧,等,数据库系统原理与设计[M].3版,北京:清华大学出版,2023. [3] 崔巍,王晓波,车蕾.数据库应用与设计[M].北京:清华大学出版社,2021.
[4] 肖海蓉,任民宏.数据库技术与应用[M].成都:西南财经大学出版社,2021.
[5] 周汉平.数据库设计及其应用程序开发[M].北京:清华大学出版社,2020.