今天分分享一篇关于学生成绩管理系统的java项目
首先说下所用技术
前端:BootStrap框架+jquery+thymeleaf模板解析
后端:springboot+Mybaits
项目介绍:
角色一共有三种:教师+学生+超级管理员
主要实现了不同用户的登录注册,学生可以查看成绩,老师可以查看全班成绩,管理成绩,管理员可以管理老师和学生的增删改查,以及对班级的管理!
运行环境
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
5.是否Maven项目: 是;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目
6.数据库:MySql 8.0版本;
部分展示图片
部分代码
Springboot配置SpringMVC
//使用WebMvcConfigurerAdapter可以来扩展SpringMVC的功能
//@EnableWebMvc 不要接管SpringMVC
@Configuration
public class MyMvcConfig extends WebMvcConfigurerAdapter {
// @Override
// public void addViewControllers(ViewControllerRegistry registry) {
// // super.addViewControllers(registry);
// }
//所有的WebMvcConfigurerAdapter组件都会一起起作用
@Bean //将组件注册在容器
public WebMvcConfigurerAdapter webMvcConfigurerAdapter(){
WebMvcConfigurerAdapter adapter = new WebMvcConfigurerAdapter() {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("login");
registry.addViewController("/index.html").setViewName("login");
registry.addViewController("/admmain.html").setViewName("/adm/adminindex");
registry.addViewController("/stumain.html").setViewName("/stu/stuindex");
registry.addViewController("/teamain.html").setViewName("/tea/teaindex");
registry.addViewController("/stuadmin.html").setViewName("/adm/stulist");
registry.addViewController("/addstudent.html").setViewName("/adm/addstu");
registry.addViewController("/updateSucc.html").setViewName("/stu/stuUpdateSucc");
registry.addViewController("/updateTeaSucc.html").setViewName("/tea/teaUpdateSucc");
}
//注册拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
super.addInterceptors(registry);
// 静态资源; *.css , *.js
// SpringBoot已经做好了静态资源映射
registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("/**")
.excludePathPatterns("/index.html","/","/stu/login","/adm/login","/tea/login");
}
};
return adapter;
}
}
管理员控制层
@Controller
public class AdminController {
@Autowired
private AdminService adminService;
@Autowired
private ClassService classService;
@Autowired
private StudentService studentService;
@Autowired
private TeacherService teacherService;
@PostMapping(value = "/adm/login")
public String login(@RequestParam("username") String username,
@RequestParam("password") String password, Map<String,Object> map, HttpSession session)
{
Admin adm=adminService.adminLogin(username,password);
if(adm!=null)
{
List<Classes> classes=classService.getAllClass();
session.setAttribute("loginUser",username);
return "redirect:/admmain.html";
}
else
{
map.put("msg","用户名或密码错误");
return "login";
}
}
//返回首页
@GetMapping(value = "/adm/toindex")
public String toindex(){
return "redirect:/admmain.html";
}
//返回学生管理首页
@GetMapping(value = "/adm/tostudmin/{pn}")
public String tostudmin(@PathVariable("pn") Integer pn,Model model)
{
PageHelper.startPage(pn, 6);
List<Student> students=studentService.getAllStudent();
List<Classes> classes = classService.getAllClass();
PageInfo<Student> page = new PageInfo<Student>(students, 5);
model.addAttribute("classes",classes);
model.addAttribute("pageInfo",page);
return "forward:/stuadmin.html";
}
//返回学生添加页面
@GetMapping(value = "/adm/stuadd")
public String stutoaddpage(Model model)
{
List<Classes> classes = classService.getAllClass();
model.addAttribute("classes",classes);
return "adm/addstu";
}
//处理学生添加事务
@PostMapping(value = "/adm/stuAdd")
public String stuAdd(@Valid Student student, BindingResult bindingResult,Model model)
{
List<ObjectError> allErrors = bindingResult.getAllErrors();
List<MyError> errmsg = new ArrayList<>();
List<Classes> classes = classService.getAllClass();
if(allErrors.size()==0)
{
Student studentVail=studentService.selectById(student.getStuId());
if(studentVail==null)
{
studentService.addStudent(student);
return "redirect:/adm/tostudmin/1";
}
else{
errmsg.add(new MyError("已存在该学号的学生"));
model.addAttribute("errors",errmsg);
model.addAttribute("stu",student);
model.addAttribute("classes",classes);
return "adm/addstu";
}
}
else {
for (ObjectError error:allErrors)
{
errmsg.add(new MyError(error.getDefaultMessage()));
}
model.addAttribute("errors",errmsg);
model.addAttribute("stu",student);
model.addAttribute("classes",classes);
return "adm/addstu";
}
}
//处理删除学生事务
@DeleteMapping(value = "/adm/stu/{stuId}")
public String delestu(@PathVariable("stuId") String stuId)
{
studentService.deleStu(stuId);
return "redirect:/adm/tostudmin/1";
}
//返回学生修改页面
@GetMapping(value = "/adm/stu/{stuId}")
public String updateStuPage(@PathVariable("stuId") String stuId,Model model)
{
Student stu=studentService.selectById(stuId);
List<Classes> classes=classService.getAllClass();
model.addAttribute("stu",stu);
model.addAttribute("classes",classes);
return "adm/updatestu";
}
//更新学生信息操作
@PutMapping(value = "/adm/stu")
public String updateStu(@Valid Student student,BindingResult bindingResult,Model model)
{
List<ObjectError> allErrors = bindingResult.getAllErrors();
List<MyError> errmsg = new ArrayList<>();
List<Classes> classes = classService.getAllClass();
if(allErrors.size()==0)
{
System.out.println(student);
studentService.deleStu(student.getStuId());
studentService.addStudentHavePass(student);
return "redirect:/adm/tostudmin/1";
}
else
{
for (ObjectError error:allErrors)
{
errmsg.add(new MyError(error.getDefaultMessage()));
}
model.addAttribute("errors",errmsg);
model.addAttribute("stu",student);
model.addAttribute("classes",classes);
return "adm/updatestu";
}
}
//根据ID查询学生
@GetMapping(value = "/adm/selectById")
public String selectById(@Param("stuId") String stuId, Model model)
{
Student student=studentService.selectById(stuId);
List<Classes> classes=classService.getAllClass();
model.addAttribute("classes",classes);
model.addAttribute("stus",student);
return "adm/stubyid";
}
//根据班级查询学生
@GetMapping(value = "/adm/selectByClass/{pn}")
public String selectStuByClass(@PathVariable("pn") Integer pn,@Param("className") String className,Model model)
{
PageHelper.startPage(pn, 6);
List<Student> stus=studentService.seleStuByClassName(className);
List<Classes> classes=classService.getAllClass();
PageInfo<Student> page = new PageInfo<Student>(stus, 5);
model.addAttribute("pageInfo",page);
model.addAttribute("classes",classes);
model.addAttribute("className",className);
return "adm/stubyclass";
}
//返回教师管理首页
@GetMapping(value = "/adm/toteadmin/{pn}")
public String toteadmin(@PathVariable("pn") Integer pn,Model model)
{
PageHelper.startPage(pn, 6);
List<Teacher> teachers=teacherService.getAllTeacher();
PageInfo<Teacher> page = new PageInfo<Teacher>(teachers, 5);
model.addAttribute("pageInfo",page);
return "adm/tealist";
}
//返回教师添加页面
@GetMapping(value = "/adm/teaadd")
public String teatoaddpage()
{
return "adm/addtea";
}
//处理教师添加事务
@PostMapping(value = "/adm/teaAdd")
public String teaAdd(@Valid Teacher teacher, BindingResult bindingResult,Model model)
{
List<ObjectError> allErrors = bindingResult.getAllErrors();
List<MyError> errmsg = new ArrayList<>();
if(allErrors.size()==0)
{
Teacher teacherVail=teacherService.selectById(teacher.getTeaId());
if(teacherVail==null)
{
teacherService.addTeacher(teacher);
return "redirect:/adm/toteadmin/1";
}
else{
errmsg.add(new MyError("已存在该工号的教师"));
model.addAttribute("errors",errmsg);
model.addAttribute("tea",teacher);
return "adm/addtea";
}
}
else {
for (ObjectError error:allErrors)
{
errmsg.add(new MyError(error.getDefaultMessage()));
}
model.addAttribute("errors",errmsg);
model.addAttribute("tea",teacher);
return "adm/addtea";
}
}
//返回教师修改页面
@GetMapping(value = "/adm/tea/{teaId}")
public String updateTeaPage(@PathVariable("teaId") String teaId,Model model)
{
Teacher tea=teacherService.selectById(teaId);
model.addAttribute("tea",tea);
return "adm/upadtetea";
}
//更新教师信息操作
@PutMapping(value = "/adm/tea")
public String updateTea(@Valid Teacher teacher,BindingResult bindingResult,Model model)
{
List<ObjectError> allErrors = bindingResult.getAllErrors();
List<MyError> errmsg = new ArrayList<>();
if(allErrors.size()==0)
{
System.out.println(teacher);
teacherService.deleTea(teacher.getTeaId());
teacherService.addTeacherHavePass(teacher);
return "redirect:/adm/toteadmin/1";
}
else
{
for (ObjectError error:allErrors)
{
errmsg.add(new MyError(error.getDefaultMessage()));
}
model.addAttribute("errors",errmsg);
model.addAttribute("tea",teacher);
return "adm/upadtetea";
}
}
//根据ID查询教师
@GetMapping(value = "/adm/selectTeaById")
public String selectTeaById(@Param("teaId") String teaId, Model model)
{
Teacher teacher=teacherService.selectById(teaId);
model.addAttribute("tea",teacher);
return "adm/teabyid";
}
//处理删除教师事务
@DeleteMapping(value = "/adm/tea/{teaId}")
public String deletea(@PathVariable("teaId") String teaId)
{
teacherService.deleTea(teaId);
return "redirect:/adm/toteadmin/1";
}
//返回班级管理首页
@GetMapping(value = "/adm/toclassdmin/{pn}")
public String toclassdmin(@PathVariable("pn") Integer pn,Model model)
{
PageHelper.startPage(pn, 6);
List<Classes> classes=classService.getAllClass();
PageInfo<Classes> page = new PageInfo<Classes>(classes, 5);
model.addAttribute("pageInfo",page);
return "adm/classlist";
}
//返回班级添加页面
@GetMapping(value = "/adm/classadd")
public String classToAddPage()
{
return "adm/addclass";
}
//处理班级添加事务
@PostMapping(value = "/adm/classAdd")
public String classAdd(@Valid Classes classes, BindingResult bindingResult,Model model)
{
List<ObjectError> allErrors = bindingResult.getAllErrors();
List<MyError> errmsg = new ArrayList<>();
if(allErrors.size()==0)
{
if(classService.selectByName(classes.getClassName())==null) {
Classes classVail = classService.selectById(classes.getClassId());
if (classVail == null) {
classService.addClass(classes);
return "redirect:/adm/toclassdmin/1";
} else {
errmsg.add(new MyError("已存在该班级号的班级"));
model.addAttribute("errors", errmsg);
model.addAttribute("class", classes);
return "adm/addclass";
}
}
else
{
errmsg.add(new MyError("已存在该班级名字的班级"));
model.addAttribute("errors", errmsg);
model.addAttribute("class", classes);
return "adm/addclass";
}
}
else {
for (ObjectError error:allErrors)
{
errmsg.add(new MyError(error.getDefaultMessage()));
}
model.addAttribute("errors",errmsg);
model.addAttribute("class",classes);
return "adm/addclass";
}
}
//返回班级修改页面
@GetMapping(value = "/adm/class/{classId}")
public String updateClassPage(@PathVariable("classId") String classId,Model model)
{
Classes classes=classService.selectById(classId);
model.addAttribute("class",classes);
return "adm/upadteclass";
}
//更新班级信息操作
@PutMapping(value = "/adm/class")
public String updateClass(@Valid Classes classes,BindingResult bindingResult,Model model)
{
List<ObjectError> allErrors = bindingResult.getAllErrors();
List<MyError> errmsg = new ArrayList<>();
if(allErrors.size()==0)
{
System.out.println(classes);
classService.deleteById(classes.getClassId());
classService.addClass(classes);
return "redirect:/adm/toclassdmin/1";
}
else
{
for (ObjectError error:allErrors)
{
errmsg.add(new MyError(error.getDefaultMessage()));
}
model.addAttribute("errors",errmsg);
model.addAttribute("class",classes);
return "adm/upadteclass";
}
}
//根据Name查询班级
@GetMapping(value = "/adm/selectClassByName")
public String selectClassById(@Param("className") String className, Model model)
{
Classes classes=classService.selectByName(className);
model.addAttribute("class",classes);
return "adm/classbyid";
}
//处理删除班级事务
@DeleteMapping(value = "/adm/class/{classId}")
public String deleClass(@PathVariable("classId") String classId)
{
classService.deleteById(classId);
return "redirect:/adm/toclassdmin/1";
}
// @GetMapping(value = "/adm/selectByClass/{pn}")
//处理删除学生事务从根据班级查找页面发送来的
@DeleteMapping(value = "/adm/stubyclass/{stuId}")
public String delestubyclass(@PathVariable("stuId") String stuId)
{
Student student = studentService.selectById(stuId);
studentService.deleStu(stuId);
try {
return "redirect:/adm/selectByClass/1?className="+ URLEncoder.encode(student.getStuClass(),"UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return "redirect:/adm/toclassdmin/1";
}
//返回学生修改页面从根据班级查找页面发送来的
@GetMapping(value = "/adm/stubyclass/{stuId}")
public String updateStuPagebyclass(@PathVariable("stuId") String stuId,Model model)
{
Student stu=studentService.selectById(stuId);
List<Classes> classes=classService.getAllClass();
model.addAttribute("stu",stu);
model.addAttribute("classes",classes);
model.addAttribute("ininclass",stu.getStuClass());
return "adm/updatestubyclass";
}
//更新学生信息操作从根据班级查找页面发送来的
@PutMapping(value = "/adm/stubyclass")
public String updateStubyclass(@Valid Student student,BindingResult bindingResult,Model model,@Param("ininclass") String ininclass)
{
List<ObjectError> allErrors = bindingResult.getAllErrors();
List<MyError> errmsg = new ArrayList<>();
List<Classes> classes = classService.getAllClass();
if(allErrors.size()==0)
{
System.out.println(student);
studentService.deleStu(student.getStuId());
studentService.addStudentHavePass(student);
try {
return "redirect:/adm/selectByClass/1?className="+URLEncoder.encode(ininclass,"UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return "redirect:/adm/toclassdmin/1";
}
else
{
for (ObjectError error:allErrors)
{
errmsg.add(new MyError(error.getDefaultMessage()));
}
model.addAttribute("errors",errmsg);
model.addAttribute("stu",student);
model.addAttribute("classes",classes);
return "adm/updatestubyclass";
}
}
}
源码获取:博客评论或点击关注私!
本文含有隐藏内容,请 开通VIP 后查看