1、学生成绩管理系统课程设计设计报告题 目:学生成绩管理系统数据库学 号: 2014221119200100 学生姓名: 张坤 学 号: 2014221119200138 学生姓名: 张豪 学 号: 2014221119200057 学生姓名: 王潜 指导教师: 王雷春 提交时间: 2016/12/24 目录第1章需求分析11.1需求调查11.2 系统功能分析21.3 面对用户需求分析3第2章数据库概念模型设计4第3章逻辑结构设计83.1类和对象向关系模式转换103.2关系模式优化11第4章数据库物理结构设计114.1 存取方法设计114.2存储结构设计114.3物理设计12第5章数据库完整性设计
2、155.1 主键及唯一性索引155.2 参照完整性设计165.3Check约束175.4Default约束175.5 触发器设计17第6章 数据库视图设计19第7章 数据库存储过程设计20第8章 权限设计22总结22参考文献:23教务管理系统后台数据库第1章需求分析1.1需求调查通过对各个用户的调查,该学生成绩管理系统有如下需求:1) 系统管理:实现系统管理人员对系统的管理,包括添加删除用户,更改密码, 数据备份,数据还原,注销,系统开关等功能。2) 成绩管理:实现教师对学生选修课程打分,成绩审核,学生查看成绩。3) 信息维护:学生,管理员和老师以及课程的基本信息(包括学生学籍信息和学生所修课
3、程信息,教师基本信息,课程基本信息,密码基本信息)查看以及修改。4) 选课:学生选择课程,老师选课。5) 查询:包括实现学生查询,老师查询。学生查询包括自己的基本信息,自己的课程,课表,成绩等,老师查询包括查询自己的信息,自己所带课程的学生,自己的课表以及学生成绩等。6) 服务器配置:对它进行配置可以使得在其他电脑上也照常使用。这样不必每次都到数据库中去更改。7) 帮助系统:帮助系统为用户指明方向。1.2 系统功能分析学生成绩管理系统系统管理学籍管理选课管理教师管理课程管理成绩管理管理员管理数据备份即时事务管理1) 系统管理:主要用于系统开关,教师选课开关,学生选课开关等。2) 学籍管理:用于
4、对学生学籍基本信息的录入、查询、修改、维护、删除等常用功能,并提供学号编排、学生照片输入显示、学籍变动(留级、休学、跳级、转班、转学、退学等)、奖惩登记、毕业情况等功能。3) 选课管理:用于对课程的排布和选择。对于选课课程、采用教师选课方式,教师先选课,学生再选课。4) 教师管理:用于管理教师的基本信息,其所在院系、所授课程,所带的班级,教师平时上课的时数,并记录教师的考评情况。5) 成绩管理:用于发布学生一个学期所修课程所获得的成绩,是否挂科、参加补考,补考的成绩等。 6) 课程管理:用于管理课程的基本信息,包括添加,删除,修改课程。7) 管理员管理:用于对管理员的权限进行修改,以及添加,删
5、除管理员,更新管理员信息等。8) 数据备份:用于保存删除或更新之前的数据,防止管理员误操作,以及数据找回等。9) 即时事务管理:用于发布和管理学校及学院的相关通知,便于相关人员了解学校及学院的近期动态。1.3 面对用户需求分析在学生选课系统中,最主要的功能就是进行一系列的查询和各类数据的管理。因此,可以将学生选课系统分为管理系统(有数据变化)和查询系统两个子系统。而在所设计的学生选课系统中,主要有四类用户,即学生用户,老师用户,教务管理员和系统管理员。各类用户在该系统中的需求不同,权限也不同。因此,为了更明确,更系统的了解用户需求,我们还可以将管理系统再细分为学生管理系统,老师管理系统,教务管
6、理员管理系统,系统管理员管理系统。同样,将查询系统也按用户职能进行细分,即学生查询系统,老师查询系统,教务管理员查询系统,系统管理员查询系统。这样细分后,看似把系统需求繁杂化了。其实不然,细分后使各用户需求更加明确了,并且能更好的把握系统需求。下面从细分后的各个子系统分析子系统的需求:教务管理系统学生管理子系统学生查询子系统教师管理子系统教师查询子系统教务管理员管理子系统教务管理员查询子系统系统管理员管理子系统系统管理员查询子系统1) 学生管理系统。学生用户在使用该系统时,首先必须通过账号和密码登录系统。因此,对密码的设置和修改是最基本的需求。由于所有用户在使用该系统时都需要账号和密码,所以在
7、后面的用户需求分析时不再重复对此需求进行描述。在登录系统后,学生用户的最主要的需求就是通过该系统进行选课、退课。其次,学生用户还要求可以通过系统进行个人信息的维护(包括添加、删除、修改信息)以及学生评教和各类报名。2) 学生查询系统。学生用户在该系统中是最低级的用户,所以可以查询的数据也是有限的,主要有个人信息查询,成绩查询(个人成绩),即时事物查看,学业预警查看。在进行选课的时候还要对课程信息进行查询,课程选完后要查询课表。3) 老师管理系统。该系统中,老师用户当然也有维护个人信息的需求。除此之外,更重要的一个需求是要进行学生成绩的录入。4) 老师查询系统。老师用户不仅要有查询自己的个人信息
8、的功能,还要有查询学生信息的功能。当学生用户进行选课完毕后,老师用户有对选课、任课信息、课表的查询以及花名册的查看的需求。当课程结束后,老师在录入学生成绩的时候,也要对课程信息、学生信息进行查询。老师用户的另一个需求是对学生成绩的查询,这个成绩查询不仅可以查询学生用户的个人成绩,还可以查询所带课程的成绩和所有学生的成绩。5) 教务管理员管理系统。首先当然个人信息的维护。对于教务管理员来说,该系统应该可以帮助他进行开课信息的维护,人才培养方案管理;在学生由于种种原因而有选课异常时,教务管理员还有重选、补选、退选的需求;课程结束老师录入学生成绩后,教务管理员还有利用系统进行成绩的审核,有时还要对某
9、些学生的成绩进行修改。6) 教务管理员查询系统。教务管理员首先要具有学生查询系统,老师查询系统的所有需求。除了这些需求外,教务管理员还应该可以查询开课信息,学生评教查询和学生成绩查询(包括学生个人成绩,班级成绩,某课程成绩以及全院学生的成绩)。7) 系统管理员管理系统。作为系统挂了管理员,是该系统中最高级的用户,因此该用户的需求相对比较的多。第一,要通过系统对院系进行管理:院系的设置,院系的调整以及院系的总体规划。第二,进行专业的设置,专业的添加、删除、修改,专业的调整。第三,要对学期进行设置和教室的管理。第四,对各学院的教师管理,其中就包括了老师在系统中的权限设置。第五,学生的学籍的管理(学
10、籍的异动)。第六,通过各学院上报的课程信息进行全面的排课以及课程的停开和增开,这也是学生选课系统中很重要的一个需求。最后,系统管理员管理系统还应该可以利用该系统进行用户的管理和维护,包括用户的添加、删除,修改等。8) 系统管理员查询系统。该子系统的需求首先要包括前三类用户查询系统中的所有需求,即可以查询前三类用户能进行的所有查询。其次,要包括院系的查询,专业的查询,教室的查询。第三,通过系统查询学生、教师的基本信息,查询老师的任课情况以及教学情况(评教情况)。第四,在对学生学籍管理时要对学生学籍的查询。第五,对课程信息及选课信息的查询。此外,还有对该系统中所有学生用户的学生成绩查询和该系统中所
11、有老师用户的评教结果查询的需求。第2章数据库概念模型设计2.1数据库实体以及关系设计本系统主要有9个实体:A 学生实体B 教师实体C 管理员实体D 课程实体E 职称实体F 政治面貌实体G 院系实体H 专业实体I 新闻公告实体实体关系图: 图2.1院系专业实体关系图图2.2教师课程实体关系图图2.3学生课程实体关系图图2.4学生政治面貌实体关系图图2.5教师职称实体关系图图2.6管理员新闻公告实体关系图图2.7学生专业实体关系图 图2.7总实体关系图2.2面向类和对象分析设计 类和对象设计如下: 学生姓名:string学号:string性别: char出生年月:data政治面貌:string专业
12、名称:string籍贯:string家庭地址:string联系电话:string添加()删除()查询()修改()教师 教师姓名:string教职工号:string性别:char出生年月:data职称:string所属学院:string籍贯:string民族:string家庭地址:string邮政编码:string联系电话:string查询()添加()修改()删除()管理员姓名:string编号:string性别: char出生年月:data政治面貌:string学院:string专业名称:string籍贯:string民族:string家庭地址:string联系电话:string添加()删除(
13、)查询()修改()课程课程名:string课程号:int学时:全部课程学分:全部课程开课年度:string 开课学期:string开课学院:部门单位任课教师:教师上课地点:char上课时间:char上课人数:int最大上课人数:int查询()添加()修改()选课()专业专业名称:string专业编号:string所属学院:string查询()修改()添加()删除()院系院系名称:string院系编号:string查询()修改()添加()删除()学生课程 学号:int课程号:int分数:float挂科情况:boolen添加()修改()删除()查询()教师课程 工号:int课程号:int添加()修
14、改()删除()查询()登陆 用户名:int密码:string级别:string添加()修改()删除()查询()新闻公告通知标题:string通知内容:string发布单位:string发布时间:data有效期限:data查询()添加()修改()删除()政治面貌 编号:int名称:string添加()修改()查询()职称 编号:int名称:string添加()修改()查询()第3章数据库逻辑结构设计3.1 E-R图局部E-R图 3.1职称编号E-R图3.2政治面貌E-R图3.3新闻公告E-R图3.4学生E-R图3.5教师E-R图3.6管理员E-R图3.7课程E-R图3.8专业E-R图3.9院系E
15、-R图全局E-R图: 图3.10全局E-R图3.2类和对象向关系模式转换学生信息(姓名、学号、性别、出生年月、政治面貌、学院、专业名称、培养层次、籍贯、民族、家庭地址、联系电话、)成绩信息(学生姓名、学号、专业名称、课程名、课程号、分数、绩点、学分、所获学分、)课程(课程名、课程号、任课老师、选课班级、学时、学分、开课年度、开课学期、学院、上课地点、上课时间、限制人数)选课信息(学生姓名、学号、学院、教学班号、课程名、课程号、任课老师、上课地点、上课时间)专业信息(专业名称、专业编号、所授学位、培养方案、所属学院)教师信息(教师姓名、教职工号、性别、出生年月、学历、职称、所属学院、籍贯、民族、
16、家庭地址、邮政编码、联系电话、身份证号码)新闻公告(通知标题、通知内容、发布单位、发布时间、有效期限)开关表(系统开关,选课开关)3.3关系模式优化通过对用户需求和实体之间的关系的分析,结合范式考虑,本系统建立以下表1).院系表名称数据类型是否主键院系代号int是院系名称varchar(50)预留字段varchar(50)2).专业表名称数据类型是否主键专业代号int是专业名称varchar(50)所属学院代号Int预留字段varchar(50)3).学生表名称数据类型是否主键学号int是姓名varchar(50)性别Char(2)年龄int政治面貌代号Int专业代号int联系方式Varcha
17、r(50)入学年份Int预留字段Varchar(50)4).教师表名称数据类型是否主键工号int是姓名varchar(50)性别char(2)年龄int职称代号Int院系代号Int联系方式Varchar(50)教龄Int预留字段varchar(50)5).管理员表名称数据类型是否主键管理号int是姓名varchar(50)性别Char(2)职务Varchar(50)联系方式Varchar(50)地址varchar(50)预留字段varchar(50)6).登录表名称数据类型是否主键账号int是密码varchar(50)级别Char(4)预留字段varchar(50)7).新闻公告表名称数据类型
18、是否主键编号int是标题varchar(50)内容varchar(100)类别Varchar(50)发布人In预留字段varchar(50)8).课程表名称数据类型是否主键课程号int是课程名varchar(50)任课教师int学分int上课时间datetime限选人数int已选人数int开课学院代号Int预留字段Varchar(50)9).教师课程表名称数据类型是否主键工号int是课程号int是预留字段varchar(50)10).学生课程表名称数据类型是否主键学号int是课程号Int是分数Float预留字段varchar(50)11).职称表名称数据类型是否主键职称代号int是职称varc
19、har(50)预留字段varchar(50)12).政治面貌表名称数据类型是否主键政治面貌代号int是政治面貌varchar(50)预留字段varchar(50)13).开关表名称数据类型是否主键开关类型varchar(50)是状态char(2)预留字段varchar(50)14).登录日志表名称数据类型是否主键编号Int是操作类型varchar(50)操作人varchar(50)操作时间Datetime被操作账户Int预留字段varchar(50)第4章数据库物理结构设计4.1 存取方法设计数据库系统是多用户共享的系统,对同一个关系要建立多条存储路径才能满足多用户的多种应用要求。对于教务管理
20、系统来说,为了提高某些属性(如:学生学号,教职工号,课程号,学生成绩,选课信息等)的查询速度,可以选择聚簇存取的方法,即把这些属性上具有相同值的元组集中放在连续的物理块上。这样在查询某个学院或是查询某个专业或某学年等的学生成绩或选课等时就会大大提高查询速度。因此,该系统中选择聚簇存取方法。4.2存储结构设计教务管理系统是一个大型复杂的计算机网络信息系统,采用基于浏览器/服务器(B/S),客户端/服务器(C/S)混合的应用体系结构来建设教务管理系统。数据库管理系统采用Microsoft 公司推出的SQL Server 2014,并用SQL进行数据库的建立和数据库中数据的维护和查询。4.3物理设计
21、实现该设计的环境为Windows 10+ MS SQL Server2014 或以上版本。1、 建立学生成绩管理系统数据库use mastercreate database 学生成绩管理系统数据库on (name=学生成绩管理系统数据库主文件,filename=D:student system of gradesstudent system of grades.mdf,size=5,maxsize=50,filegrowth=10%)log on (name=学生成绩管理系统数据库日志文件,filename=D:student system of gradesstudent system of
22、 grades.ldf,size=2mb,maxsize=10mb,filegrowth=1mb)Go2.建立职称表create table 职称(职称代号 int primary key,职称 varchar(50),预留字段 varchar(50)3.建立政治面貌表create table 职称(职称代号 int primary key,职称 varchar(50),预留字段 varchar(50)4.建立院系表create table 院系(院系代号 int primary key,名称 varchar(50),预留字段 varchar(50)5.建立专业表create table 专业
23、(专业代号 int primary key,名称 varchar(50),所属院系代号 int,预留字段 varchar(50)6.建立专业表create table 新闻公告(编号 int primary key,标题 varchar(50),内容 varchar(100),类别 varchar(50),发布人 int,预留字段 varchar(50)7.建立学生表create table 学生(学号 int primary key,姓名 varchar(50),性别 char(2) default 男 check (性别 = 男 or 性别 = 女),年龄 int,政治面貌代号 int,专
24、业代号 int,联系方式 varchar(50),入学年份 int,预留字段 varchar(50)8.建立教师表create table 教师(工号 int primary key,姓名 varchar(50),性别 char(2) default 男 check(性别=男 or 性别=女),年龄 int,职称代号 int ,院系代号 int, 联系方式 varchar(50),教龄 int,预留字段 varchar(50)9.建立管理员表create table 管理员(管理号 int primary key,姓名 varchar(50),性别 char(2) default 男 CHEC
25、K (性别 =男 or 性别 =女),职务 varchar(50),联系方式 varchar(50),地址 varchar(50),预留字段 varchar(50)10.建立课程表create table 课程(课程号 int primary key,课程名 varchar(50),任课教师 int,学分 int,上课时间 char(5) default 1-18 check(上课时间 =1-16 or 上课时间 =1-14 or 上课时间 =1-12 or 上课时间 =1-6 or 上课时间 =1-18),考试时间 datetime,限选人数 int,已选人数 int,开课学院代号 int,
26、 预留字段 varchar(50)11.建立学生课程表create table 学生课程(学号 int,课程号 int,分数 float default0,预留字段 varchar(50),primary key(学号,课程号)12.建立教师课程表create table 教师课程(工号 int,课程号 int,预留字段 varchar(50)13.建立登录表create table 登录(账号 int primary key,密码 varchar(50),级别 char(6) default 学生 check(级别 =学生or 级别 =教师 or 级别 =管理员),预留字段 varchar(
27、50)第5章数据库完整性设计5.1 主键及唯一性索引表名主键建立唯一性索引学生(学号)create unique index 学生on 学生 (学号)学生课程(学号,课程号)create unique index 学生课程on 学生课程 (学号,课程号)课程(课程号)create unique index课程on课程(课程号)教师课程(工号,课程号)create unique index 教师课程on 教师课程 (工号,课程号)教师(工号)create unique index 教师on教师 (工号)管理员(管理号)create unique index 管理员on管理员 (管理号)专业(专业
28、编号)create unique index 专业on 专业 (专业编号)院系(院系编号)create unique index 院系on 院系(院系编号)登录(帐号)create unique index 登录on 登录(账号)新闻公告(编号)create unique index 新闻公告on 新闻公告(编号)职称(职称代号)create unique index 职称on 职称(职称代号)政治面貌(政治面貌代号)create unique index 政治面貌 on 政治面貌(政治面貌代号)5.2 参照完整性设计-1、新闻公告表中将属性发布人设计为外键alter table 新闻公告 a
29、dd foreign key (发布人) references 管理员(管理号)-2、教师表中将属性职称代号和院系代号设计为外键alter table 教师 add foreign key (职称代号) references 职称(职称代号)alter table 教师 add foreign key (院系代号) references 院系(院系代号)-3、学生表中将属性政治面貌代号属性和专业代号设计为外键alter table 学生 add foreign key (政治面貌代号) references 政治面貌(政治面貌代号)alter table 学生 add foreign key
30、(专业代号) references 专业(专业代号)-4、专业表中将属性所属院系代号设计为外键alter table 专业 add foreign key (所属院系代号) references 院系(院系代号)-5、学生课程表中将属性课程号和学号设计为外键alter table 学生课程 add foreign key (学号) references 学生 (学号)alter table 学生课程 add foreign key (课程号) references 课程 (课程号)-6、教师课程表中将属性工号和课程号计为外键alter table 教师课程 add foreign key (工
31、号) references 教师 (工号)alter table 教师课程 add foreign key (课程号) references 课程 (课程号)-7、课程表中将属性任课教师和开课学院代号计为外键alter table 课程 add foreign key (任课教师) references 教师 (工号)alter table 课程 add foreign key (开课学院代号) references 院系 (院系代号)5.3Check约束1、学生,教师表和管理员表中将性别进行check约束:check (性别=男 or性别=女)2、课程表中将上课时间进行check约束:che
32、ck (上课时间=1-18 or 上课时间=1-16 or 上课时间=1-14 or 上课时间=1-12 or 1-16)3、登录表中将开课学期进行check约束:check (级别=管理员 or 级别= 学生 or 级别= 教师)4、学生表中将分数check约束:check (分数0 and 分数100)5.登录日志表将操作类型check约束check (操作类型=删除数据 or 操作类型= 修改数据 or 操作类型= 添加数据)5.4Default约束1、教师表和学生表中性别默认值设为:男。Default 男2、教师信息表和学生信息表中民族默认值设为:汉族。Default 汉族3、登录表中
33、级别默认值设为:学生。Default 学生4、学生课程表中分数默认值设为:0。Default 05、课程表中开课时间默认值设为:1-18。Default 1-185.5 触发器设计1、在政治面貌表中建立删除修改更新政治面貌触发器create trigger 删除修改更新政治面貌on 政治面貌with encryptioninstead ofupdate,insert,deleteasbegin-print政治面貌表不允许修改,删除,更新等操作!RAISERROR(政治面貌表不允许修改,删除,更新等操作!,18,18)End2、在职称表中建立删除更新插入职称触发器create trigger 删
34、除修改更新职称on 职称with encryptioninstead ofupdate,insert,deleteasbegin-print政治面貌表不允许修改,删除,更新等操作!RAISERROR(职称表不允许修改,删除,更新等操作!,18,18)End3、在新闻公告表建立删除成功提示触发器create trigger 删除新闻公告提示成功on 新闻公告with encryptionafterupdate,insert,deleteasbegin-print政治面貌表不允许修改,删除,更新等操作!RAISERROR(操作成功,10,1)End4、在登录表中建立删除数据触发器a.建立日志表cr
35、eate table 登录表日志(操作编号 int primary key identity(1,1),登录账号 varchar(50) default admin,数据库登录名 varchar(50) default sa,操作类型 char(8) check( 操作类型=插入记录 or 操作类型=修改数据 or 操作类型=删除数据),操作时间 datetime default getdate(),被操作账户 int)b.建立触发器create trigger 删除登录表日志on 登录with encryptionfordeleteasbegindeclare 被操作账户 intselect
36、 被操作账户=账号from deletedinsert into 登录表日志(操作类型,被操作账户)values(删除数据,被操作账户)end5、在登录表中建立修改数据触发器a.建立日志表create table 登录表日志(操作编号 int primary key identity(1,1),登录账号 varchar(50) default admin,数据库登录名 varchar(50) default sa,操作类型 char(8) check( 操作类型=插入记录 or 操作类型=修改数据 or 操作类型=删除数据),操作时间 datetime default getdate(),被操
37、作账户 int)b.建立触发器create trigger 修改登录表日志on 登录with encryptionforupdateasbegindeclare 被操作账户 intselect 被操作账户=账号from deletedinsert into 登录表日志(操作类型,被操作账户)values(修改数据,被操作账户)end6、在登录表中建立插入数据触发器a.建立日志表create table 登录表日志(操作编号 int primary key identity(1,1),登录账号 varchar(50) default admin,数据库登录名 varchar(50) defaul
38、t sa,操作类型 char(8) check( 操作类型=插入记录 or 操作类型=修改数据 or 操作类型=删除数据),操作时间 datetime default getdate(),被操作账户 int)b.建立触发器create trigger 插入登录表日志on 登录with encryptionforinsertasbegindeclare 被操作账户 intselect 被操作账户=账号from deletedinsert into 登录表日志(操作类型,被操作账户)values(插入记录,被操作账户)end7、在学生表中建立修改学号触发器create trigger 修改学号on
39、 学生with encryptionforupdateasbegindeclare 修改后学号 intdeclare 修改前学号 intselect 修改前学号=学号from deletedselect 修改后学号=学号from insertedif(修改后学号!=修改前学号)RAISERROR(学号不允许修改哦!,18,18)End 8、在教师表中建立修改工号触发器create trigger 修改工号on 教师with encryptionforupdateasbegindeclare 修改后工号 intdeclare 修改前工号 intselect 修改前工号=工号from deletedselect 修改后工号=工号from insertedif(修改后工号!=修改前工号)RAISERROR(学号不允许修改哦!,18,18)End 9、在管理员表中建立修改管理号触发器create trigger 修改管理号on 管理员with encryptionforupdateasbegindeclare 修改后管理号 intdeclare 修改前管理号 intselect 修改前管理号=管理号from deletedselect 修改后
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100