1、引言
学生管理系统Java Web开发旨在提升学校管理效率,优化教学,满足现代教育需求,增强学校竞争力。同时,为开发者提供编程与系统设计实践机会,改善校内运作,服务教育社会,促进教育事业适应科技与管理新趋势。
2、技术基础
本系统采用先进的集成开发环境(IDE)IntelliJ IDEA 2023.3.4进行开发;采用MySQL 8.0.34作为数据库管理系统;采用Tomcat 8.5.99作为Web服务器;jdk为1.8.0。
2.1B/S(Browser/Server)架构
B/S(Browser/Server)架构是一种新型网络结构模式,这种模式是基于浏览器和服务器的。它统一了客户端都使用浏览器模式,将系统功能实现的核心部分都集中到服务器上,因此简化了系统的开发、使用和维护。
2.2前端技术栈
jQuery 是一个快速、小巧且功能丰富的 JavaScript 库,它简化了 HTML 文档遍历、事件处理、动画以及 Ajax 交互的编程。在本学生管理系统中,jQuery 被用于简化 DOM 操作、实现动态效果以及发送 Ajax 请求与后端进行数据交互。
Bootstrap 是一个包含 HTML、CSS 和 JavaScript 的开源框架,用于开发响应式网站和 Web 应用程序。在本系统中,Bootstrap 被用于快速构建美观且功能完善的用户界面,并提供一致的跨浏览器和跨设备的用户体验。
2.3后端技术栈
JSP 是一种基于 Java 技术的服务器端编程技术,用于创建动态 Web 页面。JSP 允许开发人员在 HTML 页面中直接嵌入 Java 代码片段,这些代码片段在服务器端执行,并生成动态内容。在本系统中,JSP 用于构建用户界面和展示数据。
Servlet 是 Java EE 规范的一部分,用于处理客户端发送的请求并生成响应。Servlet 运行在服务器端,是 Web 应用程序的控制器组件。在本系统中,Servlet 负责处理前端请求,与数据库交互,并控制业务逻辑的执行。
Tomcat 是一个开源的 Web 应用服务器,基于 Java Servlet/JSP 规范开发。它提供了 Web 服务器所需的功能,包括 HTTP 服务器、Servlet 容器和 JSP 引擎。在本系统中,Tomcat 用于部署和运行 Web 应用程序。
MySQL 是一个流行的开源关系型数据库管理系统。它使用结构化查询语言(SQL)进行数据管理。在本系统中,MySQL 用于存储学生管理系统的数据,如学生信息、课程信息、成绩等。
3、需求分析
学生管理系统的用户分为学生、教师。
学生:学生可以通过学号(用户名即为学号)密码(默认为0,可以修改)进行登录。学生登陆后可以在个人信息页面上传头像,修改密码。在成绩信息页面可以查询成绩,查看学号、姓名以及专业等相关信息。
教师:教师可以通过邮箱注册账号(有验证码功能)并登录。教师登录成功后,可以在个人信息页面上传头像,修改姓名,性别邮箱密码等个人信息。在学生管理界面,查询学生信息,可以添加,修改,删除学生信息,可以查询修改学生成绩(可以下载学生的成绩信息通过Excel导出)。
4、系统设计
4.1功能模块设计
用户登录流程图
系统结构图
4.2数据库设计
创建学生表
CREATE TABLE student (
id VARCHAR(50) PRIMARY KEY,
name VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL,
sex VARCHAR(50),
School_date VARCHAR(50),
major VARCHAR(50),
email VARCHAR(50)
);
创建教师表
CREATE TABLE teacher (
id VARCHAR(50) PRIMARY KEY,
name VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL,
sex VARCHAR(50),
email VARCHAR(50)
);
创建成绩表
CREATE TABLE score (
id VARCHAR(50) PRIMARY KEY,
dat VARCHAR(50),
android VARCHAR(50),
jsp VARCHAR(50)
);
5、系统实现
登录模块
public class check_login extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
HttpSession session = request.getSession();
String user = request.getParameter("user");
String password = request.getParameter("password");
String remember = request.getParameter("remember");
TeacherD teacherD = new TeacherD();
StudentD studentD = new StudentD();
AdminD adminD = new AdminD();
Teacher teacher = null;
Student student = null;
Admin admin = null;
try {
// 判断用户身份
teacher = teacherD.checkAccount(user, password);
student = studentD.checkAccount(user, password);
admin = adminD.checkAccount(user, password);
}
catch (Exception e) {
out.print(e);
}
if (teacher != null) {
//向session中添加用户信息
session.setAttribute("info", teacher);
//检查用户是否需要保持登录状态
if (remember != null) {
//发送cookie到客户端
Cookie userCookie = new Cookie("name", user);
userCookie.setMaxAge(10);
response.addCookie(userCookie);
}
response.sendRedirect("one_page_student");
}
else if (student != null){
//向session中添加用户信息
session.setAttribute("info", student);
//检查用户是否需要保持登录状态
if (remember != null) {
//发送cookie到客户端
Cookie userCookie = new Cookie("name", user);
userCookie.setMaxAge(10);
response.addCookie(userCookie);
}
response.sendRedirect("student/main.jsp");
}
else if (admin != null) {
//向session中添加用户信息
session.setAttribute("info", admin);
//检查用户是否需要保持登录状态
if (remember != null) {
//发送cookie到客户端
Cookie userCookie = new Cookie("name", user);
userCookie.setMaxAge(10);
response.addCookie(userCookie);
}
response.sendRedirect("admin/main.jsp");
}
else {
out.print("<script>alert(\"用户名或密码错误!\");");
}
}
}
注册模块
public class check_register extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8");
String email = request.getParameter("email");
String user = request.getParameter("user");
String password = request.getParameter("password1");
String code = request.getParameter("code");
PrintWriter out = response.getWriter();
HttpSession session = request.getSession();
String randStr = (String) session.getAttribute("randStr");
if (!code.equals(randStr)) {
out.print("<script>alert(\"验证码错误!\");location.href = \"register.jsp\";</script>");
} else {
TeacherD teacherD = new TeacherD();
Teacher teacher = null;
try {
teacher = teacherD.insertTeacher(user, password, email);
} catch (Exception e) {
out.print(e);
}
if (teacher != null) {
//向session中添加用户信息
session.setAttribute("info", teacher);
response.sendRedirect("one_page_student");
} else {
out.print("<script>alert(\"此用户已经注册!\");location.href = \"register.jsp\";</script>");
}
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
增删改查模块
public class add_student extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
StudentD studentD = new StudentD();
ScoreD scoreD = new ScoreD();
String id = request.getParameter("id");
String name = request.getParameter("name");
String sex = request.getParameter("sex");
String major = request.getParameter("major");
String school_date = request.getParameter("school_date");
try {
studentD.insertStudent(id, name, sex, school_date, major);
scoreD.insertScore(id);
}
catch (Exception e){
out.print(e);
}
response.sendRedirect("one_page_student");
}
}
public class delete_student extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
StudentD studentD = new StudentD();
ScoreD scoreD = new ScoreD();
String id = request.getParameter("id");
try {
studentD.deleteStudent(id);
scoreD.deleteScore(id);
response.sendRedirect("one_page_student");
}
catch (Exception e){
out.print(e);
}
}
}
public class update_student extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
StudentD studentD = new StudentD();
String stuno = request.getParameter("stuno");
String stuname = request.getParameter("stuname");
String stusex = request.getParameter("stusex");
String stumajor = request.getParameter("stumajor");
try {
studentD.updateStudentInfo(stuno, stuname, stusex, stumajor);
}
catch (Exception e){
out.print(e);
}
response.sendRedirect("one_page_student");
}
}
6、总结
本系统是一个关于学生管理的系统,学生可以通过学号、密码(进行登录。学生登陆后可以在个人信息页面上传头像,修改密码。在成绩信息页面可以查询成绩,查看学号、姓名以及专业等相关信息。教师可以通过邮箱注册账号并登录。教师登录成功后,可以在个人信息页面上传头像,修改姓名,性别邮箱密码等个人信息。在学生管理界面,查询学生信息,可以添加,修改,删除学生信息,可以查询修改学生成绩(可以下载学生的成绩信息通过Excel导出)。
源代码:https://github.com/wameln/-.git