雇员管理系统(Jsp+DAO)

2023-10-13 13:50
文章标签 管理系统 jsp dao 雇员

本文主要是介绍雇员管理系统(Jsp+DAO),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

项目要求:

1、使用JSP+DAO开发模式完成一个简单的雇员管理系统。系统主要功能如下:

  • 登录验证:用户通过验证用户名密码进入后台管理界面
  • 雇员列表:后台管理首页是雇员列表展示页面,并可以通过雇员编号、姓名等关键词查询出符合条件的雇员记录
  • 添加雇员:新增雇员必填信息包括雇员编号、姓名,编号必须唯一;
  • 编辑雇员:编辑雇员资料,必须确保编号唯一,姓名不能为空。

具体功能模块样式可以参照提供的项目原型

2、相关数据结构,数据库采用mysql。

序号

字段名

中文名

类型

是否为空

备注

1

empno

雇员编号

varchar(10)

2

ename

雇员姓名

varchar(20)

3

hiredate

雇佣日期

date

4

job

工作

varchar(20)

5

sal

工资

double

小数点保留2位

3、按照DAO的方式完成后端代码开发,定义VO类,DatabaseConnection.java类,定义DAO操作标准和代理主题实现类和DAO工厂类

完成思路:

1.页面设计:对于页面暂时不适用css等进行优化,使用html表单即可.

2.设计开发项目目录

2.组成部件:数据库(利用可视化界面或者后台新建表单),设计VO类(雇员,登录用户),设计DAO接口以及实现,工厂类

完整工程文件: Employee_system

  • 实验步骤和结果

1.建表emp : mysql navcat中显示的表信息

2.建立项目相关夹:在WebContent下建立jsp文件夹,在JavaResources 下建立各包

3.先写javaBean信息,dao工具类,再写jsp内容

4.调试

运行结果:

1.登录界面

1*.登录失败时

2.雇员信息管理界面

3.添加雇员

添加成功

4.更新雇员信息 (与注册添加雇员一样的界面,但是通过超链接跳转传,会在文本框内显示修改的雇员信息)

部分代码:

2.Connection conn = null; JDBC连接数据库驱动.声明数据库连接对象

DatabaseConnection.java (封装数据库连接类)

package dbc;import java.sql.Connection;
import java.sql.DriverManager;//数据库连接类
public class DatabaseConnection {private static final String DBDRIVER = "";private static final String DBURL = "";private static final String DBUSER = "";private static final String DBPASSWORD= "";private Connection conn = null;//构造方法中进行数据连接public DatabaseConnection() throws Exception{try{//Class.forName 方法的作用,就是初始化给定的类Class.forName(DBDRIVER);//加载驱动程序this.conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);			}catch(Exception e){throw e;}}public Connection getConnection(){return this.conn;}public void close () throws Exception{if(this.conn!=null){try{this.conn.close();}catch(Exception e){throw e;}	}}
}

3.Emp.java (VO类) 

玩转Eclipse — 自动生成setter和getter方法_懒,是我追求的美德-CSDN博客_eclipse getter setter快捷键 快速设置setter , getter 方法

使用快捷键Alt + Shift + S,再按R键(你Eclipse中的快捷键可能不同),或者右键选择Source -> Generate Getters and Setters...

package com.tt.vo;import java.util.Date;public class Emp {private int empno;private String ename;private String job;private Date hiredate;private float sal;public int getEmpno() {return empno;}public void setEmpno(int empno) {this.empno = empno;}public String getEname() {return ename;}public void setEname(String ename) {this.ename = ename;}public String getJob() {return job;}public void setJob(String job) {this.job = job;}public Date getHiredate() {return hiredate;}public void setHiredate(Date hiredate) {this.hiredate = hiredate;}public float getSal() {return sal;}public void setSal(float sal) {this.sal = sal;}
}

4.dao : 设计DAO操作接口

package com.tt.dao;import java.util.List;import com.tt.vo.Emp;public interface IEmpDAO {public boolean doCreate (Emp emp) throws Exception; //查询全部数据public List<Emp> findAll(String keyWord) throws Exception;//按照雇员的编号查询数据public Emp findByld (int empno) throws Exception;//更新职工信息public boolean updateInfo (Emp emp) throws Exception; 
}

真实主题实现DAO

package com.tt.dao;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;import com.tt.vo.Emp;public class EmpDAOImpl implements IEmpDAO{private Connection conn = null;//连接对象private PreparedStatement pstmt = null;//数据库操作对象//构造方式去得连接public EmpDAOImpl(Connection conn){this.conn = conn;}public boolean doCreate (Emp emp) throws Exception{boolean flag = false;//插入的sql语句String sql = "INSERT INTO emp(empno,ename,job,hiredate,sal) VALUES (?,?,?,?,?)";//实例化pstmt对象this.pstmt = this.conn.prepareStatement(sql);//pstmt的设置方法:通过传入emp 对象来获取对象信息this.pstmt.setInt(1,emp.getEmpno());this.pstmt.setString(2,emp.getEname());this.pstmt.setString(3,emp.getJob());this.pstmt.setDate(4,new java.sql.Date(emp.getHiredate().getTime()));this.pstmt.setFloat(5,emp.getSal());//执行操作次数if(this.pstmt.executeUpdate()>0){flag = true;}//执行对象关闭this.pstmt.close();return flag;}public boolean updateInfo (Emp emp) throws Exception{boolean flag = false;int count = 0;//sql的更新语句String sql = "update emp set empno='"+emp.getEmpno()+"'job'"+emp.getJob()+"'hiredate'"+emp.getHiredate().getTime()+"'sal'"+emp.getSal()+"where ename="+emp.getEname();try {System.out.println("准备更新 id 为 "+emp.getEname()+"的记录...");Statement st = this.conn.createStatement();count = st.executeUpdate(sql);if (count != 0) {System.out.print("更新成功!!! ");} else {System.out.print("update error!!! ");}} catch (SQLException e) {e.printStackTrace();} finally {}if(count != 0) return true;else return false;}//查询全部数据:;利用list存储返回对象public List<Emp> findAll(String keyWord) throws Exception{List<Emp> all = new ArrayList<Emp>();String sql = "SELECT empno,ename,job,hiredate,sal FROM emp WHERE ename LIKE ? OR job LIKE ?";this.pstmt = this.conn.prepareStatement(sql);this.pstmt.setString(1,"%"+keyWord+"%");//设置查找关键字this.pstmt.setString(2,"%"+keyWord+"%");ResultSet rs = this.pstmt.executeQuery();Emp emp= null;while(rs.next()){emp = new Emp();//get类型+对象序号emp.setEmpno(rs.getInt(1));emp.setEname(rs.getString(2));emp.setJob(rs.getString(3));emp.setHiredate(rs.getDate(4));emp.setSal(rs.getFloat(5));all.add(emp);}//关闭连接对象this.pstmt.close();//返回所有对象return all;}//按照雇员的编号获取对象信息public Emp findByld (int empno) throws Exception{Emp emp = null;String sql = "SELECT empno,ename,job,hiredate,sal FROM emp WHERE empno = ?";this.pstmt = this.conn.prepareStatement(sql);this.pstmt.setInt(1,empno);ResultSet rs = this.pstmt.executeQuery();while(rs.next()){emp = new Emp();emp.setEmpno(rs.getInt(1));emp.setEname(rs.getString(2));emp.setJob(rs.getString(3));emp.setHiredate(rs.getDate(4));emp.setSal(rs.getFloat(5));	}this.pstmt.close();return emp;}
}

代理类(未写完):

package com.tt.dao;import java.sql.Connection;
import java.text.SimpleDateFormat;
import java.util.List;import com.tt.vo.Emp;
import com.util.dbc.DatabaseConnection;public class EmpDAOProxy implements IEmpDAO {//数据库连接类(工具类)private DatabaseConnection dbc = null;//真实DAO对象private IEmpDAO dao = null;private Connection conn = null;//连接对象//构造方法中实例化对象public EmpDAOProxy() throws Exception{this.dbc = new DatabaseConnection();//传入或得的conn对象this.dao = new EmpDAOImpl(this.dbc.getConnection());}public boolean doCreate (Emp emp) throws Exception{boolean flag = false;try {if(this.dao.findByld(emp.getEmpno())==null) {flag = this.dao.doCreate(emp);}}catch(Exception e) {throw e;}finally {this.dbc.close();}return flag;}//查询全部数据:;利用list存储返回对象public List<Emp> findAll(String keyWord) throws Exception{List<Emp>all = null;try {all = this.dao.findAll(keyWord);}catch (Exception e){throw e;}finally {this.dbc.close();}return all;}//按照雇员的编号获取对象信息public Emp findByld (int empno) throws Exception{Emp emp = null;try {emp = this.dao.findByld(empno);} catch(Exception e) {throw e;}finally {this.dbc.close();}return emp;}public boolean updateInfo (Emp emp) throws Exception{boolean flag = false;try {if(this.dao.findByld(emp.getEmpno())==null) {flag = this.dao.updateInfo(emp);}}catch(Exception e) {throw e;}finally {this.dbc.close();}return flag;}
}

代理工厂:

package factory;import dao.EmpDAOProxy;
import dao.IEmpDAO;public class DAOFactory {public static IEmpDAO getIEmpDAOInstance () throws Exception{return new EmpDAOProxy();}
}

总结:

对数据库的操作流程:

通过 DAOFactory 创建 EmpDAOProxy (代理类) 获得 IEmpDAO 接口功能

EmpDAOProxy 通过利用 DatabaseConnection 取得数据库连接,传入 实例化 IEmpDAO(真实操作类),并通过真实类进行操作数据库.

IEmpDAO (真实类)通过定义 Connection(连接类),PreparedStatement(操作类),ResultSet (获取结果类)来操作返回 Emp 对象

最后页面通过取得 Emp 数据来进行输出.

源代码:

下载链接:

这篇关于雇员管理系统(Jsp+DAO)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/203656

相关文章

Vue3项目开发——新闻发布管理系统(六)

文章目录 八、首页设计开发1、页面设计2、登录访问拦截实现3、用户基本信息显示①封装用户基本信息获取接口②用户基本信息存储③用户基本信息调用④用户基本信息动态渲染 4、退出功能实现①注册点击事件②添加退出功能③数据清理 5、代码下载 八、首页设计开发 登录成功后,系统就进入了首页。接下来,也就进行首页的开发了。 1、页面设计 系统页面主要分为三部分,左侧为系统的菜单栏,右侧

工厂ERP管理系统实现源码(JAVA)

工厂进销存管理系统是一个集采购管理、仓库管理、生产管理和销售管理于一体的综合解决方案。该系统旨在帮助企业优化流程、提高效率、降低成本,并实时掌握各环节的运营状况。 在采购管理方面,系统能够处理采购订单、供应商管理和采购入库等流程,确保采购过程的透明和高效。仓库管理方面,实现库存的精准管理,包括入库、出库、盘点等操作,确保库存数据的准确性和实时性。 生产管理模块则涵盖了生产计划制定、物料需求计划、

STL经典案例(四)——实验室预约综合管理系统(项目涉及知识点很全面,内容有点多,耐心看完会有收获的!)

项目干货满满,内容有点过多,看起来可能会有点卡。系统提示读完超过俩小时,建议分多篇发布,我觉得分篇就不完整了,失去了这个项目的灵魂 一、需求分析 高校实验室预约管理系统包括三种不同身份:管理员、实验室教师、学生 管理员:给学生和实验室教师创建账号并分发 实验室教师:审核学生的预约申请 学生:申请使用实验室 高校实验室包括:超景深实验室(可容纳10人)、大数据实验室(可容纳20人)、物联网实验

使用Spring Boot集成Spring Data JPA和单例模式构建库存管理系统

引言 在企业级应用开发中,数据库操作是非常重要的一环。Spring Data JPA提供了一种简化的方式来进行数据库交互,它使得开发者无需编写复杂的JPA代码就可以完成常见的CRUD操作。此外,设计模式如单例模式可以帮助我们更好地管理和控制对象的创建过程,从而提高系统的性能和可维护性。本文将展示如何结合Spring Boot、Spring Data JPA以及单例模式来构建一个基本的库存管理系统

【干货分享】基于SSM的体育场管理系统的开题报告(附源码下载地址)

中秋送好礼 中秋佳节将至,祝福大家中秋快乐,阖家幸福。本期免费分享毕业设计作品:《基于SSM的体育场管理系统》。 基于SSM的体育场管理系统的开题报告 一、课题背景与意义 随着全民健身理念的深入人心,体育场已成为广大师生和社区居民进行体育锻炼的重要场所。然而,传统的体育场管理方式存在诸多问题,如资源分配不均、预约流程繁琐、数据统计不准确等,严重影响了体育场的使用效率和用户体验。

基于SSM+Vue+MySQL的可视化高校公寓管理系统

系统展示 管理员界面 宿管界面 学生界面 系统背景   当前社会各行业领域竞争压力非常大,随着当前时代的信息化,科学化发展,让社会各行业领域都争相使用新的信息技术,对行业内的各种相关数据进行科学化,规范化管理。这样的大环境让那些止步不前,不接受信息改革带来的信息技术的企业随时面临被淘汰,被取代的风险。所以当今,各个行业领域,不管是传统的教育行业

图书管理系统系统分享

分享一个图书管理系统,Java、SpringBoot、Vue和MySQL开发的图书馆管理系统 gitee项目地址:https://gitee.com/yuanmomoya/open-source-project/tree/master/books-management-system GitHub项目地址:https://github.com/yuanmomoya/open-source-pro

基于springboot+vue+uniapp的“共享书角”图书借还管理系统小程序

开发语言:Java框架:springboot+uniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9 系统展示 后台登录界面 管理员功能界面 出借者管理 图书信息管理 图书归还管理 出租收入管理

JSP 简单表单显示例子

<html><!--http://localhost:8080/test_jsp/input.html --><head><meta http-equiv="Content-Type" content="text/HTML; charset=utf-8"><title>input页面</title></head><body><form action="input.jsp" method

2025届计算机毕业设计:如何构建Java SpringBoot+Vue个人健康档案管理系统?

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 | SpringBoot/SSM Python实战项目 | Django 微信小程序/安卓实战项目 大数据实战项目 ⚡⚡文末获取源码 文章目录