收藏 分销(赏)

实验报告公司员工考勤管理系统设计.doc

上传人:快乐****生活 文档编号:2223340 上传时间:2024-05-23 格式:DOC 页数:32 大小:173.35KB 下载积分:12 金币
下载 相关 举报
实验报告公司员工考勤管理系统设计.doc_第1页
第1页 / 共32页
实验报告公司员工考勤管理系统设计.doc_第2页
第2页 / 共32页


点击查看更多>>
资源描述
课程设计 总结报告 设计题目:公司员工考勤管理系统设计 学院 数学与计算科学学院 专业 信息与计算科学 班级 14信计四班 学号 14070204** 姓名 黎*文 指导老师 彭*辉 时间 2016年11月20日 摘要 公司考勤系统 项目描述: 开发背景:在公司内,员工的考勤通常缺乏方便且有效的管理手段,针对此需求需要开发一套考勤管理系统。 价值:公司考勤系统他类别与普通的系统更方便,更简洁,更容易上手,能更直观的反应出每个员工的考勤,对员工的管理就更有效率。这个系统适用于所有公司。 开发工具:oracle 11g,Eclipse 开发语言:Java 核心技术:JOBC对数据库的操作,操作界面的设计,各种布局方式和插件 (1)使用JFrame控件进行界面设计 (2)使用静态字段实现窗体间的数据传递 (3)使用代码方式向容器控件中添加控件 需求分析: (1)登录主界面(2)功能主窗口(3)设置工作时间:只限管理员 (4)修改密码(5)员工管理信息(只限管理员):(只限管理员)(6)考勤信息管理:只限管理员 (7)考勤登记:只限员工 (8)重新登录(9)退出(10)关于帮助 功能模块的难点技术和实现思路: 考勤信息管理:只限管理员 在界面中显示考勤信息,并作出相应更改,以及数据的输入。 一. 需求分析: 公司需要存储雇员的编号、姓名、性别、所在部门,级别,。其 中,雇员分为经理、技术人员、销售人员和销售经理。销售经理能够管理所有人的信息,其他人只能查看自己的信息,采用以往的方式,显得复杂和麻烦,现在,我们开发出员工考勤管理的系统,对员工的考勤进行动态的管理。随着现代科技的进步,用计算机来进行考勤的管理也成为现代化企业运作必不 可少的一部分。在过去我们的考勤工作都是人工完成的,不仅浪费了很多的人力跟物力,而且无法保证其准确性和透明度;给企业的管理带来了许多的不便。现在利用计算机来管理我们的考勤工作,大大降低了工作人员的工作量,提高了工作效率,使原 本复杂和枯燥无味的工作变得简单而轻松了。 计算机技术特别是数据库技术的发展为企业建立管理信息系统,甚至对改变管 理思想起着不可估量的作用。实践证明信息技术已在企业的管理层面扮演越来越重 要的角色。 二. 概要设计 设计本考勤系统目的是为企业解决员工考勤的繁琐工作,减轻企业负担,减少 不必要的劳动力、金钱的损耗,提高工作效率,为企业创造更多效益,实现单位考勤管理的系统化、规范化和自动化。因此本系统主要需要实现以下几个功能: 管理员登录及信息维护,员工信息维护,数据采集,基本数据(请假类型,和数据)维护,数据库管理,查询功能,,请假、休假记录等。具体分析见下: 2.1登录系统: 包括用户登录、修改密码、退出系统等。登录分为两种形式,客户和管理员。用户名或密码不知道或者错误时将自动以客户登录,除了系统模块外的所有模块都呈现不可激活状态,不能进行操作。 2.2基本操作: (1)添加功能:程序能够任意添加记录,,要求员工的编号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并转化为修改。 (2)查询功能:可根据编号、姓名等信息对已添加的员工信息和休假信息进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息;  (3)显示功能:可显示当前系统中所有记录,每条记录占据一行。  (4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。  (5)删除功能:主要实现对已添加的人员记录和休假记录进行删除。如果当前系统中没有相应的人员记录,则提示“记录为空!”并返回操作。  (6)统计功能:能对所有人员进行统计。 (7)保存功能:可将当前系统中各类人员记录和休假记录存入文件中,存入方式任意。  (8)读取功能:可将保存在数据库中的信息读入到当前系统中,供用户进行使用。  三. 详细设计 3.1 使用到的类的介绍: (1) AddMenu: 实现添加菜单功能的类。 (2) BoxPanel: 继承JPanel类,有 JLabel ;JTextField 两个变量,显示主界面中的变量名和内容。 (4) Boxpanelpass: 继承JPanel类,JPasswordField,有JPasswordField变量,实现密码的输入。 (5)DateBaseConn: 数据库连接类,有一个连接数据库的函数 returnConn(); (6)DeleteMenu: 删除功能的实现 (7)LeaveB: 一个抽象类,继承JDialog类 ,显示的作用。 (8)LeaveBL: 继承LeaveB类,实现请假的功能。 (9)LeaveBV: 继承LeaveB类,实现休假的功能。 (10)Logpage: 登录界面的类。 (11)Operatepage: 操作界面的类 (12)SaveMenu: 实现保存菜单的类 (13)ShowAll: 实现统计菜单中子菜单显示所有子菜单的类 (14)ShowStaffMenu: 实现显示菜单的类 (15)Staff: 记录员工信息的类 3.2 登录系统的设计: (1)导入了以下类, import javax.swing.JButton; import javax.naming.spi.DirStateFactory.Result; import javax.swing.BoxLayout; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTextField; 通过布局使界面如下: 3.3 操作界面的设计: 使用以下导入的类进行界面设计: import javax.swing.Box; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; 最终效果如下: 3.4 难点部分: (1)登录密码的实现: if (e.getSource()==bConfirm) { try { //连接数据库 Connection conn = (Connection) DateBaseConn.returnConn(); //数据库操作 PreparedStatement sts=conn.prepareStatement( "select ENUM from CSAS123L where ENUM=? and EPASSWORD = ?" ); if(administratorbp.text.getText().equals("1407020415")){ sts.setString(1,administratorbp.text.getText() ); } else{ sts.setString(1,staffpb.text.getText() ); } sts.setString(2,new String (passworbp.text.getPassword()) ); ResultSet rs = sts.executeQuery(); //通过查找,对应密码和编号的员工是否存在 if(rs.next()) { //若果是管理员账号,进入管理员界面 if(rs.getString("ENUM").trim().equals("1407020415")) { System.out.println(rs.getString("ENUM").trim()); a = new Operatepage(rs.getString("ENUM").trim()); menuSetEnable(a,true); } else { a = new Operatepage(rs.getString("ENUM").trim()); menuSetEnable(a,false); a.menu8.setEnabled(true); } } else JOptionPane.showMessageDialog(confpanel, "请输入正确的账号和密码!"); } catch (InstantiationException | IllegalAccessException | ClassNotFoundException | SQLException e1) { e1.printStackTrace(); System.out.println("连接失败!!"); } } (2) 数据库的连接类:(直接也有部分错误的抛出没实现) package com.Listen; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class DateBaseConn { public static Connection returnConn() throws InstantiationException, IllegalAccessException,ClassNotFoundException, SQLException { try { Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); new oracle.jdbc.driver.OracleDriver(); Class.forName("oracle.jdbc.driver.OracleDriver"); //这个Driver的实例化在构建过程中会自动向DriverManager自动注册 //连接数据库 Connection conn = DriverManager.getConnection("jdbc:oracle:thin:" + "@127.0.0.1:1521:orcl","scott","Kyq020520"); return conn; } catch (SQLException e) { System.out.println("数据库连接失败,请联系管理员。"); } return null; } } 四.设计和调试分析 1. 此系统只有一个管理员,能对数据进行,添加,查询,修改,显示,编辑,删除,和统计。 2. 用户只能根据密码和对应账号进行登录查询,以及请假和休假操作。 五.用户手册 1. 针对管理员 (1) 输入账号密码即可登录,可以使用菜单中所有功能。 (2) 管理员默认密码是“12345678”。 2. 针对普通用户, (1) 仅可使用请假和休假功能。 (2) 用户默认密码是“12345678”。 3. 要使用本套需要创建数据库文件。 (1) 建立表 表名字为:CSAS123L; (2)数据的插入。 六.测试结果 (1)登录界面: (2)查看界面: (3)查询界面: (4)请假界面: 其他不在详细描述。 七.设计心得 1. 操作界面过于简单,没有背景图片,应该适当插入部分图片。 2. 人机交互缺乏,对错误的抛出处理不当,考虑到的情况不够全面。 3. 对于数据库的连接仅限于本机,无法实现联网工作,所以对于软件的可移植性不够。虽然用文件的方式操作能够解决这一问题,但是对于数据处理太繁琐。 4. 对于系统设计方面的问题,一定要有计划和流程图,不能想一步做一步,最后会导致问题的处理不够全面。 5. 应该该有一个良好的编码习惯,类的定义,方法的定义,一定要有一套规则,方便检查调试,使别人能够轻易地看懂。 八.附录 AddMenu类 package com.Listen; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import javax.swing.JOptionPane; public class AddMenu { //清理数据函数,清理显示的信息。 public void clear(Operatepage a){ a.name.text.setText(""); a.number.text.setText(""); a.department.text.setText(""); a.post.text.setText(""); a.sickDay.text.setText(""); a.sickDayOff.text.setText(""); a.offDay.text.setText(""); a.offDayOff.text.setText(""); } public AddMenu(Operatepage a) { a.setEnable(a, true); } } Boxpanel类: package com.Listen; import java.awt.Font; import javax.swing.Box; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing. JTextField; public class BoxPanel extends JPanel{ JTextField text; JLabel label; Box box; public BoxPanel(String s,int n ) { box = Box.createHorizontalBox(); label = new JLabel (s); text = new JTextField("",n); text.setHorizontalAlignment(JTextField.LEFT); //设置文本格式 // text.setFont(new Font("Arial", Font.BOLD, 14)); box.add(label); box.add(text); add(box); } //设置密码格式 private void changefont() { } } BoxPanelll类: package com.Listen; import javax.swing.Box; import javax.swing.JLabel; import javax.swing.JPanel; public class BoxPanelll extends JPanel{ JLabel label1,lable2; Box box; public BoxPanelll(String s,String n ) { box = Box.createHorizontalBox(); label1 = new JLabel (s); lable2 = new JLabel (n); box.add(label1); box.add(lable2); add(box); } } DateBaseConn类: package com.Listen; import javax.swing.Box; import javax.swing.JLabel; import javax.swing.JPanel; public class BoxPanelll extends JPanel{ JLabel label1,lable2; Box box; public BoxPanelll(String s,String n ) { box = Box.createHorizontalBox(); label1 = new JLabel (s); lable2 = new JLabel (n); box.add(label1); box.add(lable2); add(box); } } DeleteMenu类: package com.Listen; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import javax.swing.JOptionPane; public class DeleteMenu{ public static void delete(Operatepage a) throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException { Connection conn = DateBaseConn.returnConn(); int i = 0; String sql = "delete from CSAS123L where ENUM='" + a.number.text.getText().trim() + "'"; PreparedStatement sts; try { sts = (PreparedStatement) conn.prepareStatement(sql); i = sts.executeUpdate(); if(i>0) JOptionPane.showMessageDialog( a.panel1, "删除成功,请继续操作!"); else JOptionPane.showMessageDialog( a.panel1, "删除失败,请确认后再操作!"); sts.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } AddMenu a1 = new AddMenu( a); a1.clear(a); } } LeaveB类: package com.Listen; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.SQLException; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JPanel; public class LeaveB extends JDialog implements ActionListener{ JPanel topPanel; JButton sureB,exitB; public LeaveB() { setBounds(200,350,200,100); setVisible(true); setLayout(new GridLayout(2, 1)); topPanel = new JPanel(); sureB = new JButton("确定"); exitB = new JButton("取消"); topPanel.add(sureB); topPanel.add(exitB); sureB.addActionListener(this); exitB.addActionListener(this); add(topPanel); } public void save(Operatepage a){ SaveMenu a1 = new SaveMenu(); a.sickDay.text.getText(); try { a1.SaveDate(null); } catch (InstantiationException | IllegalAccessException | ClassNotFoundException | SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } public void actionPerformed(ActionEvent e) { if (e.getSource()==exitB){ dispose(); } } } LeavaBL类: package com.Listen; import java.awt.event.ActionEvent; import java.sql.SQLException; import javax.swing.JOptionPane; public class LeaveBL extends LeaveB{ Operatepage a; public void save(Operatepage a){ int i1,i2; SaveMenu a1 = new SaveMenu(); i1=Integer.parseInt(a.sickDay.text.getText()); i1++; a.sickDay.text.setText(String.valueOf(i1)); i2=Integer.parseInt(a.sickDayOff.text.getText()); i2--; a.sickDayOff.text.setText(String.valueOf(i2)); try { a1.UpdataDate(a); } catch (InstantiationException | IllegalAccessException | ClassNotFoundException | SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } JOptionPane.showMessageDialog(topPanel, "病假天数:"+a.sickDay.text.getText()+"\n" +"剩余病假天数:"+a.sickDayOff.text.getText()); } public void actionPerformed(ActionEvent e) { if (e.getSource()==sureB){ save(a); a.button1.setEnabled(false); dispose(); } else if (e.getSource()==exitB){ dispose(); } } public static void main(String[] args) { // TODO Auto-generated method stub new LeaveBL(); } } LeaveBV类: package com.Listen; import java.awt.event.ActionEvent; import java.sql.SQLException; import javax.swing.JOptionPane; public class LeaveBV extends LeaveB { Operatepage a; public LeaveBV() { } public void save(Operatepage a){ int i1,i2; SaveMenu a1 = new SaveMenu(); i1=Integer.parseInt(a.offDay.text.getText()); ++i1; a.offDay.text.setText(String.valueOf(i1)); i2=Integer.parseInt(a.offDayOff.text.getText()); --i2; a.offDayOff.text.setText(String.valueOf(i2)); try { a1.UpdataDate(a); } catch (InstantiationException | IllegalAccessException | ClassNotFoundException | SQLException e1) { e1.printStackTrace(); } JOptionPane.showMessageDialog(topPanel, a.name.text.getText()+"\n"+ "带薪休假天数:"+a.offDay.text.getText()+"\n" +"剩余带薪休假天数:"+a.offDayOff.text.getText()); } public void actionPerformed(ActionEvent e) { if (e.getSource()==sureB){ save(a); a.button2.setEnabled(false); dispose(); } else if (e.getSource()==exitB){ dispose(); } } } Logpage类: package com.Listen; import java.awt.BorderLayout; import java.awt.Color; import java.awt.FlowLayout; import java.awt.Font; import java.awt.GridLayout; import java.awt.Label; 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 javax.swing.JButton; import javax.naming.spi.DirStateFactory.Result; import javax.swing.BoxLayout; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTextField; public class Logpage extends JFrame implements ActionListener{ JPanel topPanel,confpanel,logPanel; JLabel topLabel; BoxPanel staffpb ,administratorbp; boxpanelpass passworbp; JButton bConfirm; JPanel imagePanel; Operatepage a; public Logpage() { super("公司员工考勤管理系统"); setLayout(new GridLayout(3, 1)); //添加上部分 topLabel = new JLabel(" 公司员工考勤管理系统登录界面"); topLabel.setFont(new Font("宋体", Font.BOLD, 30)); topPanel = new JPanel(); topPanel.setLayout(new BorderLayout()); topPanel.add("Center",topLabel); add(topPanel); //添加中部分 logPanel = new JPanel(); logPanel.setLayout(new GridLayout(3, 1)); staffpb = new BoxPanel("员工账号: ",15); administratorbp = new BoxPanel("管理员账号:",15); passworbp = new boxpanelpass("账号密码: ", 14); logPanel.add(staffpb); logPanel.add(administratorbp); logPanel.add(passworbp); add(logPanel); //添加下部分 bConfirm = new JButton("确定"); bConfirm.addActionListener(this); confpanel = new JPanel(); confpanel.add(bConfirm); bConfirm.setBounds(30,30 , 50, 50); add("Center",confpanel); setBounds(100,100,600,400); setVisible(true); } public static void menuSetEnable(Operatepage a,boolean flag){ a.menu1.setEnabled(flag); a.menu2.setEnabled(flag); a.menu3.setEnabled(flag); a.menu4.setEnabled(flag); a.me
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 考试专区 > 中考

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服