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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

本文旨在阐述如何用Java语言开发基于桌面操作系统以及微软数据库(Microsoft Office Access)平台的小型管理系统,其重点是如何连接数据库以及如何对数据库进行操作。

关键词:Java;面向对象; Microsoft Office Access;JDBC;DBMS
目录
1引言 (7)
1.1JAVA开发前奏 (7)
1.2JAVA虚拟机及JAVA跨平台原理 (8)
2系统分析 (10)
2.1可行性分析 (10)
2.2需求分析 (11)
3统设计 (12)
3.1结构设计 (12)
3.2详细设计 (16)
4讨论 (33)
4.1存在的问题及改进思想 (33)
5结束语 (34)
6致谢 (35)
7参考文献 (35)
8附录:程序API文档 (37)
1引言
1.1 Java开发前奏
SUN公司在20世纪90年代初开发电子消费产品时觉得C和C++有许多不足,因而着手这一新型的编程语言,并于1995年正式推出Java。

Java用于WWW后,因其在WWW上支持各种动态和交互效果而迅速闻名。

此后,各种浏览器竞相支持Java,各种Java应用也逐渐热门。

Java是一种简单易用、完全面向对象、有平台无关性、安全可靠的、主要面向Internet的开发工具。

自从1995年正式问世以来,它的快速发展已经让整个Web世界发生翻天覆地的变化。

随着Java Servlet的推出,Java 在电子商务方面开始崭露头角,最新的Java Server Page(JSP)技术的推出,更让Java成为基于Web应用程序的首选开发工具。

Java是第一套允许使用者将应用程序通过Internet从远端服务器传输到本地计算机上并执行的一种语言,是一种应用程序提供者不需要知道使用者的计算机硬件与软件环境的语言。

比尔·盖茨曾经说过:“Java是最卓越的程序设计语言”。

相比其他语言,Java 技术平台具有明显的优越性。

从最初建造Java平台开始,就考虑了安全性的问题,即其安全性是建立在Java平台的内核中的。

其他的语言只是在软件开发时才由用户自行处理其安全问题,难免会有安全漏洞。

其次对于程序员来说,Java比其他人和一门语言都好用,原因在于:Java有自动回收垃圾的功能,Java增加了对象和变量的强制类型检查,Java还取消了指针。

目前,Java技术的架构包括以下三个方面:
□ J2EE(Java 2 Platform Enterprise Edition) 企业版,是以企业
为环境而开发应用程序的解决方案。

目前已经成为开发商创建电子商务的事实标准。

□ J2SE(Java 2 Platform Standard Edition) 标准版,是桌面开发和低端商务应用的解决方案。

提供CORBA标准的ORB技术,结合Java的RMI 支持分布式交互操作环境。

□ J2ME(Java 2 Platform Micro Edition) 小型版,是致力于消费产品和嵌入式设备的最佳解决方案。

提供HTTP高级Internet协议,使移动电话能以Client/Server方式直接访问Internet全部信息,不同的Client访问不同的文件,此外还能访问本地存储区,提供高效率的无线交流。

Java技术又有以下广泛的内涵:
◆首先,它是一门编程语言,Java能够创建所有其他传统语言能编写的应用程序,Java能够写独立的应用程序,运行在装有Java虚拟机的操作系统上。

Java编写的程序经常用在WWW环境中(比如Applet、Servlet等),Applet在浏览器中执行不需要操作系统JVM的支持。

◆其次,Java还是一个开发环境,Java技术包含一系列的工具:编译器,解释器、文档生成工具、打包工具等。

另外由Java 2 SDK提供的JRE (Java Runtime Environment)还包括一个完整的Java类集合,比如基本语言类、GUI控件类等。

◆最后,Java也是一个运行环境,我们可以从SUN公司提供的Java 2 SDK 中来搭建运行环境,而这一切都是免费的。

1.2Java虚拟机及Java跨平台原理
Java虚拟机(JVM)是可运行Java字节码的假想计算机,Java的跨平台是相对于其他语言而言的,与其他程序相比,执行的中间过程只是多了一个
Java虚拟机,如下图1-2所示:
Windows下的C语言编译过程 Java语言编译过程
图1-2 C与Java的编译过程
由图1.2可见,只要实现了特种平台下的解释程序,Java字节码就能通过解释程序在该平台下运行,这是Java跨平台的根本。

当前并不是在所有的平台下都有相应的Java解释器程序,这也是Java并不是在所有的平台下都能运行的原因,它只能在已实现了Java解释器程序的平台下运行。

Java兼顾解释性与编译性语言的特点,Java源文件转换成class字节码文件的过程是编译型的, class在操作系统上运行的过程是解释型的,Java虚拟机充当了解释器的作用。

2系统分析
2.1 可行性分析
2.1.1 技术可行性
从目前市场上的操作系统和管理类的软件来看,对于比较简单的小型管理系统,一般使用Microsoft Access数据库就已经足够了,它需要一个良好的操作界面,方便、简单的操作过程是很有必要的。

Java无疑是开发图形界面的最佳选择,丰富的类库提供了足够的控件供开发人员使用,使得界面设计更是灵活多变,能够设计出更多、更好的用户界面。

在Java与数据库连接方面,使用JDBC可以很容易的将SQL语句传到任何关系型数据库中,Java与JDBC的结合,使得程序员可以只写一次数据库应用软件后就可以在任何一种数据库系统上运行。

由于Java语言具有健壮性、安全、易使用、易理解和自动下载到网络等优点,因此它是数据库应用的一个极好的基础语言。

JDBC又实现Java应用程序与各种不同数据库的对话,扩充了Java应用程序的应用范围。

Java访问数据库有两种情况,即Applet和Application,但是他们访问数据库的步骤大致相同,以下Java访问Access数据库的工作原理
图2-1-1.1 Java访问数据库的工作原理图
Java Application的最广泛的用途是应用于公司或企业内部网上,所以
可以称为商业网的应用。

这些Applications 可以访问本地或是任何网络上的共享数据库服务器,当然它也能通过Internet 来访问数据库,图2-2表示了Java Application 访问网络数据库的情况。

2.1.2经济可行性
该管理系统比较小,对机器的配置等要求比较低,界面友好,程序简单易用,容易上手,操作者不需要对计算机数据库等有很深的了解、认识。

2.2需求分析 2.2.1功能要求
从一开始,我的目标就是建立一个企业人事管理系统,功能不是很齐全,主要实现以下几项功能:用户登录,添加、修改、删除注册用户信息;添加新员工信息,员工人事调动信息的录入,查找、修改员工信息;重新初始化数据库等。

2.2.2运行要求
本程序的建议运行环境为:Windows 9x/2000/xp + JRE 5.0 update 6
3系统设计
3.1结构设计
3.1.1主界面设计
良好的用户界面对一个应用程序有着非常重要的作用,通过它,程序的用户可以知道该如何进行操作,它直接与用户打交道,要简单明了。

主程序界面设计:
●应当有一个菜单栏,不同的功能在不同的菜单中,用户可以随时找到
用户可以在不使用菜单的情
●程序将所有的功能都集成到鼠标右键中,
况下快速在不同的窗口之间切换
图3-1-1.1
3.1.2 其它窗口设计
3.1.2.1 管理员登陆
数据库的直接管理人员被称为管理员,能对学生的资料进行修改,只有管理员登陆正确登陆后用户才能对数据库进行修改。

●输入用户账号、密码
●选择用户的类型,这里的类型只有管理
员和普通用户两种
3.1.2.2 管理用户部分
管理用户包括三两个方面:

添加新用户资料,包括用户的账号、密码以及注册的用户的类型。


删除用户,删除已经存在的用户,从账号栏选择要删除的账户。


修改用户,管理员可以修改登陆用户的密码,以及用户的权限等。

图 3-1-2-2.1
3.1.2.3 新员工资料输入部分
企业中有新员工加入的时候我们应当添加员工的资料,程序自动根据数据库中已有的员工的编号的自动为新员工编号,员工的这个编号在数据库中是唯一的,自始至终都是不可以更改的。

图 3-1-2-1
图 3-1-2-3
3.1.2.4 人事调动管理部分
当员工因为升职、调动、退休等原因离开公司的时候,为了能掌握员职工所有动向以及在以后能及时查找到该员工,该部分用于记录员工的动向。

图 3-1-2-4
3.1.2.5 员工信息查找修改部分
员工加入公司后其个人资料难免会发生改变,面对这种情况我们需要及
时地对员工的信息进行更改,这个更改工程我们应该能对员工的所有资料能一幕了然,然后再根据需求进行更改;要查找员工的调动信息,要直观的列出要查找的员工的每次调动的时间和最终去向,以方便能够及时找到该员工。

图 3-1-2-5
3.1.3 数据库的组成
数据库是该系统的核心,它是存储企业员工信息资料以及企业部门资料的地方,本程序的数据库包括以下几个方面:
这里面应当包括登陆用户的账
●对登陆用户管理员信息存储的数据库,
号、密码以及该用户对软件操作的权限等信息。

●对员工信息存储的数据库,这里面应当包括员工基本资料、员工的调动情况等资料。

这些基本的部门信息在程序启动或窗口
●存放基本部门信息的数据库,
被打开的时候可能会用到他们
程序的数据库存放在该程序的当前目录下,该数据库一共包括有六两个程序要用到的表:
System 用于存放该程序登陆用户的详细资料
Worker 用于存放员工学生的基本资料
Change 用于存放员工人事调动信息
Department 用于存储各个部门信息
Duty 用于存储所有员工职务信息
Education 用于存储学历信息
当程序为执行的时候数据库中只有department、duty、education这三个表,其他三个表在程序第一次运行的时候会由程序自动创建。

具体数据库图(如图 3-1-3所示)
图3-1-3 数据库表
3.2 详细设计
3.2.1 流程图与功能图
3.2.1.1 系统流程图
3.2.1.2 功能图
图3-2-1-2 企业人事管理系统功能图
3.2.2 数据库的设计
创建管理员工信息资料的应用程序,到底怎样才能有效地管理学生的数据毫无疑问,数据库在其中扮演着相当重要的作用。

3.2.2.1 创建数据库
在程序的当前目录下创建一个名为Manager的Microsoft Access数据库,并将其的管理员密码设置为123。

3.2.2.2 创建数据库表
在Microsoft Access数据库中建立以下几个数据表:
创建用于存储基本信息的表,表的结构均如下表3-2-2-2.1所示:
表 3-2-2-2.1
基本信息表一共有三个,表名分别为:department、duty、education。

id指各个表中数据的编号,des分别指部门名称、职务名称、学历名称等,里面的内容是预先设置好的。

另外系统自动创建的三个表分别如下:
1.员工信息表,表名为worker,其结构如表3-2-2-
2.2所示。

表 3-2-2-2.2
2.员工调动信息表,表名为change,其结构如表3-2-2-2.3所示。

表 3-2-2-2.3
3.登陆用户员工调动信息表,表名为system,其结构如表3-2-2-2.432所示。

表 3-2-2-2.4
3.2.3 使用JDBC-ODBC桥访问Access数据库
使用JDBC-ODBC桥的方式访问数据库JDBC-ODBC将Java通过JDBC发出的数据库操作转化为ODBC操作。

首先要创建于数据库的连接,然后再打开数据库,访问数据库的各个需要访问的表,从表中取出需要的资料或者更新数据库等,当对数据库的操作完成最后再关闭与数据库的连接。

使用JDBC访问数据库需要包括Connection、RecordSet、Statement、ResultSetMetaData七个类。

Connection对象是连接数据库的基础,它管理程序与数据库建立连接;Statement对象管理对数据库操作,一切对数据库的查询、更改等操作都基于这个类;Recordset对象是管理数据库记录的对
象,我们可以从这个对象中取出我们需要的查询后得数据。

使用以下方法来连接数据库:
*在连接数据库前我们首先要得到Access数据库文件的绝对路径,我们可以使用File类来实现:
File mdb = new File("Students.mdb");
mdbPath = 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 程序的编写过程及功能实现
工欲善其事,必先利其器。

本次编写这个企业人事管理系统,主要是使用了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连接数据库类的编写
数据库的连接方面使用的是Main类中的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");
} 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("成功加载系统属性文件config.xml !");
} catch (IOException e) {
e.printStackTrace();
JOptionPane.showMessageDialog(mainFrame,"找不到系统必须的config.xml文件!","找不到文件",JOptionPane.ERROR_MESSAGE);
eturn false;
}
●系统配置文件config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM
"/dtd/properties.dtd">
<properties>
<comment>Programe Comment :</comment>
<entry key="first_OR_not">0</entry>
<entry key="initDatabase">0</entry>
<entry key="createWorkerTable">create table worker
(idW varchar(50) not null,nameW varchar(20),
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))
</entry>
<entry key="createChangeTable">create table change
(idW varchar(50) not null,nameW varchar(20),
timeW varchar(50),containW varchar(50),
demoW varchar(100))</entry>
<entry key="insertAdmin">
insert into system(userName,userPasswd,userType)
values('admin','21232f297a57a5a743894a0e4a801fc3','管理员
')</entry>
<entry key="createSystemTable">create table system(userName varchar(30) not null,
userPasswd varchar(50) not null,userType varchar(10)
not null)</entry>
</properties>
该文件中存储了三个程序运行时初始化数据库的时候使用的SQL语句,程序需要初始化数据库的时候就将从该文件中取出需要语句。

另外first_OR_not 是指程序运行的次数,initDatabase指初始数据库的次数,这两个变量的初始值都是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)&&u serType.equals(type)){
isManager=true;
break;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
●添加系统管理员,使用Statement对象对数据库表进行操作,该对象实
现对表记录的更新、插入、删除等操作。

在添加用户前要检查用户名是否存
在。

源代码:
try {
if(stateTemp!=null){
int line = stateTemp.executeUpdate("insert into system
(userName,userPasswd,userType) values ('"
+ info[0] +"','"+ EnCode.MD5(info[2]) +"','"+info[4]+"')");
if(line==1){
System.out.println("成功添加账号为:"+info[0]+" 新用
户!");
JOptionPane.showMessageDialog(managerJInternalFrame,"成功添加
账号为:"+info[0]+" 新用户!","提示",
RMATION_MESSAGE);
} }
} catch (SQLException e1) {
……//例外处理
}
●管理登陆用户的账号密码,包括更新用户密码和删除用户
* 更新用户密码
try {
if(stateTemp!=null){
int line = stateTemp.executeUpdate("update system set userPasswd='"+ EnCode.MD5(info[2]) +"',userType='"+ info[4] +"'"
+ "where userName='"+ info[0] +"'");
if(line==1){
System.out.println("成功更新名为:"+info[0]+" 的信息!
");
JOptionPane.showMessageDialog(managerJInternalFrame,"成功更新名为:"+info[0]+"的信息!","提示
",RMATION_MESSAGE); } }
} catch (SQLException e1) {
…… //例外处理
}
* 删除用户
try {
if(stateTemp!=null){
int line=stateTemp.executeUpdate("delete from system where userName='"+ info[0] +"'");
if(line==1){
System.out.println("成功删除账号为:"+info[0]+"的用户!
");
JOptionPane.showMessageDialog(managerJInternalFrame,"成功删除账号为:"+info[0]+"的用户!","提示
",RMATION_MESSAGE); } }
} catch (SQLException e1) {
……//例外处理
}
●员工信息管理包括三部分,分别是输入新员工的基本资料、输入员工的调动信息、员工信息的查询修改。

这三个方面的信息都分别放置在一个String 类型的数组中,这个数组分别从员工信息管理三部分相应的类方法中取得。

* 输入新员工的基本资料,并存储倒数据库中,数据库的更新语句如下:更新worker表:
int line = stateTemp.executeUpdate("insert into worker
(idW,nameW,sexW,birthW,deptW,dutyW,eduW,professW,addrW,teleW,em ailW) values('" + newWorker[0] + "'," + "'" + newWorker[1] + "'," + "'" + newWorker[2] + "'," + "'" + newWorker[3] + "'," + "'" + newWorker[4] + "'," + "'" + newWorker[5] + "'," + "'" + newWorker[6]
+ "'," + "'" + newWorker[7] + "'," + "'" + newWorker[8] + "'," + "'" + newWorker[9] + "'," + "'" + newWorker[10] + "')" );
更新change表:
line = stateTemp.executeUpdate("insert into change
(idW,nameW,timeW,containW,demoW) values("+ "'" + newWorker[0] + "'," + "'" + newWorker[1] + "',"+ "'" + newWorker[12] + "'," + "'" + newWorker[11] +"'," + "'')");
这里的newWorker数组是由AddNew类中获得的,里面记录了所有新员工的信息。

该类不但要更新worker表,还要更新change表。

* 输入员工的调动信息,与上面的输入新员工的基本资料相似,不同的是SQL语句insert的参数由Change类中取得。

该类实现了CaretListener接口,为idTextField添加该事件,当里面的内容没改变一次就触发一次caretUpdate()方法。

当输入的员工编号存在的时候,程序将员工的信息取出并放在相应的组件当中。

* 员工信息的查询修改,该方法同输入员工的调动信息相同,也实现了CaretListener接口,其作用和输入员工的调动信息相同。

该部分使用了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 n[col];
}
public Object getValueAt(int row, int col) {
return p[row][col];
}
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
public boolean isCellEditable(int rowIndex, int columnIndex) { return true;
}
/* public void setValueAt(Object value, int row, int col) {
p[row][col] = value;
fireTableCellUpdated(row, col);
}*/}
3.2.
4.3 密码的安全性
程序中注册的登录用户的密码不能以明文的形式存储,那样很不安全,所以数据库中存储的密码文件要是加密后的密文,这个程序里选择使用MD5加密用户密码。

在EnCode类中实现MD5方法。

Java实现MD5加密的代码如下:
public class EnCode {
public static String MD5(String passwd){
char hexChars[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
try {
byte[] bytes = passwd.getBytes();
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(bytes);
bytes = md.digest();
int j = bytes.length;
char[] chars = new char[j * 2];
int k = 0;
for (byte b : bytes) {
chars[k++] = hexChars[b >>> 4 & 0xf];
chars[k++] = hexChars[b & 0xf];
}
return new String(chars);
}
catch (Exception e){
return null;
}
}
}
3.2. 5 错误处理
程序运行后难免会有输入错误,程序中出错可以帮助我们很快的找到出错地点,程序中数据库方面的异常主要有ClassNotFoundException和SQLException,创建程序主界面方面则有只Exception,使用这些对象的printStackTrace()方法可以找到程序出错的地方和出错原因。

4讨论
4.1 存在的问题及改进思想
本程序的编写历时一个多月,在Windows XP + JDK 1.5.0_1平台上测试通过,基本上实现了预期的目的,但功能还很不完善。

鉴于本人精力水平有限,时间仓促,错误与不足之处在所难免,以待后续开发中不断改进和完善。

在后续开发中,准备从以下几方面着手:
◆增加动态信息分布功能,允许员工通过网络查询自己的资料,并且进行确认。

◆增强数据查询功能,在关键字查询的基础上增加分类查询。

总之,本程序编写不是一个终点,而是一个起点。

Java在不断发展,它的强项并不是使用J2SE来开发桌面应用程序,而更多的应用是使用J2EE开发网络应用程序,尽管它在开发桌面程序上占有很多优势。

Java博大精深,现在唯有不断学习和吸收,才能赶上时代的进步。

5结束语
做什么事情都要有个好的开头,一个应用程序在开发之前的需求分析工作影响整个开发过程。

从需求分析入手,做好各项准备工作——程序各子功能的确定、数据库的设计等,然后选择开发环境、开发工具,一步一步,循序渐进,最终把一个好的企业人事管理系统展现在各位用户的眼前。

6致谢
我的毕业设计工作是在XXX老师指导下进行的。

从选题、设计、编程、调试、撰写论文等环节,都是在XXX老师精心指导下完成。

苗连强老师工作认真、治学严谨。

在毕业设计期间,不仅使我学习到了知识,而且还得到了综合锻炼和提高。

同时,也更加懂得了如何做一个合格的大学生去面对未来。

在此,我十分感谢XXX老师的精心指导!
同时我也感谢在三年中教过我的所有老师!感谢帮助我的所有同学!
7参考文献
1.张孝祥 Java就业培训教程清华大学出版社,2003
2.侯捷 Java编程思想(第二版) 机械工业出版社 2002
3.王路 J2SE核心API参考与实例中国水利水电出版社,2002
4.李东升 JDBC数据库编程与J2EE. 电子工业出版社,2004
5.窦魏 Java软件开发(第二版) 人民邮电出版社,2004
6.殷兆麟 Java网络编程. 国防工业出版社,2001
7.林志扬精通Java Swing程序设计中国铁道出版社 2002
8附录:程序API文档
1、Package dwl
Class AddNew
ng.Object
dwl.AddNew
public class AddNew extends ng.Object
构造方法摘要
AddNew(java.sql.Connection conn) 初始化界面,并从数据库中取出需要的信息
方法摘要
ng.String[] getInformation()得到要添加的新员工的信息
javax.swing.JPanel getPanel()得到包含有组件的面板容器
2、Package dwl
Class Change
ng.Object
dwl.Change
public class Change extends ng.Object implements
javax.swing.event.CaretListener, javax.swing.event.ChangeListener
构造方法摘要
Change(java.sql.Connection conn) 初始化界面,并从数据库中取出需要的信息
方法摘要
void caretUpdate(javax.swing.event.CaretEvent e)
本类实现了CaretListener接口,该方
法重写接口中为实现的caretUpdate()方法,该方法用于查找
员工信息
ng.String[] getChangeInfo() 取得人事变更窗口中的所有的信息javax.swing.JPanel getPanel() 得到含有组件的容器
void stateChanged(javax.swing.event.ChangeEvent e)
本类实现了ChangeListener接口,该方
法重写接口中为实现的stateChanged()方法
3、Package dwl
Class ConnectDB
ng.Object
dwl.ConnectDB
public class ConnectDB extends ng.Object
构造方法摘要
ConnectDB()
方法摘要
boolean chackLogin(ng.String[] useInfo,
java.sql.Connection conn)
该方法实现检查登陆用户帐号密
码是否正确
ng.String[] getLoginInfo() 得到登陆用户的资料
private ng.String getName() 得到登陆用户的用户名
javax.swing.JPanel getPanel() 得到该类的窗口中组件的布局界面private ng.String getPassword() 得到登陆用户的密码
private ng.String getType() 用于获得登陆用户的类型
4、Package dwl
Class GetData
ng.Object
dwl.GetData
public class GetData extends ng.Object
构造方法摘要
GetData()
GetData(java.sql.Connection conn)
方法摘要
ng.String[] getColumnName() 得到change表的列名ng.String[][] getContains(java.sql.ResultSet rsChange)
把记录集中的内容转化为二维数组
int getID() 取得指定要添加的新员工的ID
java.util.Vector getSystem(ng.String tableName)
得到指定数据库表的内容
java.util.Vector getSystemInfo(ng.String column)
得到账号密码表指定列的所有内容5、Package dwl
Class Main
ng.Object
dwl.Main
public class Main extends ng.Object implements
java.awt.event.ActionListener
构造方法摘要
Main() 创建程序主窗口
方法摘要
private void about() 本程序的说明
void actionPerformed(java.awt.event.ActionEvent ae)
在菜单栏上显示时间
private void addNewWorker() 添加新员工信息
private void changeWorker() 员工的人事变动
private void connectDatabase() 连接并打开数据库
private boolean initDatabase(int reason)
初始化数据库,reason为0说明程序运行时检查是否需要初始化数据库,是否初始化取决于Propertities中
的count属性
private boolean initProperties() 获得系统属性,这些系统属性包括一些常量private void jbInit() 初始化界面,创建菜单、工具栏
private void loginDatabase() 显示连接数据库窗口,并且建立与数据库的连接
private void logoutDatabase() 断开登陆用户与数据库的连接
static void main(ng.String[] args) 程序的入口
private void managerUser() 管理登陆用户
private void popMenu(java.awt.event.MouseEvent mouse) 弹出鼠标右键菜单
private void searchWorker() 查询更改员工信息
private void setAllButtonFalse(boolean setFlag)
设置菜单栏、工具栏、弹出菜单中的按钮的状态
6、Package dwl
Class ManageUser
ng.Object
dwl.ManageUser
public class ManageUser extends ng.Object implements
javax.swing.event.ChangeListener
构造方法摘要
ManageUser(java.sql.Connection conn) 初始化组件,为组件添加属性
方法摘要
ng.String[] getInfo()得到当前对象窗口中的资料
ng.String getOperate() 用户想要的操作状态
javax.swing.JPanel getPanel()获得该类含有的组件布局的面板
void stateChanged(javax.swing.event.ChangeEvent e)
当更改操作选择的时候触发该方法
7、Package dwl
Class MyTableModel
ng.Object
javax.swing.table.AbstractTableModel
dwl.MyTableModel
public class MyTableModel extends javax.swing.table.AbstractTableModel
构造方法摘要
MyTableModel(ng.String[][] contains,
ng.String[] columnName)
方法摘要
ng.Class getColumnClass(int c)
int getColumnCount()
ng.String getColumnName(int col)
int getRowCount()
ng.Object getValueAt(int row, int col)
boolean isCellEditable(int rowIndex, int columnIndex)
8、Package dwl
Class Search
ng.Object
dwl.Search
public class Search extends ng.Object implements
javax.swing.event.CaretListener
构造方法摘要
Search(java.sql.Connection conn) 初始化界面,并从数据库中取出需要的信息方法摘要
void caretUpdate(javax.swing.event.CaretEvent e)
本类实现了CaretListener接口,该方
法重写接口中为实现的caretUpdate()方法,该方法用于查
找员工信息
ng.String[] getInfomation() 得到要修改的新员工的信息
javax.swing.JPanel getPanel() 得到含有组件的容器
9、Pcakage dwl.EnCode
Class EnCode
ng.Object
dwl.EnCode.EnCode
public class EnCode extends ng.Object
构造方法摘要
EnCode()。

相关文档
最新文档