教学管理信息系统教师数据库设计Word下载.docx
《教学管理信息系统教师数据库设计Word下载.docx》由会员分享,可在线阅读,更多相关《教学管理信息系统教师数据库设计Word下载.docx(16页珍藏版)》请在冰豆网上搜索。
图1用例图
2实现设计
2.1数据库设计
2.1.1概念设计
题目要求:
“大学有多个学院,每个学院有多名教师(教授,讲师,等)。
每一门课的主讲教师都应提前获得该课的主讲资格证,一个教师能具有多门课程的主讲资格证;
一门课程的主讲资格证也可能颁发给多名教师。
一个教师可能已主讲过多门课,或多次主讲同一门课。
”
按照题目要求,结合实际应用,设计应用所涉及的实体及实体间关系的模型,用ER图表示的概念模型如下:
如图所示,所识别出的实体包括教师,课程,授课资质,授课经历等4个实体。
以教师实体为例,在本应用域中,一个教师包含教师编号,姓名,出生日期,性别,所属学院,职称等属性;
实体课程有课程号、课程名、先修课、学分、描述等5个属性;
实体讲课经历与实体教师和实体课程相关联,其有属性教师编号、课程号、授课年份等;
实体主讲资格证夜雨实体教师和实体课程相关联,其有属性证件编号、教师编号、课程编号、有效截止日期等。
其中一个教师可以教授多门课程,一个课程也可以由多个教师教授,一个教师有零到多个主讲资格证,有零到多个授课经历,而每种授课资质和每种授课经历又与一门课程和一个教师相关联。
此外,特别地,一门课程有零到多门前导课程,反过来,一门前导课程有一到多门后继课程。
设计数据库使用ER图这一概念不是必须的;
然而使用概念和工具,能使大脑中的构思清晰、无误地展现,并被自动处理。
作为达到数据库设计的最终目的——设计出高效、高质量的数据库模式——所采用的手段,ER图这一概念模型中的实体最后就成为了一张张的表,实体属性成了表属性,对属性的约束成了表属性中的字段类型及非空唯一等约束,实体中的非空唯一标识属性(组)则成了表的主码;
实体之间的联系,成为表与表之间的外码参照;
一对多还是零对多,对应到物理设计中被参照的字段可否为空;
最后,为了提高海量数据的检索效率,可以在主码和外码上等处建立索引。
2.1.2逻辑设计
根据概念设计阶段对数据库概念模型的设计,构造合适的关系数据路模式。
由ER图可知,此次设计共建了4张表:
教师表、课程表、讲课经历表、主讲资格证表。
对于教师表,其属性有教师编号,姓名,出生日期,性别,所属学院,职称等;
其主要的约束有:
教师编号设置为主码,姓名非空,其余的属性值均为基本信息。
对于课程表,其属性有课程号、课程名、先修课、学分、描述等;
其主要约束有:
课程号设置为主码,课程名、学分设置为非空,先修课可有可无。
对于讲课经历表,其属性有教师编号、课程号、授课年份等;
教师编号为引用教师表主码教师编号的外码,课程号为引用课程表主码课程号的外码,教师编号和课程号一起组成讲课经历表的主码,授课年份非空。
对于主讲资格证表,其主要的属性有属性证件编号、教师编号、课程编号、有效截止日期等,其中证件编号设置为主码,其中教师编号为引用教师表主码教师编号的外码,课程编号为引用课程表主码课程编号的外码,有效截止日期非空。
根据应用情况,查表需求,设计了多表连接的视图,方便更快的查找信息。
2.1.3物理实现
实现后各表间的联系如下图,并给出了部分视图的图表显示。
2.1.3.1生成建库脚本
在MicrosoftSQLServer2008中构建数据库的的相关信息后,生成的脚本如下:
1USE[test]
2GO
3/******Object:
Table[dbo].[课程]ScriptDate:
07/03/201202:
02:
30******/
4SETANSI_NULLSON
5GO
6SETQUOTED_IDENTIFIERON
7GO
8SETANSI_PADDINGON
9GO
10CREATETABLE[dbo].[课程](
11[课程号][char](4)NOTNULL,
12[课程名][char](20)NOTNULL,
13[先修课][char](4)NULL,
14[学分][smallint]NULL,
15[描述][char](30)NULL,
16PRIMARYKEYCLUSTERED
17(
18[课程号]ASC
19)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
20)ON[PRIMARY]
21GO
22SETANSI_PADDINGOFF
23GO
24/******Object:
Table[dbo].[教师]ScriptDate:
25SETANSI_NULLSON
26GO
27SETQUOTED_IDENTIFIERON
28GO
29SETANSI_PADDINGON
30GO
31CREATETABLE[dbo].[教师](
32[编号][char](4)NOTNULL,
33[姓名][char](10)NOTNULL,
34[性别][char]
(2)NULL,
35[出生日期][date]NULL,
36[所属学院][char](10)NULL,
37[职称][char](8)NULL,
38PRIMARYKEYCLUSTERED
39(
40[编号]ASC
41)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
42)ON[PRIMARY]
43GO
44SETANSI_PADDINGOFF
45GO
46/******Object:
Table[dbo].[主讲资格证]ScriptDate:
47SETANSI_NULLSON
48GO
49SETQUOTED_IDENTIFIERON
50GO
51SETANSI_PADDINGON
52GO
53CREATETABLE[dbo].[主讲资格证](
54[证件编号][char](10)NOTNULL,
55[教师编号][char](4)NULL,
56[课程编号][char](4)NULL,
57[有效截止日期][date]NULL,
58PRIMARYKEYCLUSTERED
59(
60[证件编号]ASC
61)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
62)ON[PRIMARY]
63GO
64SETANSI_PADDINGOFF
65GO
66/******Object:
Table[dbo].[讲课经历]ScriptDate:
67SETANSI_NULLSON
68GO
69SETQUOTED_IDENTIFIERON
70GO
71SETANSI_PADDINGON
72GO
73CREATETABLE[dbo].[讲课经历](
74[教师编号][char](4)NOTNULL,
75[课程号][char](4)NOTNULL,
76[授课年份][char](4)NOTNULL,
77PRIMARYKEYCLUSTERED
78(
79[教师编号]ASC,
80[课程号]ASC
81)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
82)ON[PRIMARY]
83GO
84SETANSI_PADDINGOFF
85GO
86/******Object:
View[dbo].[C2]ScriptDate:
31******/
87SETANSI_NULLSON
88GO
89SETQUOTED_IDENTIFIERON
90GO
91createview[dbo].[C2]
92as
93select编号,姓名,课程.课程号,课程名,授课年份
94from教师,课程,讲课经历
95where教师.编号=讲课经历.教师编号and课程.课程号=讲课经历.课程号;
96GO
97/******Object:
View[dbo].[C1]ScriptDate:
98SETANSI_NULLSON
99GO
100SETQUOTED_IDENTIFIERON
101GO
102createview[dbo].[C1]
103as
104select编号,姓名,性别,出生日期,所属学院,职称,课程编号,课程名,证件编号,有效截止日期
105from教师,课程,主讲资格证
106where教师.编号=主讲资格证.教师编号and课程.课程号=主讲资格证.课程编号
107GO
108/******Object:
Check[CK__讲课经历__授课年份__1CF15040]ScriptDate:
109ALTERTABLE[dbo].[讲课经历]WITHCHECKADDCHECK(([授课年份]like'
[0-9][0-9][0-9][0-9]'
))
110GO
111/******Object:
Check[CK__教师__编号__014935CB]ScriptDate:
112ALTERTABLE[dbo].[教师]WITHCHECKADDCHECK(([编号]like'
113GO
114/******Object:
Check[CK__教师__性别__023D5A04]ScriptDate:
115ALTERTABLE[dbo].[教师]WITHCHECKADDCHECK(([性别]='
女'
OR[性别]='
男'
116GO
117/******Object:
Check[CK__教师__职称__03317E3D]ScriptDate:
118ALTERTABLE[dbo].[教师]WITHCHECKADDCHECK(([职称]='
讲师'
OR[职称]='
教授'
119GO
120/******Object:
Check[CK__课程__课程号__0BC6C43E]ScriptDate:
121ALTERTABLE[dbo].[课程]WITHCHECKADDCHECK(([课程号]like'
122GO
123/******Object:
ForeignKey[FK__讲课经历__教师编号__1B0907CE]ScriptDate:
124ALTERTABLE[dbo].[讲课经历]WITHCHECKADDFOREIGNKEY([教师编号])
125REFERENCES[dbo].[教师]([编号])
126GO
127/******Object:
ForeignKey[FK__讲课经历__课程号__1BFD2C07]ScriptDate:
128ALTERTABLE[dbo].[讲课经历]WITHCHECKADDFOREIGNKEY([课程号])
129REFERENCES[dbo].[课程]([课程号])
130GO
131/******Object:
ForeignKey[FK__课程__先修课__0CBAE877]ScriptDate:
132ALTERTABLE[dbo].[课程]WITHCHECKADDFOREIGNKEY([先修课])
133REFERENCES[dbo].[课程]([课程号])
134GO
135/******Object:
ForeignKey[FK__主讲资格证__教师编号__117F9D94]ScriptDate:
136ALTERTABLE[dbo].[主讲资格证]WITHCHECKADDFOREIGNKEY([教师编号])
137REFERENCES[dbo].[教师]([编号])
138GO
139/******Object:
ForeignKey[FK__主讲资格证__课程编号__1273C1CD]ScriptDate:
140ALTERTABLE[dbo].[主讲资格证]WITHCHECKADDFOREIGNKEY([课程编号])
141REFERENCES[dbo].[课程]([课程号])
142GO
3代码实现
本次应用程序是采用C#语言编写,其主要实现代码如下:
staticstringconStr="
DataSource=wys-pc;
InitialCatalog=test;
UserID=sa;
Password=123456"
;
efaultView;
();
4程序截图
管理员登入界面:
登入后的界面:
查看表中的数据:
查找教师相关信息:
添加信息界面:
删除信息界面:
修改信息界面:
5总结与体会
从传统的面向过程分析与设计,到基于UML和诸多工具的面向对象建模与编码,再加上需求的分析,概念设计,逻辑设计,物理实现等,用户界面的设计,整个过程还是比较顺利的。
当然,课设过程中出现的问题是不少的。
在逻辑设计阶段,就出现了很多设计失误。
譬如关于表的属性以及表之间的联系的设计。
教师表的属性设置存在缺漏,还可以添加联系方式、邮箱、身份证号、学位等属性信息。
授课经历也可以增加授课年级、学期等属性信息。
教师表和课程表之间的联系是通过讲课资格证表联系在一起的,这样给查询信息带来了一些麻烦。
整体来说,这是又一次意义深远的课程设计。