基于PHP的签到系统的设计与实现.docx
《基于PHP的签到系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于PHP的签到系统的设计与实现.docx(18页珍藏版)》请在冰豆网上搜索。
![基于PHP的签到系统的设计与实现.docx](https://file1.bdocx.com/fileroot1/2023-5/15/6bc8b114-ebd5-4e75-ae37-39da0169a13e/6bc8b114-ebd5-4e75-ae37-39da0169a13e1.gif)
基于PHP的签到系统的设计与实现
基于PHP的签到系统设计与实现
摘 要:
伴随着时代的进步,企业与学校规模的不断扩大,员工及学生的数量也随之急剧增加,那么有关员工及学生的各种数据信息也成倍的增长。
但是面对如此庞大的信息量,我个人认为是有必要去开发一个员工签到登陆系统来提高企业管理员工队员工出勤管理的效率。
这样我们就可以减少许多不必要的资源开销,节约人力资源,使企业可以更便利节约成本的考核员工的出勤。
因此,本文在充分研究上述问题的基础上,设计一个应用于企业员工的签到系统,提高员工签到效率,降低了企业的人力成本。
本文使用PHP,MySQL,实现了B/S结构的员工签到系统,PHP作为当前最主流的网页制作语言,结合MySQL数据库来制作此签到系统,使得企业员工和签到系统管理员无论何时何地,都可以便捷的登录我们的系统,进行签到和信息的查询操作。
关键词:
签到;企业;PHP;MySQL
第一章绪论
1.1课题背景与研究意义
可以说,现如今无论是大中小型企业还是学校,都要面临一个给员工/学生考勤的问题,员工的考勤记录是直接和员工的绩效挂钩,影响员工的评优评先;而学生的考勤记录则是直接和学生的课堂成绩挂钩,直接关系到学校学风的建设问题。
鉴于考勤工作的重要性,我们需要一款能够协助企业考勤人员,学校老师完成考勤工作的签到软件,使之能够在企业中或者是学校内部正常使用。
但是目前的一些签到软件还存在一些问题,如我们常见的指纹打卡签到软件,虽然实施签到方便,人们只要把录入指纹的手指放在指纹打卡机上,打卡机读取用户指纹信息,再与数据库进行关联,调取用户信息,就可以自动完成签到。
但是这种软硬件相结合的打卡装置存在一定缺陷:
首先,硬件容易出故障,并且出现问题很难及时解决,这将会导致当天的签到不能正常进行;其次,对于小企业来说,购置指纹打卡器成本较高,维护起来也相对比较麻烦;最后,由于一套签到系统一般配置一个指纹打卡器,因此在签到的时候需要员工轮流打卡,降低了工作效率。
此外,还有目前比较流行的RFID技术,同样是一款软硬件结合的签到系统,需要配置一个RFID电子标签和RFID阅读器,当用户走进RFID阅读器的射频范围内的时候,就可以实现用户信息的读取,并通过RFID阅读器将信息传输至服务器中进行下一步的处理。
虽然RFID技术的到来,解决了指纹打卡签到效率较低的问题,但是它的构建成本更大,也存在硬件损坏的风险。
对于中小型企业和一般学校来说,更偏向于使用搭建成本较低,操作简单,用户友好的签到系统。
而在本次课题的设计中,主要是针对企业用户,完成考勤签到工作,使之能够在企业内部正常使用,使用PHP语言进行编写,最后把完成的签到系统部署在服务器上,让用户能够直接通过IP地址访问签到系统,完成签到工作。
因此,本文在充分研究上述问题的基础上,设计一个应用于企业员工的签到系统,提高员工签到效率,降低了企业的人力成本。
1.2本文主要工作
为了提高我国企业对员工考勤情况的管理水平,提高人力资源部门的统计效率,本课题将PHP语言引入到企业签到系统中,不仅可以实现企业员工的录入,还能够实现企业员工的正常上下班签到工作,通过浏览器实现员工的打卡签到,减轻人事部门负责人的工作量。
我们结合课题背景以及文献资料的阅读,综合分析并考虑当前市面上的签到系统,并且在此基础上设计并实现了基于PHP的签到系统。
论文的主要工作包括以下几个部分的内容。
(1)针对当前学校学生、教师的考勤签到需求,对整个系统进行需求分析。
明确系统地整体框架、工作流程等。
(2)在需求分析的基础之上,确定系统的各个功能模块、进行系统设计和数据库设计,综合利用PHP技术最终实现系统。
(3)实现员工到达公司后的自主签到,减少系统监测对人的依赖,提高系统自主性。
本课题旨在设计利用PHP技术,实现企业员工签到的数字化、信息化、自动化,为推进企业考勤制度的规范化、提高企业现代化管理水平创造良好条件。
第二章技术简介
2.1WEB应用开发
随着互联网的高速发展,网络技术早已从普通的静态网页发展到普遍具有交互功能的动态网页,才能满足人对网页的各种需求。
目前网页开发的设计中最常见的结构就是B/S结构,通过一个浏览器,实现用户与服务器之间的信息交互,交互过程如图2-1所示。
用户直接操作客户端浏览器,通过鼠标的点击产生事件,通过浏览器向Web服务器发起请求,服务器收到来自用户的请求,为了对其做出反馈,服务器利用中间件调取数据库服务器中的数据信息,再返回相应信息。
此时,服务器调取出的数据信息就可以直接在浏览器访问的网页上进行显示。
这个过程就是B/S结构中信息交互的过程。
Web数据库技术即是B/S结构,就是我们常用的浏览器服务器模式,通过Web服务器及中间件访问数据库。
图2-1动态页面生成过程
2.2PHP架构
本次课题将使用PHP语言开发基于PHP的签到系统,首先要对这个语言和其开发环境有所了解。
我们都知道,PHP语言可以说是目前为止用来制作网页做常见的语言之一了,目前很多国内外大型的网站都是采用PHP技术开发完成的。
在选择网页开发语言的时候,经常会有人拿PHP语言和JavaEE相对比,因此这两者都是很经常被用来开发网站,制作网页。
不可否认的是,JavaEE在金融方面的网站制作上更加受到开发人员的青睐,其原因就在于Java在支付安全上更具有保障。
虽然PHP在安全性方面不如JavaEE,但是PHP语言的成本低,学起来简单,开发周期短。
对于实现同一个功能的网站,使用PHP语言进行开发的时间周期可能只是使用JavaEE语言进行开发周期的一半。
此外,更重要的是,PHP语言开发的网站响应速度快,性能方面胜过JavaEE。
这样在面对访问量的情况下,使用PHP语言开发的网站的服务器成本明显低于JavaEE语言开发的网站的服务器成本。
2.3MySQL数据库
MySQL是一种的数据库管理系统,它是一种开源、免费的数据库应用,一般小型用户用比较合适,与PHP、JSP配合使用比较多。
MySQL数据库体积小,将其安装在服务器上所耗费的时间很少,运行起来也不大占用系统内存;MySQL数据库运行速度快,执行SQL语句的效率高,可以很快得到数据增删改查的结果;MySQL数据库成本低,很明显由于MySQL数据库本身是一种免费的应用,因此对于一些小型项目开发是很有利的。
本系统设计中用的就是MySQL数据库,易于操作,速度快,简洁方便。
第三章系统需求分析
3.1业务分析
本系统的业务逻辑设计主要应遵照以下几方面原则。
(1)简易性
本系统主要用户为企业员工,操作界面上应满足简易性。
而简易的操作界面能在短时间里高度的增加用户使用程度,也使用户的有效使用率更高。
(2)安全性
系统安全性强,采用的是多权限多角色的登录设置,在用户进入系统前首先要经过身份认证,对于不同的用户角色他们所能够进行的操作也不同,从而保证了系统的安全性和稳定性。
(3)实用性
系统实用性强,对于一个系统,它的操作体验可以说不是最重要的,评判一个系统好坏最核心的标准就是查看这个系统是否满足系统设计的业务需求,是否提高了人们的效率。
基于PHP的签到系统要对涉及到的业务流程要有清晰的分析并体现在实际效果中,对于不同的业务要求都能够满足。
(4)系统可扩展性强
考虑随着互联网的进步,会有越来越多的领域涉及签到业务,因此也对签到系统的可扩展性提出了要求。
因此我们在进行签到系统设计的时候,要在开发该管理系统时要做好预留工作,这样系统就具有较好的可拓展性和开发性,较好地适应未来的变化与发展。
3.2系统用户设计
在系统安全性的设计中,用户权限的设计必不可少,这一点在B/S系统中尤其明显。
因为B/S系统里主要是使用一个浏览器进行系统界面的登录,如果没有设计登录检测和权限管理,没有经过身份认证的用户就可以随意访问系统中的所有功能,这对系统的安全是一个很大的危害。
档案工作是一个高度保密的工作,因此,我们在设计系统时应加入一个或者多个权限权限来约束系统访客。
而对于不同职责的人员,我们不可能分配给他们一样的操作权限,因此在系统中设计用户管理模块,起到管理用户信息,根据用户角色划分操作权限的作用,不同的身份就有不同的权限。
而在本文设计的基于PHP的签到系统设计中,我们将用户操作权限分为以下两个:
(1)系统管理员:
具有整个签到系统最高的操作权限,可以维护企业内部的员工信息,并且查看员工的签到记录。
(2)普通员工:
由系统管理员进行统一的管理,具有修改自身信息的操作权限。
此外,普通员工是整个系统的签到功能的执行者,负责进行上下班的签到打卡。
3.3需求分析
经过上文的分析,本课题设计的签到系统需要完成以下功能:
(1)系统登录:
为了维护基于PHP的签到系统的安全性,防止陌生访客随意进入系统,修改系统数据,签到系统需要在进入系统前进行用户的身份认证。
员工需要提供他们的员工编号以及员工密码方可登录系统,进行接下来进一步的操作。
(2)签到功能:
这是本次基于PHP的签到系统最核心的功能,即在系统中实现签到功能。
本系统要求员工在上下班的时候都在登录系统中进行签到,因为本系统设置只能在内网中运行,员工不能在家里通过外网进入本系统,因此保证了员工签到的时候肯定是身处在公司里。
员工完成签到后,相关的签到信息就会被保存在数据库中,以便进行存档。
(3)员工管理:
该功能由系统管理员操作,实现了前台登录和后台管理人员身份信息和操作权限的管理,本次设计的签到系统的员工管理模块功能就是实现系统操作用户身份信息的维护,在该模块中管理员工的登录账号、密码,查看用户的身份信息,并可以根据实际业务需求添加新员工,删除旧员工。
(4)考勤管理:
该功能同样是由系统管理员操作。
在签到功能中介绍了本次基于PHP的签到系统在员工完成签到后,相关的签到信息就会被保存在数据库中,以便进行存档。
而考勤功能正是由系统管理员调取保存在数据库中的考勤信息,进行查阅。
(5)模块化设计,各个相互独立的类模块组成了系统,这样的设计保证了每个模块的独立性,降低了编程设计开发的工作量。
第四章系统概要设计
4.1系统业务流程设计
4.1.1修改密码业务流程
修改密码业务流程如图4-1所示。
图4-1修改密码流程图
从图中我们可以看出,修改密码需要经过两次检测。
首先,系统需要判断用户输入的旧密码是否跟数据库中的密码匹配;其次,系统需要判断用户两次输入的新密码是否完全一致。
如果这两次检测均通过,则密码修改成功,旧密码在数据库中更新为新密码。
4.1.2员工信息管理业务流程
员工管理业务流程如图4-2所示。
图4-2员工管理结构图
从图中我们可以看出,系统对员工的管理主要包括两个方面:
第一是员工信息的查询,管理员可以查询所有员工的信息,而员工本身只能看到自己的信息;第二是对签到员工的添加,只有记录在数据库中的员工才可以签到。
员工的添加由系统管理员完成,添加后员工信息保存至数据库中。
4.2系统数据库设计
本文根据系统所面对的关系对象,采用相应的方式来对其进行映射,并在服务器中建立关系数据库,通过关系数据库的建立将对象与相应的数据进行结合。
对于员工签到管理系统的数据库设计,本文将给出系统的数据库设计表结构及描述。
所有数据表的表结构如下:
(1)员工信息表
该表主要用来记录员工信息,其表结构如表4-1所示:
表4-1员工信息表
字段名称
数据类型
说明
StaffId
Nvarchar(20)
员工编号
DepartId
Nvarchar(20)
部门编号
StaffName
Nvarchar(20)
员工名
Keys
Nvarchar(20)
密码
Priviliges
Nvarchar(20)
职务
Gender
Nvarchar(20)
性别
Age
Nvarchar
(2)
年龄
Birthday
Nvarchar(50)
出生日期
Phone
Nvarchar(20)
联系方式
Address
Nvarchar(20)
联系地址
(2)员工签到表
该表主要记录了员工签到信息,其表结构如表4-2所示:
表4-2员工签到表
字段名称
数据类型
说明
CheckIn
Nvarchar(50)
签到时间
StaffId
Nvarchar(20)
员工编号
DepartId
Nvarchar(20)
部门编号
Priviliges
Nvarchar(20)
职务
Gender
Nvarchar(20)
性别
(3)部门表
该表详细记录了部门信息,其表结构如表4-3所示:
表4-5部门表
字段名称
数据类型
说明
DepartId
Nvarchar(20)
部门编号
DepartName
Nvarchar(20)
部门名称
(4)考勤统计表
该表记录了考勤统计信息,其表结构如表4-4所示。
表4-4考勤统计表
字段名称
数据类型
说明
StaffId
Nvarchar(20)
员工编号
Time
Nvarchar(50)
时间
DepartId
Nvarchar(20)
部门编号
StaffName
Nvarchar(20)
员工名
DepartName
Nvarchar(20)
部门名称
Priviliges
Nvarchar(20)
职务
Gender
Nvarchar(20)
性别
Age
Nvarchar
(2)
年龄
Frequency
Nvarchar(20)
次数
ATT
Nvarchar(20)
考勤是否有效
Type
Nvarchar(20)
类别
第五章详细设计
5.1登录界面
为了维护基于PHP的签到系统的安全性,防止陌生访客随意进入系统,修改系统数据,签到系统需要在进入系统前进行用户的身份认证。
如图5-1所示,是本文设计的员工签到系统的登录界面,我们在登录系统的时候需要输入的信息只有员工编号和密码这两个部分。
尽管在本文设计的基于PHP的签到系统设计中,我们将用户操作权限分为系统管理员和普通员工这两个操作角色,但是为了让系统的操作更加简便,减轻代码量,我们没有分开设计管理员和员工两个登录界面,而是采用如图5-1所示的统一登录。
用户在输入正确的编号和密码后,系统与数据库交互,调取当前登录用户的角色,再根据角色的不同跳转到相应的管理员界面或员工操作界面。
图5-1登录页面
PHP登录界面处理用户登录动作,获取员工编号和员工密码后,连接数据库文件,检测用户名和密码的准确性,核心代码如下所示:
$username=htmlspecialchars($_POST['username']);
$password=MD5($_POST['password']);
include('conn.php');
$check_query=mysql_query("selectuseridfromuser_listwhereusername='$username'andpassword='$password'limit1");
if($result=mysql_fetch_array($check_query)){
session_start();
$_SESSION['username']=$username;
$_SESSION['userid']=$result['userid'];
echo$username,'欢迎你!
进入用户中心
';
echo'点击此处action=logout">注销登录!
';
exit;
}
5.2员工信息查询界面
如图5-2所示,我们模拟一个名为“张三”的普通员工在登录系统后的个人信息操作界面。
在这里,用户可以进行查看个人信息,修改登录密码等操作。
图5-2员工信息查询页面
5.3员工密码修改界面
管理员在添加员工的时候,签到系统会自动为该名员工设置一个简单的初始密码,这个初始密码是所有员工都一样的。
那么,为了提高系统的安全性,防止出现某些员工登录别人帐号的时间发生,员工在第一次登录系统的时候需要及时地修改自己的密码,点击图5-2右上方的“修改密码”链接,系统自动跳转到图5-3所示的员工密码修改页面。
员工需要输入旧密码,两次输入完全一致的新密码,待数据库进行验证后方可以修改成功。
图5-3员工修改密码页面
在员工密码修改功能中,最主要的就是需要进行原始密码的验证,即取得用户输入的旧密码,并将其与数据库中的原始密码进行比对,如果比对成功,则系统运行员工修改密码;反之,系统发出警告提示。
原始密码部分的验证部分的代码由PHP完成,如下所示:
php
session_start();
include("DBDA.class.php");
$db=newDBDA();
if(!
empty($_SESSION["uid"]))
{
$num=$_SESSION["uid"];
$sql="selectpwdfromloginwhereuid='{$uid}'";
$res=$db->Query($sql);
}
}}
5.4员工信息添加
管理员对员工信息进行一系列的操作,以下是员工信息的添加页面,如图5-4所示,管理员需要填写员工个人信息,员工编号(由系统自动分配),员工名,部门编号,密码,权限,性别,年龄,出生日期,联系方式,地址等信息。
图5-4员工信息添加页面
管理员输入员工信息,点击添加按钮。
添加员工连接数据库的代码如下所示:
php
$servername="localhost";
$username="username";
$password="password";
$dbname="myDB";
$conn=newmysqli($servername,$username,$password,$dbname);
if($conn->connect_error){
die("连接失败:
".$conn->connect_error);
}
$sql="INSERTINTOMyGuests(firstname,lastname,email)
VALUES('John','Doe','john@')";
if($conn->query($sql)===TRUE){
echo"新记录插入成功";
}else{
echo"Error:
".$sql."
".$conn->error;
}
$conn->close();
?
>
5.5签到查询
在签到功能中介绍了本次基于PHP的签到系统在员工完成签到后,相关的签到信息就会被保存在数据库中,以便进行存档。
而考勤功能正是由系统管理员调取保存在数据库中的考勤信息,进行查阅。
如图5-5所示,系统管理员可以查看员工编号,部门编号,职务,性别,签到时间等信息。
此外,管理员也可以根据某个条件进行精确查询,可精确查询的字段分别有员工编号,职位,部门编号以及签到时间。
管理员输入其中一个或多个条件,系统自动生成相应的SQL语句,在数据库中运行并返回结果。
图5-5员工签到查询
第六章设计测试实验
6.1测试目的
在前文当中对签到系统进行具体分析与设计,并对系统进行了实现,但在系统投入运行的过程中还需要从多个方面加以保障,其中首先要求设计的系统要能够满足实际工作的需要。
因此我们需要对设计出的系统进行全面的性能检测。
在此,主要以黑盒子测试技术为载体,对整个系统中的各功能模块进行检测,然后通过白盒子来对系统内部各模块间的逻辑架构进行检测,这样才能够保证系统的设计能够符合现实需要,最终让设计的系统能够达到我们之前的预期。
6.2测试结果
整个设计围绕使用了PHP语言和Mysql数据库结合实现签到系统的运行和维护,但是设计的是否成功还是得需要测试结果才能确定,对此为了保证设计的可靠性,我对本设计进行了测试,确认其可以正常的工作运行,详情记录在了表6-1中。
表6-1测试结果
测试项目
预期结果
测试结果
代码是否能运行
是
是
系统是否能自动生成初始账号密码
是
是
系统是否能正常登陆
是
是
签到完毕系统是否会自动跳完成
是
是
系统是否能修改密码
是
是
系统是否正常退出
是
是
6.3总结
本系统基本实现登陆,获取账号密码,签到签退等功能,因设计网络技术,所有功能机会需在有网络下进行,系统测试部分为整个设计最不可或缺的部分,是对设计的功能实用性、可维护性的检测,本次测试基本实现了总体设计里的功能模块。
结论
传统的员工考勤方式,往往需要专人采用手工方式对企业员工每天的正常出勤、缺勤等状态进行记录,这种方式费时费力,且准确率差、透明度不高,容易受到人为因素的影响,同时增加企业的负担,也不利于企业的信息化建设。
因此,本文在充分研究上述问题的基础上,设计一个应用于企业员工的签到系统,提高员工签到效率,降低了企业的人力成本。
使用PHP语言,MySQL数据库,实现了B/S结构的员工签到系统,使得企业员工和系统管理员无论何时何地,都可以方便的登录系统,进行签到和信息的查询操作。
本文的主要工作可以总结为以下几个方面。
第一,在对系统相关背景较为了解的基础上,对签到系统的数据流程进行了分析,从整体业务入手,设计系统总目标,并对系统进行需求分析,将系统分为员工签到,员工管理,部门管理,考勤统计这四个主要功能。
第二,在需求分析的基础上,设计主要业务流程,在此之上进行了数据库的概念模型设计等。
第三,为了方便用户的操作,系统采用了模块化设计的思想,通过各模块的不同组合以实现不同的增、删、改、查功能。
最终,使该系统能够具有规范化的格式、完整的信息量和易于查询等的特点。
在撰写本论文的过程当中,由于写作时间有限,而且加上对该技术的研究有一定的研究条件的限制,本课题对于签到系统的应用探索还不够深入,目前也只实现了档案业务中较为常见的功能操作。
本人认为这些是最基本的研究,在这个基础上还可以进行更深层次的研究,拓展系统功能。
参考文献
[1]张艳华,郑丽英.基于Web的网络签到系统设计与实现[J].甘肃科技,2005,21(3):
73-74.
[2]张志平,姜晓峰.基于WEB的实验课签到系统设计与实现[J].苏州大学学报(工科版),2006,26
(2):
43-45.
[3]刘翔,胡彧,韩书.基于二维码的会议签到系统设计[J].电子器件,2014(5):
1013-1016.
[4]冯战申,昝东旺.基于B/S构架的电子签到系统的设计与实现[J].许昌学院学报,2003,22
(2):
96-98.
[5]王凤玲.基于PHP+MYSQL的新闻发布系统的研究与实现[J].计算机应用与软件,2012,29
(2):
234-236.
[6]肖维明.基于PHP+MySQL的网站开发[J].物流工程与管理,2009,31(6):
90-92.
[7]张金区,王云鹏.PHP对数据库的访问技术及执行效率的比较[J].计算机工程与应用,2005,41(9):
167-170.
[8]周启海,刘云强.基于PHP、MYSQ