数据库课程设计学生考勤.docx
- 文档编号:28642926
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:22
- 大小:524.90KB
数据库课程设计学生考勤.docx
《数据库课程设计学生考勤.docx》由会员分享,可在线阅读,更多相关《数据库课程设计学生考勤.docx(22页珍藏版)》请在冰豆网上搜索。
数据库课程设计学生考勤
文理学院
数据库原理与应用报告
专业班级:
电信12101班学生:
学生学号:
指导教师:
长青设计时间:
2015.1.4-2015.1.10
一、需求分析
1、数据需求
2、数据流图
3、数据字典
二、概念结构设计
三、逻辑结构设计
四、物理结构设计
五、数据库的实施
1、创建数据库
2、数据表的维护与创建
3、数据库索引和视图
4、查询操作
六、数据库触发器的规划和设计
七、数据库的安全管理与维护
八、结论
学生考勤管理系统
一、需求分析
为物电学院设计一个学生考勤管理系统,该系统主要实现对学生基本信息、教师基本信息、学生考勤等的管理,学生考勤管理系统功能需求包括:
学生基本信息表,教师基本信息表,班级表,专业表,课程表,班主任表,请假信息表,上课出勤记录表。
1、数据需求:
(1)学生基本信息表:
学号,,性别,班级,专业,院系
(2)教师基本信息表:
,性别,编号
(3)班级表:
班主任,名称,编号
(4)专业表:
专业名称,编号
(5)课程表:
课程号,课程名,课程性质
(6)班主任表:
编号,,性别
(7)请假信息表:
编号,学号,原因,开始时间,结束时间,请假天数,申请请假时间,班主任审批状态,班主任审批时间
(8)上课出勤记录表:
编号,上课时间,学号
2、数据流图:
学生考勤
学生信息
课程
教师
请假信息表
学号
课程编号
编号
3、数据字典
(1)数据项
数据项:
学号
别名:
学生编号
含义说明:
唯一标识每个学生
类型:
字符型
长度:
9位
取值围:
00000099
取值含义:
前四位表示学年,第5,6,7位表示专业和班级,第8,9,表示学号
(2)数据结构
数据结构:
学生
含义说明:
学生考勤管理系统子系统的主体结构数据,定义了一个学生的有关信息
组成:
学号、、性别、班级、专业、
(3)数据流
数据流名:
请假信息表
说明:
学生请假信息及相关课程
数据流来源:
学生基本信息表,教师基本信息表、课程信息表
数据流去向:
请假学生、课程、
组成:
请假原因+学生学号+请假时间
平均流量:
500条/年
高峰流量:
50/天
(4)数据存储
数据存储:
学生基本信息表
说明:
记录学生的基本信息
写文件的处理:
新生入学报到后从学院新生登记表中获取信息输入
流出数据流:
为请假信息表提供学生基本信息
组成:
学号、、性别、班级、专业、手机、
数据量:
平均每年2000条
存取方式:
随机存取
二、概念结构设计
E-R模型:
学生
学号
姓名
性别
专业
班级
院系
专业
班级
班主任
属于
管理
请假
考勤
课程
授课
教师
假条
课程号
课程名
课程性质
姓名
性别
编号
编号
学号
……
原因
编号
专业名称
编号
名称
班主任
编号
姓名
性别
1
属于
1
1
1
n
n
n
n
n
n
m
m
电话
电话
电话
三、逻辑结构设计
1、学生表student
字段名
数据类型
可否为空
键引用
备注
stu_no
char(10)
否
主键
学生学号
stu_name
varchar(30)
否
学生
stu_sex
char
(2)
否
性别
stu_class
char(13)
否
外键
所属班级
stu_major
char(30)
否
外键
所属专业
Stu_tell
varchar(20)
否
2、专业表major
字段名
数据类型
可否为空
键引用
备注
major_id
number
否
主键
专业编号
major_name
char(20)
否
专业名称
3、教师表teacher
字段名
数据类型
可否为空
键引用
备注
tea_no
char(10)
否
主键
任课老师编号
tea_name
char(20)
否
任课老师
tea_sex
char
(2)
否
性别
tea_tell
Varchar(20)
否
4、班主任表classteacher
字段名
数据类型
可否为空
键引用
备注
classtea_no
char(5)
否
主键
任课老师编号
classtea_name
char(20)
否
任课老师
classtea_sex
char
(2)
否
性别
classtea_major
number
否
外键
所属专业
classtea_tell
Varchar(20)
否
5、学生上课出勤记录表kaoqin_record
字段名
数据类型
可否为空
键引用
备注
kaoqin_id
char(13)
否
主键
上课出勤编号
sk_time
date
否
上课时间
stu_number
char(10)
否
外键
学生学号
stu_status
char(10)
否
学生上课考勤状态
teacher_no
char(10)
否
外键
教师编号
course_no
char(13)
否
外键
课程编号
6、课程信息表course
字段名
数据类型
可否为空
键引用
备注
course_no
char(13)
否
主键
课程编号
course_name
char(20)
否
课程名称
course_xz
char(4)
否
课程性质
7、班级表classes
字段名
数据类型
可否为空
键引用
备注
class_no
char(10)
否
主键
课程编号
class_name
char(20)
否
课程名称
classtea_no
char(5)
否
外键
课程性质
8、请假信息表qingjia
字段名
数据类型
可否为空
键引用
备注
id
number
否
主键
请假代号
class_id
char(10)
否
外键
班级代号
stu_no
varchar2(20)
否
外键
学生学号
leave_reason
varchar2(200)
否
请假原因
start_time
date
否
开始时间
end_time
date
否
结束时间
day_number
number
否
请假天数
qingjia_time
date
否
申请请假时间
class_tea_id
char(5)
否
外键
class_tea_sp_status
char(10)
否
班主任审批状态
class_tea_sp_time
date
否
班主任审批时间
备注:
status表示审批状态:
0为等待审批,1为同意请假,2为不同意请假。
四、物理结构设计
确定数据库的物理结构
整个数据库包括八个表,每个表都有不同的联接关系,还有创建的视图也将表联系起来。
存取途径:
索引存取方法
(1)按学生所在班级建立索引,可提高查询速度。
(2)查询常用到的字段(学生学号、学生、课程编号、教师),可创建索引。
五、数据库的实施
1、创建数据库
CREATEDATABASE[studentkaoqin]
ONPRIMARY
(NAME=N'studentkaoqin',
FILENAME=N'E:
\fsf\sql\studentkaoqin.mdf')
(NAME=N'studentkaoqin_log',
FILENAME=N'E:
\fsf\sql\studentkaoqin_log.ldf')
2、数据表的创建和维护
(1)表的创建
--专业表major
createtablemajor
(
major_idintnotnull,
major_namechar(10)notnull,
constraintpk_majorprimarykey(major_id)
)
--教师表teacher
createtableteacher
(
tea_nochar(10)notnull,
tea_namechar(20)notnull,
tea_sexchar
(2)check(tea_sex='男'ortea_sex='女'),
tea_tellvarchar(20)notnull,
constraintpk_teacherprimarykey(tea_no)
--班级表classes
createtableclasses
(
class_nochar(10)primarykey,
class_namechar(20)notnull,
)
)
--学生表student
createtablestudent
(
stu_nochar(10)notnull,
stu_namevarchar(30)notnull,
stu_sexchar
(2)check(stu_sex='男'orstu_sex='女'),
stu_tellvarchar(20)notnull,
stu_classchar(10)referencesclasses(class_no),
stu_majorintreferencesmajor(major_id),
constraintpk_studentprimarykey(stu_no)
)
--课程信息表course
createtablecourse
(
course_nochar(13)primarykey,
course_namechar(20)notnull,
course_xzchar(4)notnull
)
--学生上课出勤记录表kaoqin_record
createtablekaoqin_record
(
kaoqin_idchar(13)primarykeynotnull,
sk_timedatetimenotnull,
stu_numberchar(10)referencesstudent(stu_no),
stu_statuschar(10)notnull,
teacher_nochar(10)referencesteacher(tea_no),
course_nochar(13)referencescourse(course_no)
)
--请假信息表qingjia
createtableqingjia
(
idintprimarykey,
class_idchar(10)referencesclasses(class_no),
stu_nochar(10)referencesstudent(stu_no),
leave_reasonvarchar(200)notnull,
start_timedatetimenotnull,
end_timedatetimenotnull,
day_numberintnotnull,
qingjia_timedatetimenotnull,
class_tea_idchar(5)referencesclassteacher(classtea_no),
class_tea_sp_statuschar(10),
class_tea_sp_timedatetime,
)
--班主任表classteacher
createtableclassteacher
(
classtea_nochar(5)notnull,
classtea_namechar(20)notnull,
classtea_sexchar
(2)check(classtea_sex='男'orclasstea_sex='女')
classtea_tellvarchar(20)notnull,
classtea_majorintreferencesmajor(major_id),
constraintpk_classteacherprimarykey(classtea_no)
)
(2)添加约束
手机的限制
altertablestudent
addconstraintck_telphone1
check(Telphonelike'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')
altertableclassteacher
addconstraintck_telphone2
check(Telphonelike'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')
altertableteacher
addconstraintck_telphone2
check(Telphonelike'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')
(3)添加容
--1、学生表student添加容
insertintostudentvalues('201210101','黄小明','男','2012101','1','')
insertintostudentvalues('201210102','乐','男','2012101','1','')
insertintostudentvalues('201220101','丹','男','2012201','2','')
insertintostudentvalues('201220102','程冬冬','男','2012201','2','')
insertintostudentvalues('201230101','胡雪露','男','2012301','3','')
insertintostudentvalues('201230102','亮','男','2012301','3','')
--2、班主任表classteacher添加容
insertintoclassteachervalues('01','敏','女','1','')
insertintoclassteachervalues('02','圆圆','女','1','')
insertintoclassteachervalues('03','峰','女','2','')
insertintoclassteachervalues('04','胡学达','女','2','')
--3、课程表course添加容
insertintocoursevalues('01','单片机原理及应用','考试')
insertintocoursevalues('02','大学物理','考试')
insertintocoursevalues('03','数据库原理及应用','考察')
insertintocoursevalues('04','模拟电子技术','考试')
insertintocoursevalues('05','高等数学','考试')
insertintocoursevalues('06','大学英语','考试')
insertintocoursevalues('07','大学体育','考察')
--4、考勤记录表kaoqin_record添加容
insertintokaoqin_recordvalues('01','2015/1/88:
00','201210101','缺课','01','01')
insertintokaoqin_recordvalues('02','2015/1/914:
30','201220102','请假','06','02')
insertintokaoqin_recordvalues('03','2015/1/914:
30','201230101','缺课','04','05')
insertintokaoqin_recordvalues('04','2015/1/109:
00','201230102','缺课','05','03')
insertintokaoqin_recordvalues('05','2015/1/1014:
30','201210102','请假','05','03')
insertintokaoqin_recordvalues('06','2015/1/117:
00','201220101','缺课','02','06')
--5、专业表major添加容
insertintomajorvalues('1','电子信息')
insertintomajorvalues('2','光电技术')
insertintomajorvalues('3','物理')
--6、请假表qingjia添加容
insertintoqingjiavalues('1','2012201','201220102','生病','2015/1/80:
00','2015/1/100:
00','3','2015/1/70:
00','01','1','2015/1/80:
00',)
insertintoqingjiavalues('2','2012101','201210102','考驾照','2015/1/100:
00','2015/1/110:
00','1','2015/1/90:
00','02','1','2015/1/90:
00',)
insertintoqingjiavalues('3','2012201','201220101','兼职','2015/1/117:
00','2015/1/1118:
00','1','2015/1/100:
00','04','2','2015/1/100:
00',)
--7、班级表classes添加容
insertintoclassesvalues('2012101','电信')
insertintoclassesvalues('2012201','光电')
insertintoclassesvalues('2012301','物理')
--8、教师表teacher添加容
insertintoteachervalues('01','大磊','男','')
insertintoteachervalues('02','霞','男','')
insertintoteachervalues('03','天','男','')
insertintoteachervalues('04','雪艳','女','')
insertintoteachervalues('05','涛','女','')
insertintoteachervalues('06','龙','男','')
3、数据库索引和视图
(1)创建索引
--为表student和teacher中的Telphone字段创建一个唯一索引PK_telphone
createuniqueindexunq_stu_tell1ONstudent(stu_tell)
createuniqueindexunq_tea_tell2ONteacher(tea_tell)
--为表course中的course_no字段创建升序的聚集索引
createclusteredindexclu_course_noonstudent(course_no)
(2)创建视图
学生考勤视图:
CREATEVIEW[dbo].[考勤]
AS
SELECTdbo.student.stu_nameAS学生,dbo.kaoqin_record.stu_statusAS考勤状态,dbo.course.course_nameAS课程名,dbo.kaoqin_record.sk_timeAS上课时间,dbo.teacher.tea_nameAS教师,dbo.teacher.tea_telAS教师
FROMstudent,kaoqin_record,course,teacher
请假视图:
CREATEVIEW[dbo].[请假]
AS
SELECTdbo.classes.class_nameAS班级,dbo.student.stu_nameAS学生,dbo.qingjia.leave_reasonAS请假原因,dbo.qingjia.day_numberAS请假天数,
dbo.classteacher.classtea_nameAS班主任,dbo.qingjia.class_tea_sp_statusAS审批状态
FROMdbo.classes,dbo.classteacher,dbo.student,dbo.qingjia
4、查询操作
(1)基本查询
--1查询student表中所有学生的全部信息
SELECT*fromstudent
(2)条件查询
--1、查询电信班,男学生
select*fromstudent
wherestu_sex='男'andstu_class='2012101'
(3)排序查询
--查询考试的课程并按降序排列
SELECTcourse_no,course_name,course_xzFROMcourse
WHEREcourse_xz='考试'
ORDERBYcourse_noDESC
(4)筛选和分组查询
--查询请假天数小于2天的学生学号
SELECTstu_no,day_number
FROMqingjia
GROUPBYstu_no,day_number
HAVINGday_number<2
(5)联结查询
--查询学生专业
SELECTDISTINCTstudent.*,major.*
FROMstudent,major
WHEREstudent.stu_major=major.major_id
(6)嵌套查询
--查询电信专业的学生
SELECTstu_nameFROMstudent
WHEREstu_major='1'
六、数据库触发器的规划和设计
--为数据表qingjia创建一个触发器qingjia_t1,实现在更新操作中禁止修改请假天数
CREATETRIGGERqinjia_t1onqingjia
forupdate
as
ifupdate(day_number)
begin
print'请假天数不允许修改!
'
ROLL
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 课程设计 学生 考勤