数据库原理及应用课程设计报告题目:考勤管理系统---课程设计报告所在学院:信息工程学院班级:计科1001学号:101304127姓名:徐军指导教师:陈才扣2012年1月4日目录一、概述二、需求分析三、概念设计四、逻辑设计五、系统实现六、小结一、概述1.1系统开发的背景与意义1.1.1系统开发背景现在不论哪个企业,都要进行考勤,考勤管理系统利用计算机管理考勤工作,提高工作效率,一些企业在考勤管理方面用了大量的人力和财力,不说准确度和可信度如何,其效率很低,而且容易出错,不利于管理。所以人工考勤已经很难再满足企业规范化管理的要求,随着数据库技术的发展和企业信息化建设的进行,使用计算机管理考勤成为一种主流趋势,它不仅为企业减少了人力财力的付出,而且也大大减轻了考勤工作人员的工作量。对于员工们的出勤率有个明显的记录,对于公司的职员也有基本了解根据出勤情况可以计算员工的实际工资。本文系统的阐述了企业考勤管理设计开发的全过程。包括系统需求调查分析,概念结构设计,逻辑结构设计等部分。1.1.2系统开发意义开发本系统的目的,就是要解决目前企业中关于员工出勤管理中所面临的一系列问题。考勤系统进行企业管理越来越适应企业的需要,集信息的输入,显示,修改,删除等各种处理,信息维护方便,给公司可以带来很大的便利。开发出企业考勤管理系统能有效地提高企业办事效率,解决目前员工出勤管理问题,实现员工请出勤信息和缺勤信息对企业领导透明,使管理人员及时把握员工的情况,及时与员工沟通,提高生产质量。二、需求分析作为一个考勤系统.最重要的功能当数考勤了.也就是能够将员工上班签到的日期与时间记录下来。当然.记录下签到信息后,应该具有其他的辅助功能.比~II1查询员工某天的签到情况”、”修改签到情况”、”员工的维护”、”公司上班时间的设置”等.下面就本系统完成的功能做一个简单的需求分析。2.1系统功能要求2.1.1功能划分(1)记录每个员工每天所有进入公司的时刻和离开公司的时刻。(2)每天结束时自动统计当天的工作时间(3)每天结束时自动统计当天迟到或早退的次数。(4)对于弹性工作制,每天结束时自动统计当月的工时,并自动算出当月欠缺或富余的时间(5)每个月末统计该月的工作时间判断是否足够(6)每个月末统计该月的工作天数并判断是否足够(7)管理人员查询并修改工作时间(特殊情况下修改)(8)管理人员账户管理(如设置密码等)(9)管理人员设定早退及迟到的条件,每个月的工作时间(10)管理人员设定每个月的工作日期及放假日期1.1.2功能描述实际的管理和记录工作非常需要快速获知各个部门员工的每日出勤情况,以便于及时向高层管理者反映员工的出勤,缺勤情况。目前,由于负责考勤的员工,工作任务比较多,而且还都是重复数据,让工作者没有办法及时的向上报告。工作问题不能及时处理。针对以上的情况,我们提出企业考勤管理系统,实现网上考勤任务,以减轻考勤人员的工作量。我公司准备开发员工考勤管理系统,完成员工基本信息维护、企业的部门信息维护、企业基本考勤类型的维护、员工考勤的管理、员工考勤的查询与分析。实现人事考勤的需要,包括员工迟到、早退的情况的记录,在每个月底计算工资对员工和对员工进行绩效评估的时候,对员工整个月的考勤记录进行查询和统计。2.2性能需求此工资管理系统对工资数据精度的计算能在默认情况之下精确到小数点后3位小数,即是精确到分的计算。但在用户使用过程中,能自行根据实际情况进行小数计算精度的设定,最大能允许保留小数点后5位的精度。在时间特性上,当用户发出命令请求时的服务器的响应时间、对数据更新处理、工资数据的查询检索等上,同样要求系统响应时间不会超过0.5秒时间。系统支持多种操作系统的运行环境,多不同操作系统,不同文件格式的磁盘上的数据均能实现信息的互通,及共享。2.3系统层次划分2.4数据流图顶层数据流图数据库操作操作数据系统操作管理信息考勤信息进入基本界面职工信息配置管理考勤系统管理考勤系统管理系统整合系统记录时刻统计工作时间统计迟到早退次数统计工时判断工作时间足够判断工作天数足够设置密码设定迟到早退条件设定工作放假日期查询修改工作时间帐号和核对密码查询考勤统计考勤统计密码2.5数据字典(1),数据项描述数据项别名类型长度取值范围员工工号Snochar90000000至9999999员工姓名Snamechar10员工性别Ssexchar1“男”或“女”入职时间enter_timechar2000至2050员工年龄Sagesmallint20至70职位positionChar10录入进出情况录入迟到情况录入早退情况录入工作时间情况刷卡员工进出时间信息数据统计考勤管理分析数据进出记录迟到记录早退记录时间记录统计所有记录的信息月度考勤统计管理员工作日期及放假日期考勤管理系统员工登陆管理员数据项描述表(2)数据结构描述数据结构说明组成员工信息是考勤管理子系统的主体数据结构,定义了一个员工的有关信息员工编号,员工姓名,员工性别,出生日期,职位,密码部门信息是考勤管理子系统的主体数据结构,定义了一个部门的有关信息部门编号,部门名称数据结构描述(3)数据流描述数据流说明数据流来源数据流去向组成核对密码根据不同人员相应的权限登录时的信息考勤管理系统管理员的帐号密码与普通员工的帐号密码完整的考勤数据员工的考勤数据月度考勤统计工资评估月度考勤编号、员工编号、日期、累计正常工作时间迟到次数、早退次数、旷工次数数据流描述(4)数据存储数据存储说明流入数据流流出数据流组成存取方式月度考勤统计记录员工每月的考勤情况一个月的信息统计统计好的考勤数据月度考勤编号、员工编号、日期、正常工作时间、迟到次数、早退次数、旷工次数更新,顺序检索数据存储三、概念设计3.1概念模型员工属性图员工员工号员工姓名员工性别员工年龄职位密码入职时间管理员属性图mnn管理员性别年龄姓名管理员号员工管理员记录统计员工号员工姓名员工性别员工年龄职位密码性别姓名年龄管理员号上班的时间工作天数下班的时间每天工作时间剩余的时间早退的次数迟到的次数入职时间四、逻辑设计4.1关系模式员工信息(工号,姓名,性别,年龄,职位,密码,入职时间)记录数据(工号,上班的小时,下班的小时,上班的分钟,下班的分钟,每天工作时间)统计数据(工号,剩余的时间,迟到的次数,早退的次数,工作天数)管理员(管理员号,姓名,性别,年龄)每天统计信息表(工号,姓名,小时,分钟,动作,时间)其中动作指的时入或离开公司员工表(employee)列名别名类型长度备注工号Snochar9primarykey员工姓名Snamechar10员工性别Ssexchar1年龄Sageint3职位Positionchar10密码Passwordchar6入职时间Enter_timechar10员工表记录数据表(data_record):列名别名类型长度备注员工号Snochar9primarykey上班的小时arrive_hourchar2上班的分钟arrive_minutechar4上班的小时leave_hourchar4下班的分钟leave_minutechar4每天工作时间Everyday_timechar4记录数据表每天统计信息表everyday_statistics列名别名类型长度备注员工号SnoChar9primarykey员工姓名SnameChar10时间HourChar2分钟MinuteChar2动作Actionchar8时间Timechar4统计信息表月统计数据表(everymonth_statistics):列名别名类型长度备注员工号Snochar9primarykey员工姓名SnameChar10剩余的时间remain_timechar4迟到的次数Late_timessmallint2早退的次数Early_timessmallint2工作天数Work_daysmallint2统计数据表管理员表(Administrator)列名别名类型长度备注管理员号anobigint6primarykey姓名anamechar20性别asexchar2年龄aageint3管理员表五、系统实现一、登陆界面packagekaoqin;importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;importjava.io.*;importjava.sql.*;publicclassMain_loginextendsJFrameimplementsActionListener{publicMain_login(){super(选择用户类型);this.setSize(300,300);this.setContentPane(newJPanel());create();}privatevoidcreate(){JButtonb1,b2,b3;Boxbox1,box2,box3,box;b1=newJButton(系统管理员);b2=newJButton(普通用户);b3=newJButton(退出登陆);b1.addActionListener(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.createVerticalStrut(40));box.add(box3);this.add(box);}publicvoidactionPerformed(ActionEvente){if(e.getActionCommand()==系统管理员){loginframe=newlogin();dispose();}elseif(e.getActionCommand()==普通用户){login1frame=newlogin1();dispose();}elseif(e.getActionCommand()==退出登陆){System.exit(0);}}publicstaticvoidmain(Stringargs[]){//ConnectionDBmyDB=newConnectionDB();intflag=0;//判断是否创建过数据库的标志Filefile=newFile(SQL.txt);try{//读入标志FileReaderin=newFileReader(file);intlen;if((len=in.read())!=-1)flag=1;//已创建了数据库,置1in.close();}catch(FileNotFoundExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}//没有创建过数据库if(flag==0){ConnectionDBmyDB=newConnectionDB();myDB.createTable();myDB.breakDB();try{//写入标志FileWriterout=newFileWriter(file);out.write(1);out.close();}catch(IOExceptione){e.printStackTrace();}}Main_loginframe1=newMain_login();frame1.setVisible(true);}}}}二、管理员登陆界面classloginextendsJFrame//管理员登陆界面{publiclogin(){