主要功能:用户不同角色登录(老师、学生、管理员)
系统首页介绍
学生管理:添加学生、查看学生列表信息、查看学生资料
老师管理:添加老师、查看老师列表信息、查看老师资料
成绩管理:查看成绩信息、修改成绩
个人中心:修改个人资料、头像等、注销退出
角色设计
拥有管理员、老师、学生三种角色、每个角色对应不同菜单权限
主要技术
用的技术都是比较基础好学通俗易懂的Java jsp+mysql+servlet+jdbc+jquery+html+css等
具体功能实现
登录:
根据不同账号角色进行登录
首页:首页主要是利用css等进行简单的布局、左侧是菜单栏、中间是系统介绍、右上角是个人中心和账户信息以及注销。
学生《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》
【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享
管理:
添加学生
学生列表:
管理员拥有编辑删除权限、老师拥有编辑权限。学生只能查看信息。
老师管理:添加老师信息
查看老师列表信息:
成绩管理:学生成绩信息查看
个人中心:个人中心随意做了一个alert弹窗
部分代码实现:
登录前端:
<%@ page language=“java” import=“java.util.*” pageEncoding=“UTF-8”%>
id=“ope_name”>
id=“ope_pwd”>
style=“width:60px; float:right; margin-top:10px;margin-right:20px;”
type=“button” value=“登录” οnclick=“login()”>
登录后台servlet:package impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import util.DB;
import dao.ILogin;
import entity.Operator;
import entity.Privilege;
public class LoginImpl implements ILogin {
private PrivilegeImpl1 privilegeImpl = new PrivilegeImpl1();
private RoleImpl roleImpl = new RoleImpl();
private List list_privilege;
private PreparedStatement pst;
private Operator log_operator;
private HttpSession session;
private String checkResult;
private Connection conn;
private ResultSet rs;
// 登录验证
public String login(HttpServletRequest request, Operator operator) {
session = request.getSession();
checkResult = “success”;
log_operator = new Operator();
try {
conn = DB.getConn();
pst = conn
.prepareStatement(“SELECt * FROM operator WHERe ope_name = ?”);
pst.setString(1, operator.getName());
rs = pst.executeQuery();
if (!rs.next()) {
checkResult = “账户不存在,请重新输入!”;
session.setAttribute(“isLogin”, “false”);
} else {
if (!operator.getPwd().equals(rs.getString(3))) {
checkResult = “您输入的密码不正确,请重新输入!”;
session.setAttribute(“isLogin”, “false”);
} else {
// 登录成功
session.setAttribute(“isLogin”, “true”);
// 获得该用户的完整信息
log_operator.setId(rs.getInt(1));
log_operator.setName(rs.getString(2));
log_operator.setPwd(rs.getString(3));
log_operator.setRole(roleImpl.query(“rol_id”,
rs.getString(4)).get(0));
session.setAttribute(“log_operator”, log_operator);
// 根据用户,获取对应的角色对应的权限
list_privilege = privilegeImpl.query(“rol_id”, log_operator
.getRole().getId()
- “”);
List list = new ArrayList();
list.add(list_privilege.get(0));
for (int i = 1; i < list_privilege.size(); i++) {
int y=0;
for(int x=0;x if(!list.get(x).getMenu_name().equals( list_privilege.get(i).getMenu_name())){ y++; } } if (y==list.size()) { list.add(list_privilege.get(i)); } } session.setAttribute(“list”, list); session.setAttribute(“list_privilege”, list_privilege); } } } catch (Exception e) { e.printStackTrace(); } finally { DB.close(conn, pst, rs); } return checkResult; } } 利用最基本的jdbc进行链接 package util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; public class DB { // 获取数据库连接 public static Connection getConn() { Connection conn = null; String url = “jdbc:mysql://localhost:3306/jsp_studentmanager?characterEncoding=utf8”; String name = “root”; String pwd = “123456”; try { Class.forName(“com.mysql.jdbc.Driver”); conn = DriverManager.getConnection(url, name, pwd); } catch (Exception e) { e.printStackTrace(); } return conn; } // 关闭对象 释放资源 public static void close(Connection conn, PreparedStatement pst, ResultSet rs) { try { if (rs != null) rs.close(); if (pst != null) pst.close(); if (conn != null) conn.close(); } catch (Exception e) { e.printStackTrace(); } } } 部分表结构: CREATE TABLE NewTable ( stu_id int(11) NOT NULL AUTO_INCREMENT , ope_id int(11) NULL DEFAULT NULL , stu_no varchar(22) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL , stu_name varchar(22) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL , stu_sex enum(‘男’,‘女’) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT ‘男’ , stu_birth date NULL DEFAULT NULL , stu_pic varchar(22) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL , cla_id int(11) NULL DEFAULT NULL , PRIMARY KEY (stu_id), FOREIGN KEY (cla_id) REFERENCES classes (cla_id) ON DELETe CASCADE ON UPDATE CASCADE, FOREIGN KEY (ope_id) REFERENCES operator (ope_id) ON DELETE CASCADE ON UPDATE CASCADE, UNIQUE INDEX uni_no (stu_no) USING BTREE , UNIQUE INDEX uni_ope (ope_id) USING BTREE , INDEX fk_stu_cla (cla_id) USING BTREE , INDEX fk_stu_ope (ope_id) USING BTREE ) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci AUTO_INCREMENT=13 ROW_FORMAT=COMPACT ; CREATE DEFINER=root@localhost TRIGGER TG_3 AFTER DELETE ON NewTable FOR EACH ROW BEGIN DELETE FROM operator WHERe ope_id = old.ope_id; END;
学生表:



