高校学籍管理系统

**

一、课程设计的教学目的

**
1、使学生掌握数据库的基本概念,结合实际的操作和设计,巩固课堂教学内容;
2、使学生掌握数据库系统的基本概念、原理和技术,将理论与实际相结合,应用现有的数据建模工具和数据库管理系统软件,规范、科学地完成一个小型数据库的设计与实现
3、把理论课与实验课所学内容做一综合,并在此基础上强化学生的实践意识、提高其实际动手能力。
基本功能要求:
实现学生信息、班级、院系、专业等的管理;
实现课程、学生成绩信息管理;
实现学生的奖惩信息管理;
创建规则用于限制性别项只能输入“男”或“女”;
创建视图查询各个学生的学号、姓名、班级、专业、院系;
创建存储过程查询指定学生的成绩单;
创建触发器当增加、删除学生和修改学生班级信息时自动修改相应班级学生人数;
建立数据库相关表之间的参照完整性约束。

1.1:需求分析

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

1.2:功能要求

该高校学籍管理系统主要是实现对大学在校生的学籍信息的系统化管理,具体的功能涉及实现对学生的基本信息、班级、专业、院系等的查询、修改和删除等功能,同时也会实现课程、学生成绩信息管理、实现学生的奖惩信息管理。
同时该高校学籍管理系统要创建学生信息视图,具体实现如下:
1.2.1创建学生基本信息视图,实现查询各个学生的学号、姓名、班级、专业、院系。
1.2.2该高校学籍管理系统要创建触发器当增加、删除学生和修改学生班级信息时自动修改相应班级学生人数。
1.2.3该高校学籍管理系统要创建存储过程查询指定学生的成绩单
1.2.4创建存储过程查询指定学生的成绩单;
该学籍管理系统会对学生信息进行系统化管理,在数据和数据之间实现关联性,较大程度的满足用户需求。

1.3:系统功能解决的问题

1.3.1提高管理人员的工作效率。
1.3.2对大量的数据信息进行统筹规划
1.3.3降低处理数据信息时出现的错误率。
1.3.4方便系统的后期维护。

**

二:数据库概念结构设计(E-R图)

**
根据需求分析结果,学生、教师、课程、题目、班级、专业、课程成绩、奖惩可建模为基本实体集。

2.1:关系数据模式

各基本实体集的属性定义如下:
(1)学生实体集。其属性有:(学号,姓名,性别,班级编号,院系编号,民族,年龄,出生日期,家庭地址,入学时间)
(2)班级实体集。其属性有:(班级编号,专业编号,班级名称,人数)
(3)专业实体集。其属性有:(专业编号,院系编号,专业名称)
(4)院系实体集。其属性有:(院系编号,院系名称)
(5)课程实体集。其属性有:(课程号,课程名,学分,学时)
(6)课程成绩实体集。其属性有:(课程号,学号,成绩)
(7)奖惩实体集。其属性有:(奖惩号,学号,奖惩名称,奖惩方案)

2.2:定义联系集及属性:

  1. 选课联系集:它是学生实体集与课程实体集的多对多联系集,其描述属性有:成绩,课程编号,学生编号
  2. 获得联系集:它是学生实体集与奖惩实体集的一对多联系集,没有联系属性。
  3. 共有联系集:它是院系实体集与学生实体集的一对多联系集,没有联系属性。
  4. 隶属联系集:它是班级实体集与学生实体集的一对多联系集,没有联系属性。
  5. 含有联系集:它是专业实体集和班级实体集的一对多联系集,没有联系属性。
  6. 包含联系集:它是院系实体集与专业实体集的一对多联系集,没有联系属性。

2.3:E-R图


**

三:数据库逻辑结构设计

**
(下划线加粗代表主码,斜体加粗代表外码 )

(1)学生Student表:由学生关系实体集转化而来。
学生(学号,姓名,性别,班级编号,院系编号,民族,年龄,出生日期,家庭地址,入学时间;)

属性名称 数据类型 属性描述 约束条件
Sno char(16) 学号 primary key
Sname varchar(16) 姓名 not null
Ssex char(2) 性别 not null
Sage int 年龄 not null
Sbirth Datet 出生日期 not null
Slocation varchar(50) 籍贯 not null
Snation varchar(10) 民族 not null
Sadmission Date 入学日期 not null
Cno char(8) 班级编号 foreign key
Dno char(8) 院系编号 foreign key

(2)院系(Depart)表:由院系实体集转化而来。
院系(院系编号,院系名称)

属性名称 数据类型 属性描述 约束条件
Dno char(8) 院系编号 not null
Dname varchar(30) 院系名称 not null

(3)班级Class表:由班级实体集转化而来。
班级(班级编号,院系编号,班级名称,人数)

属性名称 数据类型 属性描述 约束条件
Cno char(8) 班级编号 primary key
Cname varchar(50) 班级名称 not null
Cnumber Int 班级人数 not null
Mno char(8) 专业编号 foreign key

(4)专业Major表:由专业实体集转化而来。
专业(专业编号,院系编号,专业名称);

属性名称 数据类型 属性描述 约束条件
Mno char(8) 专业编号 primary key
Mname varchar(30) 专业名称 not null
Dno char(8) 院系编号 foreign key

(5)课程Course表:由课程实体集转化而来。
课程(课程号,课程名,学分,学时)

属性名称 数据类型 属性描述 约束条件
Kno char(8) 课程编号 primary key
Kname char(20) 课程名称 not null
Kperiod smallint 学时 not null
Kcredit smallint 学分 not null

(6)成绩Grade表:由成绩实体集转化而来。
课程成绩(课程号,学号,成绩)

属性名称 数据类型 属性描述 约束条件
Kno char(8) 课程编号 primary key(foreign key)
Sno char(16) 学号 primary key(foreign key)
Ggrade int 成绩

(7)奖惩(Award_punish) 表: 奖惩实体集转化的关系模式。
奖惩(奖惩号,学号,等级,奖惩名称,奖惩方案)

属性名称 数据类型 属性描述 约束条件
APno char(16) 学号 foreign key
APlevel varchar(30) 等级 not null
APname varchar(30) 奖惩名 not null
APproject varchar(100) 奖惩方案 not null

四:模式求解

(1)学生(学号,姓名,性别,班级编号,专业编号,院系编号,民族,年龄,出生日期,家庭地址,入学时间)
分析Student关系模式得函数依赖关系为:
学号–>{姓名,性别,班级编号,专业编号,院系编号,民族,年龄,出生日期,家庭地址,入学时间}
满足BCNF范式。
(2)班级(班级编号,专业编号,院系编号,班级名称,人数)
分析班级关系模式得函数依赖关系为:
班级编号–>{专业编号,院系编号,班级名称,人数}
满足BCNF范式。
(3)课程(课程号,课程名,学分,学时)
分析课程关系模式得函数依赖关系为:
课程号–>{课程名,学分,学时}
满足BCNF范式。
(4)专业(专业编号,院系编号,专业名称)
分析专业关系模式得函数依赖关系为:
专业编号–>{院系编号,专业名称}
满足BCNF范式。
(5)院系(院系编号,院系名称)
分析院系关系模式得函数依赖关系为:
院系编号–>{院系名称}
满足BCNF范式。
(6) 课程成绩(课程号,学号,成绩)
分析课程成绩关系模式得函数依赖关系为:
(课程号,学号)–>{ 成绩}
满足BCNF范式。
(7)奖惩(奖惩号,学号,等级,奖惩名称,奖惩方案)
分析奖惩关系模式得函数依赖关系为:
奖惩号–>{学号,等级,奖惩名称,奖惩方案}
满足BCNF范式。

五:表的设计

(1) 学生实体集。其属性有:(学号,姓名,性别,班级编号,院系编号,民族,年龄,出生日期,家庭地址,入学时间)

 create table Student(
Sno char(16) primary key,
Sname varchar(16) not null,
Ssex char(2) not null,check(Ssex='男' or Ssex='女'),
Sage int not null,
Snation varchar(20) not null,
Sbirth date not null,
Slocation varchar(50) not null,
Sadmission 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 int 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(16) 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,
APname  varchar(30) not null,
APproject varchar(100) not null,
APlevel varchar(30) not null,
Sno char(16) not null,
foreign key (Sno) references Student(Sno));

六:功能设计

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

create view A_Student(Sno,Sname,Cname,Mname,Dname)
as
select Sno,Sname,Cname,Mname,Dname
from Student,Class,Major,Depart
where Class.Cno=Student.Cno
and Class.Mno=Major.Mno
and Student.Dno = Depart.Dno;

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

create procedure pro_Ggrade
@Sno char(16)=null,
@Sname varchar(16)=nullasif(@Sno is null or @Sname is null )begin print '请输入学号与姓名!'endelse if((select Sname from Student where Sno = @Sno) != @Sname or (select Sno from Student where Sname = @Sname) != @Sno )beginprint '输入有误!'endelsebeginselect Student.Sno,Sname,Kname,Ggradefrom Student,Grade,Coursewhere Student.Sno = Grade.Snoand Grade.Kno = Course.Knoand Sname = @Snameendgo

检验

use StudentManagement
exec pro_Ggrade '20204091102','内马尔'

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

a.创建触发器,当增加学生班级信息时自动修改相应班级学生人数

create trigger insert_stu
on Student for insert
asbegindeclare @cno char(8)select @cno=Cno from insertedupdate Class set Cnumber = Cnumber + 1 where Cno = @cno
end

在Student表中插入一条数据:

insert into Student values('20204091106','灏川','男',20,'汉族','2001-02-03','河南安阳','2020-09-30','2020401','01' )

b.创建触发器,当删除学生班级信息时自动修改相应班级学生人数

create trigger delete_stu
on Student for delete
asbegindeclare @cno char(8)select @cno=Cno from deletedupdate Class set Cnumber = Cnumber - 1 where Cno = @cnoend

在Student表中删除一条数据

delete from Student where Sname = '灏川'
c.创建触发器,当修改学生班级信息时自动修改相应班级学生人数
create trigger update_stu
on Student for update
asbegindeclare @cno1 char(8)declare @cno2 char(8)

–存放更新前的数据

  select @cno1=Cno from deleted

–存放更新后的数据

  select @cno2=Cno from insertedupdate Class set Cnumber = Cnumber - 1 where Cno = @cno1update Class set Cnumber = Cnumber + 1 where Cno = @cno2end

在Student表中更改一条数据,将灏川的班级“01”更改为“02”

update Student set Cno = '02' where Sname = '灏川'

4、 用户创建不同的登录名,对应不同的用户名,给予不同的权限

登陆名 密码 用户 权限
Teacher 111 T1 查看,插入,修改
student 111 S1 查看

a.创建老师登录名,对应T1用户及授予的权限

create login teacher with password = '111'
create user T1 for login teacher
use StudentManagement
grant select,update,insert
On class
to T1
grant select,update,insert
On Depart
to T1
grant select,update,insert
On Award_Punish
to T1
grant select,update,insert
On Major
to T1
grant select,update,insert
On Grade
to T1

b. 创建学生登录名,对应S1用户及授予的权限

create login student with password = '111'
create user S1 for login student
use StudentManagement
grant select
On class
to S1
grant select
On Depart
to S1
grant select
On Award_Punish
to S1
grant select
On Major
to S1
grant select
On Grade
to S1
grant select
On course
to S1

5、 完成如下功能
(1)查看某位学生的基本信息

select * from student where Sno='20204010116'; 

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

select * from Student where Sage < 20

(3)查询选修了“数据库系统”课程的学生的学号、姓名、成绩,其中按照成绩从大到小的顺序排列

select Student.Sno,Sname,Ggrade
from Student,Grade
where Student.Sno = Grade.Sno and Grade.Kno = 'L01'
order by Ggrade desc

(4).查询选修“数据库系统”课程所有学生的平均成绩

select Course.Kname 课程名称,avg(Ggrade) 平均成绩
from Grade,Course
where Grade.Kno = Course.Kno
and Course.Kname = '数据库系统'
GROUP BY Course.Kname

(5)将家庭地址为“河南”的学生的家庭地址更改为“江苏”

update Student set Slocation = '江苏' where Slocation = '河南'

(6) 删除学号为“”学生的奖惩信息

delete from Award_punish where Sno = '20204092106'

七:总结

经过一周的课程设计,我学到了很多知识,个人的能力有了很大的提高,
通过此次课程设计,使我更加扎实的掌握了有关数据库方面的知识,在设计过程中虽然遇到了一些问题,但经过不断的思考和检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。这次的课程设计使我学习到很多课堂上没有学习到的知识。也使我对常用画图软件、文档编辑等知识掌握得更加熟练。虽然课设已经完成,但是本系统还存在着不足,如系统十分简单,安全性问题没有很好的解决等。所以在今后的学习中我会继续努力完善自我,同学的帮助、指导老师的用心辅导和学校的精心安排使这个课题能够顺利进行。但是,由于时间仓促以及本人水平有限,本系统还有很多不完善之处,希望在此后的学习中可以不断将其优化。

高校学籍管理系统 SQL Servre 数据库系统相关推荐

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

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

  2. 高校学籍管理系统【数据库设计】2020.7.26

    目录 一.前言 二.需求设计 三.概念结构设计 四.逻辑结构设计 五.物理结构设计 六.数据库实施 七.运行与维护 八.总结 一.前言 目前,我国高校管理学籍的工作人员都没有经过系统科学的培训,对于现 ...

  3. 用mysql设计学籍管理系统_学生学籍管理系统(SQL数据库系统设计)(完整版).pdf...

    . 数据库课程设计报告 < 学生学籍管理系统 > 专业 班级 小组成员 指导老师 开始时间 完成时间 word 专业资料 . 目录 数据库课程设计报告 1 1. 问题描述 3 1.1 背景 ...

  4. 用单链表编程实现一个简易的高校学籍管理系统_SSM框架实现学生学籍管理系统...

    基于Spring, SpringMVC, Mybatis 框架实现一个学生学籍管理系统, 能够对学生基本信息, 比如姓名年龄形变状态进行管理, 也能进行通讯录维护, 并能导出Excel报表 运行环境 ...

  5. 基于ssm的高校学籍管理系统

    作者主页:夜未央5788 简介:Java领域优质创作者.Java项目.学习资料.技术互助 文末获取源码 项目介绍 本项目分为管理员角色与学生两种角色: 管理员主要功能包括: 权限管理:用户管理.角色管 ...

  6. 学籍管理系统+python mysql+hash加密

    文章目录 高校学籍管理系统 一.数据库课程设计要求与目的 二.需求分析 2.1 需求分析 2.2 系统功能模块图 2.3数据字典 2.4 事务 2.5 触发器: 三.概念结构设计 3. 1 实体与联系 ...

  7. 基于WEB开发的高校学籍管理系统设计与实现

    写作任务 建立能业务化工作的学生学籍管理系统是当前高校管理部门的迫切要求.本课题要求设计一个实用的高校学籍管理系统,主要实现:学生信息管理.学籍异动管理.学生成绩管理.学生奖惩信息管理.用户管理.系统 ...

  8. 南京理工大学计算机学号6,学生学籍管理系统

    <学生学籍管理系统>由会员分享,可在线阅读,更多相关<学生学籍管理系统(31页珍藏版)>请在人人文库网上搜索. 1.1,第4章 学生学籍管理系统,南京理工大学计算机学院,2,摘 ...

  9. JSP学生学籍管理系统(源代码+论文+开题报告+外文翻译+答辩PPT)

    随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟.管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特 ...

最新文章

  1. yolov3(三:算法框架解析)
  2. 区块链:游戏规则的改变者
  3. 单机部署zookeeper、kafka
  4. 量化指标公式源码_通达信指标公式源码线上阴线指标公式
  5. python的xpath用法介绍_python爬虫之xpath的基本使用详解
  6. stl向量最大值_C ++ STL中向量的最小和最大元素
  7. Python算法(含源代码下载)
  8. 深入理解Transformer及其源码
  9. c语言for循环可以初始化多个变量么_C8循环
  10. 加载中_Spring Boot 2.2 中的延迟加载
  11. MySQL(13)-----多表查询(子查询)
  12. 约束rmq_约束RMQ
  13. 加减乘除求余 利用 位运算实现(详细)
  14. WPS表格2013怎么进行数据合并计算将多个区域进行合并计算
  15. Elasticsearch:如何在 Elastic Agents 中配置 Beats 来采集定制日志
  16. 十年内将被人遗忘的15种技术:硬盘和鼠标
  17. 【CF226C】Anniversary
  18. 各阶段产品经理突破自身瓶颈总结(建议收藏)
  19. Mysql出现问题:ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/data/mysql/my解决方案
  20. CocosCreator拼手速小游戏(教程 + 源码)TS实现小游戏

热门文章

  1. 挡土墙lisp程序_挡土墙设计程序说明
  2. ctf 抓捕赵德汉_2017网络空间安全技术大赛决赛周末开战 大家赶紧来看看之前线上赛的Writeup 抓捕赵德汉...
  3. Error fetching server time: Detected 31.361999988555908 seconds time difference between your browser
  4. l7sa008b故障代码_2019奥克斯空调最新故障代码查询
  5. linux c 获得root权限,Linux下获取root权限的c程序
  6. 路缘石成型机使用技术更新后施工效果呈现的过程
  7. 【Microsoft】Project Oxford
  8. 《浪潮之巅》作者吴军万字长文:中国算力的危与机
  9. 一屏变双屏,有了ProPresenter 6你也可以做到!
  10. TrecQA 数据集下载