1数据库设计
在这次数据库设计中,我没有设计外键,所有的多表查询都是使用自连接
(1)学生信息表
![](https://i-blog.csdnimg.cn/blog_migrate/f8a48a0a608370a9d472e7ca60389beb.png)
(2)学生绩点表
![](https://i-blog.csdnimg.cn/blog_migrate/1383e28419f79c23cbbbfb250025b54d.png)
(3)用户表
![](https://i-blog.csdnimg.cn/blog_migrate/ea89555485b338017d17cef3f673a890.png)
(4)剩余的表
![](https://i-blog.csdnimg.cn/blog_migrate/61cee5bce11f3657818ed55eadb15a8d.png)
2接口设计
后台使用springboot进行整合。使用的是ssm框架,接口名称、方法、URL及说明如下:
后端接口总体设计接口
![](https://i-blog.csdnimg.cn/blog_migrate/5cfa63389508a130537e99378a30da90.png)
学生信息接口(基本curd )
public class student {
@Resource(name = "StudentService")
privateStudentService studentService;
@RequestMapping("/list")
publicString stuList(Model model,@RequestParam(value = "pageNum",defaultValue = "1") int pageNum){
PageInfo<Student> pageInfo=studentService.queryAll(pageNum);
List<Student> StudentList=pageInfo.getList();
model.addAttribute("pageInfo",pageInfo);
model.addAttribute("StudentList",StudentList);
return "student/list";
}
@PostMapping("/search")
publicString search(StringstuNumber,Modelmodel){
model.addAttribute("StudentList",studentService.queryByNum(stuNumber));
return "student/list";
}
@GetMapping("/add")
publicString stuAdd(@ModelAttribute(value= "student") Student student){
return"student/add";
}
@PostMapping("/add")
publicString stuAdd(@Validated @ModelAttribute(value= "student") Student student,
BindingResultbindingResult,
@RequestParam(value= "file")MultipartFile file){
if(bindingResult.hasErrors()){
return "student/add";
}else {
studentService.addStu(student,file);
return "redirect:/student/list";
}
}
@GetMapping("/editor")
publicString stuEditor(Model model,String stuNumber,@ModelAttribute(value = "student") Student student){
model.addAttribute("Stu",studentService.queryByNum(stuNumber));
return "student/editor";
}
@PostMapping("/editor")
publicString stuEditor(@Validated@ModelAttribute(value = "student") Studentstudent,
BindingResultbindingResult,
@RequestParam(value = "file") MultipartFile file,
StringStuNum,Modelmodel){
if(bindingResult.hasErrors()){
model.addAttribute("Stu",studentService.queryByNum(StuNum));
return "student/editor";
}
studentService.updateStu(student,file);
return "redirect:/student/list";
}
@RequestMapping("/info")
publicString stuInfo(Model model,String stuNumber){
model.addAttribute("Stu",studentService.queryByNum(stuNumber));
return "student/info";
}
@RequestMapping("/delete")
publicString deleteStu(String stuNumber){
studentService.deleteStu(stuNumber);
return "redirect:/student/list";
}
}
下面列举几个重要接口的代码:
(1) 密码加盐加密
![](https://i-blog.csdnimg.cn/blog_migrate/6adbc2e19723b4c7e2262c7128d5e532.png)
(2) 邮件注册和登录
![](https://i-blog.csdnimg.cn/blog_migrate/a18fc5d8fbe5ed1be4a2dfc8bde4b9cc.png)
(3) 加入校验器
![](https://i-blog.csdnimg.cn/blog_migrate/ebb0dcdeded3f5237eac078ef5f50e44.png)
3用户界面设计
用户界面应用thymlead进行开发,目录结构为:
![](https://i-blog.csdnimg.cn/blog_migrate/cacd57b02c7c3917e1471db1b47b6997.png)