资源描述
软件开发生产
实习报告
姓名
学号
班级
项目名称
人事管理系统
实习地点
光谷软件园
实习时间
2023.7.4-2023.7.15
实习成绩
指导教师签字
信息科学与工程学院
2023 年 7 月 15 日
软件开发生产实习报告
1. 实习目的
1.1使学生全面了解软件项目实行的过程,理解软件公司对于程序员的基本素质和技术能力规定。
1.2使学生掌握JSP及Servlet基本的JavaEE编程技术,可以综合运用oracle数据库及Eclipse开发环境进行小型项目的开发。
1.3重点培养学生的团队精神和协作意识,提高其口头和书面的沟通能力。
1.4使学生掌握快速学习新知识、新技术方法,培养良好的分析问题和解决问题的能力
1.5重点提高学生的编程能力,使学生建立对的的编程理念,养成规范的编程习惯。
2.实习过程
2.1 技术准备
2.1.1 JDBC(Java数据库连接)技术
Java数据库连接是java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。本次程序运用该技术连接到oracle数据库,实现数据的更新,删除,插入。
2.1.2 JSP技术
JSP其主线是一个简化的Servlet技术,它是传统的网页HTML文献中插入java程序段。本次程序运用JSP技术实现其动态跳转。
2.1.3 用到的相关软件
(1) jdk(运营环境):安装好jdk后,设立好环境变量。
(2) Tomcat:进行相应的配置。
(3) Eclipse J2EE(开发环境):启动开发环境,然后配置好之前安装好的jdk。
(4) Oracle数据库(10G):运营安装程序,设立兼容性,以管理员身份运营,设立密码;安装完毕后检查服务,拟定以下两个服务:
OracleOraDb10g_home1TNSListener 监听服务
OracleServiceORCL(服务名称ORCL)核心服务
这两个服务必须为启动状态。
2.2 项目实行
2.2.1 功能需求
管理员登录
组织管理
系统管理
部门管理
岗位管理
设立关系
功能名称
备注
裁剪说明
部门管理
重要用于部门的管理,描述人事管理系统中的部门信息,其中也包含了部门的上下级关系。部门管理包含对部门信息的查询,以及添加部门;查询部门时可对部门信息进行修改和删除操作。
不可裁剪
岗位管理
重要用于岗位的管理,描述人事管理系统中的岗位信息。岗位管理包含对岗位信息的查询,以及添加新的岗位;查询岗位时可以岗位信息进行修改和删除操作,
岗位管理
系统管理
重要用于管理员的管理,描述人事管理系统中的信息。管理员登录进入系统后,通过系统管理查询管理员的信息,以及添加新的管理员,但不可删除或更改管理员的信息。
不可裁剪
设立关系
重要用于将各个不同的岗位归到相应的部门,便于管理。
不可裁剪
2.2.1.1 部门管理
需求描述
功 能 需 求
功能名称
部门管理
优先级
高
业务背景
部门是构成一个组织的基本单位。部门管理用于维护部门的基本信息,以及体现整个系统中部门之间的上下级关系,尚有该部门的类型级别是公司还是部门。
功能说明
1. 添加部门
2. 修改部门信息
3. 删除部门
约束条件
系统规定部门的编号唯一。
相关查询
查询部门列表,点击部门查询出现所有的部门信息
其他需求
无
裁剪说明
不可裁剪
流程描述
开始
登录
部门管理
新
建
部
门
修
改
部
门
删
除
部
门
查
询
部
门
结束
数据描述
部门基本信息
名称
描述
是否必添
编号
是
部门名称
是
类型
(下拉框)分为公司、部门
是
电话
是
传真
是
描述
是
上级部门
(下拉框)分为各个部门,总经办和总公司
是
成立日期
是
2.2.1.2 岗位管理
需求描述
功 能 需 求
功能名称
岗位管理
优先级
高
业务背景
岗位是指一个组织中由特定人员所承担的多种职责的集合,一般来讲岗位相应到了特定的部门。但为了简化实训项目,裁剪了岗位与部门之间的关系。本功能就是对各岗位进行管理,涉及增长、修改、删除岗位,以及查询岗位下的员工等。
功能说明
1. 增长岗位
2. 修改岗位
3.删除岗位
约束条件
无
相关查询
查询岗位信息,涉及编号,名称,类型,所属部门以及该岗位最大限制多少人。
其他需求
无
裁剪说明
不可裁剪
流程描述
开始
登录
岗位管理
新
建
岗
位
修
改
岗
位
删
除
岗
位
查
询
岗
位
结束
数据描述
岗位基本信息
名称
描述
是否必添
岗位编号
是
岗位名称
是
类型
(下拉框)分为管理,技术,营销,市场等;
是
岗位编制限制
岗位上最多可配置多少员工
是
所属部门
(下拉框)分为行政部,生产部,销售部,技术部,财务部等。
是
备注1
否
备注2
否
备注3
否
2.2.1.3 系统管理
需求描述
功 能 需 求
功能名称
系统管理
优先级
低
业务背景
管理管理员相关的信息
功能说明
1、添加管理员
2、查询管理员
3、退出登录
约束条件
无
相关查询
管理员编号、姓名等
其他需求
无
裁剪说明
不可裁剪。
流程描述开始
登录
系统管理
添加
管
理
员
退
出
登
录
查询
管
理
员
结束
数据描述
管理员基本信息
名称
描述
是否必添
编号
是
名称
是
登录密码
是
所属部门
否
电话
否
入职日期
否
2.2.1.3 设立关系
需求描述
功 能 需 求
功能名称
设立关系
优先级
低
业务背景
每个部门中有不同的岗位
功能说明
将不同的岗位保存到相应的部门
约束条件
无
相关查询
可通过查询岗位信息来查询该岗位的所属部门
其他需求
无
裁剪说明
不可裁剪。
2.2.2 总体设计
本次人事管理系统规定完毕管理员的登录,添加管理员以及查询管理员信息,部门信息的查询,部门的添加,部门信息的删除和修改,岗位信息的查询,岗位的添加,岗位信息得到删除和修改以及岗位和部门之间的关系设立。因此该系统除了基本的部门类,管理员类,岗位类等以外重要的就是对他们的操作类,重要如下:
开始
管理员登录
组织管理
系统管理
部门管理
新建部门
修改部门
删除部门
查询部门
岗位管理
新建岗位
修改岗位
删除岗位
查询岗位
设立关系
系统管理
添加管理员
查询管理员
退出登录
结束
人事管理系统
模块名称
功能简述
系统管理模块
1、 管理员登录类(ManagerServlet)
2、 查询管理员信息类(ManagerSelectServlet)
3、 添加管理员信息类(ManagerAddServlet)
部门管理模块
1、 查询部门信息类(SkdeptSelectServlet)
2、 修改部门信息类(SkdeptModifyServlet)
3、 删除部门信息类(SkdeptDeleteServlet)
4、 添加部门类(SkdeptAddServlet)
岗位管理模块
1、查询岗位信息类(SkjobSelectServlet)
2、修改岗位信息类(SkjobModifyServlet)
3、删除岗位信息类(SkjobDeleteServlet)
4、添加岗位类(SkjobAddServlet)
设立关系模块
1、 添加关系类(AddSkdeptSkjob)
2、 添加关系类2(AddSkdeptSkjob2)
2.2.3 具体设计与编码
2.2.3.1系统管理模块
(1)管理员登录
模块名称
管理员登录:ManagerServlet
功能描述
管理员输入账户密码登进人事管理系统
数据结构
与算法
package com.servlet;
import java.io.IOException;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.dao.ManagerDao;
import com.model.Manager;
public class ManagerServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
String name=req.getParameter("yonghuming");
String password=req.getParameter("password");
ManagerDao sd=new ManagerDao();
HttpSession session=req.getSession();
try {
Manager stu=sd.login(name,password);
if(stu==null)
{
session.setAttribute("errorMsg", "用户名或密码错误!");
session.setAttribute("redirectUrl", "login.html");
req.getRequestDispatcher("error.jsp").forward(req, resp);
}
else
{
session.setAttribute("userInfo",stu);
resp.sendRedirect("index.html");
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
补充说明
(2)查询管理员信息
模块名称
查询管理员:ManagerSelectServlet
功能描述
查询管理员的基本信息
数据结构
与算法
package com.servlet;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.dao.ManagerDao;
import com.model.Manager;
public class ManagerSelectServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
ManagerDao sd=new ManagerDao();
try{
List<Manager> list=sd.find(); req.getSession().setAttribute("ManagerList",list);
req.getRequestDispatcher("ManagerList.jsp").forward(req, resp);
}catch (SQLException e)
{
e.printStackTrace();
}
}
}
补充说明
(3)添加管理员
模块名称
添加管理员:ManagerAddServlet
功能描述
添加新的管理员
数据结构
与算法
package com.servlet;
import java.io.IOException;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.dao.ManagerDao;
import com.model.Manager;
public class ManagerAddServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
req.setCharacterEncoding("utf-8");
String name=req.getParameter("name");
String password=req.getParameter("pass");
Manager man=new Manager();
req.setCharacterEncoding("utf-8");
req.setCharacterEncoding("utf-8");
man.setName(name);
man.setPassword(password);
ManagerDao d=new ManagerDao();
int count;
try {
count=d.AddManager(man);
if(count>=1)
{
req.getRequestDispatcher("addmanager.html").forward(req, resp);
}
else
{
HttpSession session=req.getSession();
session.setAttribute("errorMsg", "添加失败");
session.setAttribute("redirectUrl", "addmanager");
req.getRequestDispatcher("error.jsp").forward(req, resp);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
补充说明
2.2.3.2部门管理模块
(1)查询部门信息
模块名称
查询部门:SkdeptSelectServlet
功能描述
查询部门的基本信息
数据结构
与算法
package com.servlet;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.dao.SkdeptDao;
import com.model.Skdept;
public class SkdeptSelectServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
SkdeptDao sd=new SkdeptDao();
try{
List<Skdept> list=sd.find(); req.getSession().setAttribute("SkdeptList",list);
req.getRequestDispatcher("SkdeptList.jsp").forward(req, resp);
}catch (SQLException e)
{
e.printStackTrace();
}
}
}
补充说明
(2)修改部门信息
模块名称
修改部门:SkdeptModifyServlet
功能描述
当发现部门的信息有误时,可进行修改
数据结构
与算法
package com.servlet;
import java.io.IOException;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.dao.SkdeptDao;
import com.model.Skdept;
public class SkdeptModifyServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req,resp);
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
String id=req.getParameter("id");
String name=req.getParameter("name");
String type=req.getParameter("type");
String tele=req.getParameter("tele");
String fax=req.getParameter("fax");
String discrip=req.getParameter("discrip");
String skdsuper=req.getParameter("skdsuper");
String createtime=req.getParameter("createtime");
Skdept skd=new Skdept();
skd.setId(Integer.parseInt(id));
skd.setName(name);
skd.setType(type);
skd.setTele(Long.parseLong(tele));
skd.setFax(fax);
skd.setDiscrip(discrip);
skd.setSkdsuper(skdsuper);
skd.setCreatetime(createtime);
SkdeptDao sd=new SkdeptDao();
try {
int count=sd.update(skd);
if(count>=1)
{
//修改成功req.getRequestDispatcher("select").forward(req, resp);
}
else
{
//修改失败解决
HttpSession session=req.getSession();
session.setAttribute("errorMsg", "修改失败!");
session.setAttribute("redirectUrl", "select");
req.getRequestDispatcher("error.jsp").forward(req, resp);
}
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
补充说明
(3)删除部门信息
模块名称
删除部门:SkdeptDeleteServlet
功能描述
将部门删除
数据结构
与算法
package com.servlet;
import java.io.IOException;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.dao.SkdeptDao;
public class SkdeptDeleteServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req,resp);
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
String id=req.getParameter("id");
SkdeptDao sd=new SkdeptDao();
try {
int count=sd.delete(Integer.parseInt(id));
if(count>=1)
{
//删除成功
req.getRequestDispatcher("select").forward(req, resp);
}
else
{
//删除失败解决
HttpSession session=req.getSession();
session.setAttribute("errorMsg", "删除失败!");
session.setAttribute("redirectUrl", "select")req.getRequestDispatcher("error.jsp").forward(req, resp);
}
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
补充说明
(4)添加部门
模块名称
添加部门:SkdeptAddServlet
功能描述
添加新的部门
数据结构
与算法
package com.servlet;
import java.io.IOException;
import java.sql.SQLException;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.dao.SkdeptDao;
import com.model.Skdept;
public class SkdeptAddServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
req.setCharacterEncoding("utf-8");
try {
String name=req.getParameter("name");
String type=req.getParameter("type");
String tele=req.getParameter("tele");
String fax=req.getParameter("fax");
String discrip=req.getParameter("discrip");
String skdsuper=req.getParameter("super");
String createtime=req.getParameter("createtime");
Skdept skd=new Skdept();
req.setCharacterEncoding("utf-8");
req.setCharacterEncoding("utf-8");
skd.setName(name);
skd.setType(type);
skd.setTele(Long.parseLong(tele));
skd.setFax(fax);
skd.setDiscrip(discrip);
skd.setSkdsuper(skdsuper);
skd.setCreatetime(createtime);
SkdeptDao d=new SkdeptDao();
int count;
count=d.AddSkdept(skd);
if(count>=1)
{ req.getRequestDispatcher("sec1.html").forward(req, resp);
}
else
{
HttpSession session=req.getSession();
session.setAttribute("errorMsg", "添加失败");
session.setAttribute("redirectUrl", "sec1.html");
req.getRequestDispatcher("error.jsp").forward(req, resp);
}
} catch (Exception e) {
e.printStackTrace();
HttpSession session=req.getSession();
session.setAttribute("errorMsg", "添加失败");
session.setAttribute("redirectUrl", "adddept.html");
req.getRequestDispatcher("error.jsp").forward(req, resp);
}
}
}
补充说明
2.2.3.3岗位管理模块
(1)查询岗位信息
模块名称
查询岗位:SkjobSelectServlet
功能描述
查询岗位的基本信息
数据结构
与算法
package com.servlet;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.dao.SkjobDao;
import com.model.Skjob;
public class SkjobSelectServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
SkjobDao sd=new SkjobDao();
try{
List<Skjob>
展开阅读全文