《Java课程设计报告.pdf》由会员分享,可在线阅读,更多相关《Java课程设计报告.pdf(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 JAVA 程序设计 课程设计报告 课 题:雇员信息管理系统 姓 名:柳豪 学 号:200717030216 同组姓名:曹彪、刘建 专业班级:网络 07102 班 指导教师:刘国清 设计时间:评阅意见:评定成绩:指导老师签名:年 月 日 2 目 录 一、系统描述.3 1.1 课程设计的目的.3 1.2 课程设计的意义.3 二、系统分析与设计.4 2.1 系统需求分析.4 2.2 数据模型设计.4 2.3 系统的功能框架分析.6 2.4 数据流程分析.6 三、系统实施 附源代码.9 四、测试结果.33 五、总结.39 参考文献.40 3 一、系统描述 1.1 课程设计的目的 随着现代经济的高速发
2、展,各种企业的不断崛起,企业员工的不断增加,企业在管理方面对需求越来越大。伴随着计算机的迅速发展和广泛使用,企业雇员信息管理转向电子化成为必然。传统的雇员信息管理存在很大的不足:利用人进行信息的增减,容易导致信息的错误,而且管理的效率低下,导致资源的可利用性低,劳动力大,安全性也不够,加上,随着时间的递增,信息量不断增大,对信息的增加、删除、检索、查找就会存在很大的问题。因此,随着企业的强大和发展,传统的管理方式不再适应企业的需要。因此,雇员信息管理系统也以方便、快捷、费用低、绿色环保的优点正慢慢地进入各个行业和领域,将传统的员工管理方式彻底的解脱出来,提高效率,减轻工人人员以往繁忙的工作,加
3、速信息的更新速度,使企业管理层第一时间了解到员工的信息,从而进一步的进行对员工的调配。本系统实现目标如下:界面设计简洁、友好、美观大方。操作简单、快捷方便 数据存储安全、可靠。信息分类清晰、准确。强大的查询功能,保证数据查询的灵活性。提供销售排行榜,为管理员提供真实的数据信息。提供灵活、方便的权限设置功能,使整个系统的管理分工明确。对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。1.2 课程设计的意义 雇员信息管理系统的开发需要就 Java 语言和数据库两方面的知识,因此设计一个实用性强的雇员信息管理系统,对于我们进行课程设计方面知识的提高有很大的推动作用。雇员信息管理系统的开
4、发需要用到多方面的知识,包括数据库的选用、数据库的建立和维护、信息的存储、管理界面的设计。这些对于设计者的知识水平有较高的要求。因此,如何规划、设计和开发好这个雇员信息管理系统,对于提高我们的 Java 开发水平有极大的帮助。同时,在设计开发过程中,我们可以选用适当的数据库和数据库连接驱动程序,建立合适的数据库表格和设计好美观大方的管理界面。4 二、系统分析与设计 2.1 系统需求分析 2.1.1 雇员信息管理系统的客户功能需求 该开发系统的设计主要用于实现以下几个功能:(1)雇员信息管理系统主界面 雇员信息系统主界面主要包括系统设计,系统管理、信息管理、信息查询、帮助等内容,可以进行各种信息
5、的添加、查询,删除等操作。(1)信息管理模块描述 信息管理子系统主要包括部门信息管理界面,员工信息管理界面,其中员工信息管理又包括培训信息管理界面,基本信息管理界面,奖罚信息管理界面和薪资信息管理界面。信息管理模块主要是对数据表中数据的添加、修改和删除。(2)信息查询模块描述 信息查询子系统主要包括部门信息查询界面,员工信息查询界面,其中员工信息查询又包括培训信息查询界面,基本信息查询界面,奖罚信息查询界面和薪资信息查询界面。信息查询模块主要输对数据表中数据的查询。(3)系统管理模块描述 系统管理子系统主要实现用户密码修改,用户的添加和删除以及重新登录系统。2.2 数据模型设计 本系统的数据库
6、名为 EmployeeInformationMS,整个数据库系统的数据结构如下所示:用户信息表(UserInformation)字段 类型 说明 大小 是否为空 User_ID Int 员工编号 NOT NULL User_Name varchar 员工姓名 20 NOT NULL Password varchar 密码 20 NOT NULL Popedom varchar 权限 20 NOT NULL 部门信息管理(DepartmentInformation)字段 类型 说明 大小 是否为空 D_Number int 部门编号 NOT NULL varchar 部门名称 20 NOT NU
7、LL D_Count varchar 部门人数 20 NOT NULL 5 员工基本信息表(EmployeeInformation)字段 类型 说明 大小 是否为空 E_Number int-员工编号 NOT NULL E_Name varchar-姓名 20 NOT NULL E_Sex varchar-性别 2 NOT NULL E_BornDate varchar-出生日期 30 NOT NULL E_Marriage varchar-婚姻状态 4 NOT NULL E_PoliticsVisage varchar 政治面貌 20 NOT NULL E_SchoolAge varchar
8、 学历 20 NOT NULL E_EnterDate varchar 进入公司时间 30 NOT NULL E_InDueFormDate varchar 转正时间 30 NOT NULL E_Department varchar 部门 20 NOT NULL E_Headship varchar 职务 20 NOT NULL E_Estate varchar 状态 20 NOT NULL E_Remark varchar 备注 500 NOT NULL 培训信息表(TrainInformation)字段 类型 说明 大小 是否为空 T_Number varchar 培训编号 20 NOT
9、NULL T_Content varchar 培训内容 100 NOT NULL T_Name varchar 培训员工姓名 20 NOT NULL T_Date int 培训天数 NOT NULL T_Money int 培训费用 NOT NULL 奖罚信息表(EncouragementPunishInformation)字段 类型 说明 大小 是否为空 EP_Number int 员工编号 NOT NULL EP_Name varchar 员工姓名 30 NOT NULL EP_Date varchar 奖罚时间 30 NOT NULL EP_Address varchar 奖罚地点 50
10、 NOT NULL EP_Causation varchar 奖罚原因 200 NOT NULL EP_Remark varchar 备注 500 NOT NULL 薪资信息表(WageInformation)字段 类型 说明 大小 是否为空 6 W_Number int 员工编号 NOT NULL W_Name varchar 员工姓名 30 NOT NULL W_BasicWage int 基本工资 NOT NULL W_Boon int 福利 NOT NULL W_Bonus int 奖金 NOT NULL W_CountMethod varchar 计算方法 50 NOT NULL W
11、_FactWage int 实发工资 NOT NULL 2.3 系统的功能框架分析 构建一个雇员信息管理系统,该系统主要由三个子系统组成,分别包括员工信息管理子系统,系统管理子系统、查询管理子系统,。同时,为了增强系统的安全性,首先需要通过用户权限认证,只有在登陆界面上输入正确的用户名和密码,才能的功能路本系统进行操作。通过了系统功能框架的分析,得到了如图 2-1 的系统功能模块。重新登录 雇员信息管理系统 信息管理 信息查询 系统管理 关于 员工信息管理 部门信息管理 员工信息查询 部门信息查询 添加删除用户 密码修改 重新登录 退出系统 系统关于 培训信息管理 基本信息管理 奖罚信息管理
12、薪资信息管理 培训信息管理 基本信息管理 奖罚信息管理 薪资信息管理 7 2.4 数据流程分析 总的系统流程图如图 2.4.1 所示:图 2.4.1 总的系统流程 业务流程图(Transaction Flow Diagram,TFD)是一种描述系统内各单位、人员之间业务关系、作业顺序和管理信息流向的图表,利用它可以帮助分析人员找出业务流程中的不合理的流向。通过前面对企业雇员管理情况进行的一系列调研与分析,得到如图 2.4.2 所示的业务流程图。图 2.4.2 业务流程图 雇员管理系统的业务处理过程如下:企业认识管理系统记录基本的信息并能对系统的的已有信息进行查询;信息添加记录中对基本信息添加;
13、信息输出记录对基本信息并能进行查询。根据业务流程图分析,对于其中的数据流向,处理及存储进行逐层分解,可以得到数据系统现有信息 汇总处理 各部门需求 新增信息 信息需求 信息添加 信息输出 用户登录 是否合法 系统主窗口 退出系统 Y N 8 流程图(Data Flow Diagram,DFD)。数据流程图是分层次的,绘制是采取自顶向下逐层分解的方法。顶层数据流程图只有一张,它说明了系统总的处理功能、输入和输出。下一步是对顶层数据流程图中的“处理”进行分解,也就是对第一层数据流程图的再分解。数据流程图如图 2.4.3 所示。图 2.4.3 数据流程图 信息添加 信息查找 管理员 定位编号 定位信
14、息 添加操作 信息修改 定位信息 修改操作 信息输出 9 三、系统实施 附源代码 在此雇员信息管理系统中,我主要负责的功能模块是信息管理子系统,以及数据库的创建和数据关系的处理。其中信息管理子系统的功能实现代码如下:(一)主界面的设计开发 虽说程序设计最核心的地方是程序的功能,但程序的界面设计是不可忽视的,它直接影响到程序的易用性。尤其在 Windows 时代,一个良好的应用界面会给你的程序锦上添花,甚至有画龙点睛之韵味。一般来说,在完成核心算法的编制后,就要开始精心设计应用界面了。1.修改密码类 package classsource;import java.awt.*;import jav
15、a.awt.event.*;import javax.swing.*;import java.sql.*;public class AmendPassword extends JInternalFrame JLabel lbe1=new JLabel(修改密码);JPanel p=new JPanel();public AmendPassword()setTitle(修改密码);p.add(lbe1);AmendPanel panel=new AmendPanel();Container contentPane=getContentPane();contentPane.add(p,North)
16、;contentPane.add(panel,Center);setBounds(100,100,280,260);this.setClosable(true);setVisible(true);class AmendPanel extends JPanel JButton b1,b2;JLabel lbe2,lbe3,lbe4,lbe5;JPasswordField pas1,pas2,pas3;JComboBox tf;public AmendPanel()10 lbe2=new JLabel(用户名:);lbe3=new JLabel(输入旧密码:);lbe4=new JLabel(输入
17、新密码:);lbe5=new JLabel(确定新密码:);tf=new JComboBox();pas1=new JPasswordField();pas2=new JPasswordField();pas3=new JPasswordField();b1=new JButton(确定);b2=new JButton(清空);/把组件加在内容窗格中 add(lbe2);lbe2.setBounds(16,10,90,25);this.add(tf);tf.setBounds(100,10,120,25);add(lbe3);lbe3.setBounds(16,45,90,25);add(pa
18、s1);pas1.setBounds(100,45,120,25);add(lbe4);lbe4.setBounds(16,80,80,25);add(pas2);pas2.setBounds(100,80,120,25);add(lbe5);lbe5.setBounds(16,115,80,25);add(pas3);pas3.setBounds(100,115,120,25);add(b1);b1.setBounds(100,160,60,30);add(b2);b2.setBounds(160,160,60,30);setLayout(null);/将所有用用户名读出来 Database
19、.joinDB();String sql=select*from UserInformation;try if(Database.query(sql)while(Database.rs.next()String name=Database.rs.getString(User_Name);tf.addItem(name);11 catch(Exception e)/为确定取消按钮加事件 b1.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)String name=+tf.getSele
20、ctedItem();System.out.println(name);String sql=select*from UserInformation where User_Name=+name+;System.out.println(sql);try if(Database.query(sql)Database.rs.next();String ps1=pas1.getText();String password=Database.rs.getString(Password);if(ps1.equals(password)if(pas2.getText().equals(pas3.getTex
21、t()String supdate=update UserInformation set Password=+pas3.getText()+where User_Name=+name+;Database.executeSQL(supdate);new JOptionPane().showMessageDialog(null,密码更改成功!);else new JOptionPane().showMessageDialog(null,两次密码不同!);else new JOptionPane().showMessageDialog(null,旧密码不正确!);catch(Exception el
22、)System.out.println(el););b2.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)pas1.setText();pas2.setText();12 pas3.setText(););(二)部门信息查询 package classsource;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.table.*;import java.util.*;im
23、port java.sql.*;public class DIQ extends JInternalFrame JLabel lb1=new JLabel(部 门 信 息 查 询);JLabel lb2=new JLabel(部门编号:);JLabel lb3=new JLabel(部门名称:);JTextField setxtid=new JTextField(10);JTextField setxtname=new JTextField(10);JButton btn1=new JButton(查询);JTable table;DefaultTableModel dtm;String co
24、lumns=部门编号,部门名称,部门人数;public DIQ()setTitle(部 门 信 息 查 询);dtm=new DefaultTableModel();table=new JTable(dtm);/table.set PreferredScrollableViewportSize(new Dimension(400,80);JScrollPane sl=new JScrollPane(table);dtm.setColumnCount(3);dtm.setColumnIdentifiers(columns);/dtm.insertRow(0,columns);getContent
25、Pane().setLayout(null);lb1.setBounds(200,10,300,30);lb1.setFont(new Font(宋体,Font.BOLD,24);getContentPane().add(lb1);Font f=new Font(宋体,Font.PLAIN,12);13 lb2.setBounds(10,60,80,25);lb2.setFont(f);getContentPane().add(lb2);setxtid.setBounds(80,60,80,23);setxtid.setFont(f);getContentPane().add(setxtid)
26、;lb3.setBounds(10,90,80,25);lb3.setFont(f);getContentPane().add(lb3);setxtname.setBounds(80,90,80,23);setxtname.setFont(f);getContentPane().add(setxtname);btn1.setBounds(90,130,60,25);btn1.setFont(f);getContentPane().add(btn1);sl.setBounds(180,60,425,290);/getContentPane().add(table);getContentPane(
27、).add(sl);/设置边框 setxtid.setBorder(BorderFactory.createLineBorder(Color.black);setxtname.setBorder(BorderFactory.createLineBorder(Color.black);btn1.setBorder(BorderFactory.createRaisedBevelBorder();sl.setBorder(BorderFactory.createLineBorder(Color.black);/连接数据库 Database.joinDB();/为表格初使化数据-String csf=
28、select*from DepartmentInformation;if(Database.query(csf)try while(Database.rs.next()String num=(+Database.rs.getInt(D_Number);System.out.println(num);String name=Database.rs.getString(D_Name);System.out.println(name);String count=Database.rs.getString(D_Count);System.out.println(count);/String resul
29、t=new String3;/result1=num;14 /result2=name;/result3=count;/1 用集合 Vector v=new Vector();v.add(num);v.add(name);v.add(count);dtm.addRow(v);catch(Exception ecsf)System.out.println(初使化表格数据出错!);/-/为查询按钮加事件-btn1.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)String sql;in
30、t rc=dtm.getRowCount();/System.out.println(dtm.getRowCount();for(int i=0;irc;i+)dtm.removeRow(0);if(setxtid.getText().equals()&setxtname.getText().equals()sql=select*from DepartmentInformation;else if(setxtname.getText().equals()sql=select*from DepartmentInformation where D_Number=+setxtid.getText()
31、+;else sql=select*from DepartmentInformation where D_Number=+setxtid.getText()+or D_Name like%+setxtname.getText()+%;System.out.println(sql);if(Database.query(sql)try while(Database.rs.next()String num=(+Database.rs.getInt(D_Number);System.out.println(num);String name=Database.rs.getString(D_Name);1
32、5 System.out.println(name);String count=Database.rs.getString(D_Count);System.out.println(count);/String result=new String3;/result1=num;/result2=name;/result3=count;/1 用集合 Vector v=new Vector();v.add(num);v.add(name);v.add(count);dtm.addRow(v);/2 用数组 /String result=num,name,count;/dtm.addRow(result
33、);catch(Exception ee);/-setSize(630,400);this.setClosable(true);setVisible(true);(三)员工信息查询 package classsource;import java.awt.*;import javax.swing.*;import javax.swing.table.*;import java.awt.event.*;import java.util.*;import javax.swing.JScrollPane.*;import java.sql.*;public class BIQ extends JInt
34、ernalFrame 16 JLabel lbl1=new JLabel(基 本 信 息 查 询);JLabel lbl2=new JLabel(员工编号:);JLabel lbl3=new JLabel(员工姓名:);JTextField btxtid=new JTextField(10);JTextField btxtname=new JTextField(10);JButton btn1=new JButton(查询);JTable table;DefaultTableModel dtm;String columns=员工编号,员工姓名,性别,出生日期,婚姻状况,政治面貌,学历,进入公司
35、时间,转正时间,部门,职务,员工状态,备注;public BIQ()setTitle(基 本 信 息 查 询);dtm=new DefaultTableModel();table=new JTable(dtm);JScrollPane sl=new JScrollPane();sl.getViewport().add(table);dtm.setColumnCount(5);dtm.setColumnIdentifiers(columns);/sl.getViewport().add(table,null);/sl.setVerticalScrollBarPolicy(JScrollPane.
36、HORIZONTAL_SCROLLBAR_ALWAYS);/sl.setver/sl.HORIZONTAL_SCROLLBAR_ALWAYS;/sl.VERTICAL_SCROLLBAR_ALWAYS;/new JScrollPane().add(table);/dtm.setColumnCount(columns.length);/dtm.insertRow(0,columns);/sl.setAutoscrolls(true);/设列头/*dtm.setColumnIdentifiers(columns);TableColumnModel tcm=table.getColumnModel(
37、);for(int i=0;icolumns.length;i+)tcm.getColumn(i).setWidth(180);-17-*/getContentPane().setLayout(null);lbl1.setBounds(240,10,300,30);lbl1.setFont(new Font(宋体,Font.BOLD,24);getContentPane().add(lbl1);Font f=new Font(宋体,Font.PLAIN,12);lbl2.setBounds(10,60,80,25);lbl2.setFont(f);getContentPane().add(lb
38、l2);btxtid.setBounds(80,60,80,23);btxtid.setFont(f);getContentPane().add(btxtid);lbl3.setBounds(10,90,80,25);lbl3.setFont(f);getContentPane().add(lbl3);btxtname.setBounds(80,90,80,23);btxtname.setFont(f);getContentPane().add(btxtname);btn1.setBounds(90,130,60,25);btn1.setFont(f);getContentPane().add
39、(btn1);sl.setBounds(180,60,500,370);getContentPane().add(sl);/设置边框 btxtid.setBorder(BorderFactory.createLineBorder(Color.black);btxtname.setBorder(BorderFactory.createLineBorder(Color.black);btn1.setBorder(BorderFactory.createRaisedBevelBorder();sl.setBorder(BorderFactory.createLineBorder(Color.blac
40、k);/-连接数据库-Database.joinDB();String sql=select*from EmployeeInformation;if(Database.query(sql)System.out.println(sql);try while(Database.rs.next()String eNumber=(+Database.rs.getInt(E_Number);System.out.println(eNumber);String eName=Database.rs.getString(E_Name);System.out.println(eName);18 String e
41、Sex=Database.rs.getString(E_Sex);System.out.println(eSex);String eBornDate=Database.rs.getString(E_BornDate);System.out.println(eBornDate);String eMarriage=Database.rs.getString(E_Marriage);System.out.println(eMarriage);String ePoliticsVisage=Database.rs.getString(E_PoliticsVisage);System.out.printl
42、n(ePoliticsVisage);String eSchoolAge=Database.rs.getString(E_SchoolAge);System.out.println(eSchoolAge);String eEnterDate=Database.rs.getString(E_EnterDate);System.out.println(eEnterDate);String eInDueFormDate=Database.rs.getString(E_InDueFormDate);System.out.println(eInDueFormDate);String eDepartmen
43、t=Database.rs.getString(E_Department);System.out.println(eDepartment);String eHeadship=Database.rs.getString(E_Headship);System.out.println(eHeadship);String eEstate=Database.rs.getString(E_Estate);System.out.println(eEstate);String eRemark=Database.rs.getString(E_Remark);System.out.println(eRemark)
44、;Vector v=new Vector();v.add(eNumber);v.add(eName);v.add(eSex);v.add(eBornDate);v.add(eMarriage);v.add(ePoliticsVisage);v.add(eSchoolAge);v.add(eEnterDate);v.add(eInDueFormDate);v.add(eDepartment);v.add(eHeadship);v.add(eEstate);v.add(eRemark);dtm.addRow(v);catch(Exception eBIQ)System.out.println(初始
45、化数据失败!);19 /为查询按钮加事件-btn1.addActionListener(new ActionListener()public void actionPerformed(ActionEvent eBIQ)System.out.println(按钮事件);String esql;int rc=dtm.getRowCount();for(int i=0;irc;i+)dtm.removeRow(0);if(btxtid.getText().equals()&btxtname.getText().equals()esql=select*from EmployeeInformation;
46、else if(btxtname.getText().equals()esql=select*from EmployeeInformation where E_Number=+btxtid.getText()+;else esql=select*from EmployeeInformation where E_Number=+btxtid.getText()+or E_Name like%+btxtname.getText()+%;System.out.println(esql);if(Database.query(esql)try while(Database.rs.next()String
47、 eNumber=(+Database.rs.getInt(E_Number);System.out.println(eNumber);String eName=Database.rs.getString(E_Name);System.out.println(eName);String eSex=Database.rs.getString(E_Sex);System.out.println(eSex);String eBornDate=Database.rs.getString(E_BornDate);System.out.println(eBornDate);String eMarriage
48、=Database.rs.getString(E_Marriage);System.out.println(eMarriage);String ePoliticsVisage=Database.rs.getString(E_PoliticsVisage);System.out.println(ePoliticsVisage);String eSchoolAge=Database.rs.getString(E_SchoolAge);System.out.println(eSchoolAge);String 20 eEnterDate=Database.rs.getString(E_EnterDa
49、te);System.out.println(eEnterDate);String eInDueFormDate=Database.rs.getString(E_InDueFormDate);System.out.println(eInDueFormDate);String eDepartment=Database.rs.getString(E_Department);System.out.println(eDepartment);String eHeadship=Database.rs.getString(E_Headship);System.out.println(eHeadship);S
50、tring eEstate=Database.rs.getString(E_Estate);System.out.println(eEstate);String eRemark=Database.rs.getString(E_Remark);System.out.println(eRemark);Vector v=new Vector();v.add(eNumber);v.add(eName);v.add(eSex);v.add(eBornDate);v.add(eMarriage);v.add(ePoliticsVisage);v.add(eSchoolAge);v.add(eEnterDa