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



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号