(档案管理)职工档案管
理系统教材
3.2系统模块结构图
3.3数据库结构设计
为了支持此职工档案管理系统,创建数据库 employeemanage,在这个数据库里包含四个表:
worker表,manager表,employee表和 teaching表,它们的截图如下:
在 worker表中,有八个属性列,分别为:id(职工号),wname(姓名),sex(性别),age(年
龄),degree(学历),worktime(参加工作时间),salary(工资),dept(院别)。其基本数据类型
分别为:char,char,char,int,char,char,int,char.
表 1worker
在 manager表中,有两个属性列,分别为:mname(管理员姓名),password(密码)其基本数据
类型分别为:char,char。当管理员登录系统时从此表获取数据,其截图如下:
表 2manager
在 employee表中,有两个属性列,分别为:wname(职工姓名),password(密码)其基本数据
类型分别为:char,char。当教职工登录系统时从此表获取数据,其截图如下:
表 3employee
在 teaching表中,有七个属性列,分别为:id(职工号),wname(姓名),grade(年级),tmajor(教
授专业),snum(学生人数),passrate(及格率),ment(教学总评)。其基本数据类型分别为:
char,char,char,int,char,char,char。其截图如下:
表 4teaching
3.4模块设计
在整个系统主界面,可以选择登录方式,是教职工登录还是管理员登录。如果选择教职
教职工登录
教职工教学信息
教职工简介信息
教职工信息修改
教职工教学信息
添加教学信息 删除简介信息
工,则进入教职工登录界面,在这个界面上要求输入教职工姓名和密码。输入后单击“确认
登录”按钮,若密码正确,则转换到教职工教学信息查询页面,当输入教职工姓名后即可显
示该名教职工的教学信息,若密码不正确,这提示密码错误。
如果选择是管理员登录,则进入管理员登陆界面,在这个界面上输入管理员姓名和密码,
输入后单击“教职工信息管理”按钮,则进入管理员主界面。在管理员主界面可以选择进行
文件操作,查询操作还是修改操作。
若要查询教职工简介信息,点击查询菜单项则进入教职工简介信息检索界面,在此界面
的检索方式中选择要检索的数据属性,在检索内容框中输入检索的具体信息,例如,检索“姓
名”字段时,要键入某个教职工的姓名。输入后,单击“检索”按钮,则开始对数据库中数
据进行查询。如果数据库检索到所需信息,则生成列表显示检索结构,如果没有所需信息,
则页面列表中显示为空。
若要查询教职工教学信息,则点击教职工教学信息查询菜单项,进入教学查询界面。在
此界面的文本框中输入要查询教学信息的教职工姓名,然后单击检索按钮。若数据库中有该
教职工的教学信息,则生成列表显示教学信息,若没有此记录,则列表显示内容为空。
如果管理员要对数据库中进行修改操作,则在管理员主界面上选择修改菜单项,在此项
中,选择要修改的具体内容,总共有四项修改操作:添加教职工简介信息,删除教职工简介
信息(这两个是对数据库中 worker表的操作),添加教职工教学信息,删除教职工教学信息(这
两个是对数据库中 teaching表的操作)。在添加信息操作中,按照标签提示一次输入要添加
的记录值,输入完毕后,单击“添加”按钮,若输入成功,则提示成功,若输入失败,则提
示失败。在删除信息操作中,输入要删除信息的教职工姓名,单击“删除”按钮,若删除成
功,则提示成功,若删除失败则提示失败。
以上就是该职工档案管理系统涉及的操作步骤。
3.5系统流程描述
No
Yes
开 始
管理员登录
教学信息管理
界面
教职工登录
成功
输
入
有
误
退出系统
添 加 教 职
工 教 学 信
息
删 除 教 职
工 教 学 信
息
选择 帮助
Yes
成功
职工简介信息
退出
显示检索信息
输
入
有
误
输入教职工
姓名 录 入 添 加
的 教 学 信
息
输 入 要 删
除 的 教 职
工姓名
成功 成功
输
入
有
误
输
入
有
误
delete
succe
ss
四、系统实现 DBconnection类
本系统所编写的程序保存在以下四个包中:connection包,first包,second包,finally
包
包中的类:
(1)DBconnection类:此类设置程序与数据库的连接,通过设置驱动类型和数据源来确
定要连接的数据库。若连接成功,提示:connectionsuccess,若连接失败,提示:
connectionfailure
DBconnection类源代码:
packageconnection;
;
;
;
import;
publicclassDBconnection{
publicstaticvoidmain(String[]args){
newDBconnection();
}
publicstaticConnectioncon=null;
publicstaticConnectiongetConnection()
{
try{
StringdbDriver=".";
(dbDriver);
.println("DriverSuceess");
}catch(ClassNotFoundExceptione){
.println("Drivernotfound");
();
}
try{
con=("jdbc:mysql://localhost:3306/employeemanage","root","418");
.println("ConnectionSuceess");
}catch(SQLExceptione){
.println("Connetionfailure");
();
}
returncon;
}
publicstaticvoidcloseConnection()
{
if(con!=null)
try{
();
.println("databaseclosesuccess");
}catch(SQLExceptione){
.println("closefailure");
();
}
}
}
包中的类:
(1)Workerfirst类:此类中有四个方法,managerLogin,addWorker,deleteWorker,
queryworker,作用分别是控制管理员登陆系统,增加教职工基本信息,删除学生基本信
息,查询教职工基本信息。
managerLogin()方法中,有两个参数,分别传给 select语句中的 mname(管理员姓名)
和 password(登录密码),利用 select语句在 employee表中检索管理员登录信息。若
存在此信息,返回 true,否则返回 false
addWorker)方法中,有八个参数,分别传给 insert语句中的 id(职工号),wname(教
职工姓名),age(年龄),sex(性别),degree(学历),worktime(参加工作时间),
salary(工资)和 dept(院别),利用 insert语句向 worker教职工信息简介表中插入
记录。若插入成功,返回 true,否则返回 false
deleteWorker()方法中,有一个参数,传给 delete语句中的 wname(教职工姓名),
利用 delete语句,把 worker表中相关教职工信息删除。若删除成功,返回 true,否则
返回 false
queryWorker()方法中,有两个参数,分别传给 select语句中的 field(查找方式)和 key
(查找内容),利用 select语句,从 worker表中检索教职工简介信息。若存在此信息,
则返回一个 ArrayList类的对象 lis(表格),否则,异常处理
Workerfirst类源代码:
packagefirst;
;
;
;
;
;
;
import;
import;
publicclassWorkerfirst{
publicbooleanmanagerLogin(Stringmname,Stringpassword){
DBconnectiondb=newDBconnection();
Connectioncon=();
booleanisfound=false;
PreparedStatementpst;
try{
pst=("select*frommanagerwheremname=?andpassword=?");
(1,mname);
(2,password);
ResultSetrs=();
if(())
isfound=true;
}catch(SQLExceptione){
();
}
.println(isfound);
returnisfound;
}
publicbooleanaddWorker(Stringid,Stringwname,Stringsex,intage,Stringdegree,Strin
gworktime,intsalary,Stringdept)
{
Connectioncon=();
PreparedStatementpst;
try{
pst=("insertintoworkervalues(?,?,?,?,?,?,?,?)");
(1,id);
(2,wname);
(3,sex);
(4,age);
(5,degree);
(6,worktime);
(7,salary);
(8,dept);
intcount=();//返回修改的记录数
if(count==1)
returntrue;
else
returnfalse;
}catch(SQLExceptione){
();
}
returnfalse;
}
publicArrayListqueryWorker(Stringfield,Stringkey){
ArrayListlis=newArrayList();
Connectioncon=();
Statementstm;
try{
stm=();
Stringsql="select*fromworkerwhere"+field+"like'%"
+key+"%'";
.println(sql);
ResultSetrs=(sql);
while(()){
Workwork=newWork((1),(2),(3),(4),(5),(6),(7),(8));
(work);
}
}catch(SQLExceptione){
();
}
returnlis;
}
publicbooleandeleteWorker(Stringkey){
Connectioncon=();
Statementstm;
try{
stm=();
Stringsql="deletefromworkerwherewnamelike'%"
+key+"%'";
.println(sql);
intcount=(sql);
if(count==1)
returntrue;
else
returnfalse;
}catch(SQLExceptione){
();
}
returnfalse;
}
}
(2)Employeefirst类:此类中有一个方法:queryEmployee(),作用是控制教职工
登陆 queryEmployee()方法中,有两个参数,分别传给 select语句中的 wname(教职工
姓名)和 password(登陆密码),利用 select语句在 teacher表中检索教师登陆信息。若
存在此信息,返回 true,否则返回 false
Employeefirst类源代码:
packagefirst;
;
;
;
;
;
import;
publicclassEmployeefirst{
publicbooleanqueryEmployee(Stringwname,Stringpassword){
DBconnectiondb=newDBconnection();
Connectioncon=();
booleanisfound=false;
PreparedStatementpst;
try{
pst=("select*fromemployeewherewname=?andpassword=?");
(1,wname);
(2,password);
ResultSetrs=();
if(())
isfound=true;
}catch(SQLExceptione){
();
}
.println(isfound);
returnisfound;
}
publicstaticvoidmain(String[]args){
}
}
(3)Teaching类:在该类中有四个方法 queryTeaching,addTeaching,deleteTeaching
作用分别是为教职工用户提供查询教学信息的功能,为管理者用户提供
询教职工教学信息,添加教学信息,删除教学信息功能。
queryTeaching()方法中,有一个参数,传给 select语句中的 wname(学生姓名),利用
select语句,查询教学信息表中的内容。若查询成功,则返回一个 ArrayList类的对象 lis
(表格),否则,异常处理
addTeaching()方法中,有七个参数,分别传给 insert语句中的 id(职工号),wname(教
职工姓名),grade(年级),tmajor(教学专业),snum(学生人数),passrate(及格率),ment
(教学总评)。利用 insert语句,将这些记录写入 teaching表中。若插入成功返回 true,否
则返回 false
deleteTeaching()方法中,有一个参数,传给 delete语句中的 wname(教职工姓名),利
用 delete语句,把 steaching表中相关教职工的教学信息删除。若删除成功,返回 true,
否则返回 false
Teaching类源代码:
packagefirst;
;
;
;
;
;
;
import;
import;
import;
import;
publicclassTeachingfirst{
publicArrayListqueryTeaching(Stringkey){
ArrayListlis=newArrayList();
Connectioncon=();
Statementstm;
try{
stm=();
Stringsql="select*fromteachingwherewnamelike'%"+key
+"%'";
.println(sql);
ResultSetrs=(sql);
while(()){
Teachingteach=newTeaching((1),(2),rs
.getString(3),(4),(5),(6),(7));
(teach);
}
}catch(SQLExceptione){
();
}
returnlis;
}
publicArrayListqueryTeach(Stringkey){
ArrayListlis=newArrayList();
Connectioncon=();
Statementstm;
try{
stm=();
Stringsql="select*fromteachingwherewnamelike'%"+1
+"%'";
.println(sql);
ResultSetrs=(sql);
while(()){
Teachingteach=newTeaching((1),(2),rs
.getString(3),(4),(5),(6),(7));
(teach);
}
}catch(SQLExceptione){
();
}
returnlis;
}
publicbooleanaddTeaching(Stringid,Stringwname,Stringgrade,Stringtmajor,
intsnum,Stringpassrate,Stringment){
Connectioncon=();
PreparedStatementpst;
try{
pst=("insertintoteachingvalues(?,?,?,?,?,?,?)");
(1,id);
(2,wname);
(3,grade);
(4,tmajor);
(5,snum);
(6,passrate);
(7,ment);
intcount=();//返回修改的记录数
if(count==1)
returntrue;
else
returnfalse;
}catch(SQLExceptione){
();
}
returnfalse;
}
publicbooleandeleteTeaching(Stringkey){
Connectioncon=();
Statementstm;
try{
stm=();
Stringsql="deletefromteachingwherewnamelike'%"+key+"%'";
.println(sql);
intcount=(sql);
if(count==1)
returntrue;
else
returnfalse;
}catch(SQLExceptione){
();
}
returnfalse;
}
}
包中的类:
(1)Work类:此类中有八个成员变量,Stringid;Stringwname;Stringsex;
intage;Stringdegree;Stringworktime;intsalary;Stringdept,和十六个成员方法,类
中分别获取和设置了这八个变量,即为 worker表中八个属性的属性名,每个变量都对应
了 getXXX(),setXXX()方法,还有一个构造方法,用于在调用其对象时对成员变量赋值
Work类源代码:
packagesecond;
publicclassWork{
Stringid;
Stringwname;
Stringsex;
intage;
Stringdegree;
Stringworktime;
intsalary;
Stringdept;
publicStringgetID(){
returnid;
}
publicvoidsetID(Stringid){
=id;
}
publicStringgetWname(){
returnwname;
}
publicvoidsetWname(Stringwname){
=wname;
}
publicStringgetSex(){
returnsex;
}
publicvoidsetSex(Stringsex){
=sex;
}
publicintgetAge(){
returnage;
}
publicvoidsetAge(intage){
=age;
}
publicStringgetDegree(){
returndegree;
}
publicvoidsetDegree(Stringdegree){
=degree;
}
publicStringgetWorktime(){
returnworktime;
}
publicvoidsetWorktime(Stringworktime){
=worktime;
}
publicintgetSalary(){
returnsalary;
}
publicvoidsetSalary(intsalary){
=salary;
}
publicStringgetDept(){
returndept;
}
publicvoidsetDept(Stringdept){
=dept;
}
publicWork(Stringid,Stringwname,Stringsex,intage,Stringdegree,Stringworktime,in
tsalary,Stringdept)
{
super();
=id;
=wname;
=sex;
=age;
=degree;
=worktime;
=salary;
=dept;
}
}
( 2) Teaching类 : 此 类 中 有 七 个 成 员 变 量 , Stringid; Stringwname;
Stringgrade;Stringtmajor;intsnum;Stringpassrate;Stringment,和十四个成员方法,类
中分别获取和设置了这七个变量,即为 teaching表中七个属性的属性名,每个变量都对应
了 getXXX(),setXXX()方法,还有一个构造方法,用于在调用其对象时对成员变量赋值
Teaching类源代码:
packagesecond;
publicclassTeaching{
Stringid;
Stringwname;
Stringgrade;
intsnum;
Stringtmajor;
Stringpassrate;
Stringment;
publicStringgetID(){
returnid;
}
publicvoidsetID(Stringid){
=id;
}
publicStringgetWname(){
returnwname;
}
publicvoidsetWname(Stringwname){
=wname;
}
publicStringgetGrade(){
returngrade;
}
publicvoidsetGrade(Stringgrade){
=grade;
}
publicintgetSnum(){
returnsnum;
}
publicvoidsetSnum(intsnum){
=snum;
}
publicStringgetTmajor(){
returntmajor;
}
publicvoidsetTmajor(Stringtmajor){
=tmajor;
}
publicStringgetPassRate(){
returnpassrate;
}
publicvoidsetPassRate(Stringpassrate){
=passrate;
}
publicStringgetComment(){
returnment;
}
publicvoidsetComment(Stringment){
=ment;
}
publicTeaching(Stringid,Stringwname,Stringgrade,Stringtmajor,intsnum,Stringpassrate,S
tringment)
{
super();
=id;
=wname;
=grade;
=tmajor;
=snum;
=passrate;
=ment;
}
}
包中的类:
(1)LoginDD类:此类为登陆主界面类,在这个界面上,设置有两个按钮,教职工按钮和
管理员按钮。给这两个按钮注册事件 addActionListener,分别在内部类
TeacherLoginActionListene和 StudentLoginActionListener中 的 默 认 方 法
actionPerformed()中创建 EmployeeDD类和 ManagerDD类的对象,即打开教职工登
陆界面和管理员登录界面,并将原登陆界面关闭。
LoginDD类源代码:
packagefinallys;
import.*;
.*;
import.*;
publicclassLoginDDextendsJFrame{
JLabell1;
JButtonbt1,bt2;
Containercp;
publicLoginDD(){
l1=newJLabel("请选择用户类型");
bt1=newJButton("教职工");
bt2=newJButton("管理员");
JPanelp1=newJPanel();
(null);
(150,150,120,40);
(l1);
(120,230,80,30);
(bt1);
(220,230,80,30);
(bt2);
(newTeacherLoginActionListener());//注册事件
(newStudentLoginActionListener());//注册事件
cp=getContentPane();
(200,200,(),());
(p1);
("用户登录界面");
(400,400);
(true);
(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
(0);
}
});
}
classTeacherLoginActionListenerimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
newEmployeeDD();
dispose();
}
}
classStudentLoginActionListenerimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
newManagerDD();
dispose();
}
}
publicstaticvoidmain(String[]args){
newLoginDD();
}
}
截图如下:
图 1用户登录主界面
(2)ManagerDD类:此类为管理员登陆界面,在这个界面上有两个文本框,分别输入管理
员姓名和登录密码,还有两个按钮,登陆和退出。输入后,从两个文本框中获取用户
输入的内容,点击“登陆”按钮时,调用 Workerfirst类中的 managerLogin()方法
验证是否存在该用户。若存在,则创建 Mainlogin类的对象,即打开教职工简介界面
进行操作,若不存在,则提示密码错误。
ManagerDD类源代码:
packagefinallys;
import.*;
.*;
import.*;
import;;
publicclassManagerDDextendsJFrame{
JLabell1,l2;
JTextFieldt1;
JPasswordFieldt2;
JButtonbt1,bt2;
Containercp;
publicstaticStringst1;
publicStringst2;
publicManagerDD(){
l1=newJLabel("管理员姓名");
l2=newJLabel("密码");
t1=newJTextField(12);
t2=newJPasswordField(12);
bt1=newJButton("教职工信息管理");
bt2=newJButton("退出");
JPanelp1=newJPanel();
(null);
(150,150,80,40);
(l1);
(250,150,80,30);
(t1);
(150,190,80,40);
(l2);
(250,190,80,30);
(t2);
(150,230,150,30);
(bt1);
(320,230,80,30);
(bt2);
(newLoginActionListener());//注册事件
(newExitActionListener());//注册事件
cp=getContentPane();
(200,200,(),());
(p1);
("管理员登录界面");
(400,400);
(true);
(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente)
{
(0);
}
});
}
classLoginActionListenerimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
st1=();
st2=();
Workerfirstworkerfirst=newWorkerfirst();
booleanisSuccess=(st1,st2);
if(isSuccess){
newMainlogin();
dispose();
}else
(null,"用户名密码错误","提示信息",
_MESSAGE);
}
}
classExitActionListenerimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
(0);
}
}
publicstaticvoidmain(String[]args){
newManagerDD();
}
}
截图如下:
图 2管理员登录界面
图 3教职工教学与简介信息操作
(3)Managerteaching类:此类为教职工教学界面,这个界面上有一个标签和一个表格。
标签中从 ManagerDD类中获取教职工登录时使用的用户名,显示在标签中以表示以下是某
某教职工的教学信息。表格中为此学生的成绩。调用Teachinfirst类中的queryTeaching(),
将得到的 ArrayList对象 lis放入 Vector对象中,形成表格。
Managerteaching类源代码:
packagefinallys;
import.*;
import.*;
.*;
import.*;
.*;
import.;
import;
import;;
publicclassManagerteachingextendsJFrame{
Stringaa=1;
JLabelselectionLabel;
JPaneltopPanel;
Containercontainer;
JTabletable;
JScrollPanebookScrollPane;
JPanelbottomPanel;
publicManagerteaching(){
container=();
selectionLabel=newJLabel(aa+"老师教学情况如下");
topPanel=newJPanel();
(newFlowLayout());
(selectionLabel);
(,topPanel);
table=newJTable();
bookScrollPane=newJScrollPane(table);
(,bookScrollPane);
bottomPanel=newJPanel();
(,bottomPanel);
("教师教学情况查询");
(600,450);
(true);
Teachingfirstteach=newTeachingfirst();
ArrayListlis=(aa);
Vector<String>head=new Vector();
("职工号");
("教职工姓名");
("年级");
("教授专业");
("学生人数");
("及格率");
("教学总评");
Vector<Vector>content=new Vector();
for(inti=0;i<();i++){
Vectorrow=newVector();
Teachingteaching=(Teaching)(i);
(());
(());
(());
(());
(());
(());
(());
(row);
}
DefaultTableModelmodel=newDefaultTableModel(content,head);
(model);
repaint();
}
}
(4)EmployeeDD类:此类为教职工登陆界面,在这个界面上有两个文本框,分别输入教
职工姓名和密码,还有两个按钮,登陆和退出。输入后,从两个文本框中获取用户输入的
内容,点击“登陆”按钮时,调用 Employeefirst类中的 queryEmployee()方法验证是
否存在该用户。若存在则创建 TeachQuery类的对象,即打开教师主界面,若不存在,则提
示密码错误。
EmployeeDD类源代码:
packagefinallys;
import.*;
.*;
import.*;
import;
publicclassEmployeeDDextendsJFrame{
JLabell1,l2;
JTextFieldt1;
JPasswordFieldt2;
JButtonbt1,bt2;
Containercp;
publicEmployeeDD(){
l1=newJLabel("教职工姓名");
l2=newJLabel("密码");
t1=newJTextField(12);
t2=newJPasswordField(12);
bt1=newJButton("登录");
bt2=newJButton("退出");
JPanelp1=newJPanel();
(null);
(150,150,80,40);
(l1);
(250,150,80,30);
(t1);
(150,190,80,40);
(l2);
(250,190,80,30);
(t2);
(150,230,80,30);
(bt1);
(250,230,80,30);
(bt2);
(newLoginActionListener());//注册事件
(newExitActionListener());//注册事件
cp=getContentPane();
(200,200,(),());
(p1);
("教职工登录界面");
(400,400);
(true);
(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente)
{
(0);
}
});
}
classLoginActionListenerimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
Stringst1=();
Stringst2=();
Employeefirstemployee=newEmployeefirst();
booleanisSuccess=(st1,st2);
if(isSuccess){
newTeachQuery();
dispose();
}else
(null,"用户名密码错误","提示信息",
_MESSAGE);
}
}
classExitActionListenerimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
(0);
}
}
publicstaticvoidmain(String[]args){
newEmployeeDD();
}
}
截图如下:
图 4教职工登录页面
(5)Mainlogin类:该类为操作教职工信息的主界面类,在此界面上有一个菜单栏,三个
菜单:文件,查询,修改。其中“文件”菜单中有“退出”菜单项,点击时跳出对话框问
是否真的退出,若点击是,窗口关闭,若点击否,回复原界面。“查询”菜单中有“教职工
信息简介信息”和“教职工教学信息查询”两个菜单项:当点击“教职工信息简介”时,
通过注册事件,创建 ManagerQuery类的对象,即打开查询教职工简介信息的窗口,当点击
“教职工教学信息”时,通过注册事件,创建 TeachQuery类的对象,即打开查询教职工教
学信息的窗口。修改菜单中有“添加教职工简介信息”“删除教职工简介信息”“添加教职
工教学信息”和“删除教职工教学信息”四个菜单项,当点击“添加教职工简介信息”时,
通过注册事件,创建 ManagerAdd类的对象,即打开添加教职工简介信息的窗口,当点击“删
除教职工简介信息”时,通过注册事件,创建 ManagerDelete类的对象,即打开删除教职
工简介信息的窗口,当点击“添加教职工教学信息”时,通过注册事件,创建 TeachAdd类
的对象,即打开添加教职工教学信息的窗口,当点击“删除教职工教学信息”时,通过注
册事件,创建 TeachDelete类的对象,即打开删除教职工教学的窗口。
Mainlogin类源代码:
packagefinallys;
import.*;
.*;
import.*;
publicclassMainloginextendsJFrame{
Containerctp;
Mainlogin(){
ctp=();
("欢迎进入教职工教学系统!");
(newBorderLayout());
JMenuBarmenuBar=newJMenuBar();
buildMainMenu(menuBar);
(menuBar);
(100,100,400,300);
(true);
}
publicvoidbuildMainMenu(JMenuBarmenuBar){
JMenufileMenu=newJMenu("文件");
JMenuItemexitMenuItem=newJMenuItem("退出");
(newExitActionListener());//注册事件
(exitMenuItem);
(fileMenu);
JMenuqueryMenu=newJMenu("查询");
JMenuItemqueryMenuItem=newJMenuItem("教职工信息简介");
JMenuItemqueryScoreMenuItem=newJMenuItem("教职工教学信息查询");
(newQueryActionListener());//注册事件
(newQueryScoreActionListener());//注册事件
(queryMenuItem);
(queryScoreMenuItem);
(queryMenu);
JMenuchangeMenu=newJMenu("修改");
JMenuItemaddMenuItem=newJMenuItem("添加教职工简介信息");
JMenuItemdeleteMenuItem=newJMenuItem("删除教职工简介信息");
JMenuItemaddScoreMenuItem=newJMenuItem("添加教职工教学信息");
JMenuItemdeleteScoreMenuItem=newJMenuItem("删除教职工教学信息");
(newAddActionListener());//注册事件
(newDeleteActionListener());//注册事件
(newAddScoreActionListener());//注册事件
(newDeleteScoreActionListener());//注册事件
(addMenuItem);
(deleteMenuItem);
(addScoreMenuItem);
(deleteScoreMenuItem);
(changeMenu);
}
classExitActionListenerimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
intresult=(null,"真的要退出吗?","提示信息",
_NO_OPTION,_MESSAGE,
null);
if(result==0)
(0);
elseif(result==1){
}
}
}
classQueryScoreActionListenerimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
newTeachQuery();
}
}
classQueryActionListenerimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
newManagerQuery();
}
}
classAddActionListenerimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
newManagerAdd();
}
}
classDeleteActionListenerimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
newManagerDelete();
}
}
classAddScoreActionListenerimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
newTeachAdd();
}
}
classDeleteScoreActionListenerimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
newTeachDelete();
}
}
publicstaticvoidmain(String[]args){
newMainlogin();
}
}
截图如下:
图 5教职工管理
(6)ManagerQuery类:此类为教职工简介信息查询界面类,在此界面上有一个标签,一
个下拉列表框,一个文本框和一个按钮。点击下拉列表框时,可以选择要检索的方式,即
要检索的属性,单击时,通过注册事件,在内部类的方法里获取所点击的属性名称,保存
在一个 String型的变量里。在文本框中输入要检索的属性内容,单击“检索”按钮时,通
过注册事件,在内部类的方法中把刚才获取的属性参数和内容参数传给 Workerfirst类的
queryWorker()方法,从而获取检索内容,再把检索得到的内容通过 Vector对象放入
ArrayList类的对象 lis中,从而使检索结果显示在表格中。
ManagerQuery类源代码:
packagefinallys;
import.*;
import.*;
.*;
import.*;
.*;
.*;
import;
import;;
publicclassManagerQueryextendsJFrame{
JLabelselectionLabel;
JComboBoxfieldComboBox;
JPaneltopPanel;
JButtonretrievalButton;
JTextFieldkeywordText;
Containercontainer;
StringfieldSelected;
intselectedNum;
JTabletable;
JScrollPanebookScrollPane;
JPanelbottomPanel;
publicManagerQuery(){
container=();
selectionLabel=newJLabel("检索方式");
fieldComboBox=newJComboBox();
("请选择...");
("职工号");
("教职工姓名");
("学历");
("院别");
(newSelectedListener());//下拉列表框注册事件注册事件
keywordText=newJTextField("",20);
retrievalButton=newJButton("检索");
topPanel=newJPanel();
(newFlowLayout());
(()/2,());
(selectionLabel);
(fieldComboBox);
(keywordText);
(retrievalButton);
(,topPanel);
(newRetrievalActionListener());//给检索按钮注册事件
table=newJTable();
bookScrollPane=newJScrollPane(table);
(,bookScrollPane);
bottomPanel=newJPanel();
(,bottomPanel);
("教职工简介查询");
(600,450);
(true);
}
classSelectedListenerimplementsItemListener{
publicvoiditemStateChanged(ItemEventevent){
if(()==){
selectedNum=();//获取文本信息
}
}
}
classRetrievalActionListenerimplementsActionListener{
publicvoidactionPerformed(ActionEventevent){
switch(selectedNum){
case1:
fieldSelected="id";
break;
case2:
fieldSelected="wname";
break;
case3:
fieldSelected="degree";
break;
case4:
fieldSelected="dept";
break;
}
Stringkey=();
Workerfirstworkerfirst=newWorkerfirst();
ArrayListlis=(fieldSelected,key);
Vector<String>head=new Vector();
("职工号");
("教职工姓名");
("性别");
("年龄");
("学历");
("参加工作时间");
("工资");
("院别");
Vector<Vector>content=new Vector();
for(inti=0;i<();i++){
Vectorrow=newVector();
Workoneworker=(Work)(i);
(());
(());
(());
(());
(());
(());
(());
(());
(row);
}
DefaultTableModelmodel=newDefaultTableModel(content,head);
(model);
repaint();
}
}
publicstaticvoidmain(String[]args){
newManagerQuery();
}
}
截图如下:
图 6教职工简介查询
(7)TeachQuery类:此类为教职工教学信息查询界面类,在此界面有一个标签,一个文
本框,一个按钮。在文本框中输入要查询教职工,单击“查询”按钮时,通过注册事件,
在内部类的方法里,获取从文本框中获取的教职工姓名信息,并把此信息作为实参传给
Teachingfirst类的 queryTeaching()方法,得到查询结构。再把查询结构通过 Vector
对象放入 ArrayList类的对象 lis中,从而使检索结果显示在表格中。
TeachQuery类源代码:
packagefinallys;
import.*;
import.*;
.*;
import.*;
.*;
import.;
import;
import;
publicclassTeachQueryextendsJFrame{
JLabelselectionLabel;
JPaneltopPanel;
JButtonretrievalButton;
JTextFieldkeywordText;
Containercontainer;
StringfieldSelected;
intselectedNum;
JTabletable;
JScrollPanebookScrollPane;
JPanelbottomPanel;
publicTeachQuery(){
container=();
selectionLabel=newJLabel("教职工姓名");
keywordText=newJTextField("",20);
retrievalButton=newJButton("查询");
topPanel=newJPanel();
(newFlowLayout());
(()/2,());
(selectionLabel);
(keywordText);
(retrievalButton);
(,topPanel);
(newRetrievalActionListener());//给检索按钮注册事件
table=newJTable();
bookScrollPane=newJScrollPane(table);
(,bookScrollPane);
bottomPanel=newJPanel();
(,bottomPanel);
("教职工教学信息查询");
(600,450);
(true);
}
classRetrievalActionListenerimplementsActionListener{
publicvoidactionPerformed(ActionEventarg0){
Stringkey=();
TeachingfirstoneScore=newTeachingfirst();
ArrayListlis=(key);
Vector<String>head=new Vector();
("职工号");
("教职工姓名");
("年级");
("教授专业");
("学生人数");
("及格率");
("教学总评");
Vector<Vector>content=new Vector();
for(inti=0;i<();i++){
Vectorrow=newVector();
TeachingoneTeaching1=(Teaching)(i);
(oneTeaching1 .getID());
(oneTeaching1 .getWname());
(oneTeaching1 .getGrade());
(oneTeaching1 .getTmajor());
(oneTeaching1 .getSnum());
(oneTeaching1 .getPassRate());
(oneTeaching1 .getComment());
(row);
}
DefaultTableModelmodel=newDefaultTableModel(content,head);
(model);
repaint();
}
}
publicstaticvoidmain(String[]args){
newTeachQuery();
}
}
截图如下:
图 7教职工教学信息查询
(8)ManagerAdd类:此类为信息简介表添加信息的界面类,在此界面中有八个标签,八个
文本框,还有两个按钮“添加”“退出”。根据八个标签的提示,分别在八个文本框中输
入信息。当单击“添加”按钮时,通过注册事件,在内部类的 actionPerformed()方法
中,获取八个文本框中的信息,并转换成相应的基本数据类型,通过 Workerfirst类的
addWorker()方法,将数据写入数据库的 worker表中。
ManagerAdd类源代码:
packagefinallys;
import.*;
.*;
import.*;
import;
publicclassManagerAddextendsJFrame{
JLabell1,l2,l3,l4,l5,l6,l7,l8;
JTextFieldt1,t2,t3,t4,t5,t6,t7,t8;
JButtonbt1,bt2;
publicManagerAdd(){
l1=newJLabel("职工号");
l2=newJLabel("教职工姓名");
l3=newJLabel("性别");
l4=newJLabel("年龄");
l5=newJLabel("学历");
l6=newJLabel("参加工作时间");
l7=newJLabel("工资");
l8=newJLabel("院别");
t1=newJTextField(12);
t2=newJTextField(10);
t3=newJTextField(10);
t4=newJTextField(10);
t5=newJTextField(10);
t6=newJTextField(25);
t7=newJTextField(25);
t8=newJTextField(25);
bt1=newJButton("添加");
bt2=newJButton("退出");
JPanelp1=newJPanel();
(null);
(100,100,80,30);
(l1);
(170,100,100,30);
(t1);
(100,140,80,30);
(l2);
(170,140,200,30);
(t2);
(100,180,80,30);
(l3);
(170,180,200,30);
(t3);
(100,220,80,30);
(l4);
(170,220,200,30);
(t4);
(100,260,80,30);
(l5);
(170,260,60,30);
(t5);
(100,300,80,30);
(l6);
(200,300,200,30);
(t6);
(100,340,80,30);
(l7);
(170,340,200,30);
(t7);
(100,380,80,30);
(l8);
(170,380,200,30);
(t8);
(140,420,80,30);
(bt1);
(280,420,80,30);
(bt2);
(newAddListener());
(newCloseListener());
(200,200,(),());
(p1);
("添加教职工教学信息界面");
(400,400);
(true);
(newWindowAdapter(){//匿名类开始
publicvoidwindowClosing(WindowEvente)//把退出窗口的语句写在本方法中
{
dispose();
}
});
}
classAddListenerimplementsActionListener{
publicvoidactionPerformed(ActionEventarg0){
Workerfirstoneworkerfirst=newWorkerfirst();
Stringid=();
Stringwname=();
Stringsex=();
intage=(());
Stringdegree=();
Stringworktime=();
intsalary=(());
Stringdept=();
booleanissuccess=(id,wname,sex,age,degree,worktime,salary,dept);
if(issuccess){
(null,"insertsuccess","提示信息",
_MESSAGE);
("");
("");
("");
("");
("");
("");
("");
("");
}else{
(null,"insertfailure","提示信息",
_MESSAGE);
}
}
}
classCloseListenerimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
dispose();
}
}
publicstaticvoidmain(String[]args){
newManagerAdd();
}
}
截图如下:
图 8添加教学信息
图 9数据库表的改变
(9)ManagerDelete类:此类为删除教职工简介信息界面类,在此界面中有一个标签,
一个文本框,还有两个按钮“删除”“退出”。根据标签提示,在文本框中输入要删除记录
的教职工姓名。当单击“删除”按钮时,通过注册事件,在内部类的 actionPerformed()
方法中,获取这个文本框中的信息,作为实参,通过 Workerfirst类的 deleteWorker()
方法,就可以把信息删除。若删除成功,提示成功,否则提示失败。
ManagerDelete类源代码:
packagefinallys;
import.*;
.*;
import.*;
import;;
publicclassManagerDeleteextendsJFrame{
JLabell1;
JTextFieldt1;
JButtonbt1,bt2;
publicManagerDelete(){
l1=newJLabel("请输入要删除的教职工姓名:");
t1=newJTextField(20);
bt1=newJButton("确认删除");
bt2=newJButton("退出");
JPanelp1=newJPanel();
(null);
(100,100,250,50);
(l1);
(150,200,100,30);
(t1);
(140,300,120,30);
(bt1);
(280,300,80,30);
(bt2);
(newDeleteListener());
(newCloseListener());
(200,200,(),());
(p1);
("删除教职工界面");
(400,400);
(true);
(newWindowAdapter(){//匿名类开始
publicvoidwindowClosing(WindowEvente)//把退出窗口的语句写在本方法中
{
dispose();
}//窗口关闭
});//匿名类结束
}
classDeleteListenerimplementsActionListener{
publicvoidactionPerformed(ActionEventarg0){
Workerfirstoneworkerfirst=newWorkerfirst();
Stringwname=();
booleanissuccess=(wname);
if(issuccess){
(null,"deletesuccess","提示信息",
_MESSAGE);
("");
}else{
(null,"deletefailure","提示信息",
_MESSAGE);
}
}
}
classCloseListenerimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
dispose();
}
}
publicstaticvoidmain(String[]args){
newManagerDelete();
}
}
截图如下:
图 10删除前
图 11进行删除操作
图 12删除操作后
(10)TeachAdd类:此类为添加教职工教学信息界面类,在此界面中有个标签,七个文本
框,还有两个按钮“添加”“退出”。根据七个标签的提示,分别在七个文本框中输入信息。
当单击“添加”按钮时,通过注册事件,在内部类的 actionPerformed()方法中,获取
七个文本框中的信息,作为实参,并转换成相应的基本数据类型,通过 Teachingfirst类
的 addTeaching()方法,将数据写入数据库的 teaching表中。若添加成功,提示成功,
否则提示失败。
TeachAdd类源代码:
packagefinallys;
import.*;
.*;
import.*;
import;
import;
publicclassTeachAddextendsJFrame{
JLabell1,l2,l3,l4,l5,l6,l7;
JTextFieldt1,t2,t3,t4,t5,t6,t7;
JButtonbt1,bt2;
publicTeachAdd(){
l1=newJLabel("职工号");
l2=newJLabel("教职工姓名");
l3=newJLabel("年级");
l4=newJLabel("教授专业");
l5=newJLabel("学生人数");
l6=newJLabel("及格率");
l7=newJLabel("教学总评");
t1=newJTextField(20);
t2=newJTextField(20);
t3=newJTextField(20);
t4=newJTextField(20);
t5=newJTextField(20);
t6=newJTextField(20);
t7=newJTextField(20);
bt1=newJButton("确认添加");
bt2=newJButton("退出");
JPanelp1=newJPanel();
(null);
(100,100,80,30);
(l1);
(170,100,100,30);
(t1);
(100,140,80,30);
(l2);
(170,140,200,30);
(t2);
(100,180,80,30);
(l3);
(170,180,200,30);
(t3);
(100,220,80,30);
(l4);
(170,220,200,30);
(t4);
(100,260,80,30);
(l5);
(170,260,60,30);
(t5);
(100,300,80,30);
(l6);
(170,300,60,30);
(t6);
(100,340,80,30);
(l7);
(170,340,60,30);
(t7);
(140,380,120,30);
(bt1);
(280,380,80,30);
(bt2);
(newAddListener());
(newCloseListener());
(200,200,(),());
(p1);
("添加教职工教学信息界面");
(400,400);
(true);
(newWindowAdapter(){//匿名类开始
publicvoidwindowClosing(WindowEvente)//把退出窗口的语句写在本方法中
{
dispose();
}
});
}
classAddListenerimplementsActionListener{
publicvoidactionPerformed(ActionEventarg0){
Teachingfirstoneteach=newTeachingfirst();
Stringid=();
Stringwname=();
Stringgrade=();
Stringtmajor=();
intsnum=(());
Stringpassrate=();
Stringment=();
booleanissuccess=(id,wname,grade,tmajor,snum,passrate,ment);
if(issuccess){
(null,"insertsuccess","提示信息",
_MESSAGE);
("");
("");
("");
("");
("");
("");
("");
}else{
(null,"insertfailure","提示信息",
_MESSAGE);
}
}
}
classCloseListenerimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
dispose();
}
}
publicstaticvoidmain(String[]args){
newTeachAdd();
}
}
截图如下:
图 13添加教学信息
图 14数据库显示
(11)TeachDelete类:此类为删除教职工教学信息界面类,在此界面中有一个标签,一
个文本框,还有两个按钮“删除”“退出”。根据标签提示,在文本框中输入要删除教学记
录的教职工姓名。当单击“删除”按钮时,通过注册事件,在内部类的 actionPerformed()
方法中,获取这个文本框中的信息,作为实参,通过 Teachingfirst类的 deleteTeaching()
方法,就可以将信息删除。若删除成功,提示成功,否则提示失败。
TeachDelete类源代码:
packagefinallys;
import.*;
.*;
import.*;
import;;
publicclassTeachDeleteextendsJFrame{
JLabell1;
JTextFieldt1;
JButtonbt1,bt2;
publicTeachDelete(){
l1=newJLabel("请输入要删除教学信息的教职工的姓名:");
t1=newJTextField(20);
bt1=newJButton("确认删除");
bt2=newJButton("退出");
JPanelp1=newJPanel();
(null);
(100,100,250,30);
(l1);
(150,150,100,30);
(t1);
(140,300,120,30);
(bt1);
(280,300,80,30);
(bt2);
(newDeleteListener());
(newCloseListener());
(200,200,(),());
(p1);
("删除教职工教学信息界面");
(400,400);
(true);
(newWindowAdapter(){//匿名类开始
publicvoidwindowClosing(WindowEvente)//把退出窗口的语句写在本方法中
{
dispose();
}//窗口关闭
});//匿名类结束
}
classDeleteListenerimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
Teachingfirstoneteach=newTeachingfirst();
Stringwname=();
booleanissuccess=(wname);
if(issuccess){
(null,"deletesuccess","提示信息",
_MESSAGE);
("");
}else{
(null,"deletefailure","提示信息",
_MESSAGE);
}
}
}
classCloseListenerimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
dispose();
}
}
publicstaticvoidmain(String[]args){
newTeachDelete();
}
}
截图如下:
图 15进行删除教学信息
(12)Help类:该类为用户提供一些帮助信息,知道用户正确地使用职工档案管理系统!
Help类源代码:
packagefinallys;
import.*;
.*;
import.*;
publicclassHelpextendsJFrame{
JLabell1,l2,l3,l4;
publicHelp(){
l1=newJLabel("这是一个职工档案管理系统:\n");
l2=newJLabel("1.选择退出系统按钮退出系统!\n");
l3=newJLabel("2.选择教职工信息查询可对教职工教学以及简介信息进行查询操作!\n");
l4=newJLabel("3.选择教职工信息修改可对教职工教学以及简介信息进行删除操作!\n");
JPanelp1=newJPanel();
(null);
(100,100,300,30);
(l1);
(100,140,300,30);
(l2);
(100,180,1000,30);
(l3);
(100,220,1000,30);
(l4);
(200,200,(),());
(p1);
("帮助界面");
(400,400);
(true);
}
publicstaticvoidmain(Stringargs[]){
newHelp();
}
}
截图如下:
表 16帮助界面
五.课程设计心得与体会
将近两年的大学生活,让我也接触了好几次的计算机课程实践了,大体的感受都差不多,在
平时我们不应该只停留在一昧地听理论讲解,更要敢于去实践,只有在实践中你猜能发现自
己的不足之处,此次我做的是职工档案管理系统,我所拟定的目标是建立 JAVA程序与 MYSQL
数据库程序的连接并且对数据库中的数据进行访问,最终通过设计是的用户可以在前台用户
界面对数据库操作,且使数据通过前台用户界面显示出来。
几天的实践活动使我认识到,开发一套系统,最重要的是细心,并不是一定要做到面面俱到,
但也要充分考虑到客户的需求和现实意义,不管什么系统,只用运用到实际应用中,才具有
现实意义。其次,在课外时间我们应该扩展自己的课外知识,多多阅读课外的相关书籍,或
者看网上的视频,这样会对我们的编程能力有一定的提高的。在最初连接数据库时出现了一
些问题便上网去搜索答案,看了以为高手上传的数据库连接方法的视频操作,顿时觉得自己
太 low了。在以后的时间里真的要好好用心啊......
很感谢张老师给了我们这一次,认识自我锻炼自我的机会!虽然课程实践有重复,但是每次
都能有不一样的收获。
六.参考文献
Java程序设计实用教程(第四版)电子工业出版社叶核亚
Java大学实用教程(第三版)电子工业出版社耿祥义
感谢阅读
多年企业管理咨询经验,专注为企业和个人提供精品
管理方案,企业诊断方案,制度参考模板等
欢迎您下载,均可自由编辑