今天我们来实现管理员登陆与学生登录及功能等的前后端代码
首先是我的配置图



1、管理员
①后端
UserController
package com.example.controller;
import com.example.pojo.Result;
import com.example.pojo.User;
import com.example.pojo.student;
import com.example.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
//登陆验证
@GetMapping("/getByUser")
public ResponseEntity<Integer> getByUser(String username, String password, String position) {
int re = userService.getByUser(username, password, position);
return ResponseEntity.ok(re);
}
//学生注册
@PostMapping("/add")
public Result add(@RequestBody student s) {
userService.add(s);
return Result.success(s);
}
//登陆用户信息添加
@PostMapping("addUser")
public Result addUser(@RequestBody User user) {
userService.addUser(user);
return Result.success(user);
}
//查询登录数据
@GetMapping("getUser/{username}")
public Result getUser1(@PathVariable String username) {
User user = userService.getUser(username);
if (user != null) {
return Result.success(user);
} else {
return Result.error("查询失败");
}
}
//查询个人信息
@GetMapping("/person/{username}")
public Result getPerson(@PathVariable String username) {
student s = userService.getPerson(username);
if (s != null) {
return Result.success(s);
} else {
return Result.error("查询失败");
}
}
//修改用户密码
@PutMapping("/update/{username}/{password}")
public Result update(@PathVariable String username, @PathVariable String password) {
userService.update(username, password);
User user = userService.getUser(username);
if (user != null) {
return Result.success(user);
} else {
return Result.error("修改失败");
}
}
// 获取全部申请注册的信息
@GetMapping("/getAll")
public Result getAll() {
List<student> students = userService.getAll();
if (students != null) {
return Result.success(students);
} else {
return Result.error("当前不存在未审查的信息");
}
}
//修改审批状态
@PutMapping("/updateById/{stuId}/{state}")
public Result updateById(@PathVariable String stuId, @PathVariable int state) {
userService.updateById(stuId, state);
List<student> s = userService.getAll();
if (s != null) {
return Result.success(s);
} else {
return Result.error("审批失败");
}
}
//查询考试信息
@GetMapping("/selectTest/{courseName}/{courseClass}/{courseMajor}")
public Result selectTest(@PathVariable("courseName") String courseName, @PathVariable("courseClass") String courseClass, @PathVariable("courseMajor") String courseMajor) {
return Result.success(userService.selectTest(courseName, courseClass, courseMajor));
}
}
UserService
package com.example.service;
import com.example.mapper.UserMapper;
import com.example.pojo.Test;
import com.example.pojo.User;
import com.example.pojo.student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
//登陆验证
public int getByUser(String username, String password, String position) {
return userMapper.getByUser(username, password, position);
}
//注册学生数据
public void add(student s) {
String stuID = s.getStuId();
String stuName = s.getStuName();
String grade = s.getGrade();
String sex = s.getSex();
String college = s.getCollege();
String professionals = s.getProfessionals();
String phone = s.getPhone();
String position = s.getPosition();
int state = s.getState();
userMapper.add(stuID, stuName, grade, sex, college, professionals, phone, position, state);
}
public void addUser(User user) {
String username=user.getUsername();
String password=user.getPassword();
// String[] position= user.getPosition().toArray(new String[0]);
String position=String.join(",",user.getPosition());
userMapper.addUser(username,password, position);
}
//查询个人详细信息
public student getPerson(String username) {
return userMapper.getPerson(username);
}
public User getUser(String username) {
return userMapper.getUser(username);
}
public void update(String username, String password) {
userMapper.update(username, password);
}
public List<student> getAll() { return userMapper.getAll();
}
public void updateById(String stuId,int state) { userMapper.updateById(stuId,state);
}
public List<Test> selectTest(String courseName, String courseClass, String courseMajor) {
return userMapper.selectTest(courseName, courseClass, courseMajor);
}
}
UserMapper
package com.example.mapper;
import com.example.pojo.Test;
import com.example.pojo.User;
import com.example.pojo.student;
import org.apache.ibatis.annotations.*;
import java.util.List;
@Mapper
public interface UserMapper {
//根据用户名和密码查询用户
//根据用户名和密码查询用户,并返回用户所在部门
@Select("select count(*) from user where username = #{username} and password = #{password} and position like concat('%', #{position}, '%')")
int getByUser(@Param("username") String username, @Param("password") String password, @Param("position") String position);
@Insert("insert into student(StuID, StuName, grade, sex, College, Professionals, Phone, Position, State) VALUES (#{id},#{StuName},#{grade},#{sex},#{College},#{Professionals},#{Phone},#{Position},#{State})")
void add(String id, String StuName, String grade, String sex, String College, String Professionals, String Phone, String Position, int State);
@Select("select * from student where StuID=#{username}")
student getPerson(String username);
@Select("select * from user where username=#{username}")
User getUser(String username);
@Update("update user set password=#{password} where username=#{username}")
void update(@Param("username") String username, @Param("password") String password);
@Select("SELECT * from student where State=0")
List<student> getAll();
@Update("update student set State=#{state} where StuID=#{stuId}")
void updateById(String stuId, int state);
@Insert("insert into user(username,password,position) VALUES (#{username},#{password},#{position})")
void addUser(String username, String password, String position);
@Select("select * from test1 where AuditStatus=2 and CourseName=#{courseName} and CourseClass=#{courseClass} and CourseMajor=#{courseMajor} ")
List<Test> selectTest(String courseName, String courseClass, String courseMajor);
}
②前端
主页面index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>用户登录</title>
<style>
button {
display: block;
margin-top: 10px;
padding: 10px;
background-color: #007bff;
color: #fff;
border: none;
border-radius: 3px;
cursor: pointer;
}
.centered-form {
text-align: center;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
}
.bordered-form {
border: 2px solid #000; /* 边框样式 */
padding: 20px; /* 可选的内边距 */
background-color: #f0f0f0; /* 可选的背景颜色 */
}
</style>
</head>
<body>
<div class="centered-form">
<div class="bordered-form">
<h1>用户登录</h1>
<form id="login">
<label for="username">用户名:</label><input type="text" id="username">
<br>
<label for="password">密码:</label><input type="password" id="password">
<br>
<label>职位:</label>
<div id="loginUser">
<label><input type="radio" name="loginUser" value="专业教师">专业教师</label>
<label><input type="radio" name="loginUser" value="专业负责人">专业负责人</label>
<label><input type="radio" name="loginUser" value="教学副院长">教学副院长</label>
<label><input type="radio" name="loginUser" value="学生">学生</label>
<label><input type="radio" name="loginUser" value="系统管理员">系统管理员</label>
</div>
<div class="centered-buttons">
<button type="submit" style="display: block; margin: 0 auto;">登录</button>
<br>
<button id="register" type="button" style="display: block; margin: 0 auto;">学生注册</button>
</div>
</form>
</div>
</div>
</body>
<script>
const register = document.getElementById("register");
register.addEventListener("click", function () {
window.location.href = "http://localhost:8080/STUDENT/register.html";
});
document.getElementById("login").addEventListener("submit", function (event) {
event.preventDefault();
const username = document.getElementById("username").value;
const password = document.getElementById("password").value;
const loginUser = document.querySelectorAll('input[name="loginUser"]');
let l;
loginUser.forEach(radio => {
if (radio.checked) {
l = radio.value;
}
});
const url = `user/getByUser?username=${username}&password=${password}&position=${l}`;
fetch(url, {
method: 'GET',
headers: {
'Content-Type': 'application/json'
}
})
.then(res => res.json())
.then(data => {
if (data === 1) {
alert("登录成功");
if (l === '系统管理员') {
window.location.href = "ROOT/administrator.html?username=" + encodeURIComponent(username);
} else if (l === '学生') {
window.location.href = "STUDENT/student.html?username=" + encodeURIComponent(username);
} else if (l === '专业教师') {
window.location.href = "TEACHER/teacher.html?username=" + encodeURIComponent(username);
} else if (l === '专业负责人') {
window.location.href = "HEAD/head.html?username=" + encodeURIComponent(username);
} else if (l === '教学副院长') {
window.location.href = "PRESIDENT/president.html?username=" + encodeURIComponent(username);
}
} else {
alert("登录失败");
console.log(data);
}
})
.catch(error => {
alert("请求失败,请重试");
console.error(error);
});
});
</script>
</html>
administrator.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>管理员页面</title>
<style>
.form {
width: 600px;
margin: 0 auto;
/*border: 1px solid red;*/
}
.form table {
margin: 0 auto;
}
.form table tr td {
width: 100px;
height: 30px;
border: 1px solid #000;
text-align: center;
}
button {
display: block;
margin-top: 10px;
padding: 10px;
background-color: #007bff;
color: #fff;
border: none;
border-radius: 3px;
cursor: pointer;
}
</style>
</head>
<body>
<h1 style="text-align: center">管理员系统</h1>
<script>
// 获取URL中的用户名参数
var urlParams = new URLSearchParams(window.location.search);
var username = urlParams.get('username');
console.log(username);
</script>
<div class="form">
<table border="1px" cellspacing="0" width="600px">
<tr>
<th>编号</th>
<th>功能</th>
</tr>
<tr>
<td>1</td>
<td>
<button id="examine">审批学生注册信息</button>
</td>
</tr>
<tr>
<td>2</td>
<td>
<button id="insert">增加信息</button>
</td>
</tr>
<tr>
<td>3</td>
<td>
<button id="delete">删除信息</button>
</td>
</tr>
<tr>
<td>4</td>
<td>
<button id="update">修改信息</button>
</td>
</tr>
<tr>
<td>5</td>
<td>
<button id="select">查询信息</button>
</td>
</tr>
<tr>
<td>6</td>
<td>
<button id="reset">重置学生密码</button>
</td>
</tr>
</table>
</div>
</body>
<script>
document.getElementById("examine").addEventListener("click", function () {
window.location.href = "examine.html";
});
document.getElementById('insert').addEventListener('click', function () {
window.location.href = "insert.html";
});
document.getElementById("delete").addEventListener("click", function () {
window.location.href = "delete.html";
});
document.getElementById('update').addEventListener('click', function () {
window.location.href = "update.html";
});
document.getElementById("select").addEventListener("click", function () {
window.location.href = "select.html";
});
document.getElementById("reset").addEventListener("click", function () {
window.location.href = "reSet.html";
});
</script>
</html>
insert.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>信息添加</title>
<style>
.reSet {
background-color: #4CAF50;
color: white;
border: none;
padding: 10px 20px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
margin: 4px 2px;
cursor: pointer;
}
.form {
width: 600px;
margin: 0 auto;
/*border: 1px solid red;*/
}
.form table {
margin: 0 auto;
}
.form table tr td {
width: 100px;
height: 30px;
border: 1px solid #000;
text-align: center;
}
button {
display: block;
margin-top: 10px;
padding: 10px;
background-color: #007bff;
color: #fff;
border: none;
border-radius: 3px;
cursor: pointer;
}
.centered-form {
text-align: center;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
}
.bordered-form {
border: 2px solid #000; /* 边框样式 */
padding: 20px; /* 可选的内边距 */
background-color: #f0f0f0; /* 可选的背景颜色 */
}
</style>
</head>
<body>
<h1 style="text-align: center">添加信息</h1>
<div class="centered-form">
<div class="bordered-form">
<div class="form">
<form id="addForm">
<label for="username">请输入用户名</label>
<input type="text" id="username" minlength="8" maxlength="8" required>
<br>
<label for="name">请输入姓名</label>
<input type="text" id="name">
<br>
<label for="college">请输入所属学院</label>
<input type="text" id="college">
<br>
<label for="pro">请输入所属专业</label>
<input type="text" id="pro">
<br>
<label for="position">请输入职位,001表示普通教师、010表示专业负责人、011表示即是教师又是专业负责人,111表示三种角色兼具</label>
<input type="text" id="position">
<button type="submit" style="display: block; margin: 0 auto;">添加</button>
</form>
</div>
</div>
</div>
</body>
<script>
document.getElementById('addForm').addEventListener('submit', function (e) {
e.preventDefault();
const username = document.getElementById('username');
const name = document.getElementById('name');
const college = document.getElementById('college');
const pro = document.getElementById('pro');
const role = document.getElementById('position');
console.log(username.value + " " + name.value + " " + college.value + " " + pro.value + " " + role.value);
addUser(username.value, role.value);
addTea(username.value, name.value, college.value, pro.value, role.value);
});
</script>
<script>
function addUser(username, role) {
const requestUrl = 'http://localhost:8080/root/add';
const roleToPoList = {
'111': ["专业教师", "专业负责人", "教学副院长"],
'011': ["专业教师", "专业负责人"],
'001': ["专业教师"],
'100': ["教学副院长"],
'010': ["专业负责人"],
'110': ["专业负责人", "教学副院长"],
'101': ["专业教师", "教学副院长"],
};
const poList = roleToPoList[role] || [];
console.log(poList);
fetch(requestUrl,
{
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
username: username,
password: "123456",
position: poList,
})
})
.then(res => res.json())
.then(data => {
if (data.msg === 'success') {
alert("已将登录信息添加到数据库");
console.log(data);
} else {
alert("添加失败 " + data.msg);
}
})
.catch(error => {
alert("请求失败,请重试");
console.error(error);
});
}
</script>
<script>
function addTea(username, name, college, pro, role) {
const requestUrl = 'http://localhost:8080/root/addTea';
fetch(requestUrl,
{
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
teacherID: username,
name: name,
college: college,
professionals: pro,
role: role,
})
})
.then(res => res.json())
.then(data => {
if (data.msg === 'success') {
alert("添加角色成功");
console.log(data);
} else {
alert("添加失败 " + data.msg);
}
})
.catch(error => {
alert("请求失败,请重试");
console.error(error);
});
}
</script>
</html>
delete.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>删除教师信息</title>
<style>
.form {
width: 600px;
margin: 0 auto;
/*border: 1px solid red;*/
}
.form table {
margin: 0 auto;
}
.form table tr td {
width: 100px;
height: 30px;
border: 1px solid #000;
text-align: center;
}
button {
display: block;
margin-top: 10px;
padding: 10px;
background-color: #007bff;
color: #fff;
border: none;
border-radius: 3px;
cursor: pointer;
}
.centered-form {
text-align: center;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
}
.bordered-form {
border: 2px solid #000; /* 边框样式 */
padding: 20px; /* 可选的内边距 */
background-color: #f0f0f0; /* 可选的背景颜色 */
}
</style>
</head>
<body>
<h1 style="text-align: center">删除教师信息</h1>
<!--边框居中-->
<div class="centered-form">
<!-- 增加边框-->
<div class="bordered-form">
<!-- 调整边框大小-->
<div class="form">
<form id="deleteForm">
<label for="username">请输入您要删除的用户名</label>
<input type="text" id="username" minlength="8" maxlength="8" required>
<br>
<button type="submit" style="display: block; margin: 0 auto;">查询</button>
<div id="container">
</div>
</form>
</div>
</div>
</div>
</body>
<script>
function getTea(username) {
const requestUrl = `http://localhost:8080/root/getTea/${username}`;
fetch(requestUrl,
{
method: 'GET',
headers: {
'Content-Type': 'application/json'
},
})
.then(response => response.json())
.then(data => {
if (data.msg === 'success' && data.data != null) {
console.log(data);
generateTable(data.data);
} else {
alert("查询失败,未查找到该教师");
}
})
.catch(error => {
alert("请求失败,请重试");
console.error(error);
});
}
</script>
<script>
document.getElementById('deleteForm').addEventListener('submit', function (event) {
event.preventDefault();
const username = document.getElementById('username').value;
console.log(username);
getTea(username);
});
</script>
<script>
function generateTable(data) {
const tableContainer = document.getElementById("container");
// 清空 tableContainer 中的所有子节点
while (tableContainer.hasChildNodes()) {
tableContainer.removeChild(tableContainer.firstChild);
}
const table = document.createElement("table");
const tableBody = document.createElement("tbody");
let row = document.createElement("tr");
row.innerHTML = '<td>工号/用户名</td><td>姓名</td><td>所属学院</td><td>所属专业</td><td>职位</td><td>是否删除</td>';
tableBody.appendChild(row);
const roleToPoList = {
'111': ["专业教师", "专业负责人", "教学副院长"],
'011': ["专业教师", "专业负责人"],
'001': ["专业教师"],
'100': ["教学副院长"],
'010': ["专业负责人"],
'110': ["专业负责人", "教学副院长"],
'101': ["专业教师", "教学副院长"],
};
const poList = roleToPoList[data.role] || [];
row = document.createElement("tr");
row.innerHTML = `<td>${data.teacherID}</td><td>${data.name}</td><td>${data.college}</td><td>${data.professionals}</td><td>${poList}</td><td><button class="deleteButton">删除信息</button></td>`;
tableBody.appendChild(row);
table.appendChild(tableBody);
tableContainer.appendChild(table);
}
</script>
<script>
const tableContainer = document.getElementById("container");
tableContainer.addEventListener("click", function (event) {
// 获取到点击事件的目标元素
let target = event.target;
// 向上遍历DOM树,找到具有相应类名的祖先元素
while (target !== tableContainer && ![...target.classList].some(className => ["deleteButton"].includes(className))) {
target = target.parentNode;
}
if (target.classList.contains("deleteButton")) {
// 点击了"审批通过"按钮
const row = target.closest("tr");
const username = row.querySelector("td:first-child").textContent;
deleteTea(username);
deleteUser(username);
// display(); // 重新显示数据
}
});
</script>
<script>
function deleteTea(username) {
const requestUrl = `http://localhost:8080/root/deleteTea/${username}`;
fetch(requestUrl,
{
method: 'DELETE',
headers: {
'Content-Type': 'application/json'
},
})
.then(response => response.json())
.then(data => {
if (data.msg === 'success' && data.data != null) {
alert("删除教师信息成功");
} else {
alert("删除失败,或是未查找到该教师");
}
})
.catch(error => {
alert("请求失败,请重试");
console.error(error);
});
}
</script>
<script>
function deleteUser(username) {
const requestUrl = `http://localhost:8080/root/deleteUser/${username}`;
fetch(requestUrl,
{
method: 'DELETE',
headers: {
'Content-Type': 'application/json'
},
})
.then(response => response.json())
.then(data => {
if (data.msg === 'success' && data.data != null) {
console.log(data);
alert("删除登录信息成功");
} else {
alert("删除失败,或是未查找到该信息");
}
})
.catch(error => {
alert("请求失败,请重试");
console.error(error);
});
}
</script>
</html>
update.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>修改教师信息</title>
<style>
.form {
width: 600px;
margin: 0 auto;
/*border: 1px solid red;*/
}
.form table {
margin: 0 auto;
}
.form table tr td {
width: 100px;
height: 30px;
border: 1px solid #000;
text-align: center;
}
button {
display: block;
margin-top: 10px;
padding: 10px;
background-color: #007bff;
color: #fff;
border: none;
border-radius: 3px;
cursor: pointer;
}
.centered-form {
text-align: center;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
}
.bordered-form {
border: 2px solid #000; /* 边框样式 */
padding: 20px; /* 可选的内边距 */
background-color: #f0f0f0; /* 可选的背景颜色 */
}
</style>
</head>
<body>
<h1 style="text-align: center">修改教师信息</h1>
<!--边框居中-->
<div class="centered-form">
<!-- 增加边框-->
<div class="bordered-form">
<!-- 调整边框大小-->
<div class="form">
<form id="deleteForm">
<label for="username">请输入您要修改的用户名</label>
<input type="text" id="username" minlength="8" maxlength="8" required>
<br>
<button type="submit" style="display: block; margin: 0 auto;">查询</button>
<div id="container">
</div>
</form>
<form id="updateForm">
<label for="userid">请输入用户名</label>
<input type="text" id="userid" minlength="8" maxlength="8" required>
<br>
<label for="name">请输入姓名</label>
<input type="text" id="name">
<br>
<label for="college">请输入所属学院</label>
<input type="text" id="college">
<br>
<label for="pro">请输入所属专业</label>
<input type="text" id="pro">
<br>
<label for="position">请输入职位,001表示普通教师、010表示专业负责人、011表示即是教师又是专业负责人,111表示三种角色兼具</label>
<input type="text" id="position">
<button type="submit" style="display: block; margin: 0 auto;">添加</button>
</form>
</div>
</div>
</div>
</body>
<script>
document.getElementById('updateForm').addEventListener('submit', function (e) {
e.preventDefault();
const username = document.getElementById('userid');
const name = document.getElementById('name');
const college = document.getElementById('college');
const pro = document.getElementById('pro');
const role = document.getElementById('position');
console.log(username.value + " " + name.value + " " + college.value + " " + pro.value + " " + role.value);
updateTea(username.value, name.value, college.value, pro.value, role.value);
});
</script>
<script>
function updateTea(username, name, college, pro, role) {
const requestUrl = `http://localhost:8080/root/updateTea/${username}/${name}/${college}/${pro}/${role}`;
fetch(requestUrl,
{
method: 'PUT',
headers: {
'Content-Type': 'application/json'
},
})
.then(res => res.json())
.then(data => {
if (data.msg === 'success') {
alert("修改信息成功");
console.log(data);
} else {
alert("修改失败 " + data.msg);
}
})
.catch(error => {
alert("请求失败,请重试");
console.error(error);
});
}
</script>
<script>
function getTea(username) {
const requestUrl = `http://localhost:8080/root/getTea/${username}`;
fetch(requestUrl,
{
method: 'GET',
headers: {
'Content-Type': 'application/json'
},
})
.then(response => response.json())
.then(data => {
if (data.msg === 'success' && data.data != null) {
console.log(data);
generateTable(data.data);
} else {
alert("查询失败,未查找到该教师");
}
})
.catch(error => {
alert("请求失败,请重试");
console.error(error);
});
}
</script>
<script>
document.getElementById('deleteForm').addEventListener('submit', function (event) {
event.preventDefault();
const username = document.getElementById('username').value;
console.log(username);
getTea(username);
});
</script>
<script>
function generateTable(data) {
const tableContainer = document.getElementById("container");
// 清空 tableContainer 中的所有子节点
while (tableContainer.hasChildNodes()) {
tableContainer.removeChild(tableContainer.firstChild);
}
const table = document.createElement("table");
const tableBody = document.createElement("tbody");
let row = document.createElement("tr");
row.innerHTML = '<td>工号/用户名</td><td>姓名</td><td>所属学院</td><td>所属专业</td><td>职位</td>';
tableBody.appendChild(row);
const roleToPoList = {
'111': ["专业教师", "专业负责人", "教学副院长"],
'011': ["专业教师", "专业负责人"],
'001': ["专业教师"],
'100': ["教学副院长"],
'010': ["专业负责人"],
'110': ["专业负责人", "教学副院长"],
'101': ["专业教师", "教学副院长"],
};
const poList = roleToPoList[data.role] || [];
row = document.createElement("tr");
row.innerHTML = `<td>${data.teacherID}</td><td>${data.name}</td><td>${data.college}</td><td>${data.professionals}</td><td>${poList}</td>`;
tableBody.appendChild(row);
table.appendChild(tableBody);
tableContainer.appendChild(table);
}
</script>
</html>
select.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>查询用户信息</title>
<style>
.form {
width: 600px;
margin: 0 auto;
/*border: 1px solid red;*/
}
.form table {
margin: 0 auto;
}
.form table tr td {
width: 100px;
height: 30px;
border: 1px solid #000;
text-align: center;
}
button {
display: block;
margin-top: 10px;
padding: 10px;
background-color: #007bff;
color: #fff;
border: none;
border-radius: 3px;
cursor: pointer;
}
.centered-form {
text-align: center;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
}
.bordered-form {
border: 2px solid #000; /* 边框样式 */
padding: 20px; /* 可选的内边距 */
background-color: #f0f0f0; /* 可选的背景颜色 */
}
</style>
</head>
<body>
<h1 style="text-align: center">查询教师信息</h1>
<!--边框居中-->
<div class="centered-form">
<!-- 增加边框-->
<div class="bordered-form">
<!-- 调整边框大小-->
<div class="form">
<form id="deleteForm">
<label for="username">请输入您要查询的用户名</label>
<input type="text" id="username" minlength="8" maxlength="8" required>
<br>
<button type="submit" style="display: block; margin: 0 auto;">查询</button>
<div id="container">
</div>
</form>
</div>
</div>
</div>
</body>
<script>
function getTea(username)
{
const requestUrl=`http://localhost:8080/root/getTea/${username}`;
fetch(requestUrl,
{
method: 'GET',
headers: {
'Content-Type': 'application/json'
},
})
.then(response => response.json())
.then(data => {
if (data.msg === 'success'&&data.data!=null) {
console.log(data);
generateTable(data.data);
} else {
alert("查询失败,未查找到该教师");
}
})
.catch(error => {
alert("请求失败,请重试");
console.error(error);
});
}
</script>
<script>
document.getElementById('deleteForm').addEventListener('submit',function (event)
{
event.preventDefault();
const username=document.getElementById('username').value;
console.log(username);
getTea(username);
});
</script>
<script>
function generateTable(data) {
const tableContainer = document.getElementById("container");
// 清空 tableContainer 中的所有子节点
while (tableContainer.hasChildNodes()) {
tableContainer.removeChild(tableContainer.firstChild);
}
const table = document.createElement("table");
const tableBody = document.createElement("tbody");
let row = document.createElement("tr");
row.innerHTML = '<td>工号/用户名</td><td>姓名</td><td>所属学院</td><td>所属专业</td><td>职位</td>';
tableBody.appendChild(row);
const roleToPoList = {
'111': ["专业教师", "专业负责人", "教学副院长"],
'011': ["专业教师", "专业负责人"],
'001': ["专业教师"],
'100': ["教学副院长"],
'010': ["专业负责人"],
'110': ["专业负责人", "教学副院长"],
'101': ["专业教师", "教学副院长"],
};
const poList = roleToPoList[data.role] || [];
row = document.createElement("tr");
row.innerHTML = `<td>${data.teacherID}</td><td>${data.name}</td><td>${data.college}</td><td>${data.professionals}</td><td>${poList}</td>`;
tableBody.appendChild(row);
table.appendChild(tableBody);
tableContainer.appendChild(table);
}
</script>
</html>
exmine.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>审查学生信息</title>
<style>
.approveButton {
background-color: #4CAF50;
color: white;
border: none;
padding: 10px 20px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
margin: 4px 2px;
cursor: pointer;
}
.rejectButton {
background-color: #f44336;
color: white;
border: none;
padding: 10px 20px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
margin: 4px 2px;
cursor: pointer;
}
.form {
width: 600px;
margin: 0 auto;
/*border: 1px solid red;*/
}
.form table {
margin: 0 auto;
}
.form table tr td {
width: 100px;
height: 30px;
border: 1px solid #000;
text-align: center;
}
button {
display: block;
margin-top: 10px;
padding: 10px;
background-color: #007bff;
color: #fff;
border: none;
border-radius: 3px;
cursor: pointer;
}
.centered-form {
text-align: center;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
}
.bordered-form {
border: 2px solid #000; /* 边框样式 */
padding: 20px; /* 可选的内边距 */
background-color: #f0f0f0; /* 可选的背景颜色 */
}
</style>
</head>
<body>
<h1 style="text-align: center">审查信息</h1>
<div class="centered-form">
<div class="bordered-form">
<div class="form">
<div id="container">
</div>
</div>
</div>
</div>
<script>
const tableContainer = document.getElementById("container");
tableContainer.addEventListener("click", function (event) {
// 获取到点击事件的目标元素
let target = event.target;
// 向上遍历DOM树,找到具有相应类名的祖先元素
while (target !== tableContainer && ![...target.classList].some(className => ["approveButton", "rejectButton"].includes(className))) {
target = target.parentNode;
}
if (target.classList.contains("approveButton")) {
// 点击了"审批通过"按钮
const row = target.closest("tr");
const stuId = row.querySelector("td:first-child").textContent;
updateStateInDatabase(stuId, 1);
// display(); // 重新显示数据
} else if (target.classList.contains("rejectButton")) {
// 点击了"审批不通过"按钮
const row = target.closest("tr");
const stuId = row.querySelector("td:first-child").textContent;
updateStateInDatabase(stuId, -1);
}
});
</script>
</body>
<script>
const requestUrl = `http://localhost:8080/user/getAll`;
function display() {
fetch(requestUrl, {
method: 'GET',
headers: {
'Content-Type': 'application/json'
},
})
.then(response => response.json())
.then(data => {
if (data.msg === 'success') {
generateTable(data.data);
} else {
alert("当前不存在未审查的结果");
}
})
.catch(error => {
alert("请求失败,请重试");
console.error(error);
});
}
display();
</script>
<script>
function generateTable(data) {
const tableContainer = document.getElementById("container");
// 清空 tableContainer 中的所有子节点
while (tableContainer.hasChildNodes()) {
tableContainer.removeChild(tableContainer.firstChild);
}
const table = document.createElement("table");
const tableBody = document.createElement("tbody");
let row = document.createElement("tr");
row.innerHTML = '<td>学号/用户名</td><td>姓名</td><td>年级</td><td>性别</td><td>学院</td><td>专业</td><td>手机号</td><td>职位</td><td>审核状态</td><td>是否通过</td>';
tableBody.appendChild(row);
// 查询方式是按姓名查询或多条查询
for (let i = 0; i < data.length; i++) {
row = document.createElement("tr");
row.innerHTML = `<td>${data[i].stuId}</td><td>${data[i].stuName}</td><td>${data[i].grade}</td><td>${data[i].sex}</td><td>${data[i].college}</td><td>${data[i].professionals}</td><td>${data[i].phone}</td><td>${data[i].position}</td><td>${data[i].state}</td><td><button class="approveButton">审批通过</button></td><td><button class="rejectButton">审批不通过</button></td>`;
tableBody.appendChild(row);
table.appendChild(tableBody);
tableContainer.appendChild(table);
}
}
</script>
<script>
function add(stuId) {
const requestUrl = `http://localhost:8080/user/addUser`;
fetch(requestUrl,
{
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(
{
username: stuId,
password: "123456",
position: ["学生"],
})
})
.then(response => response.json())
.then(data => {
if (data.msg === 'success') {
alert("已添加学生用户到数据库");
} else {
alert("未通过审核,取消添加入数据库");
}
})
.catch(error => {
alert("请求失败,请重试");
console.error(error);
});
}
</script>
<script>
function updateStateInDatabase(stuId, state) {
const requestUrl = `http://localhost:8080/user/updateById/${stuId}/${state}`;
fetch(requestUrl, {
method: 'PUT',
headers: {
'Content-Type': 'application/json'
},
})
.then(response => response.json())
.then(data => {
if (data.msg === 'success') {
generateTable(data.data);
if(state===1)
{
add(stuId);
}
alert("审核成功")
} else {
alert("审核失败");
}
})
.catch(error => {
alert("请求失败,请重试");
console.error(error);
});
}
</script>
</html>
reSet.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>重置学生密码</title>
<style>
.reSet {
background-color: #4CAF50;
color: white;
border: none;
padding: 10px 20px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
margin: 4px 2px;
cursor: pointer;
}
.form {
width: 600px;
margin: 0 auto;
/*border: 1px solid red;*/
}
.form table {
margin: 0 auto;
}
.form table tr td {
width: 100px;
height: 30px;
border: 1px solid #000;
text-align: center;
}
button {
display: block;
margin-top: 10px;
padding: 10px;
background-color: #007bff;
color: #fff;
border: none;
border-radius: 3px;
cursor: pointer;
}
.centered-form {
text-align: center;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
}
.bordered-form {
border: 2px solid #000; /* 边框样式 */
padding: 20px; /* 可选的内边距 */
background-color: #f0f0f0; /* 可选的背景颜色 */
}
</style>
</head>
<body>
<h1 style="text-align: center">重置学生密码</h1>
<div class="centered-form">
<div class="bordered-form">
<div class="form">
<label for="name">请输入学生姓名</label>
<input type="text" id="name">
<button id="select" style="display: block; margin: 0 auto;">查询</button>
<div id="container">
</div>
</div>
</div>
</div>
</body>
<script>
function generateTable(data) {
const tableContainer = document.getElementById("container");
// 清空 tableContainer 中的所有子节点
while (tableContainer.hasChildNodes()) {
tableContainer.removeChild(tableContainer.firstChild);
}
const table = document.createElement("table");
const tableBody = document.createElement("tbody");
let row = document.createElement("tr");
row.innerHTML = '<td>学号/用户名</td><td>姓名</td><td>年级</td><td>性别</td><td>学院</td><td>专业</td><td>手机号</td><td>职位</td><td>审核状态</td><td>密码重置</td>';
tableBody.appendChild(row);
let s="审核中";
if(data.state===1)
{
s="审核通过";
}else if(data.state===-1)
{
s="审核未通过";
}
if(data.state===0||data.state===-1)
{
row = document.createElement("tr");
row.innerHTML = `<td>${data.stuId}</td><td>${data.stuName}</td><td>${data.grade}</td><td>${data.sex}</td><td>${data.college}</td><td>${data.professionals}</td><td>${data.phone}</td><td>${data.position}</td><td>${s}</td>`;
tableBody.appendChild(row);
table.appendChild(tableBody);
tableContainer.appendChild(table);
alert("当前学生并未通过审核或者还未进行审核,无法进行重置密码操作")
}
else {
row = document.createElement("tr");
row.innerHTML = `<td>${data.stuId}</td><td>${data.stuName}</td><td>${data.grade}</td><td>${data.sex}</td><td>${data.college}</td><td>${data.professionals}</td><td>${data.phone}</td><td>${data.position}</td><td>${s}</td><td><button class="reSet">密码重置</button></td>`;
tableBody.appendChild(row);
table.appendChild(tableBody);
tableContainer.appendChild(table);
}
}
</script>
<script>
document.getElementById('select').addEventListener('click', function () {
const name = document.getElementById('name').value;
const requestUrl = `http://localhost:8080/root/getByName/${name}`;
fetch(requestUrl,
{
method: 'GET',
headers: {
'Content-Type': 'application/json'
},
})
.then(response => response.json())
.then(data => {
if (data.msg === 'success') {
console.log(data);
generateTable(data.data);
} else {
alert("学生信息不存在");
}
})
.catch(error => {
alert("请求失败,请重试");
console.error(error);
});
});
</script>
<script>
const tableContainer = document.getElementById("container");
tableContainer.addEventListener("click", function (event) {
// 获取到点击事件的目标元素
let target = event.target;
// 向上遍历DOM树,找到具有相应类名的祖先元素
while (target !== tableContainer && ![...target.classList].some(className => ["reSet"].includes(className))) {
target = target.parentNode;
}
if (target.classList.contains("reSet")) {
// 点击了"审批通过"按钮
const row = target.closest("tr");
const id = row.querySelector("td:first-child").textContent;
const requestUrl = `http://localhost:8080/root/updatePassword/${id}`
fetch(requestUrl,
{
method: 'PUT',
headers: {
'Content-Type': 'application/json'
},
})
.then(response => response.json())
.then(data => {
if (data.msg === 'success') {
console.log(data);
alert("重置成功")
} else {
alert("重置失败");
}
})
.catch(error => {
alert("请求失败,请重试");
console.error(error);
});
}
});
</script>
</html>

浙公网安备 33010602011771号