目录
- 绪论 1
1.1 设计背景 1
1.2 设计意义 1
1.3 设计思路 1 - 需求分析 2
2.1 需求描述 2
2.2 用例建模 2
2.3 用例描述 3
2.3.1 个人信息用例描述 3
2.3.2 员工管理用例描述 3
2.3.3 部门管理用例描述 4
2.3.4 考勤管理用例描述 4
2.3.5 奖惩管理用例描述 5
2.3.6 工资管理用例描述 5 - 系统设计 6
3.1 数据库设计 6
3.1.1 数据库整体设计 6
3.1.2 数据库脚本 7
3.2 系统架构设计 8
3.3 模块设计 9
3.3.1 功能模块设计 9 - 产品实现 10
4.1 登录模块的实现 10
4.1.1 界面设计 10
4.1.2 功能实现 10
4.2 考勤管理模块实现 11
4.2.1 界面设计 11
4.2.2 功能实现 12
4.3 工资管理模块实现 13
4.3.1 界面设计 13
4.3.2 功能实现 15
4.4 部门管理模块实现 16
4.4.1 界面设计 16
4.4.2 功能实现 17
4.5 员工管理模块实现 18
4.5.1 界面设计 18
4.5.2 功能实现 19 - 产品测试 20
5.1 测试方法与策略 20
5.2 考勤管理模块测试 20
5.3 工资管理模块测试 20
5.4 部门管理模块测试 21
5.4 员工管理模块测试 21 - 结论 22
6.1 毕业设计成果特点 22
6.2 不足之处或遗留未予解决的问题 22
参考文献 23
致谢 24
1.3 设计思路
公司员工管理系统采用了经典的 M-V-C 开发模式,利用的技术有 java 语言开发、面向对象的分析和 设计思想、相关网页脚本语言,使用 Myeclipse 作为开发工具,使用 Mysql 作为数据库工具,设计出 来的系统基本可以完成公司人事部门对员工的各种管理工作。 - 需求分析
2.1 需求描述
员工管理系统是一个企业内部的后台系统,所以只能供企业内部的管理员来使用,管理员通过分配 的用户名和密码就能登录系统。管理员在成功登陆系统后,就可以实现各种对员工的管理操作,比 如对职位部门信息、签到考勤信息、奖励与惩罚信息、薪金信息、员工的信息进行管理,也可以对 自己的登录信息进行修改,以及消息查询等。
2.2 用例建模
管理员在成功登录系统后,可以对企业职员相关信息、职位和部门信息、签到考勤信息、奖励与惩 罚信息、职员薪金信息、自己的登录信息及个人信息等进行管理。
图 2.2 员工管理系统用例模型
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head> <style type="text/css">body {margin-left: 0px;margin-top: 0px;margin-right: 0px;margin-bottom: 0px;background-color: #1D3647;}.login_top_bg {background-image: url(<%=path %>/img/login-top-bg.gif);background-repeat: repeat-x;}.body {background-color: #EEF2FB;left: 0px;top: 0px;right: 0px;bottom: 0px;}.login-buttom-bg {background-image: url(<%=path %>/img/login-buttom-bg.gif);background-repeat: repeat-x;}.login-buttom-txt {font-family: Arial, Helvetica, sans-serif;font-size: 10px;color: #ABCAD3;text-decoration: none;line-height: 20px;}.login_txt {font-family: Arial, Helvetica, sans-serif;font-size: 12px;line-height: 25px;color: white;}.Submit {font-family: Arial, Helvetica, sans-serif;font-size: 12px;color: #629DAE;text-decoration: none;background-image: url(<%=path %>/img/Submit_bg.gif);background-repeat: repeat-x;}.login_bg {background-image: url(<%=path %>/img/login_bg.jpg);background-repeat: repeat-x;}.login_bg2 {background-image: url(<%=path %>/img/login-content-bg.gif);background-repeat: no-repeat;background-position: right;}.admin_txt {font-family: Arial, Helvetica, sans-serif;font-size: 12px;color: #FFFFFF;text-decoration: none;height: 38px;width: 100%;position: 固定;line-height: 38px;}.login_txt_bt {font-family: Arial, Helvetica, sans-serif;font-size: 25px;line-height: 25px;color: #666666;font-weight: bold;}.admin_topbg {background-image: url(<%=path %>/img/top-right.gif);background-repeat: repeat-x;}.txt_bt {font-family: Arial, Helvetica, sans-serif;font-size: 12px;line-height: 25px;font-weight: bold;color: #000000;text-decoration: none;}.left_topbg {background-image: url(<%=path %>/img/content-bg.gif);background-repeat: repeat-x;}.admin_toptxt {font-family: Arial, Helvetica, sans-serif;font-size: 12px;color: #4A8091;height: 18px;width: 100%;overflow: hidden;position: 固定;}.left_bt {font-family: Arial, Helvetica, sans-serif;font-size: 14px;font-weight: bold;color: #395a7b;}.left_bt2 {font-family: Arial, Helvetica, sans-serif;font-size: 12px;line-height: 25px;font-weight: bold;color: #333333;}.titlebt {font-size: 12px;line-height: 26px;font-weight: bold;color: #000000;background-image: url(<%=path %>/img/top_bt.jpg);background-repeat: no-repeat;display: block;text-indent: 15px;padding-top: 5px;}.left_txt {font-family: Arial, Helvetica, sans-serif;font-size: 12px;line-height: 25px;color: #666666;}.left_txt2 {font-family: Arial, Helvetica, sans-serif;font-size: 12px;line-height: 25px;color: #000000;}.nowtable {background-color: #e1e5ee;border-top-width: 1px;border-right-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-top-style: solid;border-top-color: #bfc4ca;border-right-color: #bfc4ca;border-bottom-color: #bfc4ca;border-left-color: #bfc4ca;}.left_txt3 {font-family: Arial, Helvetica, sans-serif;font-size: 12px;line-height: 25px;color: #003366;text-decoration: none;}.left_ts {font-family: Arial, Helvetica, sans-serif;font-size: 12px;line-height: 25px;font-weight: bold;color: #FF6600;}.line_table {border: 1px solid #CCCCCC;}.sec1 {CURSOR: hand;COLOR: #000000;font-family: Arial, Helvetica, sans-serif;font-size: 12px;line-height: 25px;border: 1px solid #B5D0D9;background-image: url(<%=path %>/img/right_smbg.jpg);background-repeat: repeat-x;}.sec2 {FONT-WEIGHT: bold;CURSOR: hand;COLOR: #000000;font-family: Arial, Helvetica, sans-serif;font-size: 12px;line-height: 25px;background-color: #e2e7ed;border: 1px solid #e2e7ed;}.main_tab {COLOR: #000000;BACKGROUND-COLOR: #e2e7ed;border: 1px solid #e2e7ed;}.MM a {font-family: Arial, Helvetica, sans-serif;font-size: 12px;line-height: 26px;color: #666666;background-image: url(<%=path %>/img/menu_bg.gif);background-repeat: no-repeat;list-style-type: none;list-style-image: none;}a:link {font-size: 12px;line-height: 25px;color: #333333;text-decoration: none;}a:hover {font-size: 12px;line-height: 25px;color: #666666;text-decoration: none;}a:visited {font-size: 12px;line-height: 25px;color: #333333;text-decoration: none;}.MM a:link {font-family: Arial, Helvetica, sans-serif;font-size: 12px;line-height: 26px;color: #666666;background-image: url(<%=path %>/img/menu_bg.gif);background-repeat: no-repeat;list-style-type: none;list-style-image: none;}</style><script type='text/javascript' src='<%=path %>/dwr/interface/loginService.js'></script> <script type='text/javascript' src='<%=path %>/dwr/engine.js'></script> <script type='text/javascript' src='<%=path %>/dwr/util.js'></script> <script language="javascript">function check1(){ if(document.ThisForm.userName.value=="") { alert("请输入用户名");document.ThisForm.userName.focus();return false; } if(document.ThisForm.userPw.value=="") { alert("请输入密码");document.ThisForm.userPw.focus();return false; } if(document.ThisForm.userType.value=="-1") { alert("请选择登陆身份");document.ThisForm.userType.focus();return false; } document.getElementById("indicator").style.display="block"; loginService.login(document.ThisForm.userName.value,document.ThisForm.userPw.value,document.ThisForm.userType.value,callback);}function callback(data){ document.getElementById("indicator").style.display="none"; if(data=="no") { alert("用户名或密码错误"); } if(data=="yes") { alert("通过验证,系统登录成功"); window.location.href="<%=path %>/loginSuccess.jsp"; } } </script></head><body><table width="100%" height="166" border="0" cellpadding="0" cellspacing="0"> <tr> <td height="42" valign="top"> <table width="100%" height="42" border="0" cellpadding="0" cellspacing="0" class="login_top_bg"> <tr> <td width="1%" height="21"> </td> <td height="42"> </td> <td width="17%"> </td> </tr> </table> </td> </tr> <tr> <td valign="top"> <table width="100%" height="532" border="0" cellpadding="0" cellspacing="0" class="login_bg"> <tr> <td width="49%" align="right"><table width="91%" height="532" border="0" cellpadding="0" cellspacing="0" class="login_bg2"> <tr> <td height="138" valign="top"><table width="89%" height="427" border="0" cellpadding="0" cellspacing="0"> <tr> <td height="149"> </td> </tr> <tr> <td height="80" align="right" valign="top"></td> </tr> <tr> <td height="198" align="right" valign="top"><table width="100%" border="0" cellpadding="0" cellspacing="0"> <tr> <td width="35%"> </td> <td height="25" colspan="2" class="left_txt"></td> </tr> <tr> <td> </td> <td height="25" colspan="2" class="left_txt"></td> </tr> <tr> <td> </td> <td height="25" colspan="2" class="left_txt"></td> </tr> <tr> <td> </td> <td width="30%" height="40"></td> <td width="35%"></td> </tr> </table></td> </tr> </table></td> </tr> </table></td> <td width="1%" > </td> <td width="50%" valign="bottom"><table width="100%" height="59" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td width="4%"> </td> <td width="96%" height="38"><span class="login_txt_bt">企业员工信息管理系统</span></td> </tr> <tr> <td> </td> <td height="21"><table cellSpacing="0" cellPadding="0" width="100%" border="0" id="table211" height="328"> <tr> <td height="164" colspan="2" align="middle"> <FORM name="ThisForm" action="<%=path %>/adminLogin.action" method=post> <table cellSpacing="0" cellPadding="0" width="100%" border="0" height="143" id="table212"> <tr><td width="13%" height="38" class="top_hui_text"><span class="login_txt">用户名: </span></td><td height="38" colspan="2" class="top_hui_text"><input name="userName" class="editbox4" value="" size="20"></td> </tr> <tr><td width="13%" height="35" class="top_hui_text"><span class="login_txt"> 密 码: </span></td><td height="35" colspan="2" class="top_hui_text"><input class="editbox4" type="password" size="20" name="userPw"> <img src="<%=path %>/img/luck.gif" width="19" height="18"> </td> </tr> <tr><td width="13%" height="35" ><span class="login_txt">登录身份:</span></td><td height="35" colspan="2" class="top_hui_text"> <select class="INPUT_text" name="userType"> <option value="-1">请选择</option> <option value="0">管理员</option> <option value="1">员 工</option> </select></td> </tr> <tr><td height="35" > </td><td width="80%" height="35" > <input name="button" type="button" id="Submit" value="登 陆" onClick="check1()"> <input name="cs" type="reset" class="button" id="cs" value="重 置"> <img id="indicator" src="<%=path %>/img/loading.gif" style="display:none"/></td><td width="20%"></td> </tr> </table> <br> </form></td> </tr> <tr> <td width="433" height="164" align="right" valign="bottom"></td> <td width="57" align="right" valign="bottom"> </td> </tr> </table></td> </tr> </table> </td> </tr> </table></td> </tr></table></body></html>