课程设计职工考勤管理系统姓名:班级:学号:学院:职工考勤管理系统的设计与实现一、系统介绍:管理员可通过登录名与密码进入考勤系统,可以通过职工编号来进行对各别员工的查询,进行考勤,也可以查看全体员工的考勤情况,还可以进行添加,删除等操作。
二、系统设计:2.1 根据系统功能,可以画出如下流程图:针对职工管理系统的流程图,现具体描述其功能:1、管理员登陆:系统对其合法性进行检查2、职工个人考勤:通过职工编号查询其信息3、全体职工考勤:查看全体职工信息4、添加操作:添加职工的各种基本信息5、删除操作:根据职工编号删除某个职工的全部信息2.2数据库的逻辑设计根据系统的功能可以设计有关的概念模型,该系统涉及一张职工考勤信息表,可以画出如下E-R图:2.2.1: 管理员实体E-R图:2.2.2:职工实体E-R图:2.2.3: 数据库设计:1.启动SQL Server 20052.建立数据库打开企业管理器,新建数据库Student3.创建表kaoqing, kaoqing表的字段的属性为:Kaoqing表如下所示:三、系统的实现:3.1数据库的连接:1.创建ODBC数据源:选择“控制面板”——“管理工具”——“ODBC数据源”,在双击ODBC数据源后,选择“用户DSN”,添加新的数据源,单击“配置”,选择SQL Server,数据源名称为mymoon,设置用户名为sa,密码为163123,选择数据库Student。
2.建立JDBC-ODBC 桥接器:Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);建立桥接器时可能发生异常,为捕获这个异常,所以建立桥接器的标准为: Try{Class.forName(“sun.jdbc.odbc.JdbcOdbcDrivder”);}Catch(ClassNotFoundException e){}3.与ODBC数据源指定的数据库建立连接:使用java.sql包中的Connection类声明一个对象,然后使用类DriverManager调用它的一个静态方法getConnection创建这个连接对象,con=DriverManager.getConnection("jdbc:odbc:mymoon","sa","163123");捕获异常为try{ con=DriverManager.getConnection("jdbc:odbc:mymoon","sa ","163123");} catch(SQL Exception e){}3.2系统实现:1 用户登录当用户登陆时,首先出现的是一个登陆页面,只有输入正确的管理员姓名与密码时,才能进入考勤系统。
关键代码如下:<html><head><title>登陆页面</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body background="ip.JPG"><center><h1>欢迎进入职工考勤管理系统!<form action="check.jsp" method="post">//转页到check.jsp页面 管理员:<input type="text" name="name">密码:<input type="text" name="number"><input type="submit"value="提交"></form></center></body></html>如下图3.2.1所示:2.用户检查对输入的管理员姓名与密码进行检查,如若正确,则转到考勤页面,若不正确,则返回到登陆页面,再次输入姓名与密码,直至正确。
代码如下:<%@page contentType="text/html" pageEncoding="UTF-8"%><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>JSP Page</title></head><body><%String name=request.getParameter("name") ;String password=request.getParameter("number");if(name.equals("shenyan") || password.equals("08260021")) { //检查管理员姓名与密码是否正确%><jsp:forward page="sucess.jsp"/> //正确,跳转到考勤页面<%}else{%><jsp:forward page="form.html"/> //不正确,返回到登陆页面<%}%></body></html>如下图3.2.2所示:3.按职工编号考勤:输入职工编号,可以通过调用bean来取得数据库中信息,并显示出来。
关键代码如下:<%@page contentType="text/html" pageEncoding="UTF-8"%><%@page import="tom.jiafei.ConditionQuery"%><jsp:useBean id="database" class="tom.jiafei.ConditionQuery"scope="request"/><jsp:setProperty name="database" property="number"param="number"/> 根据职工编<jsp:getProperty name="database" property="number"/>查询到的考勤记录<BR><jsp:getProperty name="database" property="queryResultByNumber"/><form method="get"action="sucess.jsp"><input type="submit"value="返回上一页面"></form><form method="get"action="form.html"><input type="submit"value="返回登录页面"></form>ConditonQuery.java的部分代码如下:package tom.jiafei;import java.sql.*;public class ConditionQuery {String number;//职工编号StringBuffer queryResultByNumber;public ConditionQuery(){queryResultByNumber=new StringBuffer();try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//建立一个JDBC-ODBC桥接器}catch(ClassNotFoundException e){}//捕获建立桥接器时的异常}//private StringBuffer f(String condition){StringBuffer str=new StringBuffer();Connection con;Statement sql;ResultSet rs;try{con=DriverManager.getConnection("jdbc:odbc:mymoon","sa","163123") ;//连接数据库sql=con.createStatement();rs=sql.executeQuery(condition);str.append("<table border=1>");str.append("<th width=100>"+"职工编号");str.append("<th width=100>"+"职工姓名");str.append("<th width=100>"+"所在部门");str.append("<th width=100>"+"性别");str.append("<th width=100>"+"缺勤次数");str.append("<th width=100>"+"请假次数");str.append("<th width=100>"+"出差次数");while(rs.next()){str.append("<tr>");str.append("<td>"+rs.getString(1)+"</td>");str.append("<td>"+rs.getString(2)+"</td>");str.append("<td>"+rs.getString(3)+"</td>");str.append("<td>"+rs.getString(4)+"</td>");str.append("<td>"+rs.getString(5)+"</td>");str.append("<td>"+rs.getString(6)+"</td>");str.append("<td>"+rs.getString(7)+"</td>");str.append("</tr>");}str.append("<table border=1>");con.close();}catch(SQLException e){str.append(e);}return str;}其结果如下图3.2.3所示:4.查看全体职工考勤记录关键代码如下:<%@page contentType="text/html" pageEncoding="UTF-8"%><%@page import="java.sql.*"%><%Connection con;Statement sql;ResultSet rs;try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");} catch (ClassNotFoundException e) {out.print(e);}//捕获建立桥接器时的异常try { con = DriverManager.getConnection("jdbc:odbc:mymoon", "sa", "163123");sql = con.createStatement();rs = sql.executeQuery("SELECT * FROM kaoqing");out.print("<table border=2>");out.print("<th width=100>" + "职工编号");while (rs.next()) {out.print("<tr>");out.print("<td>" + rs.getString(1) + "</td>");out.print("</tr>");}out.print("</table border=2>");con.close();} catch (SQLException e1) {out.print(e1);}%>其查询结果如下图3.2.4所示:5.添加职工信息操作此操作用到了addbean和querybean,其中querybean帮助其查询kaoqing表中的记录;而addbean是add.jsp调用它把信息添加到kaoqingbiao中,关键代码如下:add.jsp的部分代码:<%@page import="tom.jiafei.QueryBean"%><%@page import="tom.jiafei.addBean"%><jsp:useBean id="look" class="tom.jiafei.QueryBean" scope="request"/> <jsp:useBean id="add" class="tom.jiafei.addBean" scope="request"/><jsp:setProperty name="look" property="ODBCDataSource" value="mymoon"/><jsp:setProperty name="look" property="tableName" value="kaoqing"/> <jsp:setProperty name="look" property="user" value="sa"/><jsp:setProperty name="look" property="secret" value="163123"/><form action="add.jsp" method="post"><br>输入职工编号:<input type="text" name="number" size="6"><jsp:setProperty name="add" property="*"/><br>您的操作结果:<jsp:getProperty name="add" property="addMessage"/><p>数据库当前的数据记录是:<jsp:getProperty name="look" property="queryResult"/></form>Addbean的关键代码:public String getAddMessage(){String str = "";Connection con;Statement sql;try {con = DriverManager.getConnection("jdbc:odbc:mymoon", "sa", "163123");String insertCondition = "insert into kaoqing(职工编号,职工姓名,所在部门,性别,缺勤次数,请假次数,出差次数)" + "values('" + number + "','" + name + "','" + department+ "','" + sex + "','" + queq+ "','" + qingj + "','"+chuc+"')";sql = con.createStatement();if (number!=null) {int m = sql.executeUpdate(insertCondition);if (m != 0) {str = "对表中添加" + m + "条记录成功";} else {str = "添加失败";}} else {str = "必须要有员工号";}con.close();} catch (SQLException e) {str = "输入的员工号不允许有重复" + e;}return str;}}添加结果如3.3.5所示:6.删除职工信息与添加操作基本相同,关键代码如下:Delete.jsp 部分代码:<%@page import="tom.jiafei.QueryBean" %><%@page import="tom.jiafei.delBean"%><jsp:useBean id="look" class="tom.jiafei.QueryBean" scope="request"/> <jsp:useBean id="del" class="tom.jiafei.delBean" scope="request"/><jsp:setProperty name="look" property="ODBCDataSource" value="mymoon"/><jsp:setProperty name="look" property="tableName" value="kaoqing"/> <jsp:setProperty name="look" property="user" value="sa"/><jsp:setProperty name="look" property="secret" value="163123"/><br>输入要删除的员工号:<input type="text" name="number" size="6"><br><input type="submit" name="b" value="提交删除"><jsp:setProperty name="del" property="*"/><br><br>您的更新操作结果:<jsp:getProperty name="del" property="delMessage"/><p>数据库当前的数据记录是:<jsp:getProperty name="look" property="queryResult"/>Deletebean的关键代码如下:public String getDelMessage() {String str = "";Connection con;Statement sql;String delCondition = "delete from kaoqing where 职工编号='" + number + "'";try {con = DriverManager.getConnection("jdbc:odbc:mymoon","sa", "163123");sql = con.createStatement();if (number != null) {int m = sql.executeUpdate(delCondition);if (m != 0) {str = "对表中删除" + m + "条记录成功";} else {str = "删除失败";}} else {str = "必须指定要删除的员工号";} con.close();} catch (SQLException e) { str = "员工号不存在";} return str;}}操作结果如3.2.6所示:四.总结:这个系统是职工考勤管理系统,要求对职工进行出勤,缺勤等的考查,另外还带有添加,删除等操作,所以一开始设计这个系统感到没有头绪,不得要领,并且没有足够的知识来运用,于是查找了很多的书籍,希望能有所帮助。