数据库课程设计学生考勤.docx

上传人:b****6 文档编号:16322494 上传时间:2023-07-12 格式:DOCX 页数:22 大小:524.90KB
下载 相关 举报
数据库课程设计学生考勤.docx_第1页
第1页 / 共22页
数据库课程设计学生考勤.docx_第2页
第2页 / 共22页
数据库课程设计学生考勤.docx_第3页
第3页 / 共22页
数据库课程设计学生考勤.docx_第4页
第4页 / 共22页
数据库课程设计学生考勤.docx_第5页
第5页 / 共22页
数据库课程设计学生考勤.docx_第6页
第6页 / 共22页
数据库课程设计学生考勤.docx_第7页
第7页 / 共22页
数据库课程设计学生考勤.docx_第8页
第8页 / 共22页
数据库课程设计学生考勤.docx_第9页
第9页 / 共22页
数据库课程设计学生考勤.docx_第10页
第10页 / 共22页
数据库课程设计学生考勤.docx_第11页
第11页 / 共22页
数据库课程设计学生考勤.docx_第12页
第12页 / 共22页
数据库课程设计学生考勤.docx_第13页
第13页 / 共22页
数据库课程设计学生考勤.docx_第14页
第14页 / 共22页
数据库课程设计学生考勤.docx_第15页
第15页 / 共22页
数据库课程设计学生考勤.docx_第16页
第16页 / 共22页
数据库课程设计学生考勤.docx_第17页
第17页 / 共22页
数据库课程设计学生考勤.docx_第18页
第18页 / 共22页
数据库课程设计学生考勤.docx_第19页
第19页 / 共22页
数据库课程设计学生考勤.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数据库课程设计学生考勤.docx

《数据库课程设计学生考勤.docx》由会员分享,可在线阅读,更多相关《数据库课程设计学生考勤.docx(22页珍藏版)》请在冰点文库上搜索。

数据库课程设计学生考勤.docx

数据库课程设计学生考勤

 

文理学院

数据库原理与应用报告

 

专业班级:

电信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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2