Java Web ——基于Jsp+Servlet的学生上课签到打卡系统/上课考勤管理系统
Java Web 學(xué)生上課簽到打卡系統(tǒng)
基于Jsp+Servlet的上課考勤管理系統(tǒng)
實(shí)現(xiàn)了學(xué)生上課簽到、打卡的功能。教師能夠看到?jīng)]有及時(shí)打卡的學(xué)生情況。
包括對(duì)簽到打卡的增刪改查、對(duì)學(xué)生信息的增刪改查。
主要技術(shù):Jsp+Servlet+Mysql+Tomcat+Eclipse
適用場(chǎng)合:Java課程設(shè)計(jì)/Java大作業(yè)
項(xiàng)目類(lèi)型:JAVA WEB項(xiàng)目
用戶(hù)類(lèi)型:2個(gè)角色(教師+學(xué)生)
開(kāi)發(fā)工具:Eclipse
數(shù)據(jù)庫(kù)表:3張
介紹主要是教師在發(fā)布打卡要求以后,學(xué)生需要在規(guī)定時(shí)間內(nèi)及時(shí)打卡,如果超過(guò)規(guī)定時(shí)間沒(méi)有打卡,則會(huì)被記錄下來(lái)。此外,還實(shí)現(xiàn)了對(duì)學(xué)生信息的增刪改查。
1.學(xué)生 注冊(cè)
2.教師/學(xué)生登錄
3.添加學(xué)生
4.刪除學(xué)生
5.修改學(xué)生
6.查看學(xué)生
7.發(fā)起打卡
8.查看未打卡的人
9.學(xué)生打卡
10.教師補(bǔ)打卡
項(xiàng)目視頻演示在最下方
項(xiàng)目非開(kāi)源
項(xiàng)目獲取資訊:“那條學(xué)長(zhǎng)”(V)(公)
關(guān)注回復(fù)java查看全部項(xiàng)目
其他分類(lèi)專(zhuān)欄有一些自己原創(chuàng)的Java Web項(xiàng)目
Jsp+Servlet圖書(shū)管理系統(tǒng)【原創(chuàng)開(kāi)發(fā)】
Jsp+Servlet的新聞管理系統(tǒng)【原創(chuàng)開(kāi)發(fā)】
Jsp+Servlet的外賣(mài)配送系統(tǒng)/在線點(diǎn)餐系統(tǒng)
學(xué)生簽到打卡系統(tǒng)
- 1.管理員端功能介紹
- 1.1登錄界面
- 1.2學(xué)生打卡情況
- 1.3按時(shí)間發(fā)起打卡
- 1.4學(xué)生信息管理
- 1.5修改學(xué)生信息
- 2.學(xué)生端功能介紹
- 2.1注冊(cè)界面
- 2.2在線打卡
- 3.截取部分代碼介紹,可參考風(fēng)格學(xué)習(xí)
- 3.1UserServlet.java
- 3.2UserService.java
- 3.3UserServiceImpl.java
- 3.4UserDao.java
- 4.數(shù)據(jù)庫(kù)設(shè)計(jì)
1.管理員端功能介紹
1.1登錄界面
1.2學(xué)生打卡情況
可以查看已經(jīng)打卡的學(xué)生和未打卡的學(xué)生。并能夠刪除打卡記錄。
1.3按時(shí)間發(fā)起打卡
1.4學(xué)生信息管理
實(shí)現(xiàn)了對(duì)學(xué)生的增刪改查
1.5修改學(xué)生信息
2.學(xué)生端功能介紹
2.1注冊(cè)界面
2.2在線打卡
在規(guī)定時(shí)間內(nèi)進(jìn)行打卡,如果超過(guò)了時(shí)間限制,則無(wú)法進(jìn)行打卡,而且顯示未打卡。
3.截取部分代碼介紹,可參考風(fēng)格學(xué)習(xí)
3.1UserServlet.java
Servlet主要是用來(lái)獲取請(qǐng)求,并處理請(qǐng)求。其中主要是兩種,一種寫(xiě)的是jsp頁(yè)面的請(qǐng)求,會(huì)前往對(duì)應(yīng)的jsp頁(yè)面;另一種是獲取數(shù)據(jù),并進(jìn)行處理。調(diào)用業(yè)務(wù)邏輯層,并返回執(zhí)行的數(shù)據(jù)訪問(wèn)層的方法。將數(shù)據(jù)展示在jsp頁(yè)面內(nèi)。
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");//接受請(qǐng)求的參數(shù)if(action != null && action.equals("toLogin")) {//去登錄頁(yè)面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);}}//按照姓名查詢(xún)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();}}//添加學(xué)生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", "該學(xué)生已存在,不能重復(fù)注冊(cè)!");response.sendRedirect(request.getContextPath()+"/UserServlet?action=userList");}}catch (Exception e) {e.printStackTrace();}}/*** 去添加頁(yè)面* @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();}}/*** 修改用戶(hù)信息* @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();}}/*** 去修改頁(yè)面* @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();}}//刪除用戶(hù)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();// 通過(guò)對(duì)象方法獲取隨機(jī)數(shù)int data = r.nextInt(list.size()); System.out.println("隨機(jī)數(shù)是 :"+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();}}/*** 去注冊(cè)頁(yè)面* @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
業(yè)務(wù)邏輯層,定義了所有的方法。
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
繼承接口,實(shí)現(xiàn)方法,并去調(diào)用對(duì)應(yīng)的數(shù)據(jù)訪問(wèn)層的方法。
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 {//返回查詢(xún)的信息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);//拋出運(yùn)行異常}} }4.數(shù)據(jù)庫(kù)設(shè)計(jì)
【原創(chuàng)】Jsp+Servlet學(xué)生簽到打卡系統(tǒng)(JavaWeb課程作業(yè))
總結(jié)
以上是生活随笔為你收集整理的Java Web ——基于Jsp+Servlet的学生上课签到打卡系统/上课考勤管理系统的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ovito :qt.qpa.plugin
- 下一篇: Win11桌面便签小工具下载 支持与手机