(考勤管理)课程设计考勤管理系统报告书.docx

上传人:scccc 文档编号:12270537 上传时间:2021-12-02 格式:DOCX 页数:33 大小:413.30KB
返回 下载 相关 举报
(考勤管理)课程设计考勤管理系统报告书.docx_第1页
第1页 / 共33页
(考勤管理)课程设计考勤管理系统报告书.docx_第2页
第2页 / 共33页
(考勤管理)课程设计考勤管理系统报告书.docx_第3页
第3页 / 共33页
(考勤管理)课程设计考勤管理系统报告书.docx_第4页
第4页 / 共33页
(考勤管理)课程设计考勤管理系统报告书.docx_第5页
第5页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《(考勤管理)课程设计考勤管理系统报告书.docx》由会员分享,可在线阅读,更多相关《(考勤管理)课程设计考勤管理系统报告书.docx(33页珍藏版)》请在三一文库上搜索。

1、数据库原理及应用 课程设计报告 题目:考勤管理系统-课程设计报告所在学院:信学工程学院班 级: 计科1001学号:101304127姓名:徐军指导教师:陈才扣2012年1月4日目录一、概述二、需求分析三、概念设计四、逻辑设计五、系统实现 六、小结一、概述1.1 系统开发的背景与意义1.1.1 系统开发背景现在不论哪个企业,都要进行考勤,考勤管理系统利用计算机管理考勤工作, 提高工作效率,一些企业在考勤管理方面用了大量的人力和财力,不说准确度和 可信度如何,其效率很低,而且容易出错,不利于管理。所以人工考勤已经很难 再满足企业规范化管理的要求,随着数据库技术的发展和企业信息化建设的进 行,使用计

2、算机管理考勤成为一种主流趋势, 它不仅为企业减少了人力财力的付 出,而且也大大减轻了考勤工作人员的工作量。 对于员工们的出勤率有个明显的 记录,对于公司的职员也有基本了解根据出勤情况可以计算员工的实际工资。本文系统的阐述了企业考勤管理设计开发的全过程。包括系统需求调查分析,概念结构设计,逻辑结构设计等部分。1.1.2 系统开发意义开发本系统的目的,就是要解决目前企业中关于员工出勤管理中所面临的一系列问题。考勤系统进行企业管理越来越适应企业的需要,集信息的输入,显示,修改,删除等各种处理,信息维护方便,给公司可以带来很大的便利。开发 出企业考勤管理系统能有效地提高企业办事效率,解决目前员工出勤管

3、理问题, 实现员工请出勤信息和缺勤信息对企业领导透明,使管理人员及时把握员工的情 况,及时与员工沟通,提高生产质量。二、需求分析作为一个考勤系统.最重要的功能当数考勤了.也就是能够将员工上班签到的日 期与时间记录下来。当然.记录下签到信息后,应该具有其他的辅助功能.比111" 查询员工某天的签到情况"、"修改签到情况"、”员工的维护“、”公司上班 时间的设置”等.下面就本系统完成的功能做一个简单的需求分析。2.1 系统功能要求2.1.1 功能划分(1)记录每个员工每天所有进入公司的时刻和离开公司的时刻。(2)每天结束时自动统计当天的工作时间(3)每天结束

4、时自动统计当天迟到或早退的次数。(4)对于弹性工作制,每天结束时自动统计当月的工时,并自动算出当月欠缺或富余的时间(5)每个月末统计该月的工作时间判断是否足够(6)每个月末统计该月的工作天数并判断是否足够(7)管理人员查询并修改工作时间(特殊情况下修改)(8)管理人员账户管理(如设置密码等)(9)管理人员设定早退及迟到的条件,每个月的工作时间(10)管理人员设定每个月的工作日期及放假日期1.1 .2 功能描述实际的管理和记录工作非常需要快速获知各个部门员工的每日出勤情况,以便于及时向高层管理者反映员工的出勤,缺勤情况。目前, 由于负责考勤的员工,工作任务比较多,而且还都是重复数据,让工作者没有

5、办法及时的向上报告。工作问题不能及时处理。针对以上的情况,我们提出企业考勤管理系统,实现网上考勤任务,以减轻考勤人员的工作量。我公司准备开发员工考勤管理系统,完成员工基本信息维护、企业的部门信息维护、企业基本考勤类型的维护、员工考勤的管理、员工考勤的查询与分析。实现人事考勤的需要,包括员工迟到、早退的情况的记录,在每个月底计算工资对员工和对员工进行绩效评估的时候,对员工整个月的考勤记录进行查询和统计。1.2 性能需求此工资管理系统对工资数据精度的计算能在默认情况之下精确到小数点后1.2 位小数,即是精确到分的计算。但在用户使用过程中,能自行根据实际情况进行小数计算精度的设定,最大能允许保留小数

6、点后 5位的精度。在时间特性上, 当用户发出命令请求时的服务器的响应时间、 对数据更新处理、工资数据的查询 检索等上,同样要求系统响应时间不会超过 0.5秒时间。系统支持多种操作系统 的运行环境,多不同操作系统,不同文件格式的磁盘上的数据均能实现信息的互 通,及共享。1.3 系统层次划分记 录 时 刻考 勤 系 统设 定 工 作 放 假 日 期管理系统1.4 数据流图顶层数据流图1.5 数据字典(1),数据项描述数据项别名长度取值范围员工工号Snochar90000000 至 9999999员工姓名Snamechar10员工性别Ssexchar1“男”或“女”入职时间enter_timecha

7、r2000 至 2050员工年龄Sagesmallint20 至 70职位positionChar10数据项描述表(2)数据结构描述数据结构说明组成员工信息是考勤管理子系统的主体 数据结构,定义了一个员工 的有关信息员工编号,员工姓名,员工性别,出生日期, 职位,密码部门信息是考勤管理子系统的主体 数据结构,定义了一个部门 的有关信息部门编号,部门名称数据结构描述(3)数据流描述数据流说明数据流来 源数据流去 向组成核对密码根据不同人 员相应的权 限登录时的 信息考勤管理 系统管理员的帐号密码与普通员工的帐 号密码完整的考 勤数据员工的考勤 数据月度考勤 统计工资评估月度考勤编号、员工编号、日

8、期、 累计正常工作时间迟到次数、早退 次数、旷工次数数据流描述(4)数据存储数据 存储说明流入数 据流流出数据 流组成存取方式月度记录员工一个月统计好的月度考勤编号、员工更新,顺序检索考勤每月的考的信息考勤数据编号、日期、正常工统计勤情况统计作时间、迟到次数、早退次数、旷工次数数据存储三、概念设计入职时间3.1概念模型员工属性图四、逻辑设计4.1关系模式员工信息(工号,姓名,性别,年龄,职位,密码,入职时间 )记录数据(工号,上班的小时,下班的小时,上班的分钟,下班的分钟,每天工作时间)统计数据(工殳剩余的时间,迟到的次数,早退的次数,工作天数)管理员(管理员号,姓名,性别,年龄)每天统计信息

9、表(工号,姓名,小时,分钟,动作,时间)其中动作指的时入或离开公司员工表(employee)列名别名长度备注工号Snochar9primary key员工姓名Snamechar10员工性别Ssexchar1年龄Sageint3职位Positionchar10密码Passwordchar6入职时间Enter_timechar10员工表记录数据表(data_record)列名别名NS长度备注员工号Snochar9primary key上班的小时arrive_hourchar2上班的分钟arrive_minutechar41上班的小时leave_hourchar4下班的分钟leave_minutec

10、har4每天工作时间Everyday_timechar4记录数据表每天统计信息表everyday_statistics列名别名长度备注员工号SnoChar9primary key员工姓名SnameChar10时间HourChar2分钟MinuteChar2动作Actionchar8时间Timechar4统计信息表月统计数据表(everymonth_statistics):列名别名长度备注员工号Snochar9primary key员工姓名SnameChar10剩余的时间remain_timechar4迟到的次数Late_timessmallint2早退的次数Early_timessmallin

11、t2工作天数Work_daysmallint2统计数据表管理员表(Administrator )列名别名长度备注管理员号anobigint6primary key姓名anamechar20性别asexchar2年龄aageint3管理员表五、系统实现一、登陆界面package kaoqin;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.io.*;import java.sql.*;public class Main_login extends JFrame implements Action

12、Listener public Main_login() super("选择用户类型");this.setSize(300,300);this.setContentPane(new JPanel(); create();private void create()JButton b1,b2,b3;Box box1,box2,box3,box;b1=new JButton(" 系统管理员");b2=new JButton(" 普通用户");b3=new JButton(" 退出登陆");b1.addActionList

13、ener(this);b2.addActionListener(this);b3.addActionListener(this);box1=Box.createHorizontalBox();box2=Box.createHorizontalBox();box3=Box.createHorizontalBox();box1.add(b1);box2.add(b2);box3.add(b3);box=Box.createVerticalBox();box.add(box1);box.add(Box.createVerticalStrut(20);box.add(box2);box.add(Box

14、.createVerticalStrut(40);box.add(box3);this.add(box);public void actionPerformed(ActionEvent e)if(e.getActionCommand()=" 系统管理员")login frame=new login();dispose();else if(e.getActionCommand()=" 普通用户")login1 frame=new login1();dispose();else if(e.getActionCommand()=" 退出登陆"

15、;)System.exit(0);public static void main(String args) /ConnectionDB myDB=new ConnectionDB();int flag=0; / 判断是否创建过数据库的标志File file=new File("SQL.txt");try /读入标志FileReader in=new FileReader(file);int len;if(len=in.read()!=-1)flag=1; /已创建了数据库,置1in.close(); catch (FileNotFoundException e) e.pri

16、ntStackTrace(); catch (IOException e) e.printStackTrace();/没有创建过数据库if(flag=0)ConnectionDB myDB=new ConnectionDB(); myDB.createTable();myDB.breakDB();try /写入标志FileWriter out=new FileWriter(file);out.write("1");out.close(); catch (IOException e) e.printStackTrace();Main_login frame1=new Main

17、_login();frame1.setVisible(true);二、管理员登陆界面class login extends JFrame / 管理员登陆界面 public login() this .setTitle( "管理员登陆界面"); t his .setSize(300,300);this .setContentPane( new JPanel();t his .setVisible( true );init();JTextFieldjTextField1 ;JPasswordFieldjPasswordField1 ;private void init() JL

18、abel jLabel1=newJLabel("管理员登陆");JLabel jLabel2=newJLabel("用户名");JLabel jLabel3=newJLabel("密码");jTextField1 =new JTextField(10);jPasswordField1 =new JPasswordField(10);JButton button1 =newJButton("确定");JButton button2=newJButton("取消");JButton button3=

19、newJButton("修改密码"Box box,box1,box2,box3,box4,box5;box1=Box. createHorizontalBox ();box1.add(jLabel1);box1.add(Box. createHorizontalStrut(10);box2=Box. createHorizontalBox ();box2.add(jLabel2);box2.add(Box. createHorizontalStrut(20);box2.add( jTextField1 );box3=Box. createHorizontalBox ();b

20、ox3.add(jLabel3);box3.add(Box.createHorizontalStrutbox3.add( jPasswordField1);box4=Box. createHorizontalBox();(20);box4.add(button1);box4.add(Box.createHorizontalStrutbox4.add(button2);box5=Box. createHorizontalBoxbox5.add(button3);box=Box. createVerticalBox();box.add(box1);();(20);box.add(Box. crea

21、teVerticalStrut box.add(box2);(20);box.add(Box. createVerticalStrut(20);box.add(box3);box.add(Box. createVerticalStrutbox.add(box4);(20);box.add(Box. createVerticalStrut box.add(box5); t his .add(box);(20);button1.addActionListener(new ActionListener()Overridepublic void actionPerformed(ActionEvent

22、e) / TODO自动生成的方法存根 /login im=new login();Stringname= jTextField1 .getText(),password=jPasswordField1 .getText();一if (name.equals( "admin" )&&password.equals( "123456") MFrame mi= new MFrame(); dispose。; else JOptionPane. showMessageDialog ( new JFrame( "WARNING"

23、), 用户名或密码错误”); );button2.addActionListener( new ActionListener()Override public void actionPerformed(ActionEvent e) / TODO自动生成的方法存根Main_login frame=new Main_login();dispose。; ); button3.addActionListener(new ActionListener()Overridepublic void actionPerformed(ActionEvent e) / TODO自动生成的方法存根MPwd f1= n

24、ew MPwd();dispose。;);三、主功能界面class MFrame extends JFrame / 主功能界面 public MFrame() this .setTitle( "主要功能");this .setContentPane( new JPanel();this .setSize(350,200);this .setVisible( true ); init();private void init()AttendFrame frame= new AttendFrame(););dispose。;/JButton button1 =newJButton

25、(”员工信息管理”JButton button2=newJButton(”员工出勤信息”JButton button3=newJButton("配置信息");JButton button4=newJButton("退出登陆");Box box1=Box.createHorizontalBox();Box box2=Box. createHorizontalBox ();Box box3=Box. createVerticalBox ();boxl.add(buttonl);box1.add(Box.createHorizontalStrut(10);bo

26、x1.add(button2);box1.add(Box.createHorizontalStrut(10);box1.add(button3);box2.add(button4);box3.add(box1);box3.add(Box. createVerticalStrut(30);box3.add(box2);this .add(box3);button1.addActionListener(new ActionListener()Overridepublic void actionPerformed(ActionEvent e) / TODO自动生成的方法存根Worker_Frame

27、frame= new Worker_Frame(); dispose。;);button2.addActionListener(new ActionListener()Overridepublic void actionPerformed(ActionEvent e)/ TODO自动生成的方法存根button3.addActionListener(new ActionListener()Override public void actionPerformed(ActionEvent e) / TODO自动生成的方法存根Equ_Frame frame= new Equ_Frame(); disp

28、ose。; );button4.addActionListener(new ActionListener()Overridepublic void actionPerformed(ActionEvent e) / TODO自动生成的方法存根/Main_login frame= new Main_login(); dispose。;);四、员工信息管理class Worker Frameextends JFrame / 员工信息管理public Worker_Frame() this .setTitle( "员工信息管理”); this .setVisible( true );this

29、 .setSize(400,400); init(); JButton buttonl , button2 , button3 , button4 , button5 private void init() buttonl=newJButton("员工信息添加");button2=newJButton("员工信息修改");button3=newJButton("员工信息删除");button4=newJButton("员工信息查询");button5=newJButton("返回");Box b

30、ox1=Box.createHorizontalBox();Box box2=Box.createHorizontalBox();Box box4=Box.createHorizontalBox();Box box3=Box.createVerticalBox();box1.add(button1);box1.add(Box.createHorizontalStrut(20);box1.add(button2);box2.add(button3);box2.add(Box.createHorizontalStrut(20);box2.add(button4);box4.add(button5)

31、;box3.add(box1);box3.add(box2);box3.add(Box. createVerticalStrut(30);box3.add(box4);this .add(box3);button1 .addActionListener(new ActionListener()/ 添力口员工信息Overridepublic void actionPerformed(ActionEvent e) / TODO自动生成的方法存根WoAddFrame frame= new WoAddFrame(); dispose。;);Overridepublic void actionPerfo

32、rmed(ActionEvent e) / TODO自动生成的方法存根WoAltFrame frame= new WoAltFrame(); dispose。; );button3 .addActionListener(new ActionListener()/ 删除员工信息Overridepublic void actionPerformed(ActionEvent e) / TODO自动生成的方法存根WoDelFrame frame= new WoDelFrame(); dispose。; );button4 .addActionListener(new ActionListener()/

33、 查询员工信息Overridepublic void actionPerformed(ActionEvent e) / TODO自动生成的方法存根WoSerFrame frame= new WoSerFrame(); dispose。; );button5 .addActionListener(new ActionListener()/ 返回Overridepublic void actionPerformed(ActionEvent e) / TODO自动生成的方法存根 MFrame frame= new MFrame(); dispose。;);五、添加员工class WoAddFrame

34、 extends JFrame / 添加员工 private ConnectionDB myCon =new ConnectionDB();privateJButtonYesBtn, NoBtn ;privatestaticJTextFieldwoName, woNo , woAge , woYear , woPosition , woSex , woPassword ;privateJLabel,woSexLabwoNameLabel , woNoLabel , woAgeLabel , woYearLabel , woPositionLabel el , woPasswordLabel ;

35、 / 提示区private static Font font =new Font("楷体",Font.BOLD,14);public WoAddFrame() this .setTitle( "添加员工"); this.setBounds(200,200,400, 300);this.setLayout(null);this.setResizable(false);this .setVisible( true ); this.addCompnents();this.add(getwoName ();this.add(getwoNo ();this.add

36、(getwoAge ();this.add(getwoYear ();this.add(getwoPosition();this.add(getwoSex ();this.add(getwoPassword(); privatevoidaddCompnents()woNameLabel =new JLabel( " 员工姓名:" );woNameLabel .setFont( font );woNameLabel .setBounds(70, 10, 70, 20);this .add( woNameLabel );woNoLabel =new JLabel( "

37、 员工编号:" );woNoLabel .setFont( font );woNoLabel .setBounds(70, 30, 70, 20);this .add( woNoLabel );woAgeLabel =new JLabel( " 员工年龄:" );woAgeLabel .setFont( font );woAgeLabel .setBounds(70, 50, 70, 20);this .add( woAgeLabel );woYearLabel =new JLabel( " 入职时间:" );woYearLabel .setF

38、ont( font );woYearLabel .setBounds(70, 70, 70, 20);this .add( woYearLabel );woPositionLabel =new JLabel( " 员工职位:" );woPositionLabel .setFont( font );woPositionLabel .setBounds(70, 90, 70, 20);this .add( woPositionLabel );woSexLabel =new JLabel( " 员工性别:" );woSexLabel .setFont(font

39、 );woSexLabel .setBounds(70,110,70, 20);this .add( woSexLabel);woPasswordLabel =new JLabel( " 员工密码:" );woPasswordLabel .setFont(font );woPasswordLabel .setBounds(70, 130, 70, 20);this .add( woPasswordLabel);YesBtn = new JButton( " 确定 " );YesBtn .setFont( font );YesBtn .setBounds(

40、100,180,70, 20);this .add( YesBtn );NoBtn = new JButton( " 取消 " );NoBtn .setFont( font );NoBtn .setBounds(180,180,70, 20);Override public void actionPerformed(ActionEvent e) / TODO自动生成的方法存根 Worker_Frame frame=new Worker_Frame();dispose。; ); this .add( NoBtn );YesBtn .addActionListener(new

41、ActionListener()/ 添加确认按钮响应Override public void actionPerformed(ActionEvent e) / TODO自动生成的方法存根 String sql= "insert into staff_info(Sno,Sname,Sage,enter_time,position,sex,password)values("'+woNo .getText()+ "','" + woName .getText()+ "','" +woAge .getT

42、ext()+ "','" +woYear .getText()+ "','"+woPosition .getText()+"','" +woSex .getText()+ "','" +woPassword .getText()+ "');"try myCon .getStatement().executeUpdate(sql);myCon .breakDB(); catch (SQLException e1) e1.pri

43、ntStackTrace(); OperatSFrame frame= new OperatSFrame(); ); public static JTextField getwoName() if ( woName = null )woName =new JTextField();woName .setBounds(150,10,150,20);woName .setFont( font );woName .setForeground(Color.blue );returnwoName;public static JTextField getwoNo()if ( woNo = null )wo

44、No =new JTextField();woNo .setBounds(150,30,150,20);woNo .setFont( font );woNo .setForeground(Color.blue );return woNo ;public static JTextField getwoAge()if ( woAge = null )woAge =new JTextField();woAge .setBounds(150,50,150,20);woAge .setFont( font );woAge .setForeground(Color.blue );return woAge ;public static JTextField getwoYear()if ( woYear = null )woYear =new JTextField();woYear .setBounds(150,70,150,20);woYear .setFont( font );woYear .setForeground(Color.blue );return woYear ;public static JTextField getwoPosition()if ( woPosit

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1