目录

  • 1.概述
    • 1.1数据库设计选题背景
    • 1.2功能要求
    • 1.3系统功能解决的问题
  • 2.需求分析
  • 3.概念结构设计
    • 3.1抽象出系统的实体
    • 3.2设计实体属性图
    • 3.3全局E-R图
  • 4.逻辑结构设计
  • 5.数据库物理设计与实施
    • 5.1数据库关系图
    • 5.2表的创建
  • 6.数据操作要求及实现
    • 6.1数据查询
    • 6.2视图
    • 6.3触发器
    • 6.4存储过程

说明:本博客为本人期末课程设计,可供学习、借鉴和参考,不可转载。文章最后有百度网盘链接。

1.概述

1.1数据库设计选题背景

随着信息化时代的到来,人们的生活发生了巨大的变化,信息化时代带给了人们更多的处理数据的方式。学生学籍管理是一个非常繁琐且复杂的工作,其中的原因就是涉及到大量的学生学籍数据信息,这样庞大的一个数据群管理起来就想当麻烦,在传统的数据信息管理模式下,工作效率不仅低下,而且数据在存储、更新、删改等操作上会出现错误。基于以上出现的问题,开发一个学籍管理系统就显得很重要。

1.2功能要求

一:实现学生信息、班级、院系、专业等的管理;

二:实现课程、学生成绩信息管理;

三:实现学生的奖惩信息管理;

四:建立数据库相关表之间的参照完整性约束。

五:创建规则用于限制性别项只能输入“男”或“女”;

六:创建视图查询各个学生的学号、姓名、班级、专业、院系;

七:创建触发器当增加、删除学生和修改学生班级信息时自动修改相应班级学生人数;

八:创建存储过程查询指定学生的成绩单;

1.3系统功能解决的问题

一:提高管理人员的工作效率。

二:对大量的数据信息进行统筹规划

三:降低处理数据信息时出现的错误率。

四:方便系统的后期维护。

2.需求分析

该高校学籍管理系统主要是实现对大学在校生的学籍信息的系统化管理,具体的功能涉及实现对学生的基本信息、班级、专业、院系等的查询、修改和删除等功能,同时也会实现课程、学生成绩信息管理、实现学生的奖惩信息管理。

同时该高校学籍管理系统要创建学生信息视图,具体实现如下:

一:创建学生基本信息视图,实现查询各个学生的学号、姓名、班级、专业、院系。

二:创建学生成绩视图,实现查询各个学生的学号、姓名、课程、成绩。

三:创建学生奖惩视图,实现查询各个学生的学号、姓名、班级、专业、院系、奖惩号、奖惩名、奖惩方案。

该高校学籍管理系统要创建触发器当增加、删除学生和修改学生班级信息时自动修改相应班级学生人数。

最后,该高校学籍管理系统要创建存储过程查询指定学生的成绩单

该学籍管理系统会对学生信息进行系统化管理,在数据和数据之间实现关联性,较大程度的满足用户需求。

3.概念结构设计

3.1抽象出系统的实体

根据设计学生管理系统的需要,可以抽象出以下实体:
         (1)学生信息
         (2)班级信息
         (3)专业信息
         (4)院系信息
         (5)课程信息
         (6)课程成绩信息
         (7)奖惩信息

3.2设计实体属性图

(1).学生实体属性图

(2).班级实体属性图

(3).专业实体属性图

(4).院系实体属性图

(5).课程实体属性图

(6).课程成绩实体属性图

(7).奖惩实体属性图

3.3全局E-R图

4.逻辑结构设计

关系数据模式
(1)学生(学号,姓名,性别,班级编号,专业编号,院系编号,民族,年龄,出生日期,家庭地址,入学时间)
(2)班级(班级编号,专业编号,院系编号,班级名称,人数)
(3)专业(专业编号,院系编号,专业名称)
(4)院系(院系编号,院系名称)
(5)课程(课程号,课程名,学分,学时)
(6)课程成绩(课程号学号,成绩)
(7)奖惩(奖惩号,学号,专业编号,院系编号,奖惩名称,奖惩方案)

5.数据库物理设计与实施

5.1数据库关系图

根据概念结构设计和逻辑结构的内容,可以将此学籍管理系统设计出7个表,分别为“Student表”、“Class表”、“Major表”、“Department表”、“Course表”、“Grader表”和“Award_punish表”。具体如下:
这7张表的数据库关系图如下:

5.2表的创建

1.Department表 (院系表)

列名 数据类型 约束 说明
Did varchar(30) primary key 院系编号
Dname varchar(30) not null 院系名称

2.Major表 (专业表)

列名 数据类型 约束 说明
Mid varchar(30) primary key 专业编号
Did varchar(30) foreign key 院系编号
Mname varchar(30) not null 专业名称

3.Class表 (班级表)

列名 数据类型 约束 说明
Cid varchar(30) primary key 班级编号
Mid varchar(30) foreign key 专业编号
Did varchar(30) foreign key 院系编号
Cname varchar(30) not null 班级名称
Cnumber int not null 班级人数

4.Student表 (学生表)

列名 数据类型 约束 说明
id varchar(30) primary key 学号
name varchar(30) not null 姓名
sex char(2) not null 性别
Cid varchar(30) foreign key 班级编号
Mid varchar(30) foreign key 专业编号
Did varchar(30) foreign key 院系编号
nation varchar(20) not null 民族
age int not null 年龄
birthday date not null 出生日期
location varchar(20) not null 家庭地址
enroll date not null 入学时间

5.Course表 (课程表)

列名 数据类型 约束 说明
kid varchar(30) primary key 课程编号
Kname varchar(30) not null 课程名称
Kcredit int not null 学分
Kperiod int not null 学时

6.Grade表 (课程成绩表)

列名 数据类型 约束 说明
Kid varchar(30) primary key 课程编号
id varchar(20) primary key 学号
Ggrade int not null 成绩

7.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) not null 奖惩名
Aproject varchar(100) not null 奖惩方案

6.数据操作要求及实现

6.1数据查询

1.查询年龄小于20的学生的基本信息,SQL语句如下:

  select * from Student where age < 20

查询结果如下图所示。

2.查询班级为“软工一班”,且家庭住址的省会为“河南”的学生基本信息,SQL语句如下:

 select * from Student where Cid = 'RG1' and location like '河南%'

查询结果如下图所示。

3.查询选修了“SJK3”课程的学生的学号、姓名、成绩,其中按照成绩从大到小的顺序排列,SQL语句如下:

select Student.id,name,Ggrade from Student,Grade
where Student.id = Grade.id and Grade.Kid = 'SJK3'
order by Ggrade desc

查询结果如下图所示。

4.查询选修“大学英语”课程所有学生的平均成绩,SQL语句如下:

select avg(Ggrade) 平均成绩 from Grade,Course
where Grade.Kid = Course.Kid
and Course.Kname = '大学英语'

查询结果如下图所示。

5.查询获得“三好学生”称号的学生的学号、姓名、专业编号、院系编号,SQL语句如下:

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

查询结果如下图所示。

6.将家庭地址为“江苏南京”的学生的家庭地址更改为“河南郑州”,SQL语句如下:

update Student set location = '河南郑州' where location = '江苏南京'

更改结果如下图所示。
                  更改前:

                  更改后:

7.将课程“大学英语"的学时更改为68,SQL语句如下:

update Course set Kperiod = 68 where Kname = '大学英语'

更改结果如下图所示。
                  更改前:

                  更改后:

8.删除学号为“”学生的奖惩信息,SQL语句如下:

delete from Award_punish where id = '201130321'

删除结果如下图所示。

删除前:

删除后:

6.2视图

1:创建学生基本信息视图,实现查询各个学生的学号、姓名、班级编号、专业编号、院系编号,SQL语句如下:

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

视图的执行结果如下:

2:创建学生成绩视图,实现查询各个学生的学号、姓名、课程、成绩,SQL语句如下:

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

视图的执行结果如下:

3:创建学生奖惩视图,实现查询各个学生的学号、姓名、班级、专业、院系、奖惩号、奖惩名、奖惩方案,SQL语句如下:

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

视图的执行结果如下:

6.3触发器

1.创建触发器,当增加学生班级信息时自动修改相应班级学生人数,SQL语句如下:

create trigger insert_stu
on Student for insert
asbegindeclare @cid varchar(30)select @cid=Cid from insertedupdate Class set Cnumber = Cnumber + 1 where Cid = @cid
end

在Student表中插入一条数据:

insert into Student values('201130332','陈思宇','男','RG1','RJ11','RJ111','汉族',20,'2001-02-03','海南文昌','2020-09-30')

执行结果如下:

2.创建触发器,当删除学生班级信息时自动修改相应班级学生人数,SQL语句如下:

create trigger delete_stu
on Student for delete
asbegindeclare @cid varchar(30)select @cid=Cid from deletedupdate Class set Cnumber = Cnumber - 1 where Cid = @cidend

在Student表中删除一条数据:

 delete from Student where name = '陈思宇'

执行结果如下:

3.创建触发器,当修改学生班级信息时自动修改相应班级学生人数,SQL语句如下:

create trigger update_stu
on Student for update
asbegindeclare @cid1 varchar(30)declare @cid2 varchar(30)--存放更新前的数据select @cid1=Cid from deleted--存放更新后的数据select @cid2=Cid from insertedupdate Class set Cnumber = Cnumber - 1 where Cid = @cid1update Class set Cnumber = Cnumber + 1 where Cid = @cid2end

在Student表中更改一条数据,将王小虎的班级“RG1”更改为“YY1”

update Student set Cid = 'YY1' where name = '王小虎'

执行结果如下:
         更改前:

更改后:

6.4存储过程

1.创建存储过程查询指定学生的成绩单,SQL语句如下:

create procedure pro_grade
@id varchar(30)=null,
@name varchar(30)=nullasif(@id is null or @name is null )begin print '请输入学号与姓名!'endelse if((select name from Student where id = @id) != @name or (select id from Student where name = @name) != @id )beginprint '输入有误!'endelsebeginselect Student.id,name,Kname,Ggradefrom Student,Grade,Coursewhere Student.id = Grade.idand Grade.Kid = Course.Kidand name = @nameendgo

执行结果如下:
        1.当未输入学号或姓名时,提示“请输入学号与姓名!”

2.当输入信息有误时,提示“输入有误!”

3.当输入正确的学号和姓名时,打印出该学生的成绩单。

完整数据库课程设计和源码文件:
链接:https://pan.baidu.com/s/1dzVXTMfNUcJblV81xb3g8g
提取码:xha8
原创不易,希望大家能给文章点个赞,再关注我一下,有了你的鼓励,优质文章不断更新哦。

高校学籍管理系统(SQL Server数据库课程设计)相关推荐

  1. 高校学籍管理系统 _数据库系统概论课程设计

    以下内容可且仅可供参考,如有错误欢迎指正. 设计要求 实现学生信息.班级.院系.专业等的管理: 实现课程.学生成绩信息管理: 实现学生的奖惩信息管理: 创建规则用于限制性别项只能输入"男&q ...

  2. 高校学籍管理系统 SQL Servre 数据库系统

    高校学籍管理系统 ** 一.课程设计的教学目的 ** 1.使学生掌握数据库的基本概念,结合实际的操作和设计,巩固课堂教学内容: 2.使学生掌握数据库系统的基本概念.原理和技术,将理论与实际相结合,应用 ...

  3. 停车场信息管理系统(SqlServer数据库课程设计)

    资源下载地址:https://download.csdn.net/download/sheziqiong/86775954 资源下载地址:https://download.csdn.net/downl ...

  4. 学校图书借阅管理系统,Mysql数据库课程设计期末作品或练手项目

    使用Navicat操作,未包含Java代码. 目录 一.课程设计的目的1 二.课程设计内容1 2.1课程设计功能分析说明1 2.2数据库需求分析1 2.2.1系统功能分析说明1 (1)信息需求分析1 ...

  5. 基于Java的GUI界面+SQL Server数据库课程信息管理系统

    登陆窗口: package 课程管理系统; import javax.swing.*; import java.awt.*; import java.awt.event.ActionListener; ...

  6. java 课程设计数据库_人事管理系统(java数据库课程设计)+SQL数据库

    [实例简介] 员工各种信息:包括员工的基本信息,如编号.姓名.性别.学历.所属部门.毕业院校.健康情况.职称.职务.奖惩等:员工各种信息的修改:对转出.辞退.退休员工信息的删除:按照一定条件,查询.统 ...

  7. 图书管理系统-GUI Mysql 数据库课程设计-更新版

    图书管理系统GUI 更新说明 之前的GUI经别人反馈,借书记录存在bug,其次缺少注销按钮,缺失还书功能. 因时间原因,除还书功能,大部分bug都已修复,注销按钮也增加了. 前言 环境:jdk1.8, ...

  8. sql server数据库课程设计分析

    课题:能源管理收费系统 系统功能的基本要求: (1)用户基本信息的录入:包括用户的单位.部门.姓名.联系电话.住址 : (2)用户水.电.气数据的录入(每个月的数据的录入): (3)水.电.气价格的管 ...

  9. c++课程设计——绘本之家信息管理系统(qt图形化工具,SQL server数据库)

    绘本之家管理系统 一.题目需求 开发一个"绘本之家"信息管理系统,分为三大管理模块,综合查询模块和统计分析模块. (1)绘本资料的管理 绘本信息包括:绘本编号.绘本名.作者.出版社 ...

  10. 【学习记录】第一章 数据库设计-《SQL Server数据库设计和开发基础篇视频课程》...

    一.课程笔记 1.1  软件开发周期 (1)需求分析阶段 分析客户的业务和数据处理需求. (2)概要设计阶段 设计数据库的E-R模型图,确认需求信息的正确和完整. /* E-R图:实体-关系图(Ent ...

最新文章

  1. 【微信小程序】登录功能实现及讲解(获取用户唯一标识)
  2. 1019.Line Painting(线段树 离散化)
  3. java用递归的方式写n_java-使用递归将其元素加起来为n的子集的列表
  4. Qomolangma实现篇(四):基本特性增强与多投事件系统
  5. AbstractListView源码分析9
  6. BSP和JSP里的UI元素ID生成逻辑
  7. Alibaba Nacos 介绍以及服务提供者工程接入nacos注册中心
  8. linux mysql删除用户权限_linuxmysql增加用户,删除用户,以及用户权限_MySQL
  9. iPhone XR 2再曝新配色:清新自然 是原谅的味道?
  10. 2016年5月26日晚上(妙味课堂js基础-2笔记二(DOM))
  11. Android 各层中日志打印功能的应用
  12. 企业舆情监测的意义是什么?为什么要做舆情监测?
  13. kindle电子书格式转换
  14. PHP面试技巧——如何准备电话面试?
  15. 搞事情 | 众编程语言齐聚密谋:如何推翻java的统治地位!
  16. SVN E200030: There are unfinished transactions detected
  17. this beta version of Typora is expired, please download and install a newer version.Typora
  18. 硬件描述语言(HDL)基础——过程块
  19. Spark全套知识体系,终于搞到了!
  20. 诺基亚智能手机未来仅采用Symbian和MeeGo系统

热门文章

  1. python写的 自定义连点器 的开发全过程(抢票、信息轰炸等、游戏连招等)——思路及解析【内附完整源码】
  2. ps保存psd后图层全没了_ps保存成psd格式后,再打开就是一张图片而不显图层,怎么办啊??急!!...
  3. 用WinRAR加密压缩文件
  4. 《穿越计算机的迷雾》第一版说明
  5. 《穿越计算机的迷雾》读书笔记五
  6. python二元函数图像在线绘制_使用python绘制二元函数图像的实例
  7. 黑客帝国“01”瀑布流C++
  8. 简单的个人发展规划java,java个人职业发展方向规划范文
  9. Chrome安装Octotree插件
  10. 计算机启用远程桌面连接失败,开启局域网远程桌面连接不上怎么办