2022-06-09-学生考勤信息管理系统数据库课程设计
《学生考勤信息管理系统》数据库课程设计
目录
(
一、 需求分析
本篇设计文档包括前台功能模块和后台功能模块
前台功能模块
后台功能模块
1.1 功能模块的划分及介绍
本系统包括四个功能模块, 注册登录 , 考勤 , 后台管理 和 请假 四个功能模块。
1..注册模块: 本功能模块设计涉及新用户的注册,和用户的登录,用户分为六大类,学生,任课教师,导员,院系领导,学校领导,系统管理员,他们可以通过自己的学号,和职工号进行注册,后台根据他们的身份不同会赋予不同的权限.
2. 考勤模块 :本功能模块根据学校的实际需求又分为了四个小的板块
2.1:早操考勤:本模块的功能是学生早操考勤信息的实现,学生可以查看自己本学期的早操出勤情况,导员,院领导,校领导可以查看自己所管辖范围内的学生的早操出勤情况
2.2:开会考勤:本模块的功能是学生开会考勤信息的实现,学生可以查看自己本学期的开会出勤情况,导员,院领导,校领导可以查看自己所管辖范围内的学生的开会出勤情况
2.3:上课考勤:本模块的功能是学生上课考勤信息的实现,学生可以查看自己本学期的上课出勤情况,导员,院领导,校领导可以查看自己所管辖范围内的学生的上课出勤情况
2.4:活动考勤:本模块的功能是学生活动考勤信息的实现,学生可以查看自己本学期的活动考勤情况,导员,院领导,校领导可以查看自己所管辖范围内的学生的活动考勤情况
最终可以根据这四项考勤的情况分别生成每一个院的,每一个班的,每一位同学的量化积分,学校可以根据这个评定优秀院系,优秀班集体,老师可以根据量化积分对学生进行评优评先的推选
3 .请假模块 :本模块的功能是在线请假的实现管理,学生有特殊情况导致不能按时上课,上操,开会等可以用到这个功能,这个模块主要设计三大类用户,学生,导员,院系领导用户,学生通过此模块进行在线请假及查看请假记录信息,导员在线审批学生请假,及查看学生请假记录信息,院系领导在线审批学生 长 时间的请假及查看请假记录信息
4.后台管理模块 :本模块的功能实现整个系统数据的同步更新及维护,只涉及系统管理员用户.系统管理员动态管理学生信息,课表安排,会议安排,早操安排,学年安排等,是将数据进行整合推送到前台进行展示,是整个系统实现的基础
1.2 实体及重要属性
●学生:学院,专业,班级,姓名,性别,学号,身份证号等信息。
●考勤人员:部门,姓名、院系,班级,学号,等信息。
●院系:院系名称,院系领导等信息
●班级:年级、班级名称、专业名称等信息
●活动:活动名称、活动时间、活动地点等信息
●会议:会议名称、会议时间、会议地点等信息
●早操:上操时间,上操地点等信息
●课程:课程号,课程名,授课老师,课时,上课时间等信息
通过分析,本系统中各实体之间的联系如下:
●院系-学生:一个院系可以有很多学生,但一个学生只能属于一个院系,所以院系和学生是一对多的关系
●院系-考勤人员:一个院系可以有很多考勤人员,但一个考勤人员只能属于一个院系,所以院系和考勤人员是一对多的关系
●院系-班级:一个院系可以有很多班级,但一个班级只能属于一个院系,所以院系和班级是一对多的关系
●考勤人员-班级:一个考勤人员只能考察一个班级,一个班级可以同时被过个考勤人员考察,所以考勤人员和班级是一对多的关系
●活动-学生:一个活动可以有多个学生参加,一个学生特定时间只可以参加1个活动,所以活动和学生是1对多的关系
●会议-学生:一个会议可以有多个学生参加,一个学生特定时间可以参加1个会议,所以会议和学生是1对多的关系
●早操-学生:一个早操队伍可以有多个学生参加,一个学生特定时间只能在一个早操队伍中
●课程-学生:一门课可以被多个学生一块上课,一个学生特定时间内只可以上一节课,所以课程和学生之间是1对多关系
1.3 业务流程图
全局流程图
请假子模块流程图
二、 概念结构设计
2.1. E-R图的设计
三 、逻辑结构设计
表设计
User1 -用户表
字段 数据类型 含义说明 空值情况 备注 Account1 Varchar(20) 账号 Not null 主键 Type Varchar(20) 登录类型 NOT NULL 教师,学生,院系领导,管理员 Password1 Varchar(20) 密码 NOT NULL S tudent-学生信息表
字段名 数据类型 含义说明 空值情况 备注 StudentID varchar(20) 学号 Not null 主键 Sname varchar(20) 姓名 NOT NULL SSex varchar(20) 性别 NOT NULL 男,女 Class Varchar(20) 班级 NOT NULL College Varchar(20) 学院 NOT NULL Specialty Varcahr(20) 专业 NOT NULL ID number Char(10) 身份证号 NOT NULL Mid Varchar(20) 会议编号 NULL 外键(对应会议表) Aid Varchar(20) 活动编号 NULL 外键(对应活动信息表) Cid Varchar(20) 课程编号 NULL 外键(对应课程信息表) Exercise time Char(20) 上操时间 NULL 外键(对应早操表) Exercise location Varchar(20) 上操地点 NULL 外键(对应早操表) Join time Char(20) 参加时间 NULL Where the attendendance bit 是否出勤 NULL 0,1 Where the leave bit 是否请假 NULL 0,1 College - 院系 信息表
字段 数据类型 含义说明 空值情况 备注 Collegename Varchar(10) 院系名称 Not null 主键 College leade number Varchar(20) 院系领导职工号 NOT NULL College leadename Varchar(20) 院系领导名字 NOT NULL ClassID Varchar(20) 班级编号 Not null 外键(对应班级表) Attendance personnel 考勤人员 表
字段 数据类型 含义说明 空值情况 备注 APID Varchar(50) 考勤人员学号 NOT NULL 主键 Department name Varchar(20) 部门名称 NOT NULL Aname Varchar(4) 姓名 NOT NULL; Collegename Varchar(20) 学院名称 NOT NULL; Classname Varchar(20) 班级名称 NOT NULL; Class 班级信息 表
字段 数据类型 含义说明 空值情况 备注 ClassID Varchar(20) 班级编号 NOT NULL 主键 Classname Varchar(20) 班级名称 NOT NULL Grade int 年级 NOT NULL; 19,20,18,.. APID Varchar(20) 考勤人员学号 NOT NULL; 外键(对应考勤人员表) majorname Varchar(20) 专业名称 Not null Activity - 活动信息表
字段 数据类型 含义说明 空值情况 备注 AID Varchar(20) 活动编号 NOT NULL 主关键词 Aname Varchar(20) 活动名称 NOT NULL Atime Varchar(20) 活动时间 NOT NULL Alocation Varchar(20) 活动地点 Not Null meeting - 会议 信息表
字段 数据类型 含义说明 空值情况 备注 MID Varchar(20) 会议编号 NOT NULL 主关键词 Mname Varchar(20) 会议名称 NOT NULL Mtime Varchar(20) 会议时间 NOT NULL Mlocation Varchar(20) 会议地点 Not Null exercise - 早操 信息表
字段 数据类型 含义说明 空值情况 备注 Etime Varchar(20) 早操时间 早操时间地点共同组成主键不能null 早操时间地点共同构成主键 Elocation Varchar(20) 早操地点 Not Null course - 课程 信息表
字段 数据类型 含义说明 空值情况 备注 CID Varchar(20) 课程编号 NOT NULL 主键 Cname Varchar(20) 课程名称 NOT NULL Ctime Varchar(20) 上课时间 NOT NULL cteacher Varchar(20) 授课老师 Not Null ckeshi varchar 课时 Not Null
四、物理设计
4.1 数据库的存放位置和存储结构
4.1.1 数据库的存放位置
D:\考勤app
4.1.2 数据库的存储结构
创建的数据库为
考勤app
,有两个文件组,一个是主文件组primary,里面有
一
个文件,分别是
A1
,另一个是次要文件组secondary,里面有次要文件
A2
,
最后是日志文件A3
表存放于主文件组中。
4.2 索引设计
表2 索引表
表名 建立索引的字段 类型 列值是否唯一 user(用户表) Account (账号) 聚集索引 是 S tudent ( 学生表 ) StudentID (学号) 聚集索引 是 Attendancepersonnel (考勤人员 表 ) APID(考勤人员学号) 聚集索引 是 Collecg(院系 信息表 ) Collegename(院系名称) 聚集索引 是 Class (班级信息 表 ) ClassID(班级编号) 聚集索引 是 activity ( 活动 信息表 ) AID(活动编号) 聚集索引 是 meeting - ( 会议 信息表 ) MID(会议编号) 聚集索引 是 exercise - (早操 信息表 ) Etime Elocation(早操时间,地点) 聚集索引 是 course - (课程 信息表 ) CID 聚集索引 是
五、数据库实施
5.1 创建数据库
use
master
go
create
database
考勤app
on
primary
(
name
=
a1_mdf
,
filename
=
‘D:\考勤app\a1.mdf’
,
size
= 10 mb
,
maxsize
= 50 mb
,
filegrowth
= 1 mb
),
filegroup
secondry
(
name
=
a2_mdf
,
filename
=
‘D:\考勤app\a2.ndf’
,
size
= 10 mb
,
maxsize
= 50 mb
,
filegrowth
= 1 mb
)
log
on
(
name
=
a3_ldf
,
filename
=
‘D:\考勤app\a3.ldf’
)
5.2 创建表
(1)用户表
use
考勤app
go
create
table
user1
(
Account
varchar
( 20 )
not
null
,
type1
varchar
( 20 )
not
null,
password1
varchar
( 20 )
not
null
constraint
pk_user
primary
key
(
account
)
)
(2)学生信息表
create
table
student
(
Studentid
varchar
( 20 )
not
null,
sname
varchar
( 20 )
not
null,
ssex
varchar
( 20 )
not
null,
class
varchar
( 20 )
not
null,
colleage
varchar
( 20 )
not
null,
specialty
varchar
( 20 )
not
null,
idnumber
char
( 10 )
not
null,
mid
varchar
( 20 )
,
aid
varchar
( 20 )
,
cid
varchar
( 20 )
,
exercisetime
char
( 20 )
,
exerciselocation
varchar
( 20 )
,
jointime
char
( 20 )
,
wherethrthrattendendance
bit
,
wheretheleave
bit
constraint
pk_student
primary
key
(
studentid
),
constraint
fk_meeting_student
foreign
key
(
mid
)
references
meeting
(
mid
),
constraint
fk_activity_student
foreign
key
(
aid
)
references
activity
(
aid
),
constraint
fk_course_student
foreign
key
(
cid
)
references
course
(
cid
)
)
(3 ) College - 院系 信息表
create
table
college
(
collegename
varchar
( 10 )
not
null,
collegenameleadenumber
varchar
( 20 )
not
null,
collegeleadename
varchar
( 20 )
not
null,
classid
varchar
( 20 )
not
null,
constraint
pk_college
primary
key
(
collegename
),
constraint
fk_course_college
foreign
key
(
classid
)
references
c
lass
(
classid
)
)
)
( 4) Attendance personnel 考勤人员 表
create
table
attendancepersonnel
(
apid
varchar
(
5 0 )
not
null,
departmentname
varchar
( 20 )
not
null,
aname
varchar
( 4 )
not
null,
collegename
varchar
( 20 )
not
null,
classname
varchar
( 20 )
not
null
constraint
pk_attendancepersonnel
primary
key
(
apid
),
)
(5 ) Class 班级信息 表
create
table
class
(
classid
varchar
( 20 )not
null,
classname
varchar
( 20 )
not
null,
grade
int
not
null,
apid
varchar
( 20 )
not
null,
major
varchar
( 20 )
not
null,
constraint
pk_class
primary
key
(
classid
),
constraint
fk_attendancepersonnel_class
foreign
key
(
apid
)
references
attendancepersonnel
(
apid
)
)
(6)activity - 活动 信息表
create
table
activity
(
aid
varchar
( 20 )
not
null,
aname
varchar
( 20 )not
null,
atime
varchar
( 20 )not
null,
alocation
varchar
( 20 )not
null,
constraint
pk_activity
primary
key
(
aid
)
)
(7)meeting - 会议 信息表
create
table
meeting
(
mid
varchar
( 20 )
not
null,
mname
varchar
( 20 )
not
null,
mtime
varchar
( 20 )
not
null,
mlocation
varchar
( 20 )
not
null,
constraint
pk_meeting
primary
key
(
mid
),
)
(8)exercise - 早操 信息表
create
table
exercise
(
etime
varchar
( 20 )
not
null,
elocation
varchar
( 20 )
not
null
constraint
pk_exercise
primary
key
(
etime
,
elocation
),
)
9 course - 课程 信息表
create
table
course
(
cid
varchar
( 20 )
not
null,
cname
varchar
( 20 )
not
null,
ctime
varchar
( 20 )
not
null,
cteacher
varchar
( 20 )
not
null,
Ckeshi
varchar(20) not null
constraint
pk_course
primary
key
(
cid
),(主键创建)
六、数据库的试运行
6.1 填入示例数据
说明:使用insert语句向表中添加必要数据。
use
考勤app
go
insert
into
activity
(
aid
,
aname
,
atime
,
alocation
)
values
(
‘a1234’
,
‘操场汇演’
,
‘20220317’
,
‘操场’
)
insert
into
attendancepersonnel
(
apid
,
departmentname
,
aname
,
collegename
,
classname
)
values
(
‘2002160102025’
,
‘体育部’
,
‘薛豪’
,
‘信息工程学院’
,
‘大数据02’
)
insert
into
class
(
classid
,
classname
,
grade
,
apid
,
major
)
values
(
‘1’
,
‘大数据02’
,
‘20’
,
‘2002160102025’
,
‘大数据’
)
insert
into
college
(
collegename
,
collegenameleadenumber
,
collegeleadename
,
classid
)
values
(
‘信息工程学院’
,
‘2020222’
,
‘刘卫民’
,
‘1’
)
insert
into
course
(
cid
,
cname
,
ctime
,
cteacher
,
ckeshi
)
values
(
‘3308’
,
‘数据库系统原理’
,
‘20220502’
,
‘李明义’
,
‘48’
)
insert
into
exercise
(
etime
,
elocation
)
values
(
‘20220503’
,
‘操场’
)
insert
into
meeting
(
mid
,
mname
,
mtime
,
mlocation
)
values
(
‘101-101-101’
,
‘防诈骗宣讲会’
,
‘20220405’
,
‘大礼堂’
)
insert
into
student
(
studentid
,
sname
,
ssex
,
class
,
colleage
,
specialty
,
idnumber
,
exercisetime
,
exerciselocation
,
jointime
,
wherethrthrattendendance
,
wheretheleave
)
values
(
‘2002160102025’
,
‘薛豪’
,
‘男’
,
‘大数据02’
,
‘信息工程学院’
,
‘大数据’
,
‘410720200201015730’
,
‘20020205’
,
‘操场’
,
‘20220104’
,
‘1’
,
‘0’
)
insert
into
student
(
studentid
,
sname
,
ssex
,
class
,
colleage
,
specialty
,
idnumber
,
mid
,
jointime
,
wherethrthrattendendance
,
wheretheleave
)
values
(
‘2002160102024’
,
‘小明’
,
‘男’
,
‘大数据02’
,
‘信息工程学院’
,
‘大数据’
,
‘410720200201015721’
,
‘101-101-101’
,
‘20220401’
,
‘1’
,
‘0’
)
insert
into
student
(
studentid
,
sname
,
ssex
,
class
,
colleage
,
specialty
,
idnumber
,
aid
,
jointime
,
wherethrthrattendendance
,
wheretheleave
)
values
(
‘2002160102023’
,
‘小红’
,
‘女’
,
‘大数据02’
,
‘信息工程学院’
,
‘大数据’
,
‘410720200201015722’
,
‘a1234’
,
‘20220406’
,
‘1’
,
‘0’
)
insert
into
student
(
studentid
,
sname
,
ssex
,
class
,
colleage
,
specialty
,
idnumber
,
cid
,
jointime
,
wherethrthrattendendance
,
wheretheleave
)
values
(
‘2002160102022’
,
‘小花’
,
‘女’
,
‘大数据02’
,
‘信息工程学院’
,
‘大数据’
,
‘410720200201015713’
,
‘3308’
,
‘20220407’
,
‘1’
,
‘0’
)
insert
into
user1
(
Account
,
type1
,
password1
)
values
(
‘2597730259’
,
‘教师’
,
‘111111’
)
insert
into
user1
(
Account
,
type1
,
password1
)
values
(
‘1111’
,
‘学生’
,
‘123456’
)
insert
into
user1
(
Account
,
type1
,
password1
)
values
(
‘11’
,
‘院系领导’
,
‘1212’
)
insert
into
user1
(
Account
,
type1
,
password1
)
values
(
‘1’
,
‘管理员’
,
‘12’
)
视图展示
68747470733a2f2f62:6c6f672e6373646e2e6e65742f71715f35323637343035302f:61727469636c652f64657461696c732f313235313939323038