职工考勤管理系统_第1页
职工考勤管理系统_第2页
职工考勤管理系统_第3页
职工考勤管理系统_第4页
职工考勤管理系统_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

设计报告 职 工 考 勤 管 理 系 统 ZHI GONG KAO QIN GUAN LI XI TONG2012前 言20世纪90年代,随着我国市场经济的快速发展,职工考勤管理系统在企业的日常管理中发挥着越来越重要的作用。职工考勤管理系统可以进行员工信息管理、出勤管理和密码管理等,方便处理企业内部员工的相关考勤信息。此外Internet 的迅速普及,使Intranet成为Internet技术在企业管理信息系统中的应用和延伸,形成了集计算机,计算机网络、数据库、分布式计算等于一体的信息技术综合体,它打破了时间和地域的界限,使信息交流变得快捷、准确,为建立现代企业管理信息系统提供了充足的条件。职工考勤系统是在适应市场需求的客观前提下,为了满足中小型公司或事业单位管理自己的员工而开发的。目 录第一章 开发背景1第二章 需求分析2第三章 概念结构设计3一、局部E-R图设计3(一)、确定局部范围3(二)、确定实体与属性3(三)概念模型表示4二、合并成总体E-R图5第四章 逻辑结构设计6一、E-R图转换为关系模型6关系模式的规范化6第五章 数据库实施与维护8一、定义数据库结构8二、组织数据入库9三、数据库试运行10第六章 JAVA11一、JAVA代码:12(一)、登录代码12(二)、管理员主界面代码15二、JAVA运行29(一)、用户登录界面29(二)、主界面29(三)、基本功能30第七章 参考文献34第一章 开发背景 我们都知道,考勤管理系统是任何一个营业单位不可缺少的部分,它的内容对于单位的管理者和内部员工来说都至关重要,所以考勤管理系统应该能够为用户提供充足的信息和快捷的安全查询,及实时管理手段。但在过去,人们一直在使用传统的人工的方式来进行考勤管理,这种落后的方式存在着许多缺点,如:效率低,保密性差,另外时间一长,将产生大量的文件和数据,这对于查找,更新和维护都带来了不少的困难。而使用计算机对员工出勤进行管理,具有手工作业所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高管理的效率。 此次开发了一种基于SQL Server和Java下的考勤管理系统。其不但具有实际考勤管理系统应有的档案管理,信息安全认证等功能,且拥有用户使用更简单、界面更直观等优点。考勤管理系统在我国任何一个单位是必需的,随着我国的发展,考勤管理系统的作用会得到更加充分的体现。 。第二章 需求分析职工考勤管理系统,可用于企业等机构的职工考勤情况管理,查询,更新与维护,使用方便,易用性强,图形界面清晰明了。该软件用Java语言编写,用SQLServer2005数据库作为后台的数据库进行信息的存储,用SQL语句完成职工基本信息的添加,查询,修改,删除的操作以及成绩的录入,修改,删除等。用ODBC驱动实现前台Java与后台SQL数据库的连接。Java语言跨平台性强,可以在windows,Linux,等系统下使用,方便简单,安全性好。SQLServer2005数据库高效安全,两者结合可相互利用各自的优势l 用户登陆界面。该界面可以选择使用者的身份,“管理员,职工”。不同的身份有不同的操作界面和功能权限。账号和密码输入正确即可登录。l 职工管理界面。提供了职工基本信息的查询,打卡、出差、加班、请假的查询以及相应权限的添加、删除、修改操作。l 管理员管理界面。提供了对所有职工信息的查询、添加、修改、删除;职工考勤信息的录入、修改、删除、查询,修改密码等功能。管理员拥有最高的权限,允许对职工所有信息进行查询和修改。第三章 概念结构设计一、局部E-R图设计(一)、确定局部范围 职工考勤管理系统分为七部分:l 管理员登录 l 职工登录l 职工基本信息 l 职工出勤信息 l 职工加班信息 l 职工出差信息 l 职工请假信息 (二)、确定实体与属性两个准则:(1) 属性不能在具有需要描述的性质,即属性必须是不可分的数据项,不能再由另一些属性组成.(2) 属性不能与其他实体具有联系,联系只发生在实体之间 根据两个准则进行分析:在职工考勤管理系统中,职工具有属性(职工编号、职工姓名、性别、年龄、职称),其属性又是不可分的,因此将职工作为实体。 出勤、加班、出差、请假都具有属性,其属性又是不可分的,因此将他们作为实体。管理员、用户登录也作为实体。 表1-1 实体属性管理员登录表管理员ID,密码用户登录表表职工编号,密码职工信息表职工编号,职工姓名,性别,年龄,职称职工出勤信息表姓名,编号,上班打卡时间,下班打卡时间,缺勤记录职工加班信息表姓名,编号,加班开始时间,加班结束时间,统计加班天数职工出差信息表姓名,编号,出差开始时间,出差结束时间,统计出差天数职工请假信息表请假开始时间,请假结束时间,统计请假天数(三)概念模型表示实体型:用矩形表示,矩形内写实体名。属性:用椭圆形表示,并用边将其与相应的实体型连接起来。联系:用菱形表示,菱形框内写明联系名,并用边与有关实体型连接起来,且在边旁标上联系的类型。 管理员信息表ER图 用户信息表ER图职工信息表ER图 职工出勤信息表ER图 职工加班信息表ER图 职工出差信息表ER图 请假信息表ER图二、合并成总体E-R图职工考勤管理系统第四章 逻辑结构设计一、E-R图转换为关系模型关系模式的规范化步骤非规范关系 是每个属性不能再分1NF 消去非主属性対主码的部分依赖 2NF 消去非主属性対主码的传递依赖 3NF管理员登录表(admin)列名数据类型约束是否允许为空默认值 说明adminchar(6)主键管理员passwordchar(12)NOT NULL密码员工登录表(admin)列名数据类型约束是否允许为空默认值 说明w_idchar(6)主键员工Password_wchar(12)NOT NULL密码职工基本信息表(worker)列名数据类型约束是否允许为空默认值说明w_idchar(4)主键NOT NULL职工编号w_namechar(6)NOT NULL职工姓名w_sexchar(6)NOT NULL性别w_ageintNOT NULL年龄w_drgeechar(4)NOT NULL职称出勤记录信息表(work_note)列名数据类型约束是否允许为空默认值说明w_idchar(4)主键NOT NULL职工编号s_timdatetime上班打卡时间x_timdatetime下班打卡时间q_notInt0缺勤记录(1或0)出差信息(out_note)列名数据类型约束是否允许为空默认值说明w_idchar(4)主键职工编号k_timdatetime出差起始时间j_timdatetime出差结束时间c_daysInt统计总天数请假记录信息(off_note)列名数据类型约束是否允许为空默认值说明w_idchar(4)主键职工编号off_timdatetime请假开始时间off_e_timdatetime请假结束时间off_daysint统计请假天数加班信息(over_note)列名数据类型约束是否允许为空默认值说明w_idchar(4)主键NOT NULL职工编号jia_timdatetime加班开始时间jia_e_timdatetime加班结束时间jia_daysint统计加班时间第五章 数据库实施与维护一、定义数据库结构分析数据库各个表的结构,在SQL中实现的创建SQL语句。-首先创建职工考勤数据库CREATE DATABASE zgkq ON (name=zg_dat, filename=d:zg_dat.mdf, size=5, maxsize=20, Filegrowth=1) LOG ON (name=zg_log, filename=e:zg_dat.ldf, size=5, maxsize=20, Filegrowth=1) -调到数据库zgkgUSE zgkqGO-管理员登录表CREATE TABLE login_admin(admin char(6) PRIMARY KEY, password char(12)NOT NULL)-员工登录表CREATE TABLE login_w(w_id char(6) PRIMARY KEY, password_w char(12) NOT NULL)-创建职工信息表workerCREATE TABLE worker (w_id char(4) PRIMARY KEY, w_name char(6) NOT NULL, w_sex char(6) check(w_sex=男or w_sex=女)NOT NULL, w_age int NOT NULL, w_drgee char(4) NOT NULL)-创建出勤记录信息work_noteCREATE TABLE work_note (w_id char(4) PRIMARY KEY, s_tim datetime, x_tim datetime, q_not int CHECK (q_not=0 OR q_not=1) DEFAULT 0) -创建出差信息out_noteCREATE TABLE out_note (w_id char(4) PRIMARY KEY, k_tim datetime, j_tim datetime, c_days int)-创建请假信息off_noteCREATE TABLE off_note (w_id char(4) PRIMARY KEY, off_tim datetime, off_e_tim datetime, off_days int) -创建加班信息over_noteCREATE TABLE over_note (w_id char(4) PRIMARY KEY, jia_tim datetime, jia_e_tim datetime, jia_days int) 二、组织数据入库INSERT INTO login_admin VALUES(admin,)-INSERT INTO login_w VALUES(1001,)INSERT INTO login_w VALUES(1002,)INSERT INTO login_w VALUES(1003,)INSERT INTO login_w VALUES(1004,)INSERT INTO login_w VALUES(1005,)-INSERT INTO work_note VALUES(1001,2010-5-21 08:00:00,2010-5-21 18:30:00,0)INSERT INTO work_note VALUES(1002,2010-5-21 08:00:00,2010-5-21 18:30:00,0)INSERT INTO work_note VALUES(1003,2010-5-21 08:00:00,2010-5-21 18:30:00,0)INSERT INTO work_note VALUES(1004,2010-5-21 08:00:00,2010-5-21 18:30:00,0)INSERT INTO work_note VALUES(1005,2010-5-21 08:00:00,2010-5-21 18:30:00,0)-INSERT INTO worker VALUES(1001,李芳,女,28,员工)INSERT INTO worker VALUES(1002,王明,男,30,员工)INSERT INTO worker VALUES(1003,江月,女,31,员工)INSERT INTO worker VALUES(1004,李芳,男,27,员工)INSERT INTO worker VALUES(1005,李芳,男,24,员工) - INSERT INTO out_note VALUES(1002,2010-3-21,2010-4-21,31) -INSERT INTO off_note VALUES(1003,2010-3-21,2010-4-21,31)-INSERT INTO over_note VALUES(1004,2010-4-21,2010-4-21,1)三、数据库试运行1-查询所有职工信息SELECT *FROM worker2-查询所有出勤记录信息SELECT *FROM work_note3-查询所有出差信息SELECT *FROM out_note4-查询所有请假信息SELECT *FROM off_note5-查询所有加班信息SELECT *FROM over_note6-查询编号为1001的职工信息SELECT * FROM workerWHERE w_id=1001第六章 JAVA一、JAVA代码: (一)、登录代码package ZGKQ;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.sql.*;public class Login extends JFrame implements ActionListener JFrame jf;Container con = getContentPane();JTextField tfName;JPasswordField ps;JLabel label;JLabel lbName;JLabel lbps;JLabel shenfen;JButton bt1;JButton bt2;private String psword;JComboBox box;JPanel jp1;public Login() jf = this;setTitle(用户登录界面);con.setBackground(Color.black); Font f = new Font(新宋体, Font.PLAIN, 22); /(JPanel)this.getContentPane().setOpaque(false);ImageIcon img = new ImageIcon(4.jpg); /添加图片 JLabel background = new JLabel(img);this.getLayeredPane().add(background,new Integer(Integer.MIN_VALUE);background.setBounds(0,0,img.getIconWidth(),img.getIconHeight();jp1=new JPanel(); /tfName = new JTextField();ps = new JPasswordField();label = new JLabel(职 工 考 勤 管 理 系 统);lbName = new JLabel(用户名:);lbps = new JLabel(密 码:);bt1 = new JButton(登录);bt2 = new JButton(清空);/ /con.setLayout(null); jp1=new JPanel(); 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 = new JLabel(身 份:);shenfen.setBounds(250, 310, 80, 20);con.add(shenfen);box = new JComboBox();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);public void actionPerformed(ActionEvent e) Database db = new Database();db.OpenConn();String pass = new String(ps.getPassword().trim();String name = tfName.getText().trim();Object source = e.getSource();if (box.getSelectedItem().equals(管理员) if (source = bt1) try String sql = select * from login_admin where admin = + name + and password = + pass + ;ResultSet res = db.executeQuery(sql);while (res.next() psword = res.getString(2).trim();if (name.equals() new JOptionPane().showMessageDialog(null, 用户名不能为空!); else if (pass.equals() new JOptionPane().showMessageDialog(null, 密码不能为空!); else if(pass.equals(psword)this.dispose();new main_1().setVisible(true);elsenew JOptionPane().showMessageDialog(null, 密码错误!); catch (SQLException e1) / TODO Auto-generated catch blocke1.printStackTrace();if (box.getSelectedItem().equals(员工) if (source = bt1) try String sql = select * from login_w where w_id = + name+ and password_w = + pass + ;ResultSet res = db.executeQuery(sql);while (res.next() psword = res.getString(2).trim();String num = tfName.getText().trim();if (name.equals() new JOptionPane().showMessageDialog(null, 用户名不能为空!); else if (pass.equals() new JOptionPane().showMessageDialog(null, 密码不能为空!); else if(pass.equals(psword)this.dispose();new main_2().setVisible(true);elsenew JOptionPane().showMessageDialog(null, 密码错误!); catch (SQLException e1) / TODO Auto-generated catch blocke1.printStackTrace();if (e.getSource() = bt2) tfName.setText();ps.setText();public static void main(String args) new Login();(二)、管理员主界面代码package ZGKQ;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import javax.swing.*;import ZGKQ_add.*;import ZGKQ_query.*;import ZGKQ_delete.*;import ZGKQ_update.*;public class main_1 extends JFrame implements ActionListener Container con;JTable table1 = new JTable(200, 5);/ JScrollPane scrollPane = new JScrollPane(table1);JPanel pn = new JPanel();/ 创建一个面板并实例化JPanel p1 = new JPanel();JPanel p2 = new JPanel();JPanel p3 = new JPanel();/ JPanel p4 = new JPanel();Label lb1 = new Label(欢 迎 使 用 员 工 考 勤 管 理 系 统 ! 有 不 明 白 请 看 帮 助 !);JLabel lb2 = new JLabel(new ImageIcon(2.jpg);/ 实例化菜单栏JMenuBar mb = new JMenuBar();/ 实例化菜单开始JMenu systemM;JMenu jibenM;JMenu guanliM;JMenu helpM;JMenu aboutM;/ 文件的菜单项JMenuItem psUpdate;JMenuItem login;/JMenuItem addDelete;JMenuItem exit;/ 基本信息的菜单项JMenuItem worker;JMenuItem work_note;JMenuItem out_note;JMenuItem off_note;JMenuItem over_note;/ 信息管理JMenu kqquery;JMenuItem jibenquery;JMenuItem dakaquery;JMenuItem jiabanquery;JMenuItem chuchaiquery;JMenuItem qingjiaquery;JMenu kqadd;JMenuItem jibenadd;JMenuItem dakaadd;JMenuItem jiabanadd;JMenuItem chuchaiadd;JMenuItem qingjiaadd;JMenu kqupdate;JMenuItem jibenupdate;JMenuItem dakaupdate;JMenuItem jiabanupdate;JMenuItem chuchaiupdate;JMenuItem qingjiaupdate;JMenu kqdelete;JMenuItem jibendelete;JMenuItem dakadelete;JMenuItem jiabandelete;JMenuItem chuchaidelete;JMenuItem qingjiadelete;JMenuItem helpcon;JMenuItem aboutcon;JButton b1, b2, b3, b4, b5, b6, b7, b8, b9;Font f = new Font(宋体, Font.PLAIN, 20);/ 设置一种字体main_1() setTitle(员工考勤管理系统);/ 设置窗体标题con = getContentPane();con.setLayout(new BorderLayout();/ 创建一个布局con.add(pn, BorderLayout.CENTER);/ 实例虚拟桌面的布局/ /(JPanel) this.getContentPane().setOpaque(false);ImageIcon img = new ImageIcon(3.jpg); / 添加图片JLabel background = new JLabel(img);this.getLayeredPane().add(background, new Integer(Integer.MIN_VALUE);background.setBounds(0, 0, img.getIconWidth(), img.getIconHeight();/ / 实例化菜单栏mb = new JMenuBar();/ 实例化菜单开始systemM = new JMenu(菜单);jibenM = new JMenu(基本信息);guanliM = new JMenu(信息管理);helpM = new JMenu(帮助);aboutM = new JMenu(关于);/ 文件的菜单项psUpdate = new JMenuItem(密码修改);login = new JMenuItem(重新登陆);login.setBackground(Color.pink);/addDelete = new JMenuItem(添加/删除用户);exit = new JMenuItem(退出系统);psUpdate.addActionListener(this);login.addActionListener(this);/addDelete.addActionListener(this);exit.addActionListener(this);/ 添加菜单项systemM.add(psUpdate);systemM.add(login);/systemM.add(addDelete);systemM.add(exit);/ 基本信息的菜单项worker = new JMenuItem(职工信息);work_note = new JMenuItem(出勤信息);out_note = new JMenuItem(出差信息);off_note = new JMenuItem(请假信息);over_note = new JMenuItem(加班信息);/ 注册监听器worker.addActionListener(this);work_note.addActionListener(this);out_note.addActionListener(this);off_note.addActionListener(this);over_note.addActionListener(this);/ 添加jibenM.add(worker);jibenM.add(work_note);jibenM.add(out_note);jibenM.add(off_note);jibenM.add(over_note);/ 信息查询的菜单项kqquery = new JMenu(信息查询);jibenquery = new JMenuItem(基本信息查询);dakaquery = new JMenuItem(打卡信息查询);jiabanquery = new JMenuItem(加班信息查询);chuchaiquery = new JMenuItem(出差信息查询);qingjiaquery = new JMenuItem(请假信息查询);jibenquery.addActionListener(this);dakaquery.addActionListener(this);jiabanquery.addActionListener(this);chuchaiquery.addActionListener(this);qingjiaquery.addActionListener(this);kqquery.add(jibenquery);kqquery.add(dakaquery);kqquery.add(jiabanquery);kqquery.add(chuchaiquery);kqquery.add(qingjiaquery);kqadd = new JMenu(信息添加);jibenadd = new JMenuItem(基本信息添加);dakaadd = new JMenuItem(打卡信息添加);jiabanadd = new JMenuItem(加班信息添加);chuchaiadd = new JMenuItem(出差信息添加);qingjiaadd = new JMenuItem(请假信息添加);jibenadd.addActionListener(this);dakaadd.addActionListener(this);jiabanadd.addActionListener(this);chuchaiadd.addActionListener(this);qingjiaadd.addActionListener(this);kqadd.add(jibenadd);kqadd.add(dakaadd);kqadd.add(jiabanadd);kqadd.add(chuchaiadd);kqadd.add(qingjiaadd);kqupdate = new JMenu(信息修改);jibenupdate = new JMenuItem(基本信息修改);dakaupdate = new JMenuItem(打卡信息修改);jiabanupdate = new JMenuItem(加班信息修改);chuchaiupdate = new JMenuItem(出差信息修改);qingjiaupdate = new JMenuItem(请假信息修改);jibenupdate.addActionListener(this);dakaupdate.addActionListener(this);jiabanupdate.addActionListener(this);chuchaiupdate.addActionListener(this);qingjiaupdate.addActionListener(this);kqupdate.add(jibenupdate);kqupdate.add(dakaupdate);kqupdate.add(jiabanupdate);kqupdate.add(chuchaiupdate);kqupdate.add(qingjiaupdate);kqdelete = new JMenu(信息删除);jibendelete = new JMenuItem(基本信息删除);dakadelete = new JMenuItem(打卡信息删除);jiabandelete = new JMenuItem(加班信息删除);chuchaidelete = new JMenuItem(出差信息删除);qingjiadelete = new JMenuItem(请假信息删除);jibendelete.addActionListener(this);dakadelete.addActionListener(this);jiabandelete.addActionListener(this);chuchaidelete.addActionListener(this);qingjiadelete.addActionListener(this);kqdelete.add(jibendelete);kqdelete.add(dakadelete);kqdelete.add(jiabandelete);kqdelete.add(chuchaidelete);kqdelete.add(qingjiadelete);guanliM.add(kqquery);guanliM.add(kqadd);guanliM.add(kqupdate);guanliM.add(kqdelete);helpcon = new JMenuItem(帮助内容);helpcon.addActionListener(this);helpM.add(helpcon);aboutcon = new JMenuItem(关于内容);aboutcon.addActionListener(this);aboutM.add(aboutcon);/ 添加菜单mb.add(systemM);mb.add(jibenM);mb.add(guanliM);mb.add(helpM);mb.add(aboutM);this.setJMenuBar(mb);/ Icon i1 = new ImageIcon(image/1.jpg);/ Icon i2 = new ImageIcon(image/2.jpg);/ Icon i3 = new ImageIcon(image/3.jpg);/ Icon i4 = new ImageIcon(image/4.jpg);/ Icon i5 = new ImageIcon(image/5.jpg);b1 = new JButton(职工信息);b1.setBackground(Color.gray);b1.setFont(f);b2 = new JButton(出勤信息);b2.setBackground(Color.gray);b2.setFont(f);b3 = new JButton(出差信息);b3.setBackground(Color.gray);b3.setFont

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论