Score Manage completed

Signed-off-by: Chenx221 <chenx221@yandex.com>
This commit is contained in:
Chenx221 2023-06-13 13:16:02 +08:00
parent 83735978db
commit d71f1fd267
18 changed files with 191 additions and 20 deletions

View File

@ -55,5 +55,29 @@
</if> </if>
</trim> </trim>
</select> </select>
<update id="updateScore" parameterType="cyou.chenx221.pojo.Score">
UPDATE score
<set>
<if test="score != null">
Score = #{score}
</if>
</set>
WHERE ScoreID = #{scoreID};
</update>
<select id="getScoreById" parameterType="int" resultMap="ScoreResultMap">
SELECT ScoreID, Score, st.id as student_id, st.name as name, c.CourseID, c.CourseName
FROM score s
JOIN student st ON s.StudentID = st.id
JOIN course c ON s.CourseID = c.CourseID
WHERE invalid = 0 AND ScoreID = #{id};
</select>
<update id="deleteScore" parameterType="int">
UPDATE score
SET invalid = 1
WHERE ScoreID = #{id};
</update>
<insert id="insertScore" parameterType="cyou.chenx221.pojo.Score">
INSERT INTO score (Score, StudentID, CourseID)
VALUES (#{score}, #{student.id}, #{course.courseID});
</insert>
</mapper> </mapper>

View File

@ -25,6 +25,7 @@
<security:intercept-url pattern="/course/**" access="hasRole('admin')"/> <security:intercept-url pattern="/course/**" access="hasRole('admin')"/>
<security:intercept-url pattern="/score/**" access="hasRole('admin')"/> <security:intercept-url pattern="/score/**" access="hasRole('admin')"/>
<security:intercept-url pattern="/output/**" access="hasRole('admin')"/> <security:intercept-url pattern="/output/**" access="hasRole('admin')"/>
<security:intercept-url pattern="/system/**" access="hasRole('admin')"/>
<!-- 未登录状态下会自动跳转到/login登录页--> <!-- 未登录状态下会自动跳转到/login登录页-->
<security:form-login login-page="/login" <security:form-login login-page="/login"
default-target-url="/dashboard" default-target-url="/dashboard"

View File

@ -186,6 +186,7 @@
<hr class="hr" style="margin: 1px"/> <hr class="hr" style="margin: 1px"/>
<!-- Tabs content --> <!-- Tabs content -->
<div class="tab-content" id="ex1-content"> <div class="tab-content" id="ex1-content">
<%-- 查询--%>
<div class="tab-pane fade show active" id="ex1-tabs-1" role="tabpanel" <div class="tab-pane fade show active" id="ex1-tabs-1" role="tabpanel"
aria-labelledby="ex1-tab-1"> aria-labelledby="ex1-tab-1">
<div class="card-body" style="min-width: 175px"> <div class="card-body" style="min-width: 175px">
@ -258,8 +259,10 @@
<div class="row mb-2"> <div class="row mb-2">
<div class="col-12"> <div class="col-12">
<div class="form-check"> <div class="form-check">
<input class="form-check-input" type="checkbox" value="true" id="range_enabler" name="range_enabler" /> <input class="form-check-input" type="checkbox" value="true"
<label class="form-check-label" for="range_enabler">设定成绩范围</label> id="range_enabler" name="range_enabler"/>
<label class="form-check-label"
for="range_enabler">设定成绩范围</label>
</div> </div>
</div> </div>
</div> </div>
@ -276,6 +279,7 @@
</form> </form>
</div> </div>
</div> </div>
<%-- 修改--%>
<div class="tab-pane fade" id="ex1-tabs-2" role="tabpanel" <div class="tab-pane fade" id="ex1-tabs-2" role="tabpanel"
aria-labelledby="ex1-tab-2"> aria-labelledby="ex1-tab-2">
<div class="card-body" style="min-width: 175px"> <div class="card-body" style="min-width: 175px">
@ -292,9 +296,9 @@
<div class="row mb-2"> <div class="row mb-2">
<div class="col-12"> <div class="col-12">
<div class="form-outline"> <div class="form-outline">
<input type="number" id="typeText7" class="form-control" <input type="number" id="typeText7" class="form-control" required
name="score"/> name="score"/>
<label class="form-label" for="typeText7">成绩</label> <label class="form-label" for="typeText7">成绩 (必填)</label>
</div> </div>
</div> </div>
</div> </div>
@ -310,6 +314,7 @@
</form> </form>
</div> </div>
</div> </div>
<%-- 删除--%>
<div class="tab-pane fade" id="ex1-tabs-3" role="tabpanel" aria-labelledby="ex1-tab-3"> <div class="tab-pane fade" id="ex1-tabs-3" role="tabpanel" aria-labelledby="ex1-tab-3">
<div class="card-body" style="min-width: 175px"> <div class="card-body" style="min-width: 175px">
<form action="delinfo" method="post"> <form action="delinfo" method="post">
@ -334,6 +339,7 @@
</div> </div>
</div> </div>
<%-- 添加--%>
<div class="tab-pane fade" id="ex1-tabs-4" role="tabpanel" aria-labelledby="ex1-tab-4"> <div class="tab-pane fade" id="ex1-tabs-4" role="tabpanel" aria-labelledby="ex1-tab-4">
<!-- <h5 class="card-header">信息添加</h5> --> <!-- <h5 class="card-header">信息添加</h5> -->
<div class="card-body" style="min-width: 175px"> <div class="card-body" style="min-width: 175px">

View File

@ -52,7 +52,7 @@ public class CourseController {
} }
@PostMapping(value = "/delinfo", produces = "application/x-www-form-urlencoded;charset=UTF-8") @PostMapping(value = "/delinfo", produces = "application/x-www-form-urlencoded;charset=UTF-8")
public String UpdateModInfo(@RequestParam(value = "id") int id, public String DeleteCourseInfo(@RequestParam(value = "id") int id,
Model model) { Model model) {
Course temp = courseService.getCourseById(id); Course temp = courseService.getCourseById(id);
if (id <= 0 || temp == null) { if (id <= 0 || temp == null) {

View File

@ -53,15 +53,15 @@ public class ScoreController {
} }
@PostMapping(value = "/query", produces = "application/x-www-form-urlencoded;charset=UTF-8")//学生信息查询带条件 @PostMapping(value = "/query", produces = "application/x-www-form-urlencoded;charset=UTF-8")//学生信息查询带条件
public String getQueryCourses(@RequestParam(value = "name", defaultValue = "null", required = false) String name,//学生姓名 public String getQueryScores(@RequestParam(value = "name", defaultValue = "null", required = false) String name,//学生姓名
@RequestParam(value = "coursename", defaultValue = "null", required = false) String course_name,//课程名 @RequestParam(value = "coursename", defaultValue = "null", required = false) String course_name,//课程名
@RequestParam(value = "scoreid", defaultValue = "-1", required = false) int score_id,//成绩ID @RequestParam(value = "scoreid", defaultValue = "-1", required = false) int score_id,//成绩ID
@RequestParam(value = "studentid", defaultValue = "-1", required = false) int student_id,//学号 @RequestParam(value = "studentid", defaultValue = "-1", required = false) int student_id,//学号
@RequestParam(value = "courseid", defaultValue = "-1", required = false) int course_id,//课程ID @RequestParam(value = "courseid", defaultValue = "-1", required = false) int course_id,//课程ID
@RequestParam(value = "min", defaultValue = "-1", required = false) int min,//最低分 @RequestParam(value = "min", defaultValue = "-1", required = false) int min,//最低分
@RequestParam(value = "max", defaultValue = "-1", required = false) int max,//最高分 @RequestParam(value = "max", defaultValue = "-1", required = false) int max,//最高分
@RequestParam(value = "range_enabler", defaultValue = "false", required = false) boolean range_enabler,//是否启用分数范围 @RequestParam(value = "range_enabler", defaultValue = "false", required = false) boolean range_enabler,//是否启用分数范围
Model model) throws IOException { Model model) throws IOException {
//username helper start //username helper start
String username = new UsernameHelper().getCurrentUsername(); String username = new UsernameHelper().getCurrentUsername();
@ -93,4 +93,64 @@ public class ScoreController {
model.addAttribute("scores", scores); model.addAttribute("scores", scores);
return "scoreQueryResult"; return "scoreQueryResult";
} }
@PostMapping(value = "/modinfo", produces = "application/x-www-form-urlencoded;charset=UTF-8")
public String UpdateScoreInfo(@RequestParam(value = "score", defaultValue = "-1", required = false) int score,
@RequestParam(value = "id", defaultValue = "-1", required = false) int id,//成绩ID
Model model) {
if (id <= 0) {
model.addAttribute("errorMessage", "修改失败ID非法");
} else if (score > 100 || score < 0) {
model.addAttribute("errorMessage", "修改失败,分数非法");
} else {
Score score1 = new Score(id, score);
int status_code = scoreService.updateScore(score1);
if (status_code == 1) {
model.addAttribute("successMessage", "修改成功");
} else {
model.addAttribute("errorMessage", "修改失败,可能是成绩不存在");
}
}
return "redirect:/score/infomodv2";
}
@PostMapping(value = "/delinfo", produces = "application/x-www-form-urlencoded;charset=UTF-8")
public String DeleteScoreInfo(@RequestParam(value = "id") int id, //成绩ID
Model model) {
Score temp = scoreService.getScoreById(id);
if (id <= 0 || temp == null) {
model.addAttribute("errorMessage", "成绩信息删除失败,可能是ID非法或者成绩已删除");
} else {
int status_code = scoreService.deleteScore(id);
if (status_code == 1) {
model.addAttribute("successMessage", "学生信息删除成功");
} else {
model.addAttribute("errorMessage", "学生信息删除异常");
}
}
return "redirect:/score/infomodv2";
}
@PostMapping(value = "/addinfo", produces = "application/x-www-form-urlencoded;charset=UTF-8")
public String InsertCourseInfo(@RequestParam(value = "studentid", defaultValue = "-1", required = false) int studentid,
@RequestParam(value = "courseid", defaultValue = "-1", required = false) int courseid,
@RequestParam(value = "score", defaultValue = "-1", required = false) int score,
Model model) {
if(studentid<=0){
model.addAttribute("errorMessage", "添加失败,学号非法");
} else if (courseid<=0) {
model.addAttribute("errorMessage", "添加失败课程ID非法");
} else if(score>100||score<0){
model.addAttribute("errorMessage", "添加失败,分数非法");
} else {
Score score1 = new Score(new Student(studentid), new Course(courseid), score);
int status_code = scoreService.insertScore(score1);
if (status_code == 1) {
model.addAttribute("successMessage", "学生信息添加成功");
} else {
model.addAttribute("errorMessage", "学生信息添加失败");
}
}
return "redirect:/score/infomodv2";
}
} }

View File

@ -10,4 +10,12 @@ public interface ScoreDao {
List<Score> getAllScore(); List<Score> getAllScore();
List<Score> getQueryScores(Score score); List<Score> getQueryScores(Score score);
int updateScore(Score score);
Score getScoreById(int id);
int deleteScore(int id);
int insertScore(Score score);
} }

View File

@ -26,4 +26,24 @@ public class ScoreDaoImpl implements ScoreDao {
public List<Score> getQueryScores(Score score) { public List<Score> getQueryScores(Score score) {
return sqlSession.selectList("getQueryScores", score); return sqlSession.selectList("getQueryScores", score);
} }
@Override
public int updateScore(Score score) {
return sqlSession.update("updateScore", score);
}
@Override
public Score getScoreById(int id) {
return sqlSession.selectOne("getScoreById",id);
}
@Override
public int deleteScore(int id) {
return sqlSession.update("deleteScore", id);
}
@Override
public int insertScore(Score score) {
return sqlSession.insert("insertScore", score);
}
} }

View File

@ -31,6 +31,12 @@ public class Score {
this.max = max; this.max = max;
} }
public Score(Student student, Course course, Integer score) {
this.student = student;
this.course = course;
this.score = score;
}
public Integer getMin() { public Integer getMin() {
return min; return min;
} }

View File

@ -14,6 +14,14 @@ public class ScoreService {
this.scoreDao = scoreDao; this.scoreDao = scoreDao;
} }
public int deleteScore(int id) {
return scoreDao.deleteScore(id);
}
public Score getScoreById(int id) {
return scoreDao.getScoreById(id);
}
public List<Score> getAllScores() { public List<Score> getAllScores() {
return scoreDao.getAllScore(); return scoreDao.getAllScore();
} }
@ -21,4 +29,12 @@ public class ScoreService {
public List<Score> getQueryScores(Score score) { public List<Score> getQueryScores(Score score) {
return scoreDao.getQueryScores(score); return scoreDao.getQueryScores(score);
} }
public int updateScore(Score score) {
return scoreDao.updateScore(score);
}
public int insertScore(Score score) {
return scoreDao.insertScore(score);
}
} }

View File

@ -55,5 +55,29 @@
</if> </if>
</trim> </trim>
</select> </select>
<update id="updateScore" parameterType="cyou.chenx221.pojo.Score">
UPDATE score
<set>
<if test="score != null">
Score = #{score}
</if>
</set>
WHERE ScoreID = #{scoreID};
</update>
<select id="getScoreById" parameterType="int" resultMap="ScoreResultMap">
SELECT ScoreID, Score, st.id as student_id, st.name as name, c.CourseID, c.CourseName
FROM score s
JOIN student st ON s.StudentID = st.id
JOIN course c ON s.CourseID = c.CourseID
WHERE invalid = 0 AND ScoreID = #{id};
</select>
<update id="deleteScore" parameterType="int">
UPDATE score
SET invalid = 1
WHERE ScoreID = #{id};
</update>
<insert id="insertScore" parameterType="cyou.chenx221.pojo.Score">
INSERT INTO score (Score, StudentID, CourseID)
VALUES (#{score}, #{student.id}, #{course.courseID});
</insert>
</mapper> </mapper>

View File

@ -186,6 +186,7 @@
<hr class="hr" style="margin: 1px"/> <hr class="hr" style="margin: 1px"/>
<!-- Tabs content --> <!-- Tabs content -->
<div class="tab-content" id="ex1-content"> <div class="tab-content" id="ex1-content">
<%-- 查询--%>
<div class="tab-pane fade show active" id="ex1-tabs-1" role="tabpanel" <div class="tab-pane fade show active" id="ex1-tabs-1" role="tabpanel"
aria-labelledby="ex1-tab-1"> aria-labelledby="ex1-tab-1">
<div class="card-body" style="min-width: 175px"> <div class="card-body" style="min-width: 175px">
@ -258,8 +259,10 @@
<div class="row mb-2"> <div class="row mb-2">
<div class="col-12"> <div class="col-12">
<div class="form-check"> <div class="form-check">
<input class="form-check-input" type="checkbox" value="true" id="range_enabler" name="range_enabler" /> <input class="form-check-input" type="checkbox" value="true"
<label class="form-check-label" for="range_enabler">设定成绩范围</label> id="range_enabler" name="range_enabler"/>
<label class="form-check-label"
for="range_enabler">设定成绩范围</label>
</div> </div>
</div> </div>
</div> </div>
@ -276,6 +279,7 @@
</form> </form>
</div> </div>
</div> </div>
<%-- 修改--%>
<div class="tab-pane fade" id="ex1-tabs-2" role="tabpanel" <div class="tab-pane fade" id="ex1-tabs-2" role="tabpanel"
aria-labelledby="ex1-tab-2"> aria-labelledby="ex1-tab-2">
<div class="card-body" style="min-width: 175px"> <div class="card-body" style="min-width: 175px">
@ -292,9 +296,9 @@
<div class="row mb-2"> <div class="row mb-2">
<div class="col-12"> <div class="col-12">
<div class="form-outline"> <div class="form-outline">
<input type="number" id="typeText7" class="form-control" <input type="number" id="typeText7" class="form-control" required
name="score"/> name="score"/>
<label class="form-label" for="typeText7">成绩</label> <label class="form-label" for="typeText7">成绩 (必填)</label>
</div> </div>
</div> </div>
</div> </div>
@ -310,6 +314,7 @@
</form> </form>
</div> </div>
</div> </div>
<%-- 删除--%>
<div class="tab-pane fade" id="ex1-tabs-3" role="tabpanel" aria-labelledby="ex1-tab-3"> <div class="tab-pane fade" id="ex1-tabs-3" role="tabpanel" aria-labelledby="ex1-tab-3">
<div class="card-body" style="min-width: 175px"> <div class="card-body" style="min-width: 175px">
<form action="delinfo" method="post"> <form action="delinfo" method="post">
@ -334,6 +339,7 @@
</div> </div>
</div> </div>
<%-- 添加--%>
<div class="tab-pane fade" id="ex1-tabs-4" role="tabpanel" aria-labelledby="ex1-tab-4"> <div class="tab-pane fade" id="ex1-tabs-4" role="tabpanel" aria-labelledby="ex1-tab-4">
<!-- <h5 class="card-header">信息添加</h5> --> <!-- <h5 class="card-header">信息添加</h5> -->
<div class="card-body" style="min-width: 175px"> <div class="card-body" style="min-width: 175px">