课程设计实验报告--公司员工考勤管理系统设计.docx
《课程设计实验报告--公司员工考勤管理系统设计.docx》由会员分享,可在线阅读,更多相关《课程设计实验报告--公司员工考勤管理系统设计.docx(29页珍藏版)》请在咨信网上搜索。
课程设计 总结报告 设计题目:公司员工考勤管理系统设计 学院 数学与计算科学学院 专业 信息与计算科学 班级 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- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 实验 报告 公司员工 考勤 管理 系统 设计
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【可****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【可****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【可****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【可****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文