目录
一、 需求分析
前台功能模块
后台功能模块
1.1 功能模块的划分及介绍
1.2 实体及重要属性
1.3 业务流程图
二、 概念结构设计
2.1. E-R图的设计
三 、逻辑结构设计
表设计
User1-用户表
Student-学生信息表
College-院系信息表
Attendance personnel 考勤人员表
Class 班级信息表
Activity-活动信息表
meeting-会议信息表
exercise-早操信息表
course-课程信息表
四、物理设计
4.1 数据库的存放位置和存储结构
4.1.1 数据库的存放位置
4.1.2 数据库的存储结构
4.2 索引设计
表2 索引表
五、数据库实施
5.1 创建数据库
5.2 创建表
(1)用户表
(2)学生信息表
(3)College-院系信息表
(4)Attendance personnel 考勤人员表
(5)Class 班级信息表
(6)activity-活动信息表
(7)meeting-会议信息表
(8)exercise-早操信息表
(9) course-课程信息表
六、数据库的试运行
6.1 填入示例数据
视图展示
本篇设计文档包括前台功能模块和后台功能模块
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
Student-学生信息表
字段名
数据类型
含义说明
空值情况
备注
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 (账号)
聚集索引
是
Student(学生表)
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 = 10mb,
maxsize = 50mb,
filegrowth =1mb
),
filegroup secondry
(
name = a2_mdf,
filename = 'D:\考勤app\a2.ndf',
size =10mb,
maxsize = 50mb,
filegrowth = 1mb
)
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 class(classid)
)
)
(4)Attendance personnel 考勤人员表
create table attendancepersonnel
(
apid varchar(50) 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')
视图展示