" 实训成绩 | |
批阅教师 | |
日 期 |
实 训 报 告
课程名称 Java EE 项目实训
专业班级
学 号
学生姓名
指导教师
实训地点
2013 年 11 月 24 日 |
目录
1项目编写背景 2
1.1 系统名称 2
2软件运行环境以及技术约束 2
2.1软件约束 2
2.2硬件约束 2
Windows 2000及以上 2
3参考文档 2
4用例清单 3
5管理员登陆 3
5.1用户登陆 3
5.2验证码 5
6员工信息管理模块 5
6.1用例图 6
6.2员工信息管理功 6
6.2.1员工信息浏览 6
6.2.2删除员工信息 7
6.2.3增加员工信息 8
6.2.4修改员工信息 9
1项目编写背景
1.1系统名称
员工信息管理系统
系统用户负责此系统管理的系统管理员,使用此系统的企业工作人员;
本项目的目的是运用servlet来实现员工信息的管理,主要完成员工大量的基本信息管理,包括员工信息的录入,员工信息的删除,员工信息的修改,主要目的是协助管理人员管理员工的大量信息,将大量分散的信息统一集中到数据库中。
员工信息管理系统是一个web应用形式(B/S),可以通过互联网进行访问。
2软件运行环境以及技术约束
2.1软件约束
员工信息管理系统采用Java技术进行开发。开发及运行的软件环境为:
Java开发包JDK:jdk1.7.0_10-windows版
应用服务器Tomcat:apache-tomcat-7.0.18
数据库:Oracle
运用技术:Servlet
开发工具:myeclipse
2.2硬件约束
Windows 2000及以上
3参考文档
《企业薪酬管理系统》作者:王晶。
《面向对象系统分析与设计》 清华大学出版社
4用例清单
编号 | 模块 | 用例定义 | 用例描述 | 重要程度 |
1 | 员工信息管理 | 员工信息浏览 | 查看所有的员工列表 | A |
查询员工信息 | 根据查询条件查询员工信息 | A | ||
删除员工信息 | 删除员工信息 | A | ||
增加员工信息 | 增加新的员工信息 | A | ||
修改员工信息 | 修改某员工的信息 | A | ||
2 | 管理员登陆 | 用户登陆 | 用户登陆页面 | A |
此模块主要实现管理员登陆,根据登陆名和密码登陆用户。
需求描述:管理员登录系统可对员工信息进行管理。
1-1 进入登陆页面login.jsp,如图所示;
1-2 用户输入用户名、密码和正确的验证码,点击“提交”按钮。
1-3 用户进入系统。
关键代码:
5.1用户登陆
conn = DBUtil.getConnection();
prep = conn.prepareStatement("select * from user_tt where username=?");
prep.setString(1, username);
rst = prep.executeQuery();
if(rst.next()){
user = new User();
user.setUsername(username);
user.setPwd(rst.getString("pwd"));
user.setName(rst.getString("name"));
user.setGender(rst.getString("gender"));
user.setId(rst.getInt("id"));
}
String number1 = request.getParameter("number");
HttpSession session = request.getSession();
String number2 = (String)session.getAttribute("number");
if(!number1.equalsIgnoreCase(number2)){
request.setAttribute("number_error", "验证码错误");
request.getRequestDispatcher("login.jsp").forward(request, response);
return;
}
String username = request.getParameter("username");
String pwd = request.getParameter("pwd");
try {
UserDAO dao = (UserDAO)Factory.getInstance("UserDAO");
User user = dao.findByUsername(username);
if(user != null && user.getPwd().equals(pwd)){
session.setAttribute("user", user);
response.sendRedirect("main.jsp");
}else{
request.setAttribute("login_error用户名或密码错误");
request.getRequestDispatcher("login.jsp").forward(request, response);
}
} catch (Exception e) {
e.printStackTrace();
throw new ServletException(e);
}
5.2验证码
BufferedImage image = new BufferedImage(width,height,BufferedImage. TYPE_INT_RGB);
Graphics g = image.getGraphics();
Random r = new Random();
g.setColor(new Color(r.nextInt(255),r.nextInt(255),r.nextInt(255)));
g.fillRect(0, 0, width, height);
String number = getNumber(5);
HttpSession session = request.getSession();
session.setAttribute("number", number);
g.setColor(new Color(0,0,0));
g.setFont(new Font(null,Font.ITALIC|Font.BOLD,20));
g.drawString(number, 5, 22);
for(int i=0;i<8;i++){
g.setColor(new Color(r.nextInt(255),r.nextInt(255),r.nextInt(255)));
g.drawLine(r.nextInt(width), r.nextInt(height), r.nextInt(width), r.nextInt(height));
}
response.setContentType("image/jpeg");
OutputStream ops = response.getOutputStream();
javax.imageio.ImageIO.write(image, "jpeg", ops);
6员工信息管理模块
此模块主要完成员工信息的管理,包括员工就职,离职等几个字模块,此功能模块的主要给管理员对公司的部门进行分类统计。
6.1用例图
6.2员工信息管理功
6.2.1员工信息浏览
需求编号:1
需求描述:管理员登录系统后,可以通过查看员工列表信息。
1-1 管理员登陆系统;
1-2 查询到的结果要包括员工编号名称、员工姓名、薪水,年龄,每页5条。,如上图所示:
关键代码:
conn = DBUtil.getConnection();
prep = conn.prepareStatement("select * from emp_tt");
rst = prep.executeQuery();
while(rst.next()){
Employee e = new Employee();
e.setId(rst.getInt("id"));
e.setName(rst.getString("name"));
e.setSalary(rst.getDouble("salary"));
e.setAge(rst.getInt("age"));
employees.add(e);
}
EmployeeDAO dao = (EmployeeDAO) Factory.getInstance("EmployeeDAO");
List int totalPages = dao.getTotalPages(5); request.setAttribute("page", page); request.setAttribute("totalPages", totalPages); request.setAttribute("employees", employees); RequestDispatcher rd = request.getRequestDispatcher("empList.jsp"); rd.forward(request, response); 6.2.2删除员工信息 需求编号:2 需求描述:若某个员工离职或退休后,就可以删除这个员工。 1-1 管理员登陆; 1-2 进入员工信息列表 1-3 找到离职员工,点击“离职”。如图所示: 关键代码: conn = DBUtil.getConnection(); prep = conn.prepareStatement("delete from emp_tt where id=?"); prep.setInt(1, id); prep.executeUpdate(); int id = Integer.parseInt(request.getParameter("id")); try { EmployeeDAO dao = (EmployeeDAO) Factory.getInstance("EmployeeDAO"); dao.delete(id); response.sendRedirect("list.do"); } catch (Exception e) { e.printStackTrace(); throw new ServletException(e); } 6.2.3增加员工信息 需求编号:3 需求描述:新员工就职,可以通过管理员登录系统后,新增员工信息。 1-1 管理员登陆; 1-2 点击“添加员工”按钮,转到addEmp.jsp页面。如图所示: 1-3 在addEmp.jsp页面中填写员工姓名、薪水、年龄,确认信息无误后,点击“提交”按钮。 1-4 转到员工信息列表查看刚添加的员工是否在列表中。 关键代码: conn = DBUtil.getConnection(); prep = conn.prepareStatement(" insert into emp_tt(id,name,salary,age) values(emp_tt_seq.nextval,?,?,?)"); prep.setString(1, e.getName()); prep.setDouble(2, e.getSalary()); prep.setInt(3, e.getAge()); prep.executeUpdate(); EmployeeDAO dao = (EmployeeDAO) Factory.getInstance("EmployeeDAO"); Employee e = new Employee(); e.setName(name); e.setSalary(Double.parseDouble(salary)); e.setAge(Integer.parseInt(age)); dao.save(e); response.sendRedirect("list.do"); 6.2.4修改员工信息 需求编号:3 需求描述:新员工就职,可以通过管理员登录系统后,找到员工信息进行修改。 1-1 管理员登陆,进入员工信息列表; 1-2 找到要修改的员工信息,点击“修改”,转到updateEmp.jsp页面。如图所示: 1-3 在updateEmp.jsp页面中重新填写要修改的信息,确认信息无误后,点击“提交”按钮。 1-4 转到员工信息列表查看刚修改的员工是否在列表中。 关键代码: conn = DBUtil.getConnection(); prep = conn.prepareStatement("update emp_tt set name=?,salary=?,age=? where id=?"); prep.setString(1, e.getName()); prep.setDouble(2, e.getSalary()); prep.setInt(3, e.getAge()); prep.setInt(4, e.getId()); prep.executeUpdate(); int id = Integer.parseInt(request.getParameter("id")); String name = request.getParameter("name"); double salary = Double.parseDouble(request.getParameter("salary")); int age = Integer.parseInt(request.getParameter("age")); try { EmployeeDAO dao = (EmployeeDAO) Factory.getInstance("EmployeeDAO"); Employee e = new Employee(); e.setId(id); e.setName(name); e.setSalary(salary); e.setAge(age); dao.update(e); response.sendRedirect("list.do"); } catch (Exception e) { e.printStackTrace(); throw new ServletException(e); }