职工考勤管理系统.docx

上传人:b****5 文档编号:4369168 上传时间:2022-12-01 格式:DOCX 页数:41 大小:1,020.03KB
下载 相关 举报
职工考勤管理系统.docx_第1页
第1页 / 共41页
职工考勤管理系统.docx_第2页
第2页 / 共41页
职工考勤管理系统.docx_第3页
第3页 / 共41页
职工考勤管理系统.docx_第4页
第4页 / 共41页
职工考勤管理系统.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

职工考勤管理系统.docx

《职工考勤管理系统.docx》由会员分享,可在线阅读,更多相关《职工考勤管理系统.docx(41页珍藏版)》请在冰豆网上搜索。

职工考勤管理系统.docx

职工考勤管理系统

前言

20世纪90年代,随着我国市场经济的快速发展,职工考勤管理系统在企业的日常管理中发挥着越来越重要的作用。

职工考勤管理系统可以进行员工信息管理、出勤管理和密码管理等,方便处理企业内部员工的相关考勤信息。

此外Internet的迅速普及,使Intranet成为Internet技术在企业管理信息系统中的应用和延伸,形成了集计算机,计算机网络、数据库、分布式计算等于一体的信息技术综合体,它打破了时间和地域的界限,使信息交流变得快捷、准确,为建立现代企业管理信息系统提供了充足的条件。

职工考勤系统是在适应市场需求的客观前提下,为了满足中小型公司或事业单位管理自己的员工而开发的。

 

第一章开发背景

我们都知道,考勤管理系统是任何一个营业单位不可缺少的部分,它的内容对于单位的管理者和内部员工来说都至关重要,所以考勤管理系统应该能够为用户提供充足的信息和快捷的安全查询,及实时管理手段。

但在过去,人们一直在使用传统的人工的方式来进行考勤管理,这种落后的方式存在着许多缺点,如:

效率低,保密性差,另外时间一长,将产生大量的文件和数据,这对于查找,更新和维护都带来了不少的困难。

而使用计算机对员工出勤进行管理,具有手工作业所无法比拟的优点。

例如:

检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。

这些优点能够极大地提高管理的效率。

此次开发了一种基于SQLServer和Java下的考勤管理系统。

其不但具有实际考勤管理系统应有的档案管理,信息安全认证等功能,且拥有用户使用更简单、界面更直观等优点。

考勤管理系统在我国任何一个单位是必需的,随着我国的发展,考勤管理系统的作用会得到更加充分的体现。

 

第二章需求分析

职工考勤管理系统,可用于企业等机构的职工考勤情况管理,查询,更新与维护,使用方便,易用性强,图形界面清晰明了。

该软件用Java语言编写,用SQLServer2005数据库作为后台的数据库进行信息的存储,用SQL语句完成职工基本信息的添加,查询,修改,删除的操作以及成绩的录入,修改,删除等。

用ODBC驱动实现前台Java与后台SQL数据库的连接。

Java语言跨平台性强,可以在windows,Linux,等系统下使用,方便简单,安全性好。

SQLServer2005数据库高效安全,两者结合可相互利用各自的优势

λ用户登陆界面。

该界面可以选择使用者的身份,“管理员,职工”。

不同的身份有不同的操作界面和功能权限。

账号和密码输入正确即可登录。

λ职工管理界面。

提供了职工基本信息的查询,打卡、出差、加班、请假的查询以及相应权限的添加、删除、修改操作。

λ管理员管理界面。

提供了对所有职工信息的查询、添加、修改、删除;职工考勤信息的录入、修改、删除、查询,修改密码等功能。

管理员拥有最高的权限,允许对职工所有信息进行查询和修改。

第三章概念结构设计

一、局部E-R图设计

(一)、确定局部范围

职工考勤管理系统分为七部分:

●管理员登录

●职工登录

●职工基本信息

●职工出勤信息

●职工加班信息

●职工出差信息

●职工请假信息

(二)、确定实体与属性

两个准则:

(1)属性不能在具有需要描述的性质,即属性必须是不可分的数据项,不能再由另一些属性组成.

(2)属性不能与其他实体具有联系,联系只发生在实体之间

根据两个准则进行分析:

在职工考勤管理系统中,职工具有属性(职工编号、职工姓名、性别、年龄、职称),其属性又是不可分的,因此将职工作为实体。

出勤、加班、出差、请假都具有属性,其属性又是不可分的,因此将他们作为实体。

管理员、用户登录也作为实体。

表1-1

实体

属性

管理员登录表

管理员Id,密码

用户登录表表

职工编号,密码

职工信息表

职工编号,职工姓名,性别,年龄,职称

职工出勤信息表

姓名,编号,上班打卡时间,下班打卡时间,缺勤记录

职工加班信息表

姓名,编号,加班开始时间,加班结束时间,统计加班天数

职工出差信息表

姓名,编号,出差开始时间,出差结束时间,统计出差天数

职工请假信息表

请假开始时间,请假结束时间,统计请假天数

(三)概念模型表示

实体型:

用矩形表示,矩形内写实体名。

属性:

用椭圆形表示,并用边将其与相应的实体型连接起来。

联系:

用菱形表示,菱形框内写明联系名,并用边与有关实体型连接起来,且在边旁标上联系的类型。

管理员信息表ER图用户信息表ER图

职工信息表ER图

职工出勤信息表ER图职工加班信息表ER图

职工出差信息表ER图请假信息表ER图

二、合并成总体E-R图

职工考勤管理系统

第四章逻辑结构设计

一、E-R图转换为关系模型

关系模式的规范化

步骤

非规范关系

是每个属性不能再分

1NF

消去非主属性対主码的部分依赖

2NF

消去非主属性対主码的传递依赖

3NF

管理员登录表(admin)

列名

数据类型

约束

是否允许为空

默认值

说明

admin

char(6)

主键

管理员

password

char(12)

NOTNULL

密码

 

员工登录表(admin)

列名

数据类型

约束

是否允许为空

默认值

说明

w_id

char(6)

主键

员工

Password_w

char(12)

NOTNULL

密码

 

职工基本信息表(worker)

列名

数据类型

约束

是否允许为空

默认值

说明

w_id

char(4)

主键

NOTNULL

职工编号

w_name

char(6)

NOTNULL

职工姓名

w_sex

char(6)

NOTNULL

性别

w_age

int

NOTNULL

年龄

w_drgee

char(4)

NOTNULL

职称

出勤记录信息表(work_note)

列名

数据类型

约束

是否允许为空

默认值

说明

w_id

char(4)

主键

NOTNULL

职工编号

s_tim

datetime

上班打卡时间

x_tim

datetime

下班打卡时间

q_not

Int

0

缺勤记录(1或0)

出差信息(out_note)

列名

数据类型

约束

是否允许为空

默认值

说明

w_id

char(4)

主键

职工编号

k_tim

datetime

出差起始时间

j_tim

datetime

出差结束时间

c_days

Int

统计总天数

 

请假记录信息(off_note)

列名

数据类型

约束

是否允许为空

默认值

说明

w_id

char(4)

主键

职工编号

off_tim

datetime

请假开始时间

off_e_tim

datetime

请假结束时间

off_days

int

统计请假天数

 

加班信息(over_note)

列名

数据类型

约束

是否允许为空

默认值

说明

w_id

char(4)

主键

NOTNULL

职工编号

jia_tim

datetime

加班开始时间

jia_e_tim

datetime

加班结束时间

jia_days

int

统计加班时间

第五章数据库实施与维护

一、定义数据库结构

分析数据库各个表的结构,在SQL中实现的创建SQL语句。

--首先创建职工考勤数据库

CREATEDATABASEzgkq

ON

(name=zg_dat,

filename='d:

\zg_dat.mdf',

size=5,

maxsize=20,

Filegrowth=1

LOGON

(name=zg_log,

filename='e:

\zg_dat.ldf',

size=5,

maxsize=20,

Filegrowth=1

--调到数据库zgkg

USEzgkq

GO

--管理员登录表

CREATETABLElogin_admin

(adminchar(6)PRIMARYKEY,

passwordchar(12)NOTNULL

--员工登录表

CREATETABLElogin_w

(w_idchar(6)PRIMARYKEY,

password_wchar(12)NOTNULL

--创建职工信息表worker

CREATETABLEworker

(w_idchar(4)PRIMARYKEY,

w_namechar(6)NOTNULL,

w_sexchar(6)check(w_sex='男'orw_sex='女')NOTNULL,

w_ageintNOTNULL,

w_drgeechar(4)NOTNULL

--创建出勤记录信息work_note

CREATETABLEwork_note

(w_idchar(4)PRIMARYKEY,

s_timdatetime,

x_timdatetime,

q_notintCHECK(q_not=0ORq_not=1)DEFAULT0

--创建出差信息out_note

CREATETABLEout_note

(w_idchar(4)PRIMARYKEY,

k_timdatetime,

j_timdatetime,

c_daysint

--创建请假信息off_note

CREATETABLEoff_note

(w_idchar(4)PRIMARYKEY,

off_timdatetime,

off_e_timdatetime,

off_daysint

--创建加班信息over_note

CREATETABLEover_note

(w_idchar(4)PRIMARYKEY,

jia_timdatetime,

jia_e_timdatetime,

jia_daysint

二、组织数据入库

INSERTINTOlogin_adminVALUES('admin','123456')

--

INSERTINTOlogin_wVALUES('1001','100001')

INSERTINTOlogin_wVALUES('1002','100002')

INSERTINTOlogin_wVALUES('1003','100003')

INSERTINTOlogin_wVALUES('1004','100004')

INSERTINTOlogin_wVALUES('1005','100005')

--

INSERTINTOwork_noteVALUES('1001','2010-5-2108:

00:

00','2010-5-2118:

30:

00',0)

INSERTINTOwork_noteVALUES('1002','2010-5-2108:

00:

00','2010-5-2118:

30:

00',0)

INSERTINTOwork_noteVALUES('1003','2010-5-2108:

00:

00','2010-5-2118:

30:

00',0)

INSERTINTOwork_noteVALUES('1004','2010-5-2108:

00:

00','2010-5-2118:

30:

00',0)

INSERTINTOwork_noteVALUES('1005','2010-5-2108:

00:

00','2010-5-2118:

30:

00',0)

----

INSERTINTOworkerVALUES('1001','李芳','女','28','员工')

INSERTINTOworkerVALUES('1002','王明','男','30','员工')

INSERTINTOworkerVALUES('1003','江月','女','31','员工')

INSERTINTOworkerVALUES('1004','李芳','男','27','员工')

INSERTINTOworkerVALUES('1005','李芳','男','24','员工')

--

INSERTINTOout_noteVALUES('1002','2010-3-21','2010-4-21',31)

--

INSERTINTOoff_noteVALUES('1003','2010-3-21','2010-4-21',31)

--

INSERTINTOover_noteVALUES('1004','2010-4-21','2010-4-21',1)

三、数据库试运行

1--查询所有职工信息

SELECT*FROMworker

2--查询所有出勤记录信息

SELECT*FROMwork_note

3--查询所有出差信息

SELECT*FROMout_note

4--查询所有请假信息

SELECT*FROMoff_note

5--查询所有加班信息

SELECT*FROMover_note

6--查询编号为1001的职工信息

SELECT*

FROMworker

WHEREw_id='1001'

第六章JAVA

一、JAVA代码:

(一)、登录代码

packageZGKQ;

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

importjava.sql.*;

publicclassLoginextendsJFrameimplementsActionListener{

JFramejf;

Containercon=getContentPane();

JTextFieldtfName;

JPasswordFieldps;

JLabellabel;

JLabellbName;

JLabellbps;

JLabelshenfen;

JButtonbt1;

JButtonbt2;

privateStringpsword;

JComboBoxbox;

JPaneljp1;

publicLogin(){

jf=this;

setTitle("用户登录界面");

con.setBackground(Color.black);

Fontf=newFont("新宋体",Font.PLAIN,22);

/////////////////////////////////////////////////

((JPanel)this.getContentPane()).setOpaque(false);

ImageIconimg=newImageIcon("4.jpg");//添加图片

JLabelbackground=newJLabel(img);

this.getLayeredPane().add(background,newInteger(Integer.MIN_VALUE));

background.setBounds(0,0,img.getIconWidth(),img.getIconHeight());

jp1=newJPanel();

////////////////////////////////////////////////

tfName=newJTextField();

ps=newJPasswordField();

label=newJLabel("职工考勤管理系统");

lbName=newJLabel("用户名:

");

lbps=newJLabel("密码:

");

bt1=newJButton("登录");

bt2=newJButton("清空");

///////////////////////////////////////////////

con.setLayout(null);

jp1=newJPanel();

con.add(jp1);

con.add(label);

label.setFont(f);

label.setBounds(220,100,300,40);

con.add(lbName);

con.add(tfName);

lbName.setBounds(250,250,80,20);

tfName.setBounds(330,250,100,20);

shenfen=newJLabel("身份:

");

shenfen.setBounds(250,310,80,20);

con.add(shenfen);

box=newJComboBox();

box.addItem("管理员");

box.addItem("员工");

con.add(box);

box.setBounds(330,310,80,20);

con.add(lbps);

con.add(ps);

lbps.setBounds(250,280,80,20);

ps.setBounds(330,280,100,20);

con.add(bt1);

con.add(bt2);

bt1.setBounds(260,340,60,20);

bt1.setBackground(Color.gray);

bt2.setBounds(350,340,60,20);

bt2.setBackground(Color.gray);

bt1.addActionListener(this);

bt2.addActionListener(this);

setBounds(310,150,700,500);

setVisible(true);

}

publicvoidactionPerformed(ActionEvente){

Databasedb=newDatabase();

db.OpenConn();

Stringpass=newString(ps.getPassword()).trim();

Stringname=tfName.getText().trim();

Objectsource=e.getSource();

if(box.getSelectedItem().equals("管理员")){

if(source==bt1){

try{

Stringsql="select*fromlogin_adminwhereadmin='"

+name+"'andpassword='"+pass+"'";

ResultSetres=db.executeQuery(sql);

while(res.next()){

psword=res.getString

(2).trim();

}

if(name.equals("")){

newJOptionPane().showMessageDialog(null,"用户名不能为空!

");

}elseif(pass.equals("")){

newJOptionPane().showMessageDialog(null,"密码不能为空!

");

}elseif(pass.equals(psword)){

this.dispose();

newmain_1().setVisible(true);

}else{

newJOptionPane().showMessageDialog(null,"密码错误!

");

}

}catch(SQLExceptione1){

//TODOAuto-generatedcatchblock

e1.printStackTrace();

}

}

}

if((box.getSelectedItem().equals("员工"))){

if(source==bt1){

try{

Stringsql="select*fromlogin_wwherew_id='"+name

+"'andpassword_w='"+pass+"'";

ResultSetres=db.executeQuery(sql);

while(res.next()){

psword=res.getString

(2).trim();

}

Stringnum=tfName.getText().trim();

if(name.equals("")){

newJOptionPane().showMessageDialog(null,"用户名不能为空!

");

}elseif(pass.equals("")){

newJOptionPane().showMessageDialog(null,"密码不能为空!

");

}elseif(pass.equals(psword)){

this.dispose();

newmain_2().setVisible(true);

}else{

newJOptionPane().showMessageDialog(null,"密码错误!

");

}

}catch(SQLExceptione1){

//TODOAuto-generatedcatchblock

e1.printStackTrace();

}

}

}

if(e.getSource()==bt2){

tfName.setText("");

ps.setText("");

}

}

publicstaticvoidmain(Stringargs[]){

newLogin();

}

}

(二)、管理员主界面代码

packageZGKQ;

importjava.awt.*;

importjava.awt.event.ActionEvent;

imp

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

当前位置:首页 > 高中教育 > 小学教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1