中北大学课程设计说明书学生姓名:陈松学号:0606054112学院:电子与计算机科学技术学院专业:软件工程题目:工资管理系统----职工考勤管理系统指导教师:韩燮职称:教授2008年6月27日-1-1系统设计1.1目标设计在工资管理中,需要从公司管理方式以及实际情况中提取相关信息,以反映工资管理情况。传统的手工操作方式,易发生数据丢失,统计错误,劳动强度高,且速度慢。使用计算机可以高速,快捷地完成以上工作。避免重复劳动,规范工资管理行为,从而提高了管理效率和水平。让人们的效率大大提高.不难想象,正是资讯的迅速发展使得人们从过去繁复的手工劳作中得以解脱,从而使这种服务在现在才可能迅速普及。同时,编写一套完整的工资管理系统的任务就显得尤为重要。开发设计思想本系统开发设计思想:对公司软硬件调查,从实际环境出发,以便充分利用公司现在资源,提高系统开发水平和应用效果。了解公司的需要及相关方面的规定,根据需要做出符合要求的软件,并达到操作过程中的直观、方便、实用、安全等要求。将系统按模块分工到人,提高效率,且模块化设计便于系统功能的各种组合和修改及日后的维护系统应具备数据库维护功能,及时根据用户需求进行数据的添加、删除、修改、等操作。1.3开发和运行环境选择开发工具:SQL2000,java语言。运行环境:WindowsXP,Windows2000或VISTA操作系统。1.4系统功能分析本系统主要用于员工基本信息的管理,对员工以及其他信息的添加、修改、删除、查询等基本操作。对于数据库的保护有数据备份和数据恢复的功能。针对这些要求,设计本月工资信息管理系统。该系统主要包括职工信息、职工考勤信息、职工津贴信息。1)职工信息管理系统功能为:财务部门相关人员录入、修改、删除、查询员工个人信息;员工本人能通过用户名和密码查询自己的信息以及修改自己的密码;2)职工工资管理系统功能为:根据工资生成公式,按照员工的考勤情况及各种表现按月生成相应的工资;财务部门相关人员能录入、修改、删除、查询每个月每个员工的工资信息以及工资汇总;员工-2-本人能查询自己的工资信息以及工资汇总;3)职工津贴管理系统功能为:财务部门相关人员录入、修改、删除、查询职工津贴信息;职工本人能查询自己的津贴;4)职工考勤管理系统功能为:后勤管理人员录入、修改、删除、查询职工考勤信息;职工本人能查询自己的考勤情况。采用模块化设计思想,可以大大提高设计的效率,并且可以最大限度地减少不必要的错误。其系统结构框图如图所示:图1.1系统功能模块图2.数据库设计2.1数据库需求分析根据工资管理要求及用户需求调查分析,得到以下数据流图工资管理系统系统模块工资生成模块津贴管理模块考勤管理模块员工管理模块-3-图2.1第一层数据流图图2.2职工信息的载入修改职工信息删除职工记录输入职工基本信息职工表添加操作修改操作删除操作用户查询操作职工号数据库操作操作数据系统操作工资信息考勤信息进入基本界面职工信息津贴管理-4-图2.3工资的信息载入图2.4考勤的信息载入修改考勤信息删除考勤信息输入考勤基本信息考勤表添加操作修改操作删除操作查询操作用户修改工资信息删除工资信息输入工资基本信息工资表添加操作修改操作删除操作查询操作用户-5-图2.5津贴的信息载入图2.6信息查询及管理的流程图修改津贴信息删除津贴信息输入津贴基本信息津贴表添加操作修改操作删除操作查询操作用户职工管理员进入系统进入员工(工资,考勤,津贴)表职工表工资表考勤表津贴表进行录入,修改,删除,查询操作-6-2.2数据库概念设计有了数据流图,用E-R图来说明工资信息管理系统的数据库概念模式,如图2-2所示1nmn1nmn1n图2.7实体之间关系E-R图员工领取工资领取津贴考勤影响影响职工号姓名工龄部门岗位职工号基本工资个人所得税医疗保险职工号缺勤天数缺勤类别时间职工号年终奖金加班奖金其他奖金电话号码密码缺勤扣除-7-2.3数据库逻辑设计将以上E-R转换成如下关系模式员工(职工号,姓名,工龄,部门岗位,电话号码,密码)工资(职工号,个人所得税,基本工资,医疗保险,缺勤扣除)考勤(职工号,缺勤天数,缺勤类别,时间)津贴(职工号,年终奖金,加班奖金,其他奖金)其中,标有下划线的字段表示为该数据表的主码,即主关键字。在上面的实体以及实体之间关系的基础上,形成数据库中的表格以及各个表格之间的关系。工资信息管理系统数据库中各个表格的设计结果如下面的几个表格所示。每个表格表示在数据库中的一个表。表一:员工信息表:列名数据类型可否取空备注说明noChar(8)NOTNULL职工号(主键)nameChar(10)NOTNULL职工姓名gwChar(20)NOTNULL部门岗位glSmallintNOTNULL工龄hmChar(11)NULL电话号码miSmallintNOTNULL登录密码表二:工资表:列名数据类型可否取空备注说明noChar(8)NOTNULL职工号(主键)JbmoneyNOTNULL基本工资ylmoneyNULL医疗保险SwmoneyNULL个人所得税kcmoneyNULL缺勤扣除JtmoneyNULL津贴yzmoneyNOTNULL月总工资表三:员工考勤信息表列名数据类型可否取空备注说明noChar(8)NOTNULL职工号(主键)tsInt(4)NULL缺勤天数lbChar(30)NULL缺勤类别SjChar(10)NULL缺勤时间-8-表四:津贴信息表列名数据类型可否为空备注说明noChar(8)NOTNULL职工号(主键)JiabanmoneyNULL月加班奖金nzmoneyNULL年终奖金qtmoneyNULL其他奖金3.功能模块详细设计3.1主界面及工资基本信息界面的设计图2.8欢迎画面-9-图2.9登录界面图3.0系统主界面-10-图3.1考勤信息录入,修改,删除,查询界面3.2功能描述1主界面通过菜单将各个模块连接起来2.工资基本信息模块工资基本信息的添加、修改和删除等基本操作3.3主要源代码importjava.awt.*;importjava.awt.event.*;-11-importjavax.swing.*;importjava.awt.*;importjava.sql.*;importjava.lang.*;importjava.util.*;importjavax.swing.table.*;importjava.math.*;classzzlcimplementsActionListener{JFrameframe=newJFrame(欢迎进入ZZLC工资管理系统);JLabellabel=newJLabel(制作人:陈松张淑静张虎黎成,JLabel.CENTER);JButtonbutton1=newJButton(进入系统);JButtonbutton2=newJButton(退出系统);ImageIconim=newImageIcon(1.jpg);JLabela1=newJLabel(im);voidCreate(){JPanelpcontentPane=(JPanel)frame.getContentPane();JPanelpcontentPane1=newJPanel();pcontentPane.add(label);pcontentPane.setLayout(newFlowLayout());pcontentPane.add(button1);pcontentPane.add(button2);pcontentPane.add(newLabel());pcontentPane.add(a1);pcontentPane.setBackground(Color.pink);pcontentPane.setVisible(true);button1.addActionListener(this);button2.addActionListener(this);-12-frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.pack();frame.setBounds(200,100,550,600);frame.setVisible(true);}publicstaticvoidmain(String[]args){zzlcdome=newzzlc();dome.Create();}publicvoidactionPerformed(ActionEvente){if(button1.equals(e.getSource())){DLdl=newDL();dl.create();}if(button2.equals(e.getSource())){//退出System.exit(0);}}}classDLimplementsActionListener{JFrameframe=newJFrame(职工/管理员登陆);JLabellabel1=newJLabel(用户名);JLabellabel2=newJLabel(密码);JButtonlogonButton1=newJButton(管理员登录);JButtonlogonButton2=newJButton(职工登录);JButtoncancelButton=newJButton(退出);-13-JTextFieldt1=newJTextField(0);JTextFieldt2=newJTextField(0);ImageIconim=newImageIcon(2.jpg);JLabela2=newJLabel(im);JTextFieldusername=newJTextField(9);JPasswordFieldpassword=newJPasswordField(9);voidcreate(){JPanelp=(JPanel)frame.getContentPane();JPanelp1=newJPanel();p.setLayout(newFlowLayout());p.add(label1);p.setSize(5,5);p.setLocation(4,8);p.add(username);p.setSize(100,200);p.setLocation(800,800);p.add(label2);p.setSize(50,20);p.setLocation(40,80);p.add(password);p.setSize(100,20);p.setLocation(80,120);p.add(logonButton1);p.add(newJLabel());p.add(logonButton2);p.add(newJLabel());p.add(cancelButton);p.add(newJLabel());p.add(a2);p.add(t1);-14-p.add(t2);p.setBackground(Color.red);p.setVisible(true);logonButton1.addActionListener(this);logonButton2.addActionListener(this);cancelButton.addActionListener(this);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.pack();frame.setBounds(200,100,750,550);frame.setVisible(true);}publicvoidactionPerformed(ActionEvente){if(logonButton1.equals(e.getSource())&&(username.getText().equals(123)==true)&&(password.getText().equals(123)==true)){GZGLZ