职工考勤管理信息系统课程设计指导书(陈伟强10261023).doc_第1页
职工考勤管理信息系统课程设计指导书(陈伟强10261023).doc_第2页
职工考勤管理信息系统课程设计指导书(陈伟强10261023).doc_第3页
职工考勤管理信息系统课程设计指导书(陈伟强10261023).doc_第4页
职工考勤管理信息系统课程设计指导书(陈伟强10261023).doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

数据库系统原理课程设计报告考勤管理系统学生姓名: 陈伟强 10261023 系 别: 计 科 院 班 级: 10计11 专 业: 计算机科学与技术 指导教师: 唐蕾 职工考勤管理信息系统的设计与实现一、绪论随着科学技术的不断发展,计算机科学日渐进步,其强大的功能耳闻目睹,它已进入人类社会的各个领域并发挥着越来越重要的作用。由于在之前学习课程像c+等的课程设计中遇到过要求实现功能与此实验相似的情况,所以选择此课题作为课程设计作业。此职工考勤管理信息系统的实现利用了计算机的相关技术,满足了单位日常考勤管理的需求,使单位考勤过程更加快速,安全,高效的信息管理系统。本系统基于C/S模式,采用java语言与SQL SERVER 2000数据库开发完成,实现了职工出差信息管理,职工请假信息管理功能。其中职工出差信息管理主要包括出差起始时间、结束时间、统计总共天数等,职工请假信息管理主要包括请假开始时间,结束时间,统计请假天数等。本系统能基本满足用户在考勤管理方面的需求,界面较简洁,符合用户使用习惯能实际地提高单位的考勤管理的效率。二、系统分析随着企业人事管理的日趋复杂和企业人员的增多,企业的考勤管理变得越来越复杂。规范的考勤管理是现代企业提高管理效益的重要保证,而传统的人工管理存在着效率低、不易统计、成本高和易出错等弊端,已经无法适应现代企业的需求。本实验实现的职工信息管理系统主要包括以下功能:(1)提供简单、方便的操作;(2)根据企业原来的考勤管理制度,为企业不同管理层次提供相应的功能;(3)通过考勤管理无纸化的实现,使企业的考勤管理更加科学规范;(4)节省考勤管理的成本;(5)对系统提供必要的权限管理,具备一定的安全性管理功能。包括输入登录用户名和密码;(6)为企业实现整体信息化的其他相关系统提供必要的数据支持;(7) 完成数据的录入和修改,并提交数据库保存。其中的数据包括:出差信息、请假信息;(8)系统功能基本要求:出差信息,包括出差起始时间、结束时间、统计总共天数等;请假信息,包括请假开始时间,结束时间,统计请假天数等;三、系统设计3.1功能模块设计 本系统采用C/S体系结构,客户端负责提供表达逻辑、显示用户界面信息、访问数据库服务器,采用PowerBuilder9作为开发工具;服务器端则用于提供数据服务,采用SQL Server2000作为数据库管理系统。本系统按照功能划分为以下四个模块:职工请假信息管理(包括请假开始时间,结束时间,统计请假天数等),职工出差信息管理(包括出差起始时间、结束时间、统计总共天数等)系统的功能模块图如图1所示:职工考勤管理信息系统请假信息管理出差信息管理图1 系统的功能模块图3.2数据库设计3.2.1数据库概念结构设计本系统主要有职工信息、出差信息、请假信息、加班信息、出勤信息和职工考勤信息六个实体集。一个职工考勤信息包含有一个职工信息、一个出差信息、一个请假信息、一个出勤信息和一个加班信息。每个信息中又由多个属性组成。(1)每个本系统的E-R图如图2.1所示:用户口令用户名图2.1 系统的E-R图(2)图2.2为出差E-R图出差记录职工编号出差编号缺勤记录开始时间结束时间 图2.2 系统的职工出差E-R图(3)图2.3为请假E-R图请假记录请假编号编号请假统计开始时间结束时间 图2.3 系统中职工请假E-R图3.2.2数据库逻辑结构设计在物理结构中,数据的基本存取单位是存储记录。有了逻辑结构以后,就可以设计存储记录结构,一个存储记录可以与多个逻辑记录相对应。存储记录就包括记录的组成,数据项的类型和长度等。根据关系模型的转换原则,上面的ER图可转换为如下所示的关系模型:evection(Wnum,Wname,Wleave,Wreturn,Wdays)其中各项含义分别为:出差信息(职工编号,职工姓名,出差开始时间,出差结束时间,出差天数)vacation(Wnum,Wname,Wstart,Wend,Wvadays)其中各项含义分别为:请假信息(职工编号,职工姓名,请假开始时间,请假结束时间,请假天数)load(User,psw)其中各项含义分别为:登录(用户名,口令)根据上面的E-R图设计及关系模型的设计,得出数据表的设计,在本系统中主要的数据表如下:表1 出差信息表evecion的表结构主码列 名数据类型宽度小数位空否备 注PkWnumChar20N职工编号PkWnameChar20Y姓名Wleave DatetimeY出差开始时间WreturnDatetimeY出差结束时间WdaysSmallintY出差天数创建表1的SQL语句如下:create table evection (Wnum char(20),Wname char(10),primary key(Wnum,Wname),foreign key (Wnum,Wname) references zhigongxinxi4(Wnum,Wname) on delete cascade on update cascade,Wleave datetime,Wreturn datetime,Wdays smallint,)表2 请假信息表vacation的表结构主码列 名数据类型宽度小数位空否备 注PkWnumChar20N职工编号WnameChar20N姓名WstartDatetimeY请假开始时间WendDatetimeY请假结束时间WvadaysSmallintY请假天数创建表3的SQL语句如下:create table qingjia (Wnum char(20),Wname char(10),primary key (Wnum,Wname),foreign key (Wnum,Wname) references zhigongxinxi4(Wnum,Wname)on delete cascade on update cascade,Wstart datetime,Wend datetime,Wvadays smallint,)表3 登录表load的表结构主码列 名数据类型宽度小数位空否备 注PkUserChar20N用户名pswChar20Y口令创建表3的SQL语句如下:create table load(User char(20) primary key,psw char(20),)四、系统实现结合Eclipse进行数据库应用开发的特点,设计过程可按如下步骤进行:l 创建主函数,设计一个Frame框架,用来调用相关类的实例,实现操作功能;l 创建职工请假类和出差类;l 创建类的事件监听,用来响应添加,查询,浏览,删除等功能;l 创建数据窗口和数据源,将数据库与应用程序相连接;l 创建各个类的窗口中放置所需控件和可视化用户图形界面。4.1 创建主函数,设计一个Frame框架,用来调用相关类的实例,实现操作功能;利用Eclipse创建工程WorkManage,进一步创建包workManageg,在创建主类名为WorkManage,注释为“职工考勤信息管理系统”。按照下面的方法,编写相应代码:点击“新建类”新建一个类,名为“WorkManage”。创建主函数,并创建一个Frame容器用来添加各种组件,程序代码如下:package workManae;/* 职工考勤信息管理管理系统。程序名:WorkManage.java * */import java.awt.*;import java.awt.event.*;import java.sql.*;import java.util.*;import java.util.Date;import javax.swing.*;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.*;import java.applet.*;class WorkManage4 public static void main(String args) throws ParseExceptiondbframe db = new dbframe(职工考勤信息管理系统);/ 职工考勤信息管理系统主界面class dbframe extends Frame implements ActionListener /成员变量/登录boolean canLogin;Label labelLogIn = new Label(系统登录);Label labelUser=new Label(用户名:);Label labelPassword=new Label(口令:);TextField textFieldUser=new TextField();TextField textFieldPassword=new TextField();JButton jButtonConfirm=new JButton(确定);JButton jButtonExit=new JButton(退出);String user = new String();String tuser = new String();String tpassword = new String();/登录MenuBar navigation = new MenuBar(); / 建立菜单栏/ 建立“功能”菜单组Menu menuWorkerInformation=new Menu(职工信息);Menu menuWentOnErrands=new Menu(出差管理);Menu menuGoToWork=new Menu(出勤管理);Menu menuLeave=new Menu(请假管理);Menu menuWorkOverTime=new Menu(加班管理);Menu menuSystemManage=new Menu(系统管理);/ 建立“帮助”菜单组4.2创建请假类和出差类;1.出差类MenuItem menuItemWentOnErrandsQuery = new MenuItem(查询出差记录);MenuItem menumItemWentOnErrandsAddtion= new MenuItem(添加出差记录);MenuItem menuItemWentOnErrandsDelete= new MenuItem(删除出差记录);MenuItem menuItemWentOnErrandsModify= new MenuItem(修改出差记录);MenuItem menuItemchuchailiulan = new MenuItem(浏览出差记录);/出差查询class Panelchuchaichaxun extends Panel implements ActionListener Choice cchaxun;TextField tchaxun;Button btnchaxun;TextArea tachaxun;Panelchuchaichaxun() setLayout(null);cchaxun = new Choice(); / 创建下拉菜单cchaxun.add(职工编号);cchaxun.add(职工姓名); tchaxun = new TextField();btnchaxun = new Button(查询); / 创建按钮tachaxun = new TextArea(); / 创建多行文本框add(cchaxun);add(tchaxun);add(btnchaxun);add(tachaxun);tchaxun.setText();cchaxun.setBounds(10, 60, 70, 20);tchaxun.setBounds(85, 60, 180, 20);btnchaxun.setBounds(275, 60, 40, 20);tachaxun.setBounds(10, 90, 305, 145);cchaxun.select(0); / 下拉菜单的初始选项setSize(340, 250); / 设置窗口大小setBackground(Color.white);setVisible(true);btnchaxun.addActionListener(this);validate();/出差修改class Panelchuchaixiugai extends Panel implements ActionListener TextField textFieldWorkerName, textFieldWorkerNumber, textFieldchuchaiqishiriqi, textFieldchuchaijieshuriqi,textFieldchuchaitianshu;Label labelWorkerName, labelWorkerNumber, labelchuchaiqishiriqi, labelchuchaijieshuriqi, labelchuchaitianshu;Button btn;Panelchuchaixiugai() setLayout(null);btn = new Button(添加); / 创建“添加”按钮textFieldWorkerName = new TextField();textFieldWorkerNumber = new TextField();textFieldchuchaiqishiriqi = new TextField();textFieldchuchaijieshuriqi = new TextField();textFieldchuchaitianshu = new TextField(); labelWorkerName = new Label(职工姓名:);labelWorkerNumber = new Label(职工编号:);labelchuchaiqishiriqi = new Label(出差开始日期:);labelchuchaijieshuriqi = new Label(出差结束日期:);labelchuchaitianshu = new Label(出差天数:);add(labelWorkerName);add(textFieldWorkerName);add(labelWorkerNumber);add(textFieldWorkerNumber);add(labelchuchaiqishiriqi);add(textFieldchuchaiqishiriqi);add(labelchuchaijieshuriqi);add(textFieldchuchaijieshuriqi);add(labelchuchaitianshu);add(textFieldchuchaitianshu);add(btn); / 添加“按钮”到窗口面板上labelWorkerName.setBounds(10, 60, 70, 25);textFieldWorkerName.setBounds(90, 60, 220, 25);labelWorkerNumber.setBounds(10, 90, 70, 25);textFieldWorkerNumber.setBounds(90, 90, 220, 25);labelchuchaiqishiriqi.setBounds(10, 120, 80, 25);textFieldchuchaiqishiriqi.setBounds(90, 120, 220, 25);labelchuchaijieshuriqi.setBounds(10, 150, 80, 25);textFieldchuchaijieshuriqi.setBounds(90, 150, 220, 25);labelchuchaitianshu.setBounds(10, 180, 70, 25);textFieldchuchaitianshu.setBounds(90, 180, 220, 25);btn.setBounds(130, 250, 70, 25); / 设置按钮位置btn.addActionListener(this); / 设置按钮监听setSize(340, 300); / 设置窗口大小setBackground(Color.white); / 设置窗口背景颜色setVisible(true);validate();/出差浏览class Panelchuchailiulan extends Panel implements ActionListener Button btnliulan;TextArea tachaxun;Panelchuchailiulan() setLayout(null);btnliulan = new Button(浏览职工出差记录); / 创建按钮tachaxun = new TextArea(); / 创建多行文本框 add(btnliulan);add(tachaxun);/tchaxun.setText();/cchaxun.setBounds(10, 60, 70, 20);/tchaxun.setBounds(85, 60, 180, 20);btnliulan.setBounds(75, 60, 100, 20);tachaxun.setBounds(10, 90, 400, 200);setSize(500, 400); / 设置窗口大小setBackground(Color.white);setVisible(true);btnliulan.addActionListener(this);validate();/职工出差添加class Panelchuchaitianjia extends Panel implements ActionListener TextField textFieldWorkerName, textFieldWorkerNumber, textFieldchuchaiqishiriqi, textFieldchuchaijieshuriqi;Label labeltongjitianshu;Label labelWorkerName, labelWorkerNumber, labelchuchaiqishiriqi, labelchuchaijieshuriqi, labelchuchaitianshu;Button btnchuchaitianshu;Button btn;Panelchuchaitianjia() setLayout(null);btn = new Button(添加); / 创建“添加”按钮btnchuchaitianshu = new Button(统计出差天数);textFieldWorkerName = new TextField();textFieldWorkerNumber = new TextField();textFieldchuchaiqishiriqi = new TextField();textFieldchuchaijieshuriqi = new TextField();labeltongjitianshu = new Label(); labelWorkerName = new Label(职工姓名:);labelWorkerNumber = new Label(职工编号:);labelchuchaiqishiriqi = new Label(出差开始日期:);labelchuchaijieshuriqi = new Label(出差结束日期:);labelchuchaitianshu = new Label(出差天数:);add(labelWorkerName);add(textFieldWorkerName);add(labelWorkerNumber);add(textFieldWorkerNumber);add(labelchuchaiqishiriqi);add(textFieldchuchaiqishiriqi);add(labelchuchaijieshuriqi);add(textFieldchuchaijieshuriqi);add(labelchuchaitianshu);add(labeltongjitianshu);add(btnchuchaitianshu);add(btn); / 添加“按钮”到窗口面板上labelWorkerName.setBounds(10, 60, 70, 25);textFieldWorkerName.setBounds(90, 60, 220, 25);labelWorkerNumber.setBounds(10, 90, 70, 25);textFieldWorkerNumber.setBounds(90, 90, 220, 25);labelchuchaiqishiriqi.setBounds(10, 120, 80, 25);textFieldchuchaiqishiriqi.setBounds(90, 120, 220, 25);labelchuchaijieshuriqi.setBounds(10, 150, 80, 25);textFieldchuchaijieshuriqi.setBounds(90, 150, 220, 25);labelchuchaitianshu.setBounds(10, 180, 70, 25);labeltongjitianshu.setBounds(90, 180, 220, 25);labeltongjitianshu.setBackground(Color.cyan);btnchuchaitianshu.setBounds(100,220,80,25);btn.setBounds(220, 220, 70, 25); / 设置按钮位置btn.addActionListener(this); / 设置按钮监听btnchuchaitianshu.addActionListener(this);setSize(340, 300); / 设置窗口大小setBackground(Color.white); / 设置窗口背景颜色setVisible(true);validate();图3 出差类的图形界面2.请假类MenuItem menuItemLeaveQuery = new MenuItem(查询请假记录);MenuItem menumItemLeaveAddtion= new MenuItem(添加请假记录);MenuItem menuItemLeaveDelete= new MenuItem(删除请假记录);MenuItem menuItemLeaveModify= new MenuItem(修改请假记录);MenuItem menuItemqingjialiulan= new MenuItem(浏览请假记录);/请假查询class Panelqingjiachaxun extends Panel implements ActionListener Choice cchaxun;TextField tchaxun;Button btnchaxun;TextArea tachaxun;Panelqingjiachaxun() setLayout(null);cchaxun = new Choice(); / 创建下拉菜单cchaxun.add(职工编号);cchaxun.add(职工姓名);tchaxun = new TextField();btnchaxun = new Button(查询); / 创建按钮tachaxun = new TextArea(); / 创建多行文本框add(cchaxun);add(tchaxun);add(btnchaxun);add(tachaxun);tchaxun.setText();cchaxun.setBounds(10, 60, 70, 20);tchaxun.setBounds(85, 60, 180, 20);btnchaxun.setBounds(275, 60, 40, 20);tachaxun.setBounds(10, 90, 305, 145);cchaxun.select(0); / 下拉菜单的初始选项setSize(340, 250); / 设置窗口大小setBackground(Color.white);setVisible(true);btnchaxun.addActionListener(this);validate();/请假浏览class Panelqingjialiulan extends Panel implements ActionListener / 请假类Button btnliulan;TextArea tachaxun;Panelqingjialiulan() setLayout(null);btnliulan = new Button(浏览职工请假记录); / 创建按钮tachaxun = new TextArea(); / 创建多行文本框tachaxun.setEditable(false);add(btnliulan);add(tachaxun);btnliulan.setBounds(75, 60, 100, 20);tachaxun.setBounds(10, 90, 400, 200);setSize(500, 400); / 设置窗口大小setBackground(Color.white);setVisible(true);btnliulan.addActionListener(this);validate();/请假修改class Panelqingjiaxiugai extends Panel implements ActionListener TextField textFieldWorkerName, textFieldWorkerNumber, textFieldqingjiakaishi, textFieldqingjiajieshu,textFieldqingjiatianshu;Label labelWorkerName, labelWorkerNumber, labelqingjiakaishi, labelqingjiajieshu, labelqingjiatianshu;Button btn;Panelqingjiaxiugai() setLayout(null);btn = new Button(添加); / 创建“添加”按钮textFieldWorkerName = new TextField();textFieldWorkerNumber = new TextField();textFieldqingjiakaishi = new TextField();textFieldqingjiajieshu = new TextField();textFieldqingjiatianshu = new TextField(); labelWorkerName = new Label(职工姓名:);labelWorkerNumber = new Label(职工编号:);labelqingjiakaishi = new Label(请假开始日期:);labelqingjiajieshu = new Label(请假结束日期:);labelqingjiatianshu = new Label(请假天数:);add(labelWorkerName);add(textFieldWorkerName);add(labelWorkerNumber);add(textFieldWorkerNumber);add(labelqingjiakaishi);add(textFieldqingjiakaishi);add(labelqingjiajieshu);add(textFieldqingjiajieshu);add(labelqingjiatianshu);add(textFieldqingjiatianshu);add(btn); / 添加“按钮”到窗口面板上labelWorkerName.setBounds(10, 60, 70, 25);textFieldWorkerName.setBounds(90, 60, 220, 25);labelWorkerNumber.setBounds(10, 90, 70, 25);textFieldWorkerNumber.setBounds(90, 90, 220, 25);labelqingjiakaishi.setBounds(10, 120, 80, 25);textFieldqingjiakaishi.setBounds(90, 120, 220, 25);labelqingjiajieshu.setBounds(10, 150, 80, 25);textFieldqingjiajieshu.setBounds(90, 150, 220, 25);labelqingjiatianshu.setBounds(10, 180, 80, 25);textFieldqingjiatianshu.setBounds(90, 180, 220, 25);btn.setBounds(130, 250, 70, 25); / 设置按钮位置btn.addActionListener(this); / 设置按钮监听setSize(340, 300); / 设置窗口大小setBackground(Color.white); / 设置窗口背景颜色setVisible(true);validate();/请假添加class Panelqingjiatianjia extends Panel implements ActionListener TextField textFieldWorkerName, textFieldWorkerNumber, textFieldqingjiakaishi, textFieldqingjiajieshu;Label labeltongjitianshu;Label labelWorkerName, labelWorkerNumber, labelqingjiakaishi, labelqingjiajieshu, labelqingjiatianshu;Button btn;Button btntongjiqingjiatianshu;Panelqingjiatianjia() setLayout(null);btn = new Button(添加); / 创建“添加”按钮btntongjiqingjiatianshu = new Button(统计请假天数);textFieldWorkerName = new TextField();textFieldWorkerNumber = new TextField();textFieldqingjiakaishi = new TextField();textFieldqingjiajieshu = new TextField();labeltongjitianshu = new Label(); labelWorkerName = new Label(职工姓名:);labelWorkerNumber = new Label(职工编号:);labelqingjiakaishi = new Label(请假开始日期:);labelqingjiajieshu = new Label(请假结束日期:);labelqingjiatianshu = new Label(请假天数:);labeltongjitianshu.setBackground(Color.cyan);add(labelWorkerName);add(textFieldWorkerName);add(labelWorkerNumber);add(textFieldWorkerNumber);add(labelqingjiakaishi);add(textFieldqingjiakaishi);add(labelqingjiajieshu);add(textFieldqingjiajieshu);add(labelqingjiatianshu);add(labeltongjitianshu);add(btn); / 添加“按钮”到窗口面板上add(btntongjiqingjiatianshu);labelWorkerName.setBounds(10, 60, 70, 25);textFieldWorkerName.setBounds(90, 60, 220, 25);labelWorkerNumber.setBounds(10, 90, 70, 25);textFieldWorkerNumber.setBounds(90, 90, 220, 25);labelqingjiakaishi.setBounds(10, 120, 80, 25);textFieldqingjiakaishi.setBounds(90, 120, 220, 25);labelqingjiajieshu.setBounds(10, 150, 80, 25);textFieldqingjiajieshu.setBounds(90, 150, 220, 25);labelqingjiatianshu.setBounds(10, 180, 80, 25);labeltongjitianshu.setBounds(90, 180, 220, 25);btntongjiqingjiatianshu.setBounds(120, 220, 80, 25);btn.setBounds(220, 220, 70, 25); / 设置按钮位置btn.addActionListener(this); / 设置按钮监听btntongjiqingjiatianshu.addActionListener(this);setSize(340, 350); / 设置窗口大小setBackground(Color.white); / 设置窗口背景颜色setVisible(true);validate();图4 请假类的图形用户界面4.3创建类的事件监听,用来响应添加,查询,浏览,删除等功能;/出差类的动作监听添加public void actionPerformed(ActionEvent e) int i = cchaxun.getSelectedIndex();String s = tchaxun.getText();if (s.equals()JOptionPane.showMessageDialog(this, 查询内容不能为空, 查询系统,JOptionPane.WARNING_MESSAGE);else Connection con;Statement sql;ResultSet rs;try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); / 加载JDBC驱动 catch (ClassNotFoundException ee) System.out.println( + ee);try con = DriverManager.getConnection(jdbc:odbc:evection4, sa, 123);/ 连接数据库sql = con.createStatement();if (i = 0) / 根据下拉菜单的选项执行不同的SQL语句rs = sql.executeQuery(select * from evection4 where Wnum =+ + s + );e

温馨提示

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

评论

0/150

提交评论