摘要
高校的不断扩张让在校学生数量不断的增加,对于教师和管理人员的需求也在不断地增强,对日常的学生考勤管理的工作量也在日益增加,传统的人工点名签到的考勤管理模式已经给无法适用于当前高校考勤管理的需求,同时手动录入的考勤管理模式会浪费大量的人力物力,也不便于考勤数据信息的管理和查询,考勤管理是高校教务管理工作的重点内容之一,通过考勤管理可以及时了解大学生在校的学生状态,结合考勤管理来帮助培养学生自律自强的学习品格,结合高校内考勤管理的需求和重要性,利用互联网平台开发设计一款针对校内考勤管理的系统是非常有需求空间的。
本文结合当前应用技术在高校内的发展现状,利用JSP技术开发设计一款在线考勤管理系统,利用线上平台互通的便捷性,实现了学生与教师之间的信息互通,通过在线考勤管理系统实现了在线签到、在线请假以及课程信息查看等功能。同时结合了国内外研究现状以及可行性分析对于系统开发的背景和可行性进行阐述分析,通过数据库结构的搭建以及系统的测试环节的应用实现了考勤管理系统的开发设计。结合学生用户及教师用户的切实需求,通过线上平台实现了高效的考勤管理,同时也提升了考勤数据信息统计和管理的效率。
关键词:JSP技术;Mysql 数据库;学校考勤管理;在线签到;
系统的实现
首页
教师后台界面
系统后台管理
教师信息添加
课程信息管理界面
开发工具技术介绍
JSP技术是基于JAVA编程语言来实现的动态网页技术标准,JSP技术主要依托WEB服务器端来响应用户端的数据请求,结合请求指令内容动态的生成WEB网页,通过JAVA语言来实现数据信息的转换以及处理复杂的业务需求。同时可以将JAVA代码嵌入到静态的网页页面端实现动态的数据信息呈现,JSP技术被广泛的应用于网页端的开发设计中,增强了标签库的功能和服务器的性能同时不会受到跨平台数据操作的影响。JSP技术在使用过程中继承了JAVA语言易用性的特点,通过灵活的页面信息调整增强了整体系统平台开发的效率,此次学生考勤管理系统主要通过JSP技术来实现,确保了系统多用户之间数据传递的有效性
Mysql数据库作为一款关系型数据库被广泛的应用于网页系统的开发设计中,该数据库在应用过程中硬盘内存占用率低且能够实现百万条数据信息的处理,在数据响应速度和数据关系的建立上都能够实现高效的运行,同时Mysql数据库在使用上可以搭配多种编程语言使用,通过建立关系图例的方式来实现数据库的结构搭建,因此在数据库的使用上更加的灵活便捷,同时Mysql数据库是一款免费开源的开发技术,在使用上主要通过SQL语言来实现数据库的访问和转换,能够提高数据信息的查询速度同时也能够支持大型数据库的开发设计。此次学生考勤管理系统的数据库开发设计主要通过Mysql数据库来实现,通过关系图例的方式来实现数据库关系的建立,在数据库的开发和设计上更加的灵活。
SSM框架是基于是spring和Mybatis的框架集,Spring作为一款轻量级的框架结构在使用上可以通过控制反转和面向切面的方式来实现模块内的自由组合,同时可以利用Spring MVC的设计理念来实现功能模块的灵活操作,通过前端控制器处理用户端的服务请求,在通过处理器向前端反馈对应的视图解析器,最终通过渲染视图反馈到前端用户。Mybatis主要针对数据库的一款轻量级持久层框架,在使用过程中减少了数据库代码冗余,便于代码的测试和维护。此次对于学生考勤管理系统的设计主要基于SSM框架来实现,通过该框架结构有效提升了系统界面呈现的准确性以及数据传递的效率。
部分代码
package com.controller;import java.io.File;
import java.io.IOException;import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.io.PrintWriter;import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;import com.entity.Kechengxinxi;
import com.server.KechengxinxiServer;
import com.util.PageBean;
import net.sf.json.JSONObject;
import com.util.db;
import java.sql.SQLException;
import java.sql.*;
@Controller
public class KechengxinxiController {@Resourceprivate KechengxinxiServer kechengxinxiService;@RequestMapping("addKechengxinxi.do")public String addKechengxinxi(HttpServletRequest request,Kechengxinxi kechengxinxi,HttpSession session) throws SQLException{Timestamp time=new Timestamp(System.currentTimeMillis());kechengxinxi.setAddtime(time.toString().substring(0, 19));kechengxinxiService.add(kechengxinxi);db dbo = new db();//kuabiaogaizhisession.setAttribute("backxx", "添加成功");session.setAttribute("backurl", request.getHeader("Referer"));//session.setAttribute("backurl", "kechengxinxiList.do");return "redirect:postback.jsp";//return "redirect:kechengxinxiList.do";}// 处理编辑@RequestMapping("doUpdateKechengxinxi.do")public String doUpdateKechengxinxi(int id,ModelMap map,Kechengxinxi kechengxinxi){kechengxinxi=kechengxinxiService.getById(id);map.put("kechengxinxi", kechengxinxi);return "kechengxinxi_updt";}// 后台详细@RequestMapping("kechengxinxiDetail.do")public String kechengxinxiDetail(int id,ModelMap map,Kechengxinxi kechengxinxi){kechengxinxi=kechengxinxiService.getById(id);map.put("kechengxinxi", kechengxinxi);return "kechengxinxi_detail";}
// 前台详细@RequestMapping("kcxxDetail.do")public String kcxxDetail(int id,ModelMap map,Kechengxinxi kechengxinxi){kechengxinxi=kechengxinxiService.getById(id);map.put("kechengxinxi", kechengxinxi);return "kechengxinxidetail";}
// @RequestMapping("updateKechengxinxi.do")public String updateKechengxinxi(int id,ModelMap map,Kechengxinxi kechengxinxi,HttpServletRequest request,HttpSession session){kechengxinxiService.update(kechengxinxi);session.setAttribute("backxx", "修改成功");session.setAttribute("backurl", request.getHeader("Referer"));return "redirect:postback.jsp";//String url = request.getHeader("Referer");//return "redirect:"+url;//return "redirect:kechengxinxiList.do";}// 分页查询@RequestMapping("kechengxinxiList.do")public String kechengxinxiList(@RequestParam(value="page",required=false)String page,ModelMap map,HttpSession session,Kechengxinxi kechengxinxi, String kechengbianhao, String kechengmingcheng, String kechengbanji, String shangkeshijian1,String shangkeshijian2, String beizhu, String jiaoshigonghao, String jiaoshixingming, String jiaoshidianhua, String zhicheng){if(page==null||page.equals("")){page="1";}PageBean pageBean=new PageBean(Integer.parseInt(page), 15);Map<String, Object> pmap=new HashMap<String,Object>();pmap.put("pageno", pageBean.getStart());pmap.put("pageSize", 15);if(kechengbianhao==null||kechengbianhao.equals("")){pmap.put("kechengbianhao", null);}else{pmap.put("kechengbianhao", kechengbianhao);}if(kechengmingcheng==null||kechengmingcheng.equals("")){pmap.put("kechengmingcheng", null);}else{pmap.put("kechengmingcheng", kechengmingcheng);}if(kechengbanji==null||kechengbanji.equals("")){pmap.put("kechengbanji", null);}else{pmap.put("kechengbanji", kechengbanji);}if(shangkeshijian1==null||shangkeshijian1.equals("")){pmap.put("shangkeshijian1", null);}else{pmap.put("shangkeshijian1", shangkeshijian1);}if(shangkeshijian2==null||shangkeshijian2.equals("")){pmap.put("shangkeshijian2", null);}else{pmap.put("shangkeshijian2", shangkeshijian2);}if(beizhu==null||beizhu.equals("")){pmap.put("beizhu", null);}else{pmap.put("beizhu", beizhu);}if(jiaoshigonghao==null||jiaoshigonghao.equals("")){pmap.put("jiaoshigonghao", null);}else{pmap.put("jiaoshigonghao", jiaoshigonghao);}if(jiaoshixingming==null||jiaoshixingming.equals("")){pmap.put("jiaoshixingming", null);}else{pmap.put("jiaoshixingming", jiaoshixingming);}if(jiaoshidianhua==null||jiaoshidianhua.equals("")){pmap.put("jiaoshidianhua", null);}else{pmap.put("jiaoshidianhua", jiaoshidianhua);}if(zhicheng==null||zhicheng.equals("")){pmap.put("zhicheng", null);}else{pmap.put("zhicheng", zhicheng);}int total=kechengxinxiService.getCount(pmap);pageBean.setTotal(total);List<Kechengxinxi> list=kechengxinxiService.getByPage(pmap);map.put("page", pageBean);map.put("list", list);session.setAttribute("p", 1);return "kechengxinxi_list";}@RequestMapping("kcxxList.do")public String kcxxList(@RequestParam(value="page",required=false)String page,ModelMap map,HttpSession session,Kechengxinxi kechengxinxi, String kechengbianhao, String kechengmingcheng, String kechengbanji, String shangkeshijian1,String shangkeshijian2, String beizhu, String jiaoshigonghao, String jiaoshixingming, String jiaoshidianhua, String zhicheng){if(page==null||page.equals("")){page="1";}PageBean pageBean=new PageBean(Integer.parseInt(page), 15);Map<String, Object> pmap=new HashMap<String,Object>();pmap.put("pageno", pageBean.getStart());pmap.put("pageSize", 15);if(kechengbianhao==null||kechengbianhao.equals("")){pmap.put("kechengbianhao", null);}else{pmap.put("kechengbianhao", kechengbianhao);}if(kechengmingcheng==null||kechengmingcheng.equals("")){pmap.put("kechengmingcheng", null);}else{pmap.put("kechengmingcheng", kechengmingcheng);}if(kechengbanji==null||kechengbanji.equals("")){pmap.put("kechengbanji", null);}else{pmap.put("kechengbanji", kechengbanji);}if(shangkeshijian1==null||shangkeshijian1.equals("")){pmap.put("shangkeshijian1", null);}else{pmap.put("shangkeshijian1", shangkeshijian1);}if(shangkeshijian2==null||shangkeshijian2.equals("")){pmap.put("shangkeshijian2", null);}else{pmap.put("shangkeshijian2", shangkeshijian2);}if(beizhu==null||beizhu.equals("")){pmap.put("beizhu", null);}else{pmap.put("beizhu", beizhu);}if(jiaoshigonghao==null||jiaoshigonghao.equals("")){pmap.put("jiaoshigonghao", null);}else{pmap.put("jiaoshigonghao", jiaoshigonghao);}if(jiaoshixingming==null||jiaoshixingming.equals("")){pmap.put("jiaoshixingming", null);}else{pmap.put("jiaoshixingming", jiaoshixingming);}if(jiaoshidianhua==null||jiaoshidianhua.equals("")){pmap.put("jiaoshidianhua", null);}else{pmap.put("jiaoshidianhua", jiaoshidianhua);}if(zhicheng==null||zhicheng.equals("")){pmap.put("zhicheng", null);}else{pmap.put("zhicheng", zhicheng);}int total=kechengxinxiService.getCount(pmap);pageBean.setTotal(total);List<Kechengxinxi> list=kechengxinxiService.getByPage(pmap);map.put("page", pageBean);map.put("list", list);session.setAttribute("p", 1);return "kechengxinxilist";}@RequestMapping("kcxxListtp.do")public String kcxxListtp(@RequestParam(value="page",required=false)String page,ModelMap map,HttpSession session,Kechengxinxi kechengxinxi, String kechengbianhao, String kechengmingcheng, String kechengbanji, String shangkeshijian1,String shangkeshijian2, String beizhu, String jiaoshigonghao, String jiaoshixingming, String jiaoshidianhua, String zhicheng){if(page==null||page.equals("")){page="1";}PageBean pageBean=new PageBean(Integer.parseInt(page), 15);Map<String, Object> pmap=new HashMap<String,Object>();pmap.put("pageno", pageBean.getStart());pmap.put("pageSize", 15);if(kechengbianhao==null||kechengbianhao.equals("")){pmap.put("kechengbianhao", null);}else{pmap.put("kechengbianhao", kechengbianhao);}if(kechengmingcheng==null||kechengmingcheng.equals("")){pmap.put("kechengmingcheng", null);}else{pmap.put("kechengmingcheng", kechengmingcheng);}if(kechengbanji==null||kechengbanji.equals("")){pmap.put("kechengbanji", null);}else{pmap.put("kechengbanji", kechengbanji);}if(shangkeshijian1==null||shangkeshijian1.equals("")){pmap.put("shangkeshijian1", null);}else{pmap.put("shangkeshijian1", shangkeshijian1);}if(shangkeshijian2==null||shangkeshijian2.equals("")){pmap.put("shangkeshijian2", null);}else{pmap.put("shangkeshijian2", shangkeshijian2);}if(beizhu==null||beizhu.equals("")){pmap.put("beizhu", null);}else{pmap.put("beizhu", beizhu);}if(jiaoshigonghao==null||jiaoshigonghao.equals("")){pmap.put("jiaoshigonghao", null);}else{pmap.put("jiaoshigonghao", jiaoshigonghao);}if(jiaoshixingming==null||jiaoshixingming.equals("")){pmap.put("jiaoshixingming", null);}else{pmap.put("jiaoshixingming", jiaoshixingming);}if(jiaoshidianhua==null||jiaoshidianhua.equals("")){pmap.put("jiaoshidianhua", null);}else{pmap.put("jiaoshidianhua", jiaoshidianhua);}if(zhicheng==null||zhicheng.equals("")){pmap.put("zhicheng", null);}else{pmap.put("zhicheng", zhicheng);}int total=kechengxinxiService.getCount(pmap);pageBean.setTotal(total);List<Kechengxinxi> list=kechengxinxiService.getByPage(pmap);map.put("page", pageBean);map.put("list", list);session.setAttribute("p", 1);return "kechengxinxilisttp";}@RequestMapping("deleteKechengxinxi.do")public String deleteKechengxinxi(int id,HttpServletRequest request){kechengxinxiService.delete(id);String url = request.getHeader("Referer");return "redirect:"+url;//return "redirect:kechengxinxiList.do";}@RequestMapping("quchongKechengxinxi.do")public void quchongKechengxinxi(Kechengxinxi kechengxinxi,HttpServletResponse response){Map<String,Object> map=new HashMap<String,Object>();map.put("kechengbianhao", kechengxinxi.getKechengbianhao());System.out.println("kechengbianhao==="+kechengxinxi.getKechengbianhao());System.out.println("kechengbianhao222==="+kechengxinxiService.quchongKechengxinxi(map));JSONObject obj=new JSONObject();if(kechengxinxiService.quchongKechengxinxi(map)!=null){obj.put("info", "ng");}else{obj.put("info", "数据结构编号可以用!");}response.setContentType("text/html;charset=utf-8");PrintWriter out=null;try {out=response.getWriter();out.print(obj);out.flush();} catch (IOException e) {e.printStackTrace();}finally{out.close();}}
}
可行性分析
此次学生考勤管理系统平台的开发设计主要基于JSP技术来实现,同时通过SSM框架结构来实现页面呈现和数据查询,利用Mysql数据库来实现数据平台的数据存储和逻辑关系的搭建。系统平台开发设计所使用的开发技术均是成熟稳定的开发工具,此次对于考勤管理系统平台的主要功能需求集中在在线签到以及在线请假信息的管理上,整体系统基于浏览器端实现且开发工具灵活成熟,因此从技术层面来看不存太大的技术难点。
对于经济可行性的分析主要集合系统开发成本和未来收益的分析判断,此次学生考勤管理系统平台所利用的开发工具均是免费开源的应用技术,整体系统平台不需要额外的硬件设备的支持,家用的普通电脑就可以实现考勤管理系统的开发设计,同时系统的开发设计主要用于毕业设计因此不存在额外的人工开支,借助此次考勤管理系统平台的开发设计可以帮助进一步优化提升了校内考勤管理的效率,结合在线签到及在线请假等功能模块的利用增强了考勤管理过程中的师生信息互通,同时能够为师生用户提供更加便捷的线上数据查询及统计的信息化平台,节约了大量的人力物力也进一步提升了考勤管理的效率。
此次学生考勤管理系统主要应用于高校,主要用户为高校大学生及教师,系统平台的受众群体均是接受高等教育的人群,同时对于互联网及计算机应用平台的使用都非常熟悉,且此次系统平台的主要功能模块清晰,对于前端用户和后台管理人员而言都可以实现轻松的使用,系统平台主要基于浏览器端实现,整体系统操作便捷且灵活,从操作层面出发是简单可行的。
总结
学生考勤管理是日常教务工作中的重点内容之一,通过学生考勤可以规范学生在校的行为,确保学生的学习状态,目前很多高校都将学生考勤纳入到了平时得分内,考勤管理以及考勤数据的准确性也需要进一步优化提升。随着应用技术的发展,目前很多企业和学校都通过多种打卡方式来实现简单高效的考勤管理,例如指纹打卡、人脸识别以及门禁打卡等,然而这种管理模式还是无法避免考勤造假的情况发生,很多高校还是沿用人工统计及点名的方式,这样占用了大量的课堂时间且数据信息统计量较大,为了便于高校内考勤数据的统计和管理,本文利用了JSP技术开发设计一款基于浏览器端的在线考勤管理系统,通过系统平台可以实现学生在线签到、教师考勤管理等内容给,利用平台数据信息的传递性来实现高效的考勤管理。