欢迎来到 Papicatch的博客
系统介绍
课设--学生成绩管理系统(一)-CSDN博客
课设--学生成绩管理系统(二)-CSDN博客
课设--学生成绩管理系统(三)-CSDN博客
目录
🍉内部接口
🍈 登录接口
🍈课程管理接口
🍈成绩管理接口
🍈用户管理接口
🍈 文件管理接口
🍉内部接口
🍈 登录接口
@GetMapping("/login")
@PassToken
public User getStudentInfo(@RequestParam Map<String, Object> condition) {
Map<String, Object> map = new HashMap<>();
map.put("username", condition.get("username").toString());
map.put("password", condition.get("password").toString());
map.put("level", condition.get("level"));
User user = userService.getStudentInfo(map);
String token = userService.getToken(user, 24 * 60 * 60 * 1000);
String refreshToken = userService.getToken(user, 24 * 60 * 60 * 1000); // 有效期一天
user.setToken(token);
user.setRefreshToken(refreshToken);
return user;
}
🍈课程管理接口
@PostMapping
public void addCourse(@RequestBody Course course) {
courseService.addCourse(course);
}
@DeleteMapping("/{ids}")
public void delete(@PathVariable("ids") Integer[] ids) {
List<Integer> idsList = Arrays.asList(ids);
courseService.delete(idsList);
}
@PutMapping
public void update(@RequestBody Course course) {
courseService.update(course);
}
@GetMapping("/getCourseList")
private PagingResult<Course> getCourseList(@RequestParam Map<String, Object> condition,
@RequestParam(required = false, name = "$limit", defaultValue = "10") Integer limit,
@RequestParam(required = false, name = "$offset", defaultValue = "0") Integer offset) {
RowBounds rowBounds = new RowBounds(offset, limit);
return courseService.getCourseList(rowBounds, condition);
}
@GetMapping("/getCourseByMap")
private List<Course> getCourseByMap(@RequestParam Map<String, Object> condition) {
return courseService.getCourseByMap(condition);
}
🍈成绩管理接口
@GetMapping("/getCourseList")
public PagingResult<Course> getCourseList(@RequestParam Map<String, Object> condition,
@RequestParam(required = false, name = "$limit", defaultValue = "10") Integer limit,
@RequestParam(required = false, name = "$offset", defaultValue = "0") Integer offset) {
RowBounds rowBounds = new RowBounds(offset, limit);
return scoreService.getCourseList(rowBounds, condition);
}
@PostMapping
private void addEntry(@RequestBody JSONArray UserScore) {
List<Score> list = JSONObject.parseArray(UserScore.toJSONString(), Score.class);
scoreService.addEntry(list);
}
@GetMapping("/export")
public List<Course> getExportList(@RequestParam Map<String, Object> condition) {
return scoreService.getExportList(condition);
}
@GetMapping("/getUserNum")
public List<Map<String, Object>> getUserNum(@RequestParam Map<String, Object> condition) {
return scoreService.getUserNum(condition);
}
@GetMapping("/getUserTotal")
public Map<String, Object> getUserTotal(@RequestParam Map<String, Object> condition) {
return scoreService.getUserTotal(condition);
}
🍈用户管理接口
@GetMapping("/edit/password")
public boolean update(@RequestParam Map<String, Object> condition) {
Map<String, Object> map = new HashMap<>();
map.put("username", condition.get("username").toString());
map.put("password", condition.get("password").toString());
map.put("passwordAgain", condition.get("passwordAgain").toString());
;
map.put("level", condition.get("level").toString());
return userService.update(map);
}
@GetMapping("/getTree")
public List<Object> getTree() {
return userService.getTree();
}
@PassToken
@GetMapping("/getSilent")
public boolean getSilent() {
return userService.getSilent();
}
@PutMapping("/setSilent/{state}")
public boolean setSilent(@PathVariable("state") Integer state) {
return userService.setSilent(state);
}
🍈 文件管理接口
@PostMapping("/headImg")
@ResponseBody
public String upload(MultipartFile file, HttpServletRequest request) throws IOException {
if (!file.isEmpty()) {
try {
byte[] bytes = file.getBytes();
// 储存位置
String staticDir = ResourceUtil.getPath();
// 图片名
String ImgName = file.getOriginalFilename();
String uid = UUID.randomUUID().toString();
assert ImgName != null;
// 获取后缀名
String str = ImgName.substring(ImgName.lastIndexOf("."));
// 重定义文件名
String newName = uid + str;
// 图片存储地址
Path path = Paths.get(staticDir + newName);
// 写入文件
Files.write(path, bytes);
String imgUrl = "/files/" + newName;
String userId = request.getParameter("id");
int level = parseInt(request.getParameter("level"));
Upload upload = new Upload();
upload.setUserId(userId);
upload.setLevel(level);
upload.setUrl(imgUrl);
uploadService.upload(upload);
// url去除"sms"
return imgUrl;
} catch (IOException e) {
e.printStackTrace();
}
}
return "";
}
@GetMapping("/getHeadImg")
@UserLoginToken
public String getAdminList(@RequestParam Map<String, Object> condition, HttpServletRequest httpServletRequest) {
return uploadService.getHeader(condition);
}
🍉性能
🍈精度
要按照严格的数据格式输入,不能输入非法字符,否则系统不给予响应进行处理,查询时要保证准确率为100%,所有包含查询关键字的书籍都应能查到,不能有遗漏。
🍈时间特性
(1)响应时间:用户任意操作后5秒内系统给予反馈信息。
(2)更新处理时间:由系统运行状态来决定。
(3)数据的转换和传送时间:能够在20秒内完成。
🍈灵活性
当需求发生某些变化时,该软件的基本操作、数据结构、运行环境等等基本不会发生变化,只是对系统的数据库的文件和记录进行处理,就可以满足需求。
🍉测试
功能点 | 测试用例 | 输出结果 |
管理员用户登录 | 选择管理员角色,输入管理员的用户名和密码,点击登录 | 跳转到学生成绩管理系统首页,并展示管理员相关功能菜单 |
教师用户登录 | 选择教师角色,输入管理员的用户名和密码,点击登录 | 跳转到学生成绩管理系统首页,并展示教师相关功能菜单 |
学生用户登录 | 选择管理员角色,输入管理员的用户名和密码,点击登录 | 跳转到学生成绩管理系统首页,并展示读者相关功能菜单 |
课程信息新增 | 点击新增,输入课程信息,点击确认新增 | 未填写完整表单,提示对应异常,填写完整表单,提示新增成功 |
课程信息查询 | 输入对应查询条件,点击查询 | 课程信息列表 |
课程信息修改 | 选中课程信息,弹出课程信息修改框,修改对应信息,点击修改 | 未填写完整表单,提示对应异常,填写完整表单,提示修改成功 |
课程信息删除 | 选中删除的数据 | 提示删除成功 |
录入课程表 | 选中对应学年对应学期的课程表,录入对应课程 | 出现下拉框录入课程信息 |
成绩信息查询 | 输入对应查询条件,点击查询 | 成绩信息列表 |
录入成绩 | 选中对应成绩信息 | 录入成绩 |
修改成绩 | 选中对应成绩信息 | 修改成绩 |
修改课程表 | 选中对应学年学期的课程表,修改已有的课程表信息 | 出现下拉框修改课程信息 |
用户新增 | 点击新增,输入用户信息,点击确认新增 | 未填写完整表单,提示对应异常,填写完整表单,提示新增成功 |
用户信息查询 | 输入对应查询条件,点击查询 | 用户信息列表 |
用户修改 | 选中用户信息,弹出用户信息修改框,修改对应信息,点击修改 | 未填写完整表单,提示对应异常,填写完整表单,提示修改成功 |
用户删除 | 选中删除的数据 | 提示删除成功 |
上面代码为主要核心代码
源码资源包已上传哦