职工档案管理系统教材.pdf
职工档案管理系统一一引言 1.1 项目背景和目标职工档案管理系统主要是对在校教师的个人基本信息以及教学信息进行管理,对教职工提供查询简介信息、教学信息功能;对管理员用户提供查询教师简介信息、查询教学信息、添加教师信息、修改教师信息、删除教师信息等功能。我们的目标就是为该系统提供后台连接MYSQL 数据库程序设计以及前台用户界面设计。1.2 项目的可行性研究设计此系统需要 java 面向对象编程基础,数据库应用知识以及功能分析。根据目前所开设的课程,学生已经具备这样的知识,有能力综合 java 编程知识和数据库应用知识做出一个这样的学生信息管理系统二二.需求分析 21 系统概述此系统提供给教职工用户和学校管理者,教职工登陆后可以对能自己基本信息进行查看,管理员登陆后能对教师的基本信息进行增删改操作。22 系统运行环境 Java 程序运行在 eclipse 软件上编译并且运行,数据库用MYSQL 数据库三三系统设计 31 开发与设计的总体思想教职工方面:教师通过自己的用户名和密码登录后,进入教师主界面,在这个主界面里,可以进行查询信息操作。学校管理员方面:管理员通过自己的密码登入后可以选择:查询功能、文件功能、修改功能。在查询功能里面,可以选择是查询教职工简介基本信息,还是查询教学信息。在查询教职工简介信息时,可以从依据不同字段,即简介表中的不同属性进行查找。在查找教学信息时,只能依据教师姓名进行查找。在修改功能里面,包括对教师简介信息表和教学表进行增加和删除记录 32 系统模块结构图职工档案管理系统管理员登录教职工登录教职工信息管理教职工教学信息帮助退出系统教职工信息修改教职工信息查询教职工简介信息教职工教学信息删除简介信息添加简介信息删除教学信息添加教学信息 33 数据库结构设计为了支持此职工档案管理系统,创建数据库 employeemanage,在这个数据库里包含四个表:worker 表,manager 表,employee 表和 teaching 表,它们的截图如下:在 worker 表中,有八个属性列,分别为:id(职工号),wname(姓名),sex(性别),age(年龄),degree(学历),worktime(参加工作时间),salary(工资),dept(院别)。其基本数据类型分别为:char,char,char,int,char,char,int,char.表 1 worker在 manager 表中,有两个属性列,分别为:mname(管理员姓名),password(密码)其基本数据类型分别为:char,char。当管理员登录系统时从此表获取数据,其截图如下:表 2 manager在 employee 表中,有两个属性列,分别为:wname(职工姓名),password(密码)其基本数据类型分别为:char,char。当教职工登录系统时从此表获取数据,其截图如下:表 3 employee在 teaching 表中,有七个属性列,分别为:id(职工号),wname(姓名),grade(年级),tmajor(教授专业),snum(学生人数),passrate(及格率),comment(教学总评)。其基本数据类型分别为:char,char,char,int,char,char,char。其截图如下:表 4 teaching 34 模块设计在整个系统主界面,可以选择登录方式,是教职工登录还是管理员登录。如果选择教职工,则进入教职工登录界面,在这个界面上要求输入教职工姓名和密码。输入后单击“确认登录”按钮,若密码正确,则转换到教职工教学信息查询页面,当输入教职工姓名后即可显示该名教职工的教学信息,若密码不正确,这提示密码错误。如果选择是管理员登录,则进入管理员登陆界面,在这个界面上输入管理员姓名和密码,输入后单击“教职工信息管理”按钮,则进入管理员主界面。在管理员主界面可以选择进行文件操作,查询操作还是修改操作。若要查询教职工简介信息,点击查询菜单项则进入教职工简介信息检索界面,在此界面的检索方式中选择要检索的数据属性,在检索内容框中输入检索的具体信息,例如,检索“姓名”字段时,要键入某个教职工的姓名。输入后,单击“检索”按钮,则开始对数据库中数据进行查询。如果数据库检索到所需信息,则生成列表显示检索结构,如果没有所需信息,则页面列表中显示为空。若要查询教职工教学信息,则点击教职工教学信息查询菜单项,进入教学查询界面。在此界面的文本框中输入要查询教学信息的教职工姓名,然后单击检索按钮。若数据库中有该教职工的教学信息,则生成列表显示教学信息,若没有此记录,则列表显示内容为空。如果管理员要对数据库中进行修改操作,则在管理员主界面上选择修改菜单项,在此项中,选择要修改的具体内容,总共有四项修改操作:添加教职工简介信息,删除教职工简介信息(这两个是对数据库中 worker 表的操作),添加教职工教学信息,删除教职工教学信息(这两个是对数据库中teaching 表的操作)。在添加信息操作中,按照标签提示一次输入要添加的记录值,输入完毕后,单击“添加”按钮,若输入成功,则提示成功,若输入失败,则提示失败。在删除信息操作中,输入要删除信息的教职工姓名,单击“删除”按钮,若删除成功,则提示成功,若删除失败则提示失败。以上就是该职工档案管理系统涉及的操作步骤。35 系统流程描述登录主界面教职工登录输No入有误Yes成功退出系统职工简介信息退出选择检索方式和数据Yes显示检索信息没有任何的输出Insertsuccessinsertsuccessdeletesuccessdeletesuccess成功显示教职工教学信息输入有误输入有误成功输入有误成功输入有误成功成功成功输入教职工姓名职工教学信息教职工信息查询添 加 教 职工 简 介 信息教职工信息修改添 加 教 职工 教 学 信息删 除 教 职工 简 介 信息删 除 教 职工 教 学 信息管理员登录输入有误帮助开始成功选择帮助简介信息查询教学信息管理录 入 添 加的 简 介 信息录 入 添 加的 教 学 信息输 入 要 删除 的 教 职工姓名输 入 要 删除 的 教 职工姓名四、系统实现DBconnection 类本系统所编写的程序保存在以下四个包中:connection 包,first 包,second 包,finally 包1.connection1.connection 包中的类:包中的类:(1 1)DBconnection 类:此类设置程序与数据库的连接,通过设置驱动类型和数据源来确定要连接的数据库。若连接成功,提示:connection success,若连接失败,提示:connection failureDBconnection 类源代码:packagepackage connection;importimport java.sql.Connection;importimport java.sql.DriverManager;importimport java.sql.SQLException;importimport finallys.TeachQuery;publicpublic classclass DBconnection publicpublic staticstatic voidvoid main(String args)newnew DBconnection();publicpublic staticstatic Connectioncon=nullnull;publicpublic staticstatic Connection getConnection()trytry String dbDriver=com.mysql.jdbc.Driver;Class.forName(dbDriver);System.out.println(Driver Suceess);catchcatch(ClassNotFoundException e)System.out.println(Driver not found);e.printStackTrace();trytry con=DriverManager.getConnection(jdbc:mysql:/localhost:3306/employeemanage,root,07031124 一八);System.out.println(Connection Suceess);catchcatch(SQLException e)System.out.println(Connetion failure);e.printStackTrace();returnreturncon;publicpublic staticstatic voidvoid closeConnection()ifif(con!=nullnull)trytry con.close();System.out.println(database close success);catchcatch(SQLException e)System.out.println(close failure);e.printStackTrace();2.first 包中的类:(1)Workerfirst 类:此类中有四个方法,managerLogin,addWorker,deleteWorker,queryworker,作用分别是控制管理员登陆系统,增加教职工基本信息,删除学生基本信息,查询教职工基本信息。managerLogin()方法中,有两个参数,分别传给 select 语句中的 mname(管理员姓名)和 password(登录密码),利用 select 语句在 employee 表中检索管理员登录信息。若存在此信息,返回 true,否则返回 falseaddWorker)方法中,有八个参数,分别传给 insert 语句中的 id(职工号),wname(教职工姓名),age(年龄),sex(性别),degree(学历),worktime(参加工作时间),salary(工资)和 dept(院别),利用 insert 语句向 worker 教职工信息简介表中插入记录。若插入成功,返回true,否则返回 falsedeleteWorker()方法中,有一个参数,传给 delete 语句中的 wname(教职工姓名),利用 delete 语句,把worker 表中相关教职工信息删除。若删除成功,返回true,否则返回 falsequeryWorker()方法中,有两个参数,分别传给select 语句中的 field(查找方式)和key(查找内容),利用 select 语句,从worker 表中检索教职工简介信息。若存在此信息,则返回一个 ArrayList 类的对象 lis(表格),否则,异常处理 Workerfirst 类源代码:packagepackage first;importimport java.sql.Connection;importimport java.sql.PreparedStatement;importimport java.sql.ResultSet;importimport java.sql.SQLException;importimport java.sql.Statement;importimport java.util.ArrayList;importimport second.Work;importimport connection.DBconnection;publicpublic classclass Workerfirst publicpublic booleanboolean managerLogin(String mname,String password)publicpublic booleanboolean addWorker(String id,String wname,String sex,intint age,StringConnection con=DBconnection.getConnection();PreparedStatement pst;trytry pst=con.prepareStatement(insert into workerDBconnection db=newnew DBconnection();Connection con=db.getConnection();booleanboolean isfound=falsefalse;PreparedStatement pst;trytry System.out.println(isfound);returnreturn isfound;pst=con.prepareStatement(select*from manager where mname=?andpst.setString(1,mname);ResultSet rs=pst.executeQuery();ifif(rs.next()isfound=truetrue;e.printStackTrace();password=?);pst.setString(2,password);catchcatch(SQLException e)degree,String worktime,intint salary,String dept)values(?,?,?,?,?,?,?,?);pst.setString(1,id);pst.setString(2,wname);pst.setString(3,sex);pst.setInt(4,age);pst.setString(5,degree);pst.setString(6,worktime);pst.setInt(7,salary);pst.setString(8,dept);intint count=pst.executeUpdate();/返回修改的记录数ifif(count=1)returnreturn truetrue;elseelsereturnreturn falsefalse;catchcatch(SQLException e)e.printStackTrace();returnreturn falsefalse;publicpublic ArrayList queryWorker(String field,String key)ArrayList lis=newnew ArrayList();Connection con=DBconnection.getConnection();Statement stm;trytry stm=con.createStatement();String sql=select*from worker where +field+like%+key+%;System.out.println(sql);ResultSet rs=stm.executeQuery(sql);whilewhile(rs.next()Work work=newnew Work(rs.getString(1),rs.getString(2),rs.getString(3),rs.getInt(4),rs.getString(5),rs.getString(6),rs.getInt(7),rs.getString(8);lis.add(work);catchcatch(SQLException e)e.printStackTrace();returnreturn lis;publicpublic booleanboolean deleteWorker(String key)(2)Employeefirst 类:此类中有一个方法:queryEmployee(),作用是控制教职工登陆 queryEmployee()方法中,有两个参数,分别传给 select 语句中的 wname(教职工姓名)和 password(登陆密码),利用 select 语句在 teacher 表中检索教师登陆信息。若存在此信息,返回true,否则返回 falseConnection con=DBconnection.getConnection();Statement stm;trytry returnreturn falsefalse;stm=con.createStatement();String sql=delete from worker where wname like%+key+%;System.out.println(sql);intint count=stm.executeUpdate(sql);ifif(count=1)returnreturn truetrue;returnreturn falsefalse;elseelse catchcatch(SQLException e)e.printStackTrace();Employeefirst类源代码:packagepackage first;importimport java.sql.Connection;importimport java.sql.PreparedStatement;importimport java.sql.ResultSet;importimport java.sql.SQLException;importimport java.sql.Statement;importimport connection.DBconnection;publicpublic classclass Employeefirst(3)Teaching 类:在该类中有四个方法queryTeaching,addTeaching,deleteTeaching作用分别是为教职工用户提供查询教学信息的功能,为管理者用户提供询教职工教学信息,添加教学信息,删除教学信息功能。queryTeaching()方法中,有一个参数,传给select 语句中的 wname(学生姓名),利用select 语句,查询教学信息表中的内容。若查询成功,则返回一个 ArrayList 类的对象 lis(表格),否则,异常处理addTeaching()方法中,有七个参数,分别传给insert 语句中的 id(职工号),wname(教职工姓名),grade(年级),tmajor(教学专业),snum(学生人数),passrate(及格率),comment(教学总评)。利用insert 语句,将这些记录写入 teaching 表中。若插入成功返回publicpublic booleanboolean queryEmployee(String wname,String password)publicpublic staticstatic voidvoid main(String args)DBconnection db=newnew DBconnection();Connection con=db.getConnection();booleanboolean isfound=falsefalse;PreparedStatement pst;trytry System.out.println(isfound);returnreturn isfound;pst=con.prepareStatement(select*from employee where wname=?andpst.setString(1,wname);ResultSet rs=pst.executeQuery();ifif(rs.next()isfound=truetrue;e.printStackTrace();password=?);pst.setString(2,password);catchcatch(SQLException e)true,否则返 回 falsedeleteTeaching()方法中,有一个参数,传给delete 语句中的 wname(教职工姓名),利用 delete 语句,把 steaching 表中相关教职工的教学信息删除。若删除成功,返回 true,否则返回 false Teaching 类源代码:packagepackage first;importimport java.sql.Connection;importimport java.sql.PreparedStatement;importimport java.sql.ResultSet;importimport java.sql.SQLException;importimport java.sql.Statement;importimport java.util.ArrayList;importimport finallys.ManagerDD;importimport second.Teaching;importimport second.Work;importimport connection.DBconnection;publicpublic classclass Teachingfirst whilewhile(rs.next()Teaching teach=newnew Teaching(rs.getString(1),rs.getString(2),rs.getString(3),rs.getString(4),trytry stm=con.createStatement();String sql=select*from teaching where wname like%+key+%;System.out.println(sql);ResultSet rs=stm.executeQuery(sql);publicpublic ArrayList queryTeaching(String key)ArrayList lis=newnew ArrayList();Connection con=DBconnection.getConnection();Statement stm;rs.getInt(5),rs.getString(6),rs.getString(7);lis.add(teach);catchcatch(SQLException e)returnreturn lis;e.printStackTrace();publicpublic ArrayList queryTeach(String key)publicpublic booleanboolean addTeaching(String id,String wname,String grade,Stringintint snum,String passrate,String comment)ArrayList lis=newnew ArrayList();Connection con=DBconnection.getConnection();Statement stm;trytry returnreturn lis;stm=con.createStatement();String sql=select*from teaching where wname like%+%;ManagerDD.st1System.out.println(sql);ResultSet rs=stm.executeQuery(sql);whilewhile(rs.next()e.printStackTrace();Teaching teach=newnew Teaching(rs.getString(1),rs.getString(2),rs.getString(3),rs.getString(4),rs.getInt(5),rs.getString(6),rs.getString(7);lis.add(teach);catchcatch(SQLException e)tmajor,Connection con=DBconnection.getConnection();PreparedStatement pst;trytry returnreturn falsefalse;pst=con.prepareStatement(insert into teachingpst.setString(1,id);pst.setString(2,wname);pst.setString(3,grade);pst.setString(4,tmajor);pst.setInt(5,snum);pst.setString(6,passrate);pst.setString(7,comment);intint count=pst.executeUpdate();/返回修改的记录数ifif(count=1)returnreturn truetrue;returnreturn falsefalse;elseelsevalues(?,?,?,?,?,?,?);catchcatch(SQLException e)e.printStackTrace();publicpublic booleanboolean deleteTeaching(String key)Connection con=DBconnection.getConnection();Statement stm;trytry returnreturn falsefalse;stm=con.createStatement();String sql=delete from teaching where wname like%+key+%System.out.println(sql);intint count=stm.executeUpdate(sql);ifif(count=1)returnreturn truetrue;returnreturn falsefalse;elseelse catchcatch(SQLException e)e.printStackTrace();3.second 包中的类:(1)Work 类:此类中有八个成员变量,String id;String wname;String sex;int age;String degree;String worktime;int salary;String dept,和十六个成员方法,类中分别获取和设置了这八个变量,即为worker 表中八个属性的属性名,每个变量都对应了 getXXX(),setXXX()方法,还有一个构造方法,用于在调用其对象时对成员变量赋值 Work 类源代码:packagepackage second;publicpublic classclass Work String id;String wname;String sex;intint age;String degree;String worktime;intint salary;String dept;publicpublic String getID()publicpublic voidvoid setID(String id)publicpublic String getWname()publicpublic voidvoid setWname(String wname)publicpublic String getSex()publicpublic voidvoid setSex(String sex)thisthis.sex=sex;returnreturn sex;thisthis.wname=wname;returnreturn wname;thisthis.id=id;returnreturn id;publicpublic intint getAge()publicpublic voidvoid setAge(intint age)publicpublic String getDegree()publicpublic voidvoid setDegree(String degree)publicpublic String getWorktime()publicpublic voidvoid setWorktime(String worktime)publicpublic intint getSalary()publicpublic voidvoid setSalary(intint salary)publicpublic String getDept()publicpublic voidvoid setDept(String dept)publicpublic Work(String id,String wname,String sex,intint age,String degree,String thisthis.dept=dept;returnreturn dept;thisthis.salary=salary;returnreturn salary;thisthis.worktime=worktime;returnreturn worktime;thisthis.degree=degree;returnreturn degree;thisthis.age=age;returnreturn age;worktime,intint salary,String dept)supersuper();thisthis.id=id;thisthis.wname=wname;thisthis.sex=sex;thisthis.age=age;thisthis.degree=degree;thisthis.worktime=worktime;thisthis.salary=salary;thisthis.dept=dept;(2)Teaching 类:此类中有七个成员变量,String id;String wname;String grade;Stringtmajor;int snum;String passrate;String comment,和十四个成员方法,类中分别获取和设置了这七个变量,即为teaching 表中七个属性的属性名,每个变量都对应了getXXX(),setXXX()方法,还有一个构造方法,用于在调用其对象时对成员变量赋值 Teaching 类源代码:packagepackage second;publicpublic classclass Teaching String id;String wname;String grade;intint snum;String tmajor;String passrate;String comment;publicpublic String getID()publicpublic voidvoid setID(String id)publicpublic String getWname()publicpublic voidvoid setWname(String wname)publicpublic String getGrade()returnreturn grade;thisthis.wname=wname;returnreturn wname;thisthis.id=id;returnreturn id;publicpublic voidvoid setGrade(String grade)publicpublic intint getSnum()publicpublic voidvoid setSnum(intint snum)publicpublic String getTmajor()publicpublic voidvoid setTmajor(String tmajor)publicpublic String getPassRate()publicpublic voidvoid setPassRate(String passrate)publicpublic String getComment()publicpublic voidvoid setComment(String comment)publicpublic Teaching(String id,String wname,String grade,String thisthisxment=comment;returnreturn comment;thisthis.passrate=passrate;returnreturn passrate;thisthis.grade=grade;returnreturn snum;thisthis.snum=snum;returnreturn tmajor;thisthis.tmajor=tmajor;tmajor,intint snum,String passrate,String comment)supersuper();thisthis.id=id;thisthis.wname=wname;thisthis.grade=grade;thisthis.tmajor=tmajor;thisthis.snum=snum;thisthis.passrate=passrate;thisthisxment=comment;4.finally 包中的类:(1)LoginDD 类:此类为登陆主界面类,在这个界面上,设置有两个按钮,教职工按钮和管理员按钮。给这两个按钮注册事件addActionListener,分别在内部类TeacherLoginActionListene和 StudentLoginActionListener中的默认方法actionPerformed()中创建EmployeeDD 类和 ManagerDD 类的对象,即打开教职工登陆界面和管理员登录界面,并将原登陆界面关闭。LoginDD 类源代码:packagepackage finallys;importimport java.awt.*;importimport java.awt.event.*;importimport javax.swing.*;publicpublic classclass LoginDD extendsextends JFramepublicpublic LoginDD()l1=newnew JLabel(请选择用户类型);bt1=newnew JButton(教职工);bt2=newnew JButton(管理员);JPanel p1=newnew JPanel();p1.setLayout(nullnull);l1.setBounds(一五 0,一五 0,120,40);p1.add(l1);bt1.setBounds(120,230,80,30);p1.add(bt1);bt2.setBounds(220,230,80,30);p1.add(bt2);bt1.addActionListener(newnew TeacherLoginActionListener();/注册事件bt2.addActionListener(newnew StudentLoginActionListener();/注册事件cp=getContentPane();thisthis.setBounds(200,200,p1.getHeight(),p1.getHeight();cp.add(p1);thisthis.setTitle(用户登录界面);thisthis.setSize(400,400);JLabel l1;JButton bt1,bt2;Container cp;thisthis.setVisible(truetrue);thisthis.addWindowListener(newnew WindowAdapter