欢迎来到 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秒内完成。
🍈灵活性
当需求发生某些变化时,该软件的基本操作、数据结构、运行环境等等基本不会发生变化,只是对系统的数据库的文件和记录进行处理,就可以满足需求。
🍉测试
功能点 | 测试用例 | 输出结果 |
管理员用户登录 | 选择管理员角色,输入管理员的用户名和密码,点击登录 | 跳转到学生成绩管理系统首页,并展示管理员相关功能菜单 |
教师用户登录 | 选择教师角色,输入管理员的用户名和密码,点击登录 | 跳转到学生成绩管理系统首页,并展示教师相关功能菜单 |
学生用户登录 | 选择管理员角色,输入管理员的用户名和密码,点击登录 | 跳转到学生成绩管理系统首页,并展示读者相关功能菜单 |
课程信息新增 | 点击新增,输入课程信息,点击确认新增 | 未填写完整表单,提示对应异常,填写完整表单,提示新增成功 |
课程信息查询 | 输入对应查询条件,点击查询 | 课程信息列表 |
课程信息修改 | 选中课程信息,弹出课程信息修改框,修改对应信息,点击修改 | 未填写完整表单,提示对应异常,填写完整表单,提示修改成功 |
课程信息删除 | 选中删除的数据 | 提示删除成功 |
录入课程表 | 选中对应学年对应学期的课程表,录入对应课程 | 出现下拉框录入课程信息 |
成绩信息查询 | 输入对应查询条件,点击查询 | 成绩信息列表 |
录入成绩 | 选中对应成绩信息 | 录入成绩 |
修改成绩 | 选中对应成绩信息 | 修改成绩 |
修改课程表 | 选中对应学年学期的课程表,修改已有的课程表信息 | 出现下拉框修改课程信息 |
用户新增 | 点击新增,输入用户信息,点击确认新增 | 未填写完整表单,提示对应异常,填写完整表单,提示新增成功 |
用户信息查询 | 输入对应查询条件,点击查询 | 用户信息列表 |
用户修改 | 选中用户信息,弹出用户信息修改框,修改对应信息,点击修改 | 未填写完整表单,提示对应异常,填写完整表单,提示修改成功 |
用户删除 | 选中删除的数据 | 提示删除成功 |
上面代码为主要核心代码
源码资源包已上传哦