123.企业员工信息管理系统的设计与实现毕业设计.doc

上传人:laozhun 文档编号:3466752 上传时间:2023-03-13 格式:DOC 页数:42 大小:659.50KB
返回 下载 相关 举报
123.企业员工信息管理系统的设计与实现毕业设计.doc_第1页
第1页 / 共42页
123.企业员工信息管理系统的设计与实现毕业设计.doc_第2页
第2页 / 共42页
123.企业员工信息管理系统的设计与实现毕业设计.doc_第3页
第3页 / 共42页
123.企业员工信息管理系统的设计与实现毕业设计.doc_第4页
第4页 / 共42页
123.企业员工信息管理系统的设计与实现毕业设计.doc_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《123.企业员工信息管理系统的设计与实现毕业设计.doc》由会员分享,可在线阅读,更多相关《123.企业员工信息管理系统的设计与实现毕业设计.doc(42页珍藏版)》请在三一办公上搜索。

1、毕业设计(论文)题 目: 企业员工信息管理系统的设计与实现 系 部: 计算机系 专 业: 计算机应用与维护 学 号: 学生姓名: 指导教师: 职 称: 二OO 年 月 日毕业论文(设计)任务书课题名称:_ 企业员工管理系统_系 部:_ 计算机系_专 业:_ 计算机应用与维护_姓 名:_ _学 号:_ _ _指导教师:_ _ 二OO六 年 六 月 一 日一、毕业论文(设计)的目的与要求:企业员工管理系统(PMS(Personnel-Manager-System),它是用来对企业工厂等员工进行管理的一个桌面应用程序,通过该系统使用者可以轻松对员工的资料进行输入、查询、修改,使得员工资料的管理更加方

2、便。本文旨在阐述如何用Java语言开发基于桌面操作系统以及微软数据库(Microsoft Office Access)平台的小型管理系统,其重点是如何连接数据库以及如何对数据库进行操作。二、毕业论文(设计)的内容:1.企业员工管理系统的源代码设计2.企业员工管理系统调试3.企业员工管理系统的实现4.课题实现环境Windows XP JDK 1.5.0_1Intellij IDEA 5.0三、毕业论文(设计)进程的安排序 号论文(设计)各阶段名称日 期备 注1课题讨论,需求分析(3.1-3.5)2课题的整体策划和构思(3.63.10)3课题所需资料的采集(3.113.15)4课题的实现与调试(3

3、.164.30)5撰写论文(5.1 6.1)6论文的答辩(6月初)四、任务执行日期:自_ _年_ _月_ 日起,至_ _年_ _月_ _日止。 学 生(签字)_ 指导教师(签字)_ 系 主 任(签字)_摘要企业员工管理系统(PMS(Personnel-Manager-System),它是用来对企业工厂等员工进行管理的一个桌面应用程序,通过该系统使用者可以轻松对员工的资料进行输入、查询、修改,使得员工资料的管理更加方便。本文旨在阐述如何用Java语言开发基于桌面操作系统以及微软数据库(Microsoft Office Access)平台的小型管理系统,其重点是如何连接数据库以及如何对数据库进行操

4、作。关键词: Java; 面向对象; Microsoft Office Access;JDBC;DBMS目 录1引言31.1JAVA开发前奏31.2JAVA虚拟机及JAVA跨平台原理42系统分析62.1可行性分析62.2需求分析73统设计83.1结构设计83.2详细设计124讨论294.1存在的问题及改进思想295结束语306致谢317参考文献318附录:程序API文档331 引言1.1 Java开发前奏SUN公司在20世纪90年代初开发电子消费产品时觉得C和C+有许多不足,因而着手这一新型的编程语言,并于1995年正式推出Java。Java用于WWW后,因其在WWW上支持各种动态和交互效果而

5、迅速闻名。此后,各种浏览器竞相支持Java,各种Java应用也逐渐热门。Java是一种简单易用、完全面向对象、有平台无关性、安全可靠的、主要面向Internet的开发工具。自从1995年正式问世以来,它的快速发展已经让整个Web世界发生翻天覆地的变化。随着Java Servlet的推出,Java在电子商务方面开始崭露头角,最新的Java Server Page(JSP)技术的推出,更让Java成为基于Web应用程序的首选开发工具。 Java是第一套允许使用者将应用程序通过Internet从远端服务器传输到本地计算机上并执行的一种语言,是一种应用程序提供者不需要知道使用者的计算机硬件与软件环境的

6、语言。比尔盖茨曾经说过:“Java是最卓越的程序设计语言”。 相比其他语言,Java 技术平台具有明显的优越性。从最初建造Java平台开始,就考虑了安全性的问题,即其安全性是建立在Java平台的内核中的。其他的语言只是在软件开发时才由用户自行处理其安全问题,难免会有安全漏洞。其次对于程序员来说,Java比其他人和一门语言都好用,原因在于:Java有自动回收垃圾的功能,Java增加了对象和变量的强制类型检查,Java还取消了指针。 目前,Java技术的架构包括以下三个方面: J2EE(Java 2 Platform Enterprise Edition) 企业版,是以企业为环境而开发应用程序的解

7、决方案。目前已经成为开发商创建电子商务的事实标准。 J2SE(Java 2 Platform Standard Edition) 标准版,是桌面开发和低端商务应用的解决方案。提供CORBA标准的ORB技术,结合Java的RMI支持分布式交互操作环境。 J2ME(Java 2 Platform Micro Edition) 小型版,是致力于消费产品和嵌入式设备的最佳解决方案。提供HTTP高级Internet协议,使移动电话能以Client/Server方式直接访问Internet全部信息,不同的Client访问不同的文件,此外还能访问本地存储区,提供高效率的无线交流。Java技术又有以下广泛的内

8、涵:u 首先,它是一门编程语言,Java能够创建所有其他传统语言能编写的应用程序,Java能够写独立的应用程序,运行在装有Java虚拟机的操作系统上。Java编写的程序经常用在WWW环境中(比如Applet、Servlet等),Applet在浏览器中执行不需要操作系统JVM的支持。u 其次,Java还是一个开发环境,Java技术包含一系列的工具:编译器,解释器、文档生成工具、打包工具等。另外由Java 2 SDK提供的JRE(Java Runtime Environment)还包括一个完整的Java类集合,比如基本语言类、GUI控件类等。u 最后,Java也是一个运行环境,我们可以从SUN公司

9、提供的Java 2 SDK中来搭建运行环境,而这一切都是免费的。1.2 Java虚拟机及Java跨平台原理Java虚拟机(JVM)是可运行Java字节码的假想计算机,Java的跨平台是相对于其他语言而言的,与其他程序相比,执行的中间过程只是多了一个Java虚拟机,如下图1-2所示:Windows下的C语言编译过程 Java语言编译过程C原程序(扩展名为.c)Windows可执行文件(扩展名为.exe)C编译程序Windows操作系统执行Java原程序(扩展名为.java)Java编译程序Java字节码文件(扩展名为.class)执行Java虚拟机Windows下的Java字节码解释程序Linu

10、x下的Java字节码解释程序能解释Java字节码的CPU执行Linux系统执行其他系统执行Windows系统图1-2 C与Java的编译过程 由图1.2可见,只要实现了特种平台下的解释程序,Java字节码就能通过解释程序在该平台下运行,这是Java跨平台的根本。当前并不是在所有的平台下都有相应的Java解释器程序,这也是Java并不是在所有的平台下都能运行的原因,它只能在已实现了Java解释器程序的平台下运行。 Java兼顾解释性与编译性语言的特点,Java源文件转换成class字节码文件的过程是编译型的, class在 操作系统上运行的过程是解释型的,Java虚拟机充当了解释器的作用。2 系

11、统分析2.1 可行性分析2.1.1 技术可行性从目前市场上的操作系统和管理类的软件来看,对于比较简单的小型管理系统,一般使用Microsoft Access数据库就已经足够了,它需要一个良好的操作界面,方便、简单的操作过程是很有必要的。Java无疑是开发图形界面的最佳选择,丰富的类库提供了足够的控件供开发人员使用,使得界面设计更是灵活多变,能够设计出更多、更好的用户界面。在Java与数据库连接方面,使用JDBC可以很容易的将SQL语句传到任何关系型数据库中,Java与JDBC的结合,使得程序员可以只写一次数据库应用软件后就可以在任何一种数据库系统上运行。由于Java语言具有健壮性、安全、易使用

12、、易理解和自动下载到网络等优点,因此它是数据库应用的一个极好的基础语言。JDBC又实现Java应用程序与各种不同数据库的对话,扩充了Java应用程序的应用范围。Java访问数据库有两种情况,即Applet和Application,但是他们访问数据库的步骤大致相同,以下Java访问Access数据库的工作原理数据库Java应用程序JDBC应用编程接口JDBC驱动程序管理器JDBC-ODBC桥接驱动程序ODBC图2-1-1.1 Java访问数据库的工作原理图Java Application的最广泛的用途是应用于公司或企业内部网上,所以可以称为商业网的应用。这些Applications可以访问本地或

13、是任何网络上的共享数据库服务器,当然它也能通过Internet来访问数据库,图2-2表示了Java Application访问网络数据库的情况。Java应用程序JDBC驱动程序(可允许的下载)本地硬盘资源或其他资源客户端LAN或Internet数据库服务器图2-1-1.1 Application访问网络数据库2.1.2经济可行性该管理系统比较小,对机器的配置等要求比较低,界面友好,程序简单易用,容易上手,操作者不需要对计算机数据库等有很深的了解、认识。2.2需求分析2.2.1功能要求从一开始,我的目标就是建立一个企业人事管理系统,功能不是很齐全,主要实现以下几项功能:用户登录,添加、修改、删除

14、注册用户信息;添加新员工信息,员工人事调动信息的录入,查找、修改员工信息;重新初始化数据库等。2.2.2运行要求本程序的建议运行环境为:Windows 9x/2000/xp + JRE 5.0 update 63 系统设计3.1结构设计3.1.1主界面设计良好的用户界面对一个应用程序有着非常重要的作用,通过它,程序的用户可以知道该如何进行操作,它直接与用户打交道,要简单明了。 主程序界面设计: 应当有一个菜单栏,不同的功能在不同的菜单中,用户可以随时找到图 3-1-1.1 程序将所有的功能都集成到鼠标右键中,用户可以在不使用菜单的情况下快速在不同的窗口之间切换3.1.2 其它窗口设计3.1.2

15、.1 管理员登陆数据库的直接管理人员被称为管理员,能对学生的资料进行修改,只有管理员登陆正确登陆后用户才能对数据库进行修改。 输入用户账号、密码 选择用户的类型,这里的类型只有管理员和普通用户两种图 3-1-2-13.1.2.2 管理用户部分管理用户包括三两个方面: 添加新用户资料,包括用户的账号、密码以及注册的用户的类型。 删除用户,删除已经存在的用户,从账号栏选择要删除的账户。 修改用户,管理员可以修改登陆用户的密码,以及用户的权限等。图 3-1-2-2.13.1.2.3 新员工资料输入部分企业中有新员工加入的时候我们应当添加员工的资料,程序自动根据数据库中已有的员工的编号的自动为新员工编

16、号,员工的这个编号在数据库中是唯一的,自始至终都是不可以更改的。图 3-1-2-33.1.2.4 人事调动管理部分当员工因为升职、调动、退休等原因离开公司的时候,为了能掌握员职工所有动向以及在以后能及时查找到该员工,该部分用于记录员工的动向。图 3-1-2-43.1.2.5 员工信息查找修改部分员工加入公司后其个人资料难免会发生改变,面对这种情况我们需要及时地对员工的信息进行更改,这个更改工程我们应该能对员工的所有资料能一幕了然,然后再根据需求进行更改;要查找员工的调动信息,要直观的列出要查找的员工的每次调动的时间和最终去向,以方便能够及时找到该员工。图 3-1-2-53.1.3 数据库的组成

17、数据库是该系统的核心,它是存储企业员工信息资料以及企业部门资料的地方,本程序的数据库包括以下几个方面: 对登陆用户管理员信息存储的数据库,这里面应当包括登陆用户的账号、密码以及该用户对软件操作的权限等信息。 对员工信息存储的数据库,这里面应当包括员工基本资料、员工的调动情况等资料。 存放基本部门信息的数据库,这些基本的部门信息在程序启动或窗口被打开的时候可能会用到他们程序的数据库存放在该程序的当前目录下,该数据库一共包括有六两个程序要用到的表:System用于存放该程序登陆用户的详细资料Worker用于存放员工学生的基本资料Change用于存放员工人事调动信息Department用于存储各个部

18、门信息Duty用于存储所有员工职务信息Education用于存储学历信息当程序为执行的时候数据库中只有department、duty、education这三个表,其他三个表在程序第一次运行的时候会由程序自动创建。具体数据库图(如图 3-1-3所示) 图3-1-3 数据库表3.2 详细设计3.2.1 流程图与功能图3.2.1.1 系统流程图程序启动加载config.xml设置判断是否是第一次运行初始化数据库初始化管理员用户登陆否是账号是否正确是连接数据库登陆次数3否否程序退出是是否管理员开放部分功能否开放所有功能程序主界面,功能选择是用户管理员工管理用户退出添加删除修改用户资料是否继续是否添加新

19、员工员工人事变动资料查询修改是否继续是否是否退出否是修改config.xml设置关闭数据库初始化数据库初始化系统表设置默认管理员程序退出图3-2-1-2 企业人事管理系统系统流程图3.2.1.2 功能图系统功能管理用户部分用户登陆管理员工资料用户退出添加新用户修改用户资料输入新员工资料输入员工人事调动资料查找修改员工资料删除用户资料初始化数据库创建数据库表初始化数据库信息图3-2-1-2 企业人事管理系统功能图3.2.2 数据库的设计创建管理员工信息资料的应用程序,到底怎样才能有效地管理学生的数据毫无疑问,数据库在其中扮演着相当重要的作用。3.2.2.1 创建数据库在程序的当前目录下创建一个名

20、为Manager的Microsoft Access数据库,并将其的管理员密码设置为123。3.2.2.2 创建数据库表在Microsoft Access数据库中建立以下几个数据表:创建用于存储基本信息的表,表的结构均如下表3-2-2-2.1所示:数据元素标识类型id文本des文本表 3-2-2-2.1基本信息表一共有三个,表名分别为:department、duty、education。id指各个表中数据的编号,des分别指部门名称、职务名称、学历名称等,里面的内容是预先设置好的。 另外系统自动创建的三个表分别如下:1.员工信息表,表名为worker,其结构如表3-2-2-2.2所示。数据元素标

21、识数据元素名称字段大小类型idW员工学生编号50文本nameW员工姓名20文本sexW员工性别5文本birthW员工生日30文本deptW员工系部10文本dutyW员工职务10文本eduW员工教育水平10文本professW员工专业15文本addrW员工学生住址100文本teleW员工电话25文本emailW员工电子邮件60文本表 3-2-2-2.22.员工调动信息表,表名为change,其结构如表3-2-2-2.3所示。数据元素标识数据元素名称字段大小类型idW员工学生编号50文本nameW员工姓名20文本timeW员工调动时间50文本containW员工调动内容50文本demoW调动原因描

22、述100文本表 3-2-2-2.33.登陆用户员工调动信息表,表名为system,其结构如表3-2-2-2.432所示。数据元素标识数据元素名称字段大小类型userName员工学生编号30文本userPasswd员工姓名50文本userType员工调动时间1050文本表 3-2-2-2.43.2.3 使用JDBC-ODBC桥访问Access数据库使用JDBC-ODBC桥的方式访问数据库JDBC-ODBC将Java通过JDBC发出的数据库操作转化为ODBC操作。首先要创建于数据库的连接,然后再打开数据库,访问数据库的各个需要访问的表,从表中取出需要的资料或者更新数据库等,当对数据库的操作完成最后

23、再关闭与数据库的连接。使用JDBC访问数据库需要包括Connection、RecordSet、Statement、ResultSetMetaData七个类。Connection对象是连接数据库的基础,它管理程序与数据库建立连接;Statement对象管理对数据库操作,一切对数据库的查询、更改等操作都基于这个类;Recordset对象是管理数据库记录的对象,我们可以从这个对象中取出我们需要的查询后得数据。使用以下方法来连接数据库:*在连接数据库前我们首先要得到Access数据库文件的绝对路径,我们可以使用File类来实现:File mdb = new File(Students.mdb);mdb

24、Path = mdb.getAbsolutePath();/得到Students.mdb的绝对路径mdbPath=mdbPath.replace(,/);*将数据库的绝对路径加到数据源路径中: mdbURL=jdbc:odbc: driver=Microsoft Access Driver (*.mdb);DBQ=+mdbPath;*加载JDBC-ODBC桥连接驱动:Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);* 创建与数据库的连接:conn= DriverManager.getConnection(mdbURL,); 3.2.4 程序的编写过程及功

25、能实现工欲善其事,必先利其器。本次编写这个企业人事管理系统,主要是使用了JetBrains s.r.o公司开发的IntelliJ IDEA 5.0.0.3436这个工具。IntelliJ IDEA是一个智能化的开发工具,在网上被称为Java最好的开发工具,它在所有Java开发工具中对Java源代码进行语法检查的智能提示等方面都是最优秀的。其运行后的界面如下图3-2-4所示:图3-2-4 程序编写环境3.2.4.1 程序运行界面为了使用户界面更友好,所以整个程序使用了大量的Java Swing组件。如图图3-2-4-1 程序运行界面3.2.4.2 连接数据库类的编写数据库的连接方面使用的是Mai

26、n类中的connectDatabase()方法,这个类实现与数据库的连接。 构造方法,加载驱动并创建与数据库的连接public ConnectionDatabase() File mdb = new File(Students.mdb); mdbPath = mdb.getAbsolutePath(); mdbPath=mdbPath.replace(,/); mdbURL=jdbc:odbc:driver=Microsoft Access Driver (*.mdb);DBQ=+mdbPath; try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);

27、 catch (ClassNotFoundException e) e.printStackTrace(); try conn= DriverManager.getConnection(mdbURL,); catch (SQLException e) e.printStackTrace(); 调用initProperties()来加载系统属性配置文件config.xml,并根据里面的内容来确定该方法内调用的initDatabase()方法的任务。try prop.loadFromXML(new FileInputStream(config.xml); System.out.println(成功

28、加载系统属性文件config.xml !); catch (IOException e) e.printStackTrace();JOptionPane.showMessageDialog(mainFrame,找不到系统必须的config.xml文件!,找不到文件,JOptionPane.ERROR_MESSAGE); eturn false; 系统配置文件config.xml !DOCTYPE properties SYSTEM Programe Comment :00create table worker(idW varchar(50) not null,nameW varchar(20)

29、,sexW varchar(5),birthW varchar(30),deptW varchar(10),dutyW varchar(10),eduW varchar(10),professW varchar(15),addrW varchar(100),teleW varchar(25),emailW varchar(60)create table change(idW varchar(50) not null,nameW varchar(20),timeW varchar(50),containW varchar(50),demoW varchar(100)insert into sys

30、tem(userName,userPasswd,userType) values(admin,21232f297a57a5a743894a0e4a801fc3,管理员)create table system(userName varchar(30) not null,userPasswd varchar(50) not null,userType varchar(10) not null)该文件中存储了三个程序运行时初始化数据库的时候使用的SQL语句,程序需要初始化数据库的时候就将从该文件中取出需要语句。另外first_OR_not是指程序运行的次数,initDatabase指初始数据库的次数

31、,这两个变量的初始值都是0,程序运行时先判断这两个值,如果都是0说明程序是第一次运行,程序会自行初始化数据库,创建系统必须的表。 管理员登陆,检测用户账号密码是否正确while(rs.next() try name=rs.getString(userName); password=rs.getString(userPasswd); type=rs.getString(userType);if(userName.equals(name)&userPasswd.equals(password)&userType.equals(type) isManager=true; break; catch (

32、SQLException e) e.printStackTrace(); 添加系统管理员,使用Statement对象对数据库表进行操作,该对象实现对表记录的更新、插入、删除等操作。在添加用户前要检查用户名是否存在。源代码:try if(stateTemp!=null) int line = stateTemp.executeUpdate(insert into system (userName,userPasswd,userType) values ( + info0 +,+ EnCode.MD5(info2) +,+info4+); if(line=1) System.out.println

33、(成功添加账号为:+info0+ 新用户!);JOptionPane.showMessageDialog(managerJInternalFrame,成功添加账号为:+info0+ 新用户!,提示, JOptionPane.INFORMATION_MESSAGE); catch (SQLException e1) /例外处理 管理登陆用户的账号密码,包括更新用户密码和删除用户* 更新用户密码try if(stateTemp!=null) int line = stateTemp.executeUpdate(update system set userPasswd=+ EnCode.MD5(in

34、fo2) +,userType=+ info4 + + where userName=+ info0 +); if(line=1) System.out.println(成功更新名为:+info0+ 的信息 !);JOptionPane.showMessageDialog(managerJInternalFrame,成功更新名为:+info0+的信息!,提示,JOptionPane.INFORMATION_MESSAGE); catch (SQLException e1) /例外处理* 删除用户try if(stateTemp!=null) int line=stateTemp.execute

35、Update(delete from system where userName=+ info0 +); if(line=1) System.out.println(成功删除账号为:+info0+的用户!); JOptionPane.showMessageDialog(managerJInternalFrame,成功删除账号为:+info0+的用户!,提示,JOptionPane.INFORMATION_MESSAGE); catch (SQLException e1) /例外处理 员工信息管理包括三部分,分别是输入新员工的基本资料、输入员工的调动信息、员工信息的查询修改。这三个方面的信息都分

36、别放置在一个String类型的数组中,这个数组分别从员工信息管理三部分相应的类方法中取得。* 输入新员工的基本资料,并存储倒数据库中,数据库的更新语句如下:更新worker表:int line = stateTemp.executeUpdate(insert into worker(idW,nameW,sexW,birthW,deptW,dutyW,eduW,professW,addrW,teleW,emailW) values( + newWorker0 + , + + newWorker1 + , + + newWorker2 + , + + newWorker3 + , + + newW

37、orker4 + , + + newWorker5 + , + + newWorker6 + , + + newWorker7 + , + + newWorker8 + , + + newWorker9 + , + + newWorker10 + ) );更新change表:line = stateTemp.executeUpdate(insert into change (idW,nameW,timeW,containW,demoW) values(+ + newWorker0 + , + + newWorker1 + ,+ + newWorker12 + , + + newWorker11

38、 +, + );这里的newWorker数组是由AddNew类中获得的,里面记录了所有新员工的信息。该类不但要更新worker表,还要更新change表。* 输入员工的调动信息,与上面的输入新员工的基本资料相似,不同的是SQL语句insert的参数由Change类中取得。该类实现了CaretListener接口,为idTextField添加该事件,当里面的内容没改变一次就触发一次caretUpdate()方法。当输入的员工编号存在的时候,程序将员工的信息取出并放在相应的组件当中。* 员工信息的查询修改,该方法同输入员工的调动信息相同,也实现了CaretListener接口,其作用和输入员工的调

39、动信息相同。该部分使用了JTable组件,为了能及时更新Table的显示,自己需要创建MyTableModel类,该类继承了AbstractTableModel类,需要实现AbstractTableModel类中所有未实现的方法。public class MyTableModel extends AbstractTableModel private Object p; private String n; public MyTableModel(String contains,String columnName) p = contains; n = columnName; public int getColumnCount() return n.length; public int getRowCount() return p.length; public String getColumnName(int col) return ncol; publ

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

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号