学生考勤管理系统

学生考勤管理系统

学生考勤管理系统

背景分析:
随着高校校园信息化的逐步完善,有效地借助网络、数据库等技术提高工作和管理效率。如今针对师生的成绩查询系统、教务管理系统、招生就业系统、BBS、校园网站等系统在各大高校纷纷出现[1],对全校师生的学习、生活、管理、办公带来了便利。因此学生考勤管理系统能进一步加强高校学风建设,维护正常的教学秩序,给学生创造一个优良的学习环境。目前高校学生上课考勤管理都是以任课老师上课点名,记录学生上课情况,对于时间比较长的请假,需要通过递交请假申请让班主任、院系领导都批准方能生效。这种模式在目前高校管理中暴露了不可避免的弊端:
1、学生请假不方便;
2、学生请假对任课老师不透明;
3、学生对自己整个学期的上课出勤情况没有整体的统计信息;
4、班主任对本班学生整个学期的上课出勤情况不易查看;
5、院系领导、学校领导不容易把握学生上课的出勤情况。
因此一个好的学生考勤管理系统在一定程度上可以解决这些弊端,本系统主要针对目前高校学生在线请假以及学生上课出勤管理而设计的信息系统。本系统涉及到高校四大类用户:学生、任课老师、班主任、系统管理员。

用户需求描述
用户是系统的最终使用者,根据分析,本系统应当包括学生、班主任、任课老师、系统管理员四类类用户,这四类用户对系统的需求简要概括如下:

学生用户需求描述
学生对本系统的主要需求是:在线请假以及查看在校期间所有的上课出勤信息。在线请假需求:学生请假的全过程当中,学生可以随时查看请假的详细进展情况。查看出勤信息需求:学生可以查看在校期间所有学期上课出勤的详细信息,如:查看“mysql数据库管理应用于开发”这门课程在整个学期请假、旷课多少次等信息。其它需求:查看本人的基本信息,如本人的所属的院系、年级、专业、班级、学号、姓名、性别等,以及修改个人用户密码。

任课老师用户需求描述
任课老师对系统的主要需求是:管理所教班级学生的上课出勤信息以及查看所教班级学生的上课出勤信息。管理学生上课出勤需求:随着时间的变化,自动列出还没有在网上公布的学生上课出勤信息,系统自动根据学生请假系统,决定学生上课出勤的最终结果。查看学生出勤信息需求:查看所教班级学生整个学期出勤情况。其它需求:本人基本信息以及修改个人用户密码。

辅导员用户需求描述
导员对本系统的主要需求是:审批本班学生本学期的在线请假以及查看本班学生本学期所有课程的上课出勤信息。审批学生请假需求:本班学生本学期在线请假申请后,自动提示导员有等待审批的请假信息,导员针对请假申请信息进行学生请假审批。查看学生上课出勤信息需求:查看本班学生整个学期有关课程的出勤统计信息及详细信息。其它需求:查看本班学生的基本信息、修改个人用户密码等。

系统管理员用户需求描述
系统管理员有系统的最高权限,负责系统所需所有数据的动态同步更新以及维护,根据系统针对各用户的设计,基本功能需求如下:
1、管理学校各院系、年级、专业、班级的添加、删除、修改等。
2、管理每个学期每个班级的课程安排及指定班主任和任课老师。
3、管理系统所有用户。
4、管理全校课表安排。
5、管理系统的请假、考勤信息。

需求功能描述
任课老师对系统的主要需求是:管理所教班级学生的上课出勤信息以及查看所教班级学
生的上课出勤信息。
管理学生上课出勤需求:随着时间的变化,自动列出还没有在网上公布的学生上课出勤
信息,系统自动根据学生请假系统,决定学生上课出勤的最终结果。
查看学生出勤信息需求:查看所教班级学生整个学期出勤情况。
其它需求:本人基本信息以及修改个人用户密码。

系统功能划分
根据系统用户的需求,将本系统按功能划分成三大功能模块:请假系统、考勤系统、后台管理模块,涉及到四大类用户:学生、任课教师、班主任、系统管理员。

请假系统模块
本模块的功能是在线请假的实现及管理,主要涉及三大类用户:学生、班主任,科任老师,学生通过此功能模块进行在线请假及查看请假记录信息;科任老师在线审批学生请假及查看请假记录信息;班主任在线审批学生长时间的请假及查看请假记录信息。

勤系统模块
本模块的功能是学生考勤信息统计的实现、查看及管理,涉及四大类用户中的所有用户。学生在线查看自己所有学年的出勤信息;任课老师在线管理学生出勤信息,班主任查看不同的范围的学生出勤信息。

用户管理模块
在用户管理这块上,我们采用权限限制的方式管理不同用户登录以后的不通功能界面。我们给予用户不同的role,同样管理员有权限给予role权限的改变。

后台管理
本模块的功能实现整个系统数据的同步更新及维护,只涉及系统管理员用户。系统管理员动态的管理学生信息、课表安排、学年安排等信息,是整个系统实现的基础。

学生考勤系统总体设计

在这里插入图片描述
数据字典设计
数据项:
名称:编号ID
简述:唯一标识一个用户
类型:int型
长度:11
取值范围:数字的组合
取值含义:用学生的入学年份作为ID前四位、后三位为学生编号。以ID为主键,作为用户的唯一标识符,

名称:用户
简述:用户具有账号与密码登陆系统请假、查看自己的考勤情况以及管理请假的人员
组成:姓名+班级+联系方式+宿舍+家庭地址
类型:字符型
长度:40个字节
取值含义:我们选择姓名作为登陆的账号,如果有同名的,登陆账号可以取其他标识但学号是唯一的标识,只是登陆名有变化

名称:请假表
简述:学生在系统中提交请假表,请假时间、结束时间
组成:姓名+班级+请假时间+结束时间
类型:表单

名称:课程表
简述:学生查看自己的课表,查看自己的任课老师,对相应的课程请假
组成:课程编号+任课老师+课程名称+时间
类型:表单

名称:班级表
简述:记录每个班级学生的人数、名字、班级课程表、班级名称
组成:学生姓名+班级名称+班级编号
类型:表单
作用:记录每个班级的学生人数、姓名

数据库设计
数据库设计包含需求设计、逻辑设计、物理设计和维护优化。
需求分析:全面了解产品设计的存储需求(存储需求,数据处理需求,数据的安全性和完整性)
逻辑设计:设计数据的逻辑存储结构(数据实体之间的逻辑关系,解决数据冗余和数据维护异常 )
物理设计:根据所使用的数据库特点进行表结构设计
维护优化:根据实际情况对索引、存储结构等进行优化
5.1数据库结构优化的目的
减少数据冗余
尽量你变数据维护中出现更新,插入和删除异常
简约数据库的存储空间
提高查询效率
为了设计出没有数据冗余和数据维护异常的数据结构,我们需要遵循以下规范
第一范式
数据库表中的所有字段都只有单一属性
单一属性的列都是由基本的数据类型所构成
设计出来的表都是简单的二维表
第二范式
要求一个表中只具有一个业务主键,也就是说符合第二范式的表中不能存在非主键列对只对部分主键的依赖关系。以学生考勤为例,它的主键是复合主键(学生编号,课程),而考勤只依赖于课程,即非主键列只对部分主键存在依赖关系,不符合第二范式。

第三范式
每一个非主属性既不部分依赖于也不传递依赖于业务主键,也就是在第二范式的基础上消除了非主属性对主键的传递依赖。对于学生表,班级依赖于学生编号,此时,这张表不满足第三范式。如果想让这张表满足第三范式就需要继续对这张表进行拆分。

5.2数据库表的设计
1班级表的创建及数据的写入
DROP TABLE IF EXISTS t_banji;
CREATE TABLE t_banji (
id int(11) NOT NULL AUTO_INCREMENT,
banjiname varchar(255) DEFAULT NULL,
banjinum varchar(255) DEFAULT NULL,
createtime datetime DEFAULT NULL,
yuanxi varchar(255) DEFAULT NULL,
zhuanye varchar(255) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;


– Records of t_banji


INSERT INTO t_banji VALUES (‘1’, ‘软件1102’, ‘ruanjian001’, ‘2020-05-24 09:59:18’, ‘计算机学院’, ‘软件工程’);
INSERT INTO t_banji VALUES (‘2’, ‘计算机1102’, ‘jisuanji001’, ‘2020-05-24 09:59:44’, ‘计算机学院’, ‘计算机科学与技术’);
INSERT INTO t_banji VALUES (‘4’, ‘信安1101’, ‘xinan001’, ‘2020-05-24 10:01:32’, ‘信息学院’, ‘信息安全’);
INSERT INTO t_banji VALUES (‘5’, ‘机械1101’, ‘jixie001’, ‘2020-05-24 10:01:56’, ‘机械学院’, ‘机械设计’);

运行截图:

2.考勤表的创建及数据写入

DROP TABLE IF EXISTS t_kaoqinlog;
CREATE TABLE t_kaoqinlog (
id int(11) NOT NULL AUTO_INCREMENT,
banjinum varchar(255) DEFAULT NULL,
codenum varchar(255) DEFAULT NULL,
createtime datetime DEFAULT NULL,
iskuangke int(11) NOT NULL,
kechengname varchar(255) DEFAULT NULL,
kuangkenum int(11) NOT NULL,
riqi varchar(255) DEFAULT NULL,
teacher varchar(255) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;


– Records of t_kaoqinlog


INSERT INTO t_kaoqinlog VALUES (‘1’, ‘ruanjian001’, ‘孙孙’, ‘2020-05-24 13:58:02’, ‘1’, ‘计算机理论’, ‘1’, ‘2020-05-24’, ‘侯老师’);
INSERT INTO t_kaoqinlog VALUES (‘2’, ‘ruanjian001’, ‘孙孙’, ‘2020-05-24 13:58:35’, ‘1’, ‘大学数学’, ‘1’, ‘2020-05-24’, ‘侯老师’);
INSERT INTO t_kaoqinlog VALUES (‘4’, ‘jisuanji001’, ‘老吴’, ‘2020-05-24 14:16:48’, ‘1’, ‘马克思’, ‘1’, ‘2020-05-17’, ‘李老师’);
INSERT INTO t_kaoqinlog VALUES (‘5’, ‘jisuanji001’, ‘老吴’, ‘2020-05-24 14:17:25’, ‘1’, ‘计算机理论’, ‘3’, ‘2020-05-19’, ‘李老师’);
INSERT INTO t_kaoqinlog VALUES (‘7’, ‘jisuanji001’, ‘老杨’, ‘2020-05-24 15:00:59’, ‘1’, ‘大学英语’, ‘1’, ‘2020-05-11’, ‘李老师’);

运行截图:

3课程表的创建及数据写入
DROP TABLE IF EXISTS t_kecheng;
CREATE TABLE t_kecheng (
id int(11) NOT NULL AUTO_INCREMENT,
banji varchar(255) DEFAULT NULL,
banjinum varchar(255) DEFAULT NULL,
createtime datetime DEFAULT NULL,
kechenglock int(11) NOT NULL,
kechengname1 varchar(255) DEFAULT NULL,
kechengname2 varchar(255) DEFAULT NULL,
kechengname3 varchar(255) DEFAULT NULL,
kechengname4 varchar(255) DEFAULT NULL,
kechengname5 varchar(255) DEFAULT NULL,
kechengname6 varchar(255) DEFAULT NULL,
kechengname7 varchar(255) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;


– Records of t_kecheng


INSERT INTO t_kecheng VALUES (‘1’, null, ‘ruanjian001’, ‘2020-05-24 10:11:05’, ‘1’, ‘大学英语’, ‘大学数学’, ‘计算机理论’, ‘Java’, ‘汇编’, ‘’, ‘’);
INSERT INTO t_kecheng VALUES (‘3’, null, ‘ruanjian001’, ‘2020-05-24 10:12:47’, ‘2’, ‘大学数学’, ‘大学英语’, ‘马克思’, ‘人工智能’, ‘概率论’, ‘’, ‘’);
INSERT INTO t_kecheng VALUES (‘4’, null, ‘jisuanji001’, ‘2020-05-24 11:12:30’, ‘1’, ‘大学数学’, ‘大学英语’, ‘计算机’, ‘马克思’, ‘物理’, ‘’, ‘’);

运行截图:
4请假单表的设计及数据的写入
DROP TABLE IF EXISTS t_qingjiadan;
CREATE TABLE t_qingjiadan (
id int(11) NOT NULL AUTO_INCREMENT,
banjinum varchar(255) DEFAULT NULL,
codenum varchar(255) DEFAULT NULL,
createtime datetime DEFAULT NULL,
qjtime1 varchar(255) DEFAULT NULL,
qjtime2 varchar(255) DEFAULT NULL,
shenhe varchar(255) DEFAULT NULL,
shenhecontent varchar(255) DEFAULT NULL,
username varchar(255) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;


– Records of t_qingjiadan


INSERT INTO t_qingjiadan VALUES (‘7’, ‘ruanjian001’, ‘孙孙’, ‘2020-05-24 14:33:19’, ‘2020-05-09 14:33:12’, ‘2020-05-10 14:33:15’, ‘不通过’, ‘胆子太大了,一直请假!’, ‘孙孙’);
INSERT INTO t_qingjiadan VALUES (‘8’, ‘ruanjian001’, ‘孙孙’, ‘2020-05-24 14:33:40’, ‘2020-05-08 14:33:34’, ‘2020-05-26 14:33:37’, ‘通过’, ‘可以’, ‘孙孙’);
INSERT INTO t_qingjiadan VALUES (‘9’, ‘jisuanji001’, ‘老吴’, ‘2020-05-24 14:58:12’, ‘2020-05-11 14:58:06’, ‘2020-05-19 00:00:00’, ‘通过’, ‘同意’, ‘老吴’);
INSERT INTO t_qingjiadan VALUES (‘10’, ‘jisuanji001’, ‘老杨’, ‘2020-05-24 15:00:05’, ‘2020-05-17 14:59:59’, ‘2020-05-25 15:00:03’, ‘不通过’, ‘好好学习’, ‘老杨’);

– Table structure for t_user


DROP TABLE IF EXISTS t_user;
CREATE TABLE t_user (
id int(11) NOT NULL AUTO_INCREMENT,
address varchar(255) DEFAULT NULL,
banjinum varchar(255) DEFAULT NULL,
codenum varchar(255) DEFAULT NULL,
createtime datetime DEFAULT NULL,
password varchar(255) DEFAULT NULL,
phone varchar(255) DEFAULT NULL,
role int(11) NOT NULL,
room varchar(255) DEFAULT NULL,
userlock int(11) NOT NULL,
username varchar(255) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;


– Records of t_user


INSERT INTO t_user VALUES (‘1’, null, null, ‘admin’, null, ‘admin’, null, ‘0’, null, ‘0’, ‘admin’);
INSERT INTO t_user VALUES (‘7’, ‘铜仁沿河’, ‘ruanjian001’, ‘侯老师’, ‘2020-05-24 11:06:44’, ‘1’, ‘13565656888’, ‘3’, ‘2号宿舍’, ‘0’, ‘侯老师’);
INSERT INTO t_user VALUES (‘8’, ‘铜仁碧江’, ‘jisuanji001’, ‘李老师’, ‘2020-05-24 11:07:04’, ‘1’, ‘18888888888’, ‘3’, ‘33宿舍’, ‘0’, ‘李老师’);
INSERT INTO t_user VALUES (‘9’, ‘铜仁德江’, ‘ruanjian001’, ‘孙孙’, ‘2020-05-24 11:07:46’, ‘1’, ‘13656565666’, ‘4’, ‘321宿舍’, ‘0’, ‘孙孙’);
INSERT INTO t_user VALUES (‘10’, ‘铜仁江口’, ‘jisuanji001’, ‘老吴’, ‘2020-05-24 14:51:18’, ‘1’, ‘13565656888’, ‘4’, ‘303宿舍’, ‘0’, ‘老吴’);
INSERT INTO t_user VALUES (‘11’, ‘铜仁沿河’, ‘jisuanji001’, ‘老杨’, ‘2020-05-24 14:59:41’, ‘1’, ‘13565656888’, ‘4’, ‘303宿舍’, ‘0’, ‘老杨’);

运行截图:

6.项目测试
6.1界面预览
登录界面

在这里插入图片描述

主界面:
在这里插入图片描述

功能界面:

在这里插入图片描述

老师审核界面:
在这里插入图片描述

以上截图实现了学生基本请假的流程,学生在线提交请假单,老师登录页面看到学生请假以后反馈给学生同意或者不同意以及其他意见,学生可以查看老师的批阅。

  • 27
    点赞
  • 197
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

课题设计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值