1、 课程设计任务书及成绩评定一、 课程设计的目的和任务本课题将设计一个应用与单位的工资管理系统。随着国民经济的急速发展,单位的工资应用体系也变的越来越复杂,单位中,部门、职务、工作效益等与工资管理有关的信息随之急剧增加。在这种情况下单靠人工来处理员工的工资不但要消耗大量的人力和物力,而且极容易出错。该系统的具体任务就是设计一个单位工资的数据库管理系统,由计算机来代替人工执行一系列工作,诸如增加员工添加删除、工资设置、修改、查询、统计等操作。这样就使财务人员可以快捷高效地完成工资管理任务。该系统的具体任务就是设计一个工资的数据库管理系统,由计算机来代替人工执行一系列工作,诸如增加员工添加删除、工资
2、设置、统计、发放、修改、查询等操作。这样就使财务人员可以快捷高效地完成工资管理任务。设计的指导思想是一切为用户着想,界面简洁,操作尽量简单明了。计算机的资源是受到限制的,在尽可能地减少对系统资源的占用的前提下,设计出功能丰富的软件。指导教师签字: 日期: 指导教师评语成绩: 指导教师签字: 日期: 课程设计所需软件、硬件等一硬件:1.PC机二软件:1.Windows xp 操作系统2. Java,myeclipse ,Tomcat3. access数据库课程设计进度计划起至日期工作内容备注2011.5.1-2011.5.152011.5.16-2011.6.12011.6.2-2011.6.3
3、0 nm收集资料编写代码运行、调试,完成设计参考文献、资料索引序号文献、资料名称编著者出版单位1 管理信息系统 黄梯云 高等教育出版社2 软件工程 杨文龙,姚淑珍,吴芸. 电子工业出版社。3 java程序设计教程 刘瑞新 电子工业出版社。4 java2程序设计基础第2版 陈国君 清华大学出版社。5 java程序设计基础 邹林达,陈国君 清华大学出版社。一需求分析报告1.组织机构操作方式上的可行性本系统运行在通用的Windows操作系统上,具有Windows相似的操作界面。具有简单易学,使用方便等特点,只需在计算机上进行相关的简单的设置即可,懂得计算机基本操作的人员经过短期培训培训即可熟练操作,
4、熟悉计算机操作的人员不需要再经过专门的培训即可熟练操作。所以,从组织机构操作方式上的可行性分析,该系统是可行的。2.基础数据的可用性企业工资管理系统的基础数据都是一些比较常见的基础数据,比如职工编号,姓名,部门编号等等,在系统的设计过程中都是很好使用和编排的,所以,从系统基础数据可用性的角度看,该系统是可行的。3.经济上的可行性a.采用新的工资管理系统可取代原系统的单据手工传递工作,减少人工开支,节省资金,并且可大大提高信息量的取得,缩短信息处理周期,提高工资汇总的效率,使公司变的资金运转更加便捷。b.开发经费、投资方面的来源和限制:各种硬件及人员花费至少需8000元.所以,从经济上的可行性分
5、析,该系统是可行的。4.技术上的可行性本系统是一个数据库管理和查询的系统,现有的技术以较为成熟,硬件、软件的性能要求、环境条件等各项条件良好,估计利用现有技术条件应完全可以达到该系统的功能目标。职工工资管理系统开发与运行环境选择如下: 开发环境:Windows XP 开发工具:Java,myeclipse数据库管理系统:access数据库5.目标分析 做出一个简单实用工资管理系统,不需要功能复杂,只需要实用性强。功能要在很多小型企业都能够使用。操作性简单,要最大限度的减少使用用户的工作量。二项目开发计划1.项目开发的进度本小组决定在两周之内完成该项目的开发,即完成对该工资管理系统的开发,本系统
6、计划分为四个模块,分别为工资管理,工资管理,考勤管理,前后台设置。第一周将系统设计报告撰写好,第三周时间进行系统设计和java代码设计,最后测试系统并加以完善。2.项目所需的硬件和软件资源等硬件、软件、运行环境和开发环境方面的条件和限制:软件需求:操作系统WINDOWS 2000 Advance Server以上;数据库服务器端软件access,java编程软件,jdk1.6版本。硬件需求:10M以上的LAN接入网络带宽,P4 3.0G Xeon CPU /1G内存/360G(10K) SCSI硬盘的服务器,P3以上微机(带网卡)的客户机,P4 3.0G Xeon CPU /1G内存/36G(
7、10K) RAID硬盘的数据库服务器。本系统采用java实现,依靠其强大的控件系统以及access数据库管理系统。三系统分析报告1.业务流程图图例说明: 表示外部实体 表示处理过程的说明表示系统 表示生成文档 表示表 表示信息的传输过程,线段上的文字是对传递信息的说明根据需求分析,我们分析出一个工资管理系统中工资管理子系统业务的一般流程:首先,用户必须进行注册以及登陆,才能进入工资管理系统。注册及登陆的流程如下:图3-1员工注册及登陆业务流程图其次,员工登陆进入工资管理子系统之后就要进行工资查询。 图3-2 企业工资管理工资管理子系统业务流程图2.数据流程图图例说明: 表示外部实体 表示处理过
8、程表示存储信息或文件 带有名称的有向线段表示数据流图3-3 工资管理系统顶层DFD图3-4 工资管理系统的第一层DFD 图3-5 企业工资管理工资管理子系统的数据流程图3.功能分析图该工资管理工资管理子系统的总体功能可以从两个方面来分析,一是查找功能,二是编辑功能-包括修改,删除,和添加,总体功能设计如图3-4所示。功能名称查询功能编辑功能员工员工和管理员都可以通过在进入工资管理子系统后,对员工的基本,和基本工资信息进行查询无管理员管理员通过管理权限登录后,可根据改变员工信息,对基本工资表,工资表进行修改,添加和删除操作。图3-6 工资管理子系统功能分析图4.数据字典数据字典中有六类条目:数据
9、元素、数据结构、数据流、数据存储、处理过程和外部实体。不同类型的条目有不同的属性。根据“数据流程图”,编写相应的“数据字典”,如下所示。(1)数据元素条目 数据元素条目总编码:3-1 编号:01数据项名称:员工编号 有关编码说明:数值类型:离散 XX XX类型:数字 序号长度:8 职务编号说明: 员工的具体编号 有关数据结构:基本工资表,工资表,可变工资表,最终工资表考勤表 数据元素条目总编码:3-2 编号:02数据项名称:姓名 类型:字符 长度:8 说明: 员工的姓名 有关数据结构:基本工资表,工资表,可变工资表,最终工资表考勤表 数据元素条目总编码:3-3 编号:03数据项名称:性别 类型
10、:字符 长度:2 说明: 员工的所拥有的性别 有关数据结构:工资表,最终工资表,考勤表 数据元素条目总编码:3-4 编号:04数据项名称:部门编号 有关编码说明:数值类型:离散 XX 类型:数字 部门编号长度:2 说明: 员工的所在部门的编号 有关数据结构:工资表,可变工资表,最终工资表考勤表 数据元素条目总编码:3-5 编号:05数据项名称:职务编号 有关编码说明:数值类型:离散 XX 类型:数字 职务编号长度:2 说明: 员工的拥有的职务的编号 有关数据结构:工资表,最终工资表 数据元素条目总编码:3-8 编号:08数据项名称:底薪 类型:数字 长度:8 说明: 员工的得到的工资 有关数据
11、结构:工资表,最终工资表 数据元素条目总编码:3-9 编号:09数据项名称:津贴 数值类型:离散 类型:数字 长度:8 说明: 员工得到的津贴 有关数据结构:工资表,最终工资表 (2)数据流条目名称:基本工资表简要说明:每月结束时,有工资管理员填写的表 总编号:3-10数据来源:管理员 编号:10数据流向: P1.1,P1.3 包含的数据结构: 流通量:1份/ 月员工编号性别姓名部门编号职务编号底薪津贴(3)处理过程定义名称:查询最终工资说明:月末员工查询最终工资 总编号:3-12输入: P3.2 编号:12输出: D6 处理:员工通过正确的权限,进入到最终工资表界面,查询其本月所得到的最终工
12、资.名称:修改基本工资表说明:月末管理员修改或查询基本工资 总编号:3-14输入:P1.1,P1.3 编号:14输出: D2 处理:管理员通过工资表和基本工资表的变动,对基本工资表进行查询或修改.(4)数据存储数据存储名称:基本工资表说明:月末按员工编号给员工发的最基本工资 总编号:3-16包含的数据结构: 编号:16员工编号性别 有关的数据流:姓名部门编号职务编号 信息量:1份/月底薪 有无立即查询:有津贴5.数据加工处理的描述数据加工处理的工具主要包括:结构化语言,判断树,决策表。下面用结构化语言描述。如果 职务是经理则 基本工资为2500 如果职务是部长 则基本工资为2000如果职务是工
13、人 则基本工资为12006.管理信息系统流程设计图(新系统模型) 图3-7 企业工资管理工资管理子系统设计报告四 .系统设计报告1. 功能结构设计本学工资管理子系统主要分为三个模块,包括查询,添加,修改和删除。本系统首先将员工的基本和基本工资信息输入,然后可以进行以下三种功能操作。图4-1 企业工资管理工资管理子系统功能模块设计2. 新系统信息处理流程设计 图4-2 3.代码设计(如:职工证号和部门代号等)每一个代码都只代表唯一的实体或属性,代码必须简单明了,但必须有利于对数据进行统计、汇总、分析等操作。同时必须满足系统要求,便于记忆和使用。该工资管理子系统是针对员工信息进行管理的,主要涉及到
14、的人员是员工,下面对员工的相关代码结构及编码规则进行说明,如下所示:员工编号 10 00 编号部门编号5.程序设计说明书五.系统实现部分1.程序框图(程序流程图)2.源程序下面是程序的各部分关系图:普通员工进入后的界面,只有查询功能,其余有添加修改删除操作的菜单为灰色,不能操作。这是管理员进入后的界面,全部可以操作,菜单显示可以全部操作。登陆界面的代码:import java.awt.*;class denglu extends Frame public Label name=new Label(用户名); public Label pass=new Label(密码); public Tex
15、tField txtname=new TextField(); public TextField txtpass=new TextField(); public Button btok=new Button(登陆); public Button btexit=new Button(取消); public condb conu=new condb(); private String sql=null; private ResultSet rs=null; private Image img; public denglu() img=getToolkit().getImage(getClass()
16、.getResource(/ww.png); setTitle(欢迎使用工资管理系统); setLayout(null); setResizable(false); setSize(500,350); Dimension scr=Toolkit.getDefaultToolkit().getScreenSize(); Dimension frm=this.getSize(); setLocation(scr.width-frm.width)/2,(scr.height-frm.height)/2-18); txtpass.setEchoChar(*); txtname.setBounds(12
17、0,260,120,27); txtpass.setBounds(120,300,120,27); btok.setBounds(340,260,100,28); btexit.setBounds(340,300,100,28); add(name); add(txtname); add(pass); add(txtpass); add(btok); add(btexit); setVisible(true); btexit.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) dis
18、pose(); System.exit(0); ); btok.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) sql=select * from 数据库用户 where 用户名=+txtname.getText()+ and 密码=+txtpass.getText()+; try rs=conu.getrs(conu.con,sql); if(rs.next() ) mainff mf=new mainff(); if(rs.getInt(4)!=0) mf.getInitsy
19、s().setEnabled(false); mf.getUser().setEnabled(false); mf.getGong2().setEnabled(false); dispose(); mf.show(); else JOptionPane jop=new JOptionPane(); jop.showMessageDialog(null,用户名或密码错误,信息提示!,-1); catch(Exception ee) ); addWindowListener( new WindowAdapter() public void windowClosing(WindowEvent e)
20、dispose(); System.exit(0); ); public void paint(Graphics g) g.setClip(new Rectangle2D.Float(0,0,500,350); g.drawImage(img,0,0,this); public class dl public static void main(String args) denglu deng=new denglu(); 工资查询的功能截图查询代码:import java.awt.*;import java.awt.event.*;import javax.swing.*;import java
21、.sql.*;class whole extends JDialog implements ActionListener private condb con = null;private ResultSet rs = null;private String sql = null;private JLabel bmhao = new JLabel(员工编号:);private JLabel bmname = new JLabel(姓名:);private JTextField wholetx1 = new JTextField();private JTextField wholetx2 = ne
22、w JTextField();private JButton ok = new JButton(查询);private JOptionPane jop = new JOptionPane();private JTable ta = null;private JScrollPane taooo = new JScrollPane();private String col = 员工编号, 姓名, 旷工, 迟到, 底薪, 加班, 绩效奖励,出勤金额, 实发工资 ;private Object rowline = new String4510;private boolean tf = false;pu
23、blic whole() con=new condb();setTitle(全部信息);setSize(600, 300);getContentPane().setBackground(Color.LIGHT_GRAY);getContentPane().setLayout(null);Dimension scr = Toolkit.getDefaultToolkit().getScreenSize();Dimension frm = getSize();setLocation(int) (scr.getWidth() - frm.getWidth() / 2, 150);bmhao.setB
24、ounds(50, 20, 80, 30);wholetx1.setBounds(140, 20, 50, 20);bmname.setBounds(210, 20, 80, 30);wholetx2.setBounds(300, 20, 50, 20);ok.setBounds(400, 20, 100, 30);getContentPane().add(bmhao);getContentPane().add(wholetx1);getContentPane().add(bmname);getContentPane().add(wholetx2);getContentPane().add(o
25、k);ok.addActionListener(this);setVisible(true);public void initTable(Object row, String col) if(wholetx1.getText().equals()& wholetx2.getText().equals() sql = select * from 员工数据表,出勤表,员工绩效,最终工资 where + 员工数据表.员工编号=最终工资.员工编号 and 最终工资.员工编号=出勤表.员工编号 and 出勤表.员工编号=员工绩效.员工编号; else if (wholetx1.getText().equ
26、als() = false) sql = select * from 员工数据表,出勤表,员工绩效,最终工资 where + 员工数据表.员工编号=最终工资.员工编号 and 最终工资.员工编号=出勤表.员工编号 and 出勤表.员工编号=员工绩效.员工编号 and 员工数据表.员工编号= +wholetx1.getText() + ;System.out.println(sql);else if (wholetx2.getText().equals() = false) sql = select * from 员工数据表,出勤表,员工绩效,最终工资 where + 员工数据表.员工编号=最终
27、工资.员工编号 and 最终工资.员工编号=出勤表.员工编号 and 出勤表.员工编号=员工绩效.员工编号 and 员工数据表.员工姓名=+wholetx2.getText() + ;System.out.println(sql);Connection conn=con.getConn();Statement sta=null;try sta = conn.createStatement();ResultSet rs=sta.executeQuery(sql);int cnt = 0;while (rs.next()rowlinecnt0 = rs.getString(员工编号);rowlin
28、ecnt1 = rs.getString(员工姓名);rowlinecnt2 = rs.getString(矿工次数);rowlinecnt3 = rs.getString(迟到次数);rowlinecnt4 = rs.getString(底薪);rowlinecnt5 = rs.getString(加班次数);rowlinecnt6 = rs.getString(绩效奖励);rowlinecnt7 = rs.getString(出勤金额);rowlinecnt8 = rs.getString(实发工资);cnt+;ta = new JTable(rowline, col);ta.setSiz
29、e(580, 190);taooo = new JScrollPane(ta);taooo.setLocation(20, 50);taooo.setSize(560, 190);getContentPane().add(taooo);this.repaint(0, 0, 500, 300);tf = false; catch (SQLException e) / TODO 自动生成 catch 块e.printStackTrace();public void actionPerformed(ActionEvent ae) /* int cnt=1; while(cnt11) rowlinec
30、nt0=1; rowlinecnt1=2; rowlinecnt2=3; rowlinecnt3=4; rowlinecnt4=5; rowlinecnt5=6; rowlinecnt6=7; rowlinecnt7=8; rowlinecnt8=9; rowlinecnt9=10; cnt+; ta=new JTable(rowline,col); ta.setSize(580,190); taooo=new JScrollPane(ta); taooo.setLocation(20,50); taooo.setSize(560,190); getContentPane().add(taoo
31、o); this.repaint(0,0,500,300); con.dbclose(con.con,rs); con=null; tf=false;/删除*/if (tf = false) for (int i = 0; i rowline.length; i+)for (int j = 0; j 10; j+)rowlineij = null;initTable(rowline, col);wholetx1.setText();wholetx2.setText();这是工资设置的功能截图:工资设置的代码:import java.awt.*;import java.awt.event.*;import java.sql.*;import javax.swing.*;class bm extends Frame implements ActionListener,ItemListener private condb conx=null; private ResultSet rs=null; private String sql=null; long id;