Java Web 学生上课签到打卡系统
基于Jsp+Servlet的上课考勤管理系统

实现了学生上课签到、打卡的功能。教师能够看到没有及时打卡的学生情况。
包括对签到打卡的增删改查、对学生信息的增删改查。
主要技术:Jsp+Servlet+Mysql+Tomcat+Eclipse
适用场合:Java课程设计/Java大作业
项目类型:JAVA WEB项目
用户类型:2个角色(教师+学生)
开发工具:Eclipse
数据库表:3张
介绍主要是教师在发布打卡要求以后,学生需要在规定时间内及时打卡,如果超过规定时间没有打卡,则会被记录下来。此外,还实现了对学生信息的增删改查。
1.学生 注册
2.教师/学生登录
3.添加学生
4.删除学生
5.修改学生
6.查看学生
7.发起打卡
8.查看未打卡的人
9.学生打卡
10.教师补打卡

项目视频演示在最下方

项目非开源
项目获取资讯:“那条学长”(V)(公)

关注回复java查看全部项目
其他分类专栏有一些自己原创的Java Web项目
Jsp+Servlet图书管理系统【原创开发】
Jsp+Servlet的新闻管理系统【原创开发】
Jsp+Servlet的外卖配送系统/在线点餐系统

学生签到打卡系统

  • 1.管理员端功能介绍
    • 1.1登录界面
    • 1.2学生打卡情况
    • 1.3按时间发起打卡
    • 1.4学生信息管理
    • 1.5修改学生信息
  • 2.学生端功能介绍
    • 2.1注册界面
    • 2.2在线打卡
  • 3.截取部分代码介绍,可参考风格学习
    • 3.1UserServlet.java
    • 3.2UserService.java
    • 3.3UserServiceImpl.java
    • 3.4UserDao.java
  • 4.数据库设计

1.管理员端功能介绍

1.1登录界面

1.2学生打卡情况

可以查看已经打卡的学生和未打卡的学生。并能够删除打卡记录。

1.3按时间发起打卡

1.4学生信息管理

实现了对学生的增删改查

1.5修改学生信息

2.学生端功能介绍

2.1注册界面

2.2在线打卡

在规定时间内进行打卡,如果超过了时间限制,则无法进行打卡,而且显示未打卡。

3.截取部分代码介绍,可参考风格学习

3.1UserServlet.java

Servlet主要是用来获取请求,并处理请求。其中主要是两种,一种写的是jsp页面的请求,会前往对应的jsp页面;另一种是获取数据,并进行处理。调用业务逻辑层,并返回执行的数据访问层的方法。将数据展示在jsp页面内。

package com.sign.servlet;import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.sign.entity.Record;
import com.sign.entity.User;
import com.sign.service.UserService;
import com.sign.service.impl.UserServiceImpl;public class UserServlet extends HttpServlet {private UserService service = new UserServiceImpl();@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String action=request.getParameter("action");//接受请求的参数if(action != null && action.equals("toLogin")) {//去登录页面toLogin(request, response);}else if(action != null && action.equals("LoginOutAct")) {LoginOutAct(request, response);}else if(action != null && action.equals("welcome")) {welcome(request, response);}else if(action != null && action.equals("userList")) {userList(request, response);}else if(action != null && action.equals("sjStudent")) {sjStudent(request, response);}else if(action != null && action.equals("toRegister")) {toRegister(request, response);}else if(action != null && action.equals("Register")) {Register(request, response);}else if(action != null && action.equals("deleteUser")) {deleteUser(request, response);}else if(action != null && action.equals("toUpdateUser")) {toUpdateUser(request, response);}else if(action != null && action.equals("updateUser")) {updateUser(request, response);}else if(action != null && action.equals("toAddUser")) {toAddUser(request, response);}else if(action != null && action.equals("addUser")) {addUser(request, response);}else if(action != null && action.equals("userLike")) {userLike(request, response);}}//按照姓名查询private void userLike(HttpServletRequest request, HttpServletResponse response) {try {String userName = request.getParameter("userName");List<User> list=service.selectUserList(userName);request.setAttribute("list" ,list);request.getRequestDispatcher("/WEB-INF/views/user/userList.jsp").forward(request, response);} catch (Exception e) {e.printStackTrace();}}//添加学生private void addUser(HttpServletRequest request, HttpServletResponse response) {String username = request.getParameter("username");String realname = request.getParameter("realname");String pwd = request.getParameter("pwd");String type =request.getParameter("type");User user =new User();user.setUserName(username);user.setRealName(realname);user.setPassword(pwd);user.setType(type);try {User user1=service.selectUserByName(username);if(user1 == null){service.saveUser(user);response.sendRedirect(request.getContextPath()+"/UserServlet?action=userList");}else{request.setAttribute("message", "该学生已存在,不能重复注册!");response.sendRedirect(request.getContextPath()+"/UserServlet?action=userList");}}catch (Exception e) {e.printStackTrace();}}/*** 去添加页面* @param request* @param response*/private void toAddUser(HttpServletRequest request, HttpServletResponse response) {try {request.getRequestDispatcher("/WEB-INF/views/user/addUser.jsp").forward(request,response);} catch (Exception e) {e.printStackTrace();}}/*** 修改用户信息* @param request* @param response*/private void updateUser(HttpServletRequest request, HttpServletResponse response) {String uid = request.getParameter("uid");String username = request.getParameter("username");String realname = request.getParameter("realname");String password = request.getParameter("password");String type = request.getParameter("type");User user =new User();user.setId(Integer.parseInt(uid));user.setUserName(username);user.setRealName(realname);user.setPassword(password);user.setType(type);try {service.updateUser(user);response.sendRedirect(request.getContextPath()+"/UserServlet?action=userList");} catch (Exception e) {e.printStackTrace();}}/*** 去修改页面* @param request* @param response*/private void toUpdateUser(HttpServletRequest request, HttpServletResponse response) {String id = request.getParameter("id");User user = service.selectUserById(id);request.getSession().setAttribute("user", user);try {request.getRequestDispatcher("/WEB-INF/views/user/toupdateUser.jsp").forward(request,response);} catch (Exception e) {e.printStackTrace();}}//删除用户private void deleteUser(HttpServletRequest request, HttpServletResponse response) {String id = request.getParameter("id");try {service.deleteUser(id);response.sendRedirect(request.getContextPath()+"/UserServlet?action=userList");} catch (Exception e) {e.printStackTrace();}}private void sjStudent(HttpServletRequest request, HttpServletResponse response) {try { List<User> newList = new ArrayList<User>();List<User> list=service.userList();Random r = new Random();// 通过对象方法获取随机数int data = r.nextInt(list.size()); System.out.println("随机数是 :"+data);newList.add(list.get(data));request.setAttribute("list" ,newList);request.getRequestDispatcher("/WEB-INF/views/user/userList.jsp").forward(request, response);} catch (Exception e) {e.printStackTrace();}}private void userList(HttpServletRequest request, HttpServletResponse response) {try { List<User> list=service.userList();request.setAttribute("list" ,list);request.getRequestDispatcher("/WEB-INF/views/user/userList.jsp").forward(request, response);} catch (Exception e) {e.printStackTrace();}}/*** 去注册页面* @param request* @param response*/private void toRegister(HttpServletRequest request, HttpServletResponse response) {try {request.getRequestDispatcher("/WEB-INF/views/register.jsp").forward(request,response);} catch (Exception e) {e.printStackTrace();}}private void welcome(HttpServletRequest request,HttpServletResponse response) {try {request.getRequestDispatcher("/WEB-INF/views/console.jsp").forward(request,response);} catch (Exception e) {e.printStackTrace();}}private void LoginOutAct(HttpServletRequest request,HttpServletResponse response) {try {request.getSession().removeAttribute("user");response.sendRedirect(request.getContextPath()+"/UserServlet?action=toLogin");} catch (Exception e) {e.printStackTrace();}}private void removeAll(HttpServletRequest request,HttpServletResponse response) {request.getSession().removeAttribute("user");}private void toLogin(HttpServletRequest request,HttpServletResponse response) {try {request.getRequestDispatcher("/WEB-INF/views/login.jsp").forward(request, response);}catch(Exception e){e.printStackTrace();}  return;}}

3.2UserService.java

业务逻辑层,定义了所有的方法。

package com.sign.service;import java.util.List;import com.sign.entity.User;public interface UserService {User selectUser(String userName, String password, String type);List<User> userList();void saveUser(User user);User selectUserByName(String userName);void deleteUser(String id);}

3.3UserServiceImpl.java

继承接口,实现方法,并去调用对应的数据访问层的方法。

package com.sign.service.impl;import java.util.List;import com.sign.dao.UserDao;
import com.sign.entity.User;
import com.sign.service.UserService;public class UserServiceImpl implements UserService{private UserDao dao = new UserDao();@Overridepublic List<User> selectUserList(String userName) {return dao.selectUserList(userName);}@Overridepublic void deleteUser(String id) {dao.deleteUser(id);;}@Overridepublic User selectUser(String userName, String password, String type) {return dao.selectUser(userName,password,type);}@Overridepublic List<User> userList() {return dao.userList();}@Overridepublic User selectUserByName(String userName) {return dao.selectUserByName(userName);}}

3.4UserDao.java

package com.sign.dao;import java.util.ArrayList;
import java.util.List;import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;import com.sign.entity.Record;
import com.sign.entity.User;
import com.sign.utils.C3p0Utils;public class UserDao {private QueryRunner runner=new QueryRunner(C3p0Utils.getDs());public List<User> selectUserList(String name) {String sql="select * from user where 1 = 1";List<User> list=null;List<String> list1 = new ArrayList<String>();Object[] params = {};if (name != null && !name.equals("")) {sql += " and realName like  ? ";list1.add("%" + name + "%");}if(list1.size() > 0){params = list1.toArray();}sql += " order by id desc ";try {list=runner.query(sql, params, new BeanListHandler<User>(User.class));} catch (Exception e) {e.printStackTrace();throw new RuntimeException(e);}return list;}public void updateUser(User user) {try {runner.update("update user set userName=?,realName=?,password=?,type=? where id =?",user.getUserName(),user.getRealName(),user.getPassword(),user.getType(),user.getId());} catch (Exception e) {throw new RuntimeException(e);}}public void deleteUser(String id) {Integer ids = Integer.parseInt(id);try {runner.update("delete  from user where id=?",ids);} catch (Exception e) {throw new RuntimeException(e);}}public void saveUser(User user) {try {runner.update("insert into user (username,realname,password,type) values (?,?,?,?)",user.getUserName(),user.getRealName(),user.getPassword(),user.getType());} catch (Exception e) {throw new RuntimeException(e);}  }public User selectUser(String userName, String password, String type) {try {//返回查询的信息return runner.query("select * from user where userName =? and password=? and type =? ", new BeanHandler<User>(User.class),userName,password,type);} catch (Exception e) {throw new RuntimeException(e);//抛出运行异常}}
}

4.数据库设计


-- ----------------------------
-- Table structure for dk
-- ----------------------------
DROP TABLE IF EXISTS `dk`;
CREATE TABLE `dk`  (`id` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,`dkTime` varchar(111) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`tid` int(11) NULL DEFAULT NULL,`createTime` varchar(111) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`tname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of dk
-- ----------------------------
INSERT INTO `dk` VALUES ('501012c4-75c5-4447-a67b-0118f44f2161', '2021-06-27 12:00:00', 1, '2021-06-27 10:43', '张老师');
INSERT INTO `dk` VALUES ('8ae021b5-b470-4c10-933c-0bc96b6b4334', '2021-06-27 13:00:00', 1, '2021-06-27 12:15', '张老师');-- ----------------------------
-- Table structure for record
-- ----------------------------
DROP TABLE IF EXISTS `record`;
CREATE TABLE `record`  (`id` int(11) NOT NULL AUTO_INCREMENT,`did` varchar(111) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`qdtime` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '签到时间',`sjtime` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '实际签到时间',`uid` int(11) NULL DEFAULT NULL COMMENT '用户id',`state` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '0未签到 1已签到',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of record
-- ----------------------------
INSERT INTO `record` VALUES (7, '501012c4-75c5-4447-a67b-0118f44f2161', '2021-06-27 12:00:00', '2021-06-27 11:22', 2, '1');
INSERT INTO `record` VALUES (8, '501012c4-75c5-4447-a67b-0118f44f2161', '2021-06-27 12:00:00', NULL, 3, '0');
INSERT INTO `record` VALUES (9, '501012c4-75c5-4447-a67b-0118f44f2161', '2021-06-27 12:00:00', NULL, 4, '0');
INSERT INTO `record` VALUES (10, '8ae021b5-b470-4c10-933c-0bc96b6b4334', '2021-06-27 13:00:00', '2021-06-27 12:17', 2, '1');
INSERT INTO `record` VALUES (11, '8ae021b5-b470-4c10-933c-0bc96b6b4334', '2021-06-27 13:00:00', '2021-06-27 12:17', 3, '1');
INSERT INTO `record` VALUES (12, '8ae021b5-b470-4c10-933c-0bc96b6b4334', '2021-06-27 13:00:00', NULL, 4, '0');-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (`id` int(11) NOT NULL AUTO_INCREMENT,`userName` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`realName` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '1老师 2学生',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, 't1', '张老师', '123456', '1');
INSERT INTO `user` VALUES (2, 's1', '张三', '123456', '2');
INSERT INTO `user` VALUES (3, 's2', '王五', '123456', '2');
INSERT INTO `user` VALUES (4, 's3', '麻子', '123456', '2');SET FOREIGN_KEY_CHECKS = 1;

【原创】Jsp+Servlet学生签到打卡系统(JavaWeb课程作业)

Java Web ——基于Jsp+Servlet的学生上课签到打卡系统/上课考勤管理系统相关推荐

  1. Java Web——基于Jsp+Servlet的大学生社团管理系统

    JavaWeb课程设计+JavaWeb实训作业:(Jsp+Servlet+Mysql+Tomcat+Idea) 项目类型:JAVA WEB项目 用户类型:3个角色(管理员+社长+学生) 主要技术:Js ...

  2. java毕业设计——基于JSP+sqlserver的学生信息管理系统设计与实现(毕业论文+程序源码)——学生信息管理系统

    基于JSP+sqlserver的学生信息管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于JSP+sqlserver的学生信息管理系统设计与实现,文章末尾附有本毕业设计的论文和源码下 ...

  3. javaweb基于JSP+Servlet开发在线网上药店购药系统+论文+PPT+答辩视频 毕业设计 课程设计

    基于JSP+Servlet开发药品进销存管理系统+论文+PPT+答辩视频(大作业/毕业设计) 开发环境: Windows操作系统 开发工具: MyEclipse+Jdk+Tomcat+Mysql数据库 ...

  4. 基于JSP + Servlet + Mysql 的校园二手交易平台(源码 + 文档)

    基于JSP + Servlet + Mysql 的校园二手交易平台 1.系统开发背景 2.系统设计 3.系统实现 3.1开发所用技术 3.2数据字典 3.2系统开发 3.2.1配置环境 3.2.2创建 ...

  5. java ee学生信息管理_基于jsp的学籍学生信息信息管理系统-JavaEE实现学籍学生信息信息管理系统 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的学籍学生信息信息管理系统, 该项目可用各类java课程设计大作业中, 学籍学生信息信息管理系统的系统架构分为前后台 ...

  6. 请假代码java web_基于jsp的学生请假管理系统-JavaEE实现学生请假管理系统 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的学生请假管理系统, 该项目可用各类java课程设计大作业中, 学生请假管理系统的系统架构分为前后台两部分, 最终实 ...

  7. 基于jsp servlet javabean的学生管理系统

    日期:2019/10/24 该学生管理系统基于jsp+servlet+javabean,使用MVC模式,是一个很基础的学生管理系统,由于这是本学期的课程大作业,所以现在还没有完全写完,这篇博文会根据进 ...

  8. 基于JSP/SERVLET学生管理系统

    项目编号:BS-GX-012  本系统基于JSP/SERVLET技术开发实现,前端采用easyui进行页面设计,用户交互性好,采用三层架构,MVC设计模式,数据库采用MYSQL数据库,开发工具为IDE ...

  9. bootstrap java web_Java web MVC(jsp,servlet,dao)+Bootstrap购物网站开发经验总结 (持续更新)...

    一开始对java web 不是很熟悉,重新温习了java web ,对El expression ,jstl的使用有了更加深的印象,mvc模式下的分层结构有了进一步的了解. MVC中的M就是model ...

  10. 基于Jsp+Servlet的图书商城

    项目类型:JAVA WEB项目(B/S架构) 项目名称:基于Jsp+Servlet的图书商城(可作为多种类型的商城) 用户类型:2个角色(管理员+购物者) 系统类型:前端购物界面+后台管理 设计模式: ...

最新文章

  1. 【Arduino】HX711驱动程序
  2. 啊,我南非时间上午10点看成了。。
  3. 关于 Visual stdio 编译报错:error MSB6006: “CL.exe”已退出
  4. 大型网站系统架构实践(五)深入探讨web应用高可用方案
  5. 网页打印物理大小尺寸的单位换算
  6. Service Mesh简史
  7. 在线溶氧仪 连接计算机,在线溶氧仪集成设计与数据处理算法分析.pdf
  8. 线性基——数集压缩自动机
  9. Chapter 1 MIMO无线通信系统发展
  10. 通过QQ邮箱中转站分享文件
  11. java 进程通信代码
  12. 前端可视化——Canvas
  13. fullpage的使用方法及配置项 (慕课网视频总结)
  14. RS232及RTS和CTS
  15. 伦敦同业拆借利率(LIBOR)
  16. 主机屋免费服务器 – 真的开启服务器免费时代?
  17. 运维管理系统,效果稳定、可靠运行
  18. CCS+C6678LE开发记录08:以太网接口测试示例之代码研究
  19. 下载Microsoft Store的应用安装包
  20. 单片机第六次实验课——计数器实验

热门文章

  1. 计算机科学创新大赛,“互联网+”大学生创新创业大赛
  2. java se官网_Java下载|Java SE Development Kit官方下载-太平洋下载中心
  3. c语言常用函数大全超详细
  4. DevCpp 如何进行调试
  5. ffmpeg下载及转码批量操作
  6. Axure RP 8文件按钮效果
  7. 几款常用的ble调试app(nRF Connect、BLE调试助手、LightBlue)
  8. python数据分析——pyecharts地图全解
  9. 使用软件测试路由器性能报告,路由器软件测试报告.doc
  10. 车牌识别easypr的详细介绍