西电数据库大作业学籍管理系统.docx
《西电数据库大作业学籍管理系统.docx》由会员分享,可在线阅读,更多相关《西电数据库大作业学籍管理系统.docx(18页珍藏版)》请在冰豆网上搜索。
西电数据库大作业学籍管理系统
学籍管理系统
1、需求分析:
(1)、功能:
a使得学生的学籍管理工作更加清晰、条理化、自动化。
b容易地完成学生信息的查询、更新、修改等操作。
c对于学生成绩管理模块,能更加容易的求得学生的平均成绩、补考次数,所修的学分,最高分、最低分等,可以按照学生的成绩进行排序处理等,同时方便学生管理。
(2)、系统数据:
下表分别列出了数据的名称(即码)、注释、数据类型、长度、取值范围和是否是主码。
名称
注释
数据类型
长度
最小值
最大值
主要的
班级
varchar(16)
16
FALSE
学号
唯一标识学生的信息
integer
TRUE
院系代号
varchar(5)
5
FALSE
专业号
varchar(5)
5
FALSE
姓名
varchar(6)
6
FALSE
性别
varchar
(2)
2
FALSE
出生年月
datetime
FALSE
籍贯
varchar(8)
8
FALSE
民族
varchar
(2)
2
FALSE
家庭住址
varchar(20)
20
FALSE
入学时间
datetime
FALSE
政治面貌
varchar(6)
6
FALSE
身份证号
char(18)
18
FALSE
联系电话
varchar(12)
12
FALSE
备注
varchar(14)
14
FALSE
课程号
varchar(5)
5
TRUE
先行课
smallint
FALSE
学分
integer
FALSE
备注
varchar(16)
16
FALSE
院系代号
varchar(5)
5
TRUE
院系名
varchar(10)
10
FALSE
系主任
varchar(8)
8
FALSE
备注
varchar(16)
16
FALSE
教师号
varchar(5)
5
TRUE
院系代号
varchar(5)
5
FALSE
姓名
varchar(6)
6
FALSE
性别
char
(2)
2
FALSE
年龄
integer
FALSE
工龄
integer
FALSE
备注
varchar(16)
16
FALSE
专业号
varchar(5)
5
TRUE
院系代号
varchar(5)
5
FALSE
专业名称
varchar(16)
16
FALSE
备注
varchar(16)
16
FALSE
学号
integer
TRUE
课程号
varchar(5)
5
TRUE
分数
float
FALSE
课程号
varchar(5)
5
TRUE
教师号
varchar(5)
5
TRUE
(3)、数据结构:
分别如下表所示:
数据结构名
含义说明
组成
学生基本信息
学生基本信息的描述
班级+学号+院系代号+专业号+姓名+性别+出生年月
+籍贯+民族+家庭住址+入学时间+政治面貌+身份证号+联系电话+备注;
成绩管理
学生成绩的管理
与查询管理描述
学号+课程号+分数;
平均分数+最高分+最低分;
学生相关信息
学校的院系、教师信息以及课程信息的描述
课程号+课程名+先行课+学分+备注;
院系代号+院系名+系主任+备注;
教师号+院系代号+姓名+性别+年龄+工龄+备注;
系统管理
对系统中的所有表的更新、删除、修改描述
——————
2、概念结构设计
(1)、学生基本信息与课程信息视图:
学生基本信息视图课程信息视图
根据学生与课程的关系
可设计如下关系图:
(2)、专业院系与教师视图:
院系教师及专业关系图
(3)、E-R图:
合并数据抽象与局部视图设计中的各个局部视图以及各个实体之间的关系生成E-R图如下:
3、逻辑结构设计
关系模型如下:
4、应用程序设计:
(1)、触发器设计:
1.StudentInfo表上的出发器触发器:
对于学生基本信息表,当学生信息修改时,其它表中若有对应的该信息时,应该对其进行修改;当学生信息删除时,对应的如SC表中的对应学生成绩信息也应该自动修改:
①Supdata:
CREATETRIGGERSupdateON[dbo].[StudentsInfo]
FORUPDATE
AS
updateSC
set学号=(select学号frominserted)
whereSC.学号=(select学号fromdeleted);
②Sdelete:
CREATETRIGGERSdeleteON[dbo].[StudentsInfo]
FORDELETE
AS
DELETE
FROMSC
WHERESC.学号=(select学号fromdeleted);
2.Course表上的触发器:
其功能是当一个课程的信息改变时,或当一个课程的信息被删除时,相应的在SC和TC表中的相应信息修改或删除。
①Cupdata:
CREATETRIGGERCupdateON[dbo].[Course]
FORUPDATE
AS
updateSC
set课程号=(select课程号frominserted)
whereSC.课程号=(select课程号fromdeleted)
updateTC
setTC.课程号=(select课程号frominserted)
whereTC.课程号=(select课程号fromdeleted);
②Cdelete:
CREATETRIGGERCdeleteON[dbo].[Course]
FORDELETE
AS
DELETE
FROMSC
WHERESC.课程号=(select课程号fromdeleted)
DELETE
FROMTC
WHERETC.课程号=(select课程号fromdeleted);
;
3.Department表上的触发器:
当院系的代号改变时,对应的学生所在院系、专业所属院系以及教师所在院系都应当做相应的更改。
①Dupdata:
CREATETRIGGERDupdateON[dbo].[Department]
FORUPDATE
AS
updateStudentsInfo
setStudentsInfo.专业号=(select专业号frominserted)
whereStudentsInfo.专业号=(select专业号fromdeleted)
updateMajor
setMajor.专业号=(select专业号frominserted)
whereMajor.专业号=(select专业号fromdeleted)
updateTeacher
setTeacher.专业号=(select专业号frominserted)
whereTeacher.专业号=(select专业号fromdeleted);
4.Teacher表上的触发器:
当教师号改变或教师离任时,TC表上的信息应相应的得到改变。
①Tupdata:
CREATETRIGGERTupdateON[dbo].[Teacher]
FORUPDATE
AS
updateTC
setTC.教师号=(select教师号frominserted)
whereTC.教师号=(select教师号fromdeleted);
②Sdelete:
CREATETRIGGERTdeleteON[dbo].[Teacher]
FORDELETE
AS
DELETE
FROMTC
WHERETC.教师号=(select教师号fromdeleted);
5.Major表上的触发器:
当专业编号发生改变或专业取消,对应的学生表的专业号应该发生改变或置为空值。
①Mupdata:
CREATETRIGGERMupdateON[dbo].[Major]
FORUPDATE
AS
updateStudentsInfo
set专业号=(select专业号frominserted)
where专业号=(select专业号fromdeleted);
②Mdelete:
CREATETRIGGERMupdateON[dbo].[Major]
FORDELETE
AS
updateStudentsInfo
set专业号=NULL
where专业号=(select专业号fromdeleted);
(2)、应用程序:
-----------------------创建课程表-------------------
createtableCourse(
课程号varchar(5)notnull,
课程名varchar(10)null,
先行课smallintnull,
学分intnull,
备注varchar(16)null,
constraintPK_COURSEprimarykey(课程号)
)
go
executesp_addextendedproperty'MS_Description',
'学校所有课程描述',
'user','','table','Course'
go
-----------------------创建院系表-------------------
createtableDepartment(
院系代号varchar(5)notnull,
院系名varchar(10)null,
系主任varchar(8)null,
备注varchar(16)null,
constraintPK_DEPARTMENTprimarykey(院系代号)
)
go
executesp_addextendedproperty'MS_Description',
'学校所有的院系信息描述',
'user','','table','Department'
go
-----------------------创建专业表-------------------
createtableMajor(
专业号varchar(5)notnull,
院系代号varchar(5)null,
专业名称varchar(16)null,
备注varchar(16)null,
constraintPK_MAJORprimarykey(专业号)
)
go
executesp_addextendedproperty'MS_Description',
'学校所有专业信息描述',
'user','','table','Major'
go
-----------------------在专业表上创建索引-------------------
createindexDM_FKonMajor(
院系代号ASC
)
go
-----------------------创建学生与课程的成绩表----------------------
createtableSC(
学号bigintnotnull,
课程号varchar(5)notnull,
constraintPK_SCprimarykey(学号,课程号)
)
go
-----------------------在SC表上创建索引SC_FK与SC2_FK-------------------
createindexSC_FKonSC(
学号ASC
)
Go
createindexSC2_FKonSC(
课程号ASC
)
go
-----------------------创建学生基本信息表-------------------
createtableStudentsInfo(
班级varchar(16)null,
学号bigintnotnull,
院系代号varchar(5)null,
专业号varchar(5)null,
姓名varchar(6)null,
性别varchar
(2)null,
出生年月datetimenull,
籍贯varchar(8)null,
民族varchar
(2)null,
家庭住址varchar(20)null,
入学时间datetimenull,
政治面貌varchar(6)null,
身份证号char(18)null,
联系电话varchar(12)null,
备注varchar(14)null,
constraintPK_STUDENTSINFOprimarykey(学号)
)
go
executesp_addextendedproperty'MS_Description',
'学生基本信息描述',
'user','','table','StudentsInfo'
go
---------------------------创建院系代号索引------------------------------
createindexSD_FKonStudentsInfo(
院系代号ASC
)
go
--------------------------创建专业号索引------------------------------
createindexSM_FKonStudentsInfo(
专业号ASC
)
go
---------------------------创建教师与课程关系表------------------------------
createtableTC(
课程号varchar(5)notnull,
教师号varchar(5)notnull,
constraintPK_TCprimarykey(课程号,教师号)
)
go
---------------------------建立课程号索引------------------------------
createindexTC_FKonTC(
课程号ASC
)
go
--------------------------建立教师号索引------------------------------
createindexTC2_FKonTC(
教师号ASC
)
go
---------------------------创建教师表------------------------------
createtableTeacher(
教师号varchar(5)notnull,
院系代号varchar(5)null,
姓名varchar(6)null,
性别char
(2)null,
年龄intnull,
工龄intnull,
备注varchar(16)null,
constraintPK_TEACHERprimarykey(教师号)
)
go
executesp_addextendedproperty'MS_Description',
'学校教师信息描述',
'user','','table','Teacher'
go
---------------------------建立TD_FK索引------------------------------
createindexTD_FKonTeacher(
院系代号ASC
)
go
altertableMajor
addconstraintFK_MAJOR_DM_DEPARTMEforeignkey(院系代号)
referencesDepartment(院系代号)
go
altertableSC
addconstraintFK_SC_SC_STUDENTSforeignkey(学号)
referencesStudentsInfo(学号)
go
altertableSC
addconstraintFK_SC_SC2_COURSEforeignkey(课程号)
referencesCourse(课程号)
go
altertableStudentsInfo
addconstraintFK_STUDENTS_SD_DEPARTMEforeignkey(院系代号)
referencesDepartment(院系代号)
go
altertableStudentsInfo
addconstraintFK_STUDENTS_SM_MAJORforeignkey(专业号)
referencesMajor(专业号)
go
altertableTC
addconstraintFK_TC_TC_COURSEforeignkey(课程号)
referencesCourse(课程号)
go
altertableTC
addconstraintFK_TC_TC2_TEACHERforeignkey(教师号)
referencesTeacher(教师号)
go
altertableTeacher
addconstraintFK_TEACHER_TD_DEPARTMEforeignkey(院系代号)
referencesDepartment(院系代号)
go
5、总结:
此次数据库设计,受益匪浅,提升了自己的认识,虽然不全,但开始慢慢懂得数据库的设计流程,似乎能体会到其中的乐趣,训练思维,提升自我能力,将知识应用与实践。
在课程设计中,设计了一个学生学籍管理系统,其中包含了对学生基本信息的管理,学生必修课程以及成绩管理,学校教师资源管理,学校专业以及院系等。
基本上包含了学籍管理所要求的信息,能够完成一定的数据管理功能。
但是这是一个完全不能真正用与实际的系统,它没有操作界面,没有完善的数据完整性的约束,也不具有可靠的安全性。
但总之在设计当中我们学习到了许多东西,用到了很多的数据库的理论知识,增强了一定的实践能力。