1. System introduction
1. Development environment
Development tool: IDEA2018
JDK version: jdk1.8
Mysql version: 8.0.13
2. Technical selection
Java+Servlet+Boostrap+Jsp+Mysql
3. System function
1. User registration and login system;
2. Administrators review users, check course selection, enable sign-in, delete courses, and change passwords;
3. Teachers create courses, view members, enable sign-in, delete courses, and change passwords;
4. Students choose courses, withdraw courses, and change passwords;
4. Database file
/*
Navicat Premium Data Transfer
Source Server : MYSQL
Source Server Type : MySQL
Source Server Version : 80013
Source Host : localhost:3306
Source Schema : servlet_select_course
Target Server Type : MySQL
Target Server Version : 80013
File Encoding : 65001
Date: 24/12/2021 16:58:38
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for tb_courses
-- ----------------------------
DROP TABLE IF EXISTS `tb_courses`;
CREATE TABLE `tb_courses` (
`course_id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(45) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL,
`teach_id` varchar(45) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL,
`day` varchar(45) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL,
`is_signin` varchar(45) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL,
`member_num` int(11) NULL DEFAULT NULL,
PRIMARY KEY (`course_id`) USING BTREE,
INDEX `C_FK`(`teach_id`) USING BTREE,
CONSTRAINT `C_FK` FOREIGN KEY (`teach_id`) REFERENCES `tb_users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB AUTO_INCREMENT = 29 CHARACTER SET = utf8 COLLATE = utf8_unicode_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of tb_courses
-- ----------------------------
INSERT INTO `tb_courses` VALUES (27, '软件工程', '101', '星期一, 1 - 2 节', 'false', 1);
INSERT INTO `tb_courses` VALUES (28, '计算机导论', '104', '星期二, 3 - 4 节', 'false', 0);
-- ----------------------------
-- Table structure for tb_join
-- ----------------------------
DROP TABLE IF EXISTS `tb_join`;
CREATE TABLE `tb_join` (
`course_id` int(11) NULL DEFAULT NULL,
`stu_id` varchar(45) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL,
`checked` varchar(45) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_unicode_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of tb_join
-- ----------------------------
INSERT INTO `tb_join` VALUES (27, '1001', 'true');
INSERT INTO `tb_join` VALUES (28, '1001', 'checking');
-- ----------------------------
-- Table structure for tb_signin
-- ----------------------------
DROP TABLE IF EXISTS `tb_signin`;
CREATE TABLE `tb_signin` (
`signin_id` int(11) NOT NULL AUTO_INCREMENT,
`course_id` int(11) NULL DEFAULT NULL,
`time` varchar(45) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL,
`signin_num` int(11) NULL DEFAULT NULL,
`end_time` varchar(45) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL,
PRIMARY KEY (`signin_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 25 CHARACTER SET = utf8 COLLATE = utf8_unicode_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of tb_signin
-- ----------------------------
INSERT INTO `tb_signin` VALUES (24, 27, '2021-12-20 15:15:48', 1, '2021-12-20 15:16:16');
-- ----------------------------
-- Table structure for tb_signin_stu
-- ----------------------------
DROP TABLE IF EXISTS `tb_signin_stu`;
CREATE TABLE `tb_signin_stu` (
`signin_id` int(11) NULL DEFAULT NULL,
`stu_id` varchar(45) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL,
`state` varchar(45) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_unicode_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of tb_signin_stu
-- ----------------------------
INSERT INTO `tb_signin_stu` VALUES (24, '1001', 'true');
-- ----------------------------
-- Table structure for tb_users
-- ----------------------------
DROP TABLE IF EXISTS `tb_users`;
CREATE TABLE `tb_users` (
`user_id` varchar(45) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`password` varchar(45) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL,
`name` varchar(45) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL,
`type` varchar(45) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL,
`checked` varchar(45) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL,
PRIMARY KEY (`user_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_unicode_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of tb_users
-- ----------------------------
INSERT INTO `tb_users` VALUES ('1001', '123456', '同学1', 'stu', 'true');
INSERT INTO `tb_users` VALUES ('1002', '123456', '同学2', 'stu', 'true');
INSERT INTO `tb_users` VALUES ('101', '123456', '教师1', 'teach', 'true');
INSERT INTO `tb_users` VALUES ('102', '123456', '教师2', 'teach', 'true');
INSERT INTO `tb_users` VALUES ('103', '123456', '教师3', 'teach', 'true');
INSERT INTO `tb_users` VALUES ('104', '123456', '王老师', 'teach', 'true');
INSERT INTO `tb_users` VALUES ('105', '123456', '李老师', 'teach', 'false');
INSERT INTO `tb_users` VALUES ('admin', 'admin', '管理员', 'admin', 'true');
SET FOREIGN_KEY_CHECKS = 1;
2. System display
1. Log in to the system
2. Registration system
3. Admin - Home
4. Admin - manage users
5. Admin - Manage Courses
6. Administrator - change password
7. Teacher - Create a Course
8. Teacher - My Course
9. Teacher - change password
10. Students - join a course
11. Student - My Course
12. Student - change password
3. Part of the code
CreateCourseAction
package com.sjsq.servlet;
import com.sjsq.bean.Course;
import com.sjsq.bean.User;
import com.sjsq.dao.CourseDao;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet("/CreateCourseAction")
@MultipartConfig
public class CreateCourseAction extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doGet(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();
String courseName = req.getParameter("courseName");
String day = req.getParameter("day");
String courseTime = req.getParameter("courseTime");
String Day = day + ", " + courseTime;
User user = (User) req.getSession().getAttribute("User");
String teach_id = user.getId();
Course course = new Course(0, courseName, teach_id, Day, "false", 0);
CourseDao courseDao = new CourseDao();
int result = courseDao.Create(course);
if (result == 0) {
out.println("<script> alert('创建课程失败'); location='teacher_create.jsp'; </script>");
} else if (result == 1) {
out.println("<script> alert('创建课程成功'); location='teacher_create.jsp'; </script>");
} else {
out.println("<script> alert('上课时间冲突'); location='teacher_create.jsp'; </script>");
}
}
}
DeleteAction
package com.sjsq.servlet;
import com.sjsq.dao.CourseDao;
import com.sjsq.dao.JoinDao;
import com.sjsq.dao.UserDao;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
@WebServlet("/DeleteAction")
@MultipartConfig
public class DeleteAction extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();
String ope = req.getParameter("ope");
if (ope.equals("userdel")) {
// 删除用户
String user_id = req.getParameter("user_id");
UserDao userDao = new UserDao();
if (userDao.DelUser(user_id) == 1) {
out.println("<script> alert('删除成功'); location='toaudit.jsp'; </script>");
} else {
out.println("<script> alert('删除失败'); location='toaudit.jsp'; </script>");
}
} else if (ope.equals("useradd")) {
// 用户审核
String user_id = req.getParameter("user_id");
UserDao userDao = new UserDao();
try {
if (userDao.Check(user_id) == 1) {
out.println("<script> alert('审核通过'); location='toaudit.jsp'; </script>");
} else {
out.println("<script> alert('操作失败'); location='toaudit.jsp'; </script>");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
out.println("<script> alert('操作失败'); location='toaudit.jsp'; </script>");
}
} else if (ope.equals("coursedel")) {
// 课程删除
String c = req.getParameter("course_id");
String type = req.getParameter("type");
int course_id = Integer.valueOf(c);
CourseDao courseDao = new CourseDao();
if (courseDao.DelCourse(course_id) == 1) {
if (type.equals("admin")) {
out.println("<script> alert('课程删除成功'); location='show_all_courses.jsp'; </script>");
} else {
out.println("<script> alert('课程删除成功'); location='my_courses.jsp'; </script>");
}
} else {
if (type.equals("admin")) {
out.println("<script> alert('课程删除失败'); location='show_all_courses.jsp'; </script>");
} else {
out.println("<script> alert('课程删除失败'); location='my_courses.jsp'; </script>");
}
}
} else if (ope.equals("joindel")) {
// 退出选课
String c = req.getParameter("course_id");
String user_id = req.getParameter("user_id");
int course_id = Integer.valueOf(c);
String from_ = req.getParameter("from_");
JoinDao joinDao = new JoinDao();
if (joinDao.Delete(course_id, user_id) == 1) {
out.println("<script> alert('退出成功'); location='" + from_ + "'; </script>");
} else {
out.println("<script> alert('退出失败'); location='" + from_ + "'; </script>");
}
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}
LoginAction
package com.sjsq.servlet;
import com.sjsq.bean.User;
import com.sjsq.dao.UserDao;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
@WebServlet("/LoginAction")
@MultipartConfig
public class LoginAction extends HttpServlet {
private static final long serialVersionUID = 1L;
public LoginAction() {
super();
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.sendRedirect("login.jsp");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();
String user_id = req.getParameter("inputUser_id"); // 从name属性中获取
String userPass = req.getParameter("inputPassword");
User user = new User();
user.setId(user_id);
user.setPassword(userPass);
UserDao userDao = new UserDao();
User user2;
try {
user2 = userDao.Query(user);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
out.println("<script> alert('登陆失败'); location='login.jsp'; </script>");
return;
}
if ((user2.getId()).equals("")) {
// 用户不存在
out.println("<script> alert('用户不存在'); location='login.jsp'; </script>");
} else if (user2.getPassword().equals(userPass)) {
// 登陆成功
req.getSession(true).setAttribute("User", user2);
out.println("<script> alert('登陆成功'); location='index.jsp'; </script>");
} else {
// 密码错误
out.println("<script> alert('密码错误'); location='login.jsp'; </script>");
}
}
}
LogoutAction
package com.sjsq.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@WebServlet("/LogoutAction")
public class LogoutAction extends HttpServlet {
private static final long serialVersionUID = 1L;
public LogoutAction() {
super();
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
HttpSession session = req.getSession(false);
if (session == null) {
resp.sendRedirect("login.jsp");
return;
}
session.removeAttribute("User");
resp.sendRedirect("login.jsp");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doGet(req, resp);
}
}
MulAction
package com.sjsq.servlet;
import com.sjsq.bean.Join;
import com.sjsq.dao.CourseDao;
import com.sjsq.dao.JoinDao;
import com.sjsq.dao.SigninDao;
import com.sjsq.dao.SigninStuDao;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet("/MulAction")
@MultipartConfig
public class MulAction extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();
String ope = req.getParameter("ope");
if (ope.equals("joincreat")) {
String c = req.getParameter("course_id");
String user_id = req.getParameter("user_id");
int course_id = Integer.valueOf(c);
Join join = new Join(course_id, user_id, "checking");
JoinDao joinDao = new JoinDao();
int result = joinDao.Creat(join);
if (result == 2) {
out.println("<script> alert('课程已经选过'); location='show_all_courses.jsp'; </script>");
} else if (result == 1) {
out.println("<script> alert('加入成功'); location='show_all_courses.jsp'; </script>");
} else {
out.println("<script> alert('加入失败'); location='show_all_courses.jsp'; </script>");
}
} else if (ope.equals("joinaccept")) {
String c = req.getParameter("course_id");
String user_id = req.getParameter("user_id");
int course_id = Integer.valueOf(c);
String from_ = req.getParameter("from_");
JoinDao joinDao = new JoinDao();
int result = joinDao.Update(course_id, user_id, "true");
if (result == 1) {
out.println("<script> alert('通过成功'); location='" + from_ + "'; </script>");
} else {
out.println("<script> alert('通过失败'); location='" + from_ + "'; </script>");
}
} else if (ope.equals("signincreat")) {
String c = req.getParameter("course_id");
int course_id = Integer.valueOf(c);
String from_ = req.getParameter("from_");
SigninDao signinDao = new SigninDao();
int result = signinDao.Creat(course_id);
if (result == 1) {
SigninStuDao signinStuDao = new SigninStuDao();
CourseDao courseDao = new CourseDao();
int signin_id = signinDao.FindLast(course_id);
signinStuDao.Creat(signin_id, course_id);
courseDao.Update(course_id, "true");
out.println("<script> alert('签到已开始'); location='" + from_ + "'; </script>");
} else {
out.println("<script> alert('开始失败'); location='" + from_ + "'; </script>");
}
} else if (ope.equals("signinstop")) {
String c = req.getParameter("course_id");
int course_id = Integer.valueOf(c);
String from_ = req.getParameter("from_");
CourseDao courseDao = new CourseDao();
int result = courseDao.Update(course_id, "false");
if (result == 1) {
SigninDao signinDao = new SigninDao();
signinDao.Update(signinDao.FindLast(course_id));
out.println("<script> alert('签到已停止'); location='" + from_ + "'; </script>");
} else {
out.println("<script> alert('停止失败'); location='" + from_ + "'; </script>");
}
} else if (ope.equals("signin")) {
String stu_id = req.getParameter("stu_id");
String c = req.getParameter("signin_id");
int signin_id = Integer.valueOf(c);
String from_ = java.net.URLDecoder.decode(req.getParameter("from_"), "UTF-8");
SigninStuDao signinStuDao = new SigninStuDao();
int result = signinStuDao.Update(signin_id, stu_id, "true");
if (result == 1) {
SigninDao signinDao = new SigninDao();
signinDao.AddNum(signin_id);
out.println("<script> alert('签到成功'); location='" + from_ + "'; </script>");
} else {
out.println("<script> alert('签到失败'); location='" + from_ + "'; </script>");
}
}
}
}
RegisterAction
package com.sjsq.servlet;
import com.sjsq.bean.User;
import com.sjsq.dao.UserDao;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet("/RegisterAction")
@MultipartConfig
public class RegisterAction extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
public RegisterAction() {
super();
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
RequestDispatcher rd = req.getRequestDispatcher("register.jsp");
rd.forward(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();
String user_id = req.getParameter("inputUser_id");
String userPass = req.getParameter("inputPassword");
String Confirm = req.getParameter("confirmPassword");
String name = req.getParameter("inputName");
String type = req.getParameter("type");
int flag = 0;
for (int i = 0; i < user_id.length(); i++) if (user_id.charAt(i) < '0' || user_id.charAt(i) > '9') flag++;
if (flag != 0) {
out.println("<script> alert('学号只能含有数字'); location='register.jsp'; </script>");
} else if (!userPass.equals(Confirm)) {
out.println("<script> alert('两次密码不相同'); location='register.jsp'; </script>");
} else {
User user = new User(user_id, userPass, name, type);
UserDao userDao = new UserDao();
int result = userDao.create(user);
if (result == 1) {
out.println("<script> alert('注册成功'); location='login.jsp'; </script>");
} else {
if (result == 0) out.println("<script> alert('注册失败'); location='register.jsp'; </script>");
else out.println("<script> alert('该账号已被注册'); location='register.jsp'; </script>");
}
}
}
}
UpdateUserAction
package com.sjsq.servlet;
import com.sjsq.bean.User;
import com.sjsq.dao.UserDao;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
@WebServlet("/UpdateUserAction")
@MultipartConfig
public class UpdateUserAction extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doGet(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();
String oldPass = req.getParameter("oldPassword");
String newPass = req.getParameter("newPassword");
String Confirm = req.getParameter("confirmPassword");
if (!newPass.equals(Confirm)) {
out.println("<script> alert('两次密码不相同'); location='update_user.jsp'; </script>");
} else {
User user = (User) req.getSession().getAttribute("User");
if (!user.getPassword().equals(oldPass)) {
out.println("<script> alert('原密码错误'); location='update_user.jsp'; </script>");
} else {
UserDao userDao = new UserDao();
int result = 0;
try {
result = userDao.Update(user.getId(), newPass);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (result == 1) {
HttpSession session = req.getSession(false);
session.removeAttribute("User");
out.println("<script> alert('修改密码成功'); location='login.jsp'; </script>");
resp.sendRedirect("login.jsp");
} else {
out.println("<script> alert('修改密码失败'); location='update_user.jsp'; </script>");
resp.sendRedirect("update_user.jsp");
}
}
}
}
}
4. Other
1. More systems
Java+JSP system series implementation
Java+JSP Realization of Student Book Management System
Java+JSP Realization of Student Information Management System
Java+JSP Realization of User Information Management System
Java+Servlet system series implementation
Java+Servlet+JSP Realization of Airline Booking System
Java+Servlet+JSP Realization of News Release System
Java+Servlet+JSP Student Dormitory Management System
Java+Servlet+JSP Realization of Book Management System
Java+Servlet+JSP Realization of Parking Lot Management System
Java+Servlet+JSP Realization of Housing Rental Management System
Java+Servlet+JSP Realization of Student Information Management System
Java+Servlet+JSP to realize student course selection management system
Java+Servlet+JSP realizes pet clinic management system
Java+Servlet+JSP realizes student achievement management system-1
Java+Servlet+JSP realizes student achievement management system-2
Java+SSM system series implementation
Java+SSM+JSP to realize online examination system
Java+SSM+JSP to realize pet mall system
Java+SSM+JSP Realization of Supermarket Management System
Java+SSM+JSP realizes student achievement management system
Java+SSM+JSP Realization of Student Information Management System
Java+SSM+JSP+Maven to realize online bookstore system
Java+SSM+JSP+Maven to realize school education management system
Java+SSH system series implementation
Java+SSH+JSP Realization of Online Exam System
Java+SSH+JSP Realization of Hospital Online Registration System
Java+Springboot system series implementation
Java+Springboot+H-ui+Maven to realize marketing management system
Java+Springboot+Bootstrap+Maven to realize online mall system
Java+Springboot+Bootstrap+Maven realizes scenic tourism management system
1. For more JavaWeb systems, please pay attention to the column.
2. For more JavaSwing systems, please pay attention to the column.
2. Source code download
sql is under the sql folder
Java+Servlet+JSP+Mysql realizes Web student course selection and sign-in system
3. Remarks
If there is any infringement, please contact me to delete it.
4. Support Bloggers
If you think this article is helpful to you, please like, follow and favorite. wish you a happy life! If you want to get other resources, you can follow the WeChat public account on the left to get it!