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

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

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

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

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

数据库课程设计学生考勤

 

湖南文理学院

数据库原理与应用报告

 

专业班级:

电信12101班

学生姓名:

学生学号:

指导教师:

刘长青

设计时间:

一、需求分析

1、数据需求

2、数据流图

3、数据字典

二、概念结构设计

三、逻辑结构设计

四、物理结构设计

五、数据库的实施

1、创建数据库

2、数据表的维护与创建

3、数据库索引和视图

4、查询操作

六、数据库触发器的规划和设计

七、数据库的安全管理与维护

八、结论

学生考勤管理系统

一、需求分析

为物电学院设计一个学生考勤管理系统,该系统主要实现对学生基本信息、教师基本信息、学生考勤等的管理,学生考勤管理系统功能需求包括:

学生基本信息表,教师基本信息表,班级表,专业表,课程表,班主任表,请假信息表,上课出勤记录表。

1、数据需求:

(1)学生基本信息表:

学号,姓名,性别,班级,专业,院系

(2)教师基本信息表:

姓名,性别,编号

(3)班级表:

班主任,名称,编号

(4)专业表:

专业名称,编号

(5)课程表:

课程号,课程名,课程性质

(6)班主任表:

编号,姓名,性别

(7)请假信息表:

编号,学号,原因,开始时间,结束时间,请假天数,申请请假时间,班主任审批状态,班主任审批时间

(8)上课出勤记录表:

编号,上课时间,学号

2、数据流图:

学生考勤

学生信息

课程

教师

请假信息表

学号

课程编号

编号

 

3、数据字典

(1)数据项

数据项:

学号

别名:

学生编号

含义说明:

唯一标识每个学生

类型:

字符型

长度:

9位

取值范围:

0000099

取值含义:

前四位表示学年,第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\')

(NAME=N'studentkaoqin_log',

FILENAME=N'E:

\fsf\sql\')

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('1','黄小明','男','2012101','1','')

insertintostudentvalues('2','张乐','男','2012101','1','')

insertintostudentvalues('1','刘丹','男','2012201','2','')

insertintostudentvalues('2','程冬冬','男','2012201','2','')

insertintostudentvalues('1','胡雪露','男','2012301','3','')

insertintostudentvalues('2','张亮','男','2012301','3','')

--2、班主任表classteacher添加内容

insertintoclassteachervalues('01','刘敏','女','1','')

insertintoclassteachervalues('02','刘圆圆','女','1','')

insertintoclassteachervalues('03','刘峰','女','2','255')

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','1','缺课','01','01')

insertintokaoqin_recordvalues('02','2015/1/914:

30','2','请假','06','02')

insertintokaoqin_recordvalues('03','2015/1/914:

30','1','缺课','04','05')

insertintokaoqin_recordvalues('04','2015/1/109:

00','2','缺课','05','03')

insertintokaoqin_recordvalues('05','2015/1/1014:

30','2','请假','05','03')

insertintokaoqin_recordvalues('06','2015/1/117:

00','1','缺课','02','06')

--5、专业表major添加内容

insertintomajorvalues('1','电子信息')

insertintomajorvalues('2','光电技术')

insertintomajorvalues('3','物理')

--6、请假表qingjia添加内容

insertintoqingjiavalues('1','2012201','2','生病','2015/1/80:

00','2015/1/100:

00','3','2015/1/70:

00','01','1','2015/1/80:

00',)

insertintoqingjiavalues('2','2012101','2','考驾照','2015/1/100:

00','2015/1/110:

00','1','2015/1/90:

00','02','1','2015/1/90:

00',)

insertintoqingjiavalues('3','2012201','1','兼职','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

SELECTAS学生姓名,AS考勤状态,AS课程名,AS上课时间,AS教师姓名,AS教师电话

FROMstudent,kaoqin_record,course,teacher

请假视图:

CREATEVIEW[dbo].[请假]

AS

SELECTAS班级,AS学生,AS请假原因,AS请假天数,

AS班主任,AS审批状态

FROM,,,

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

WHERE=

(6)嵌套查询

--查询电信专业的学生

SELECTstu_nameFROMstudent

WHEREstu_major='1'

六、数据库触发器的规划和设计

--为数据表qingjia创建一个触发器qingjia_t1,实现在更新操作中禁止修改请假天数

CREATETRIGGERqinjia_t1onqingjia

forupdate

as

ifupdate(day_number)

begin

print'请假天数不允许修改!

'

ROLLBACKTRANSACTION

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

当前位置:首页 > 小学教育 > 语文

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

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