ssm班级管理系统的设计与实现

毕业设计初稿已经交了,好久没有更新博客了,抽空来写一下自己的毕业设计,水平实在有限,只想自己记录一下,代码等毕业了我会贴上来。有准备做毕业设计,或者未来准备用ssm框架来做毕设的同学看完我的文章能够对你有所帮助,那就再好不过了,开始吧!

使用的技术及开发的工具

Spring+Spring MVC+MyBatis

关于ssm框架这部分网上的博客很多,大家多看看几篇博客就可以对这个框架有一个大概的了解,我不再赘述了,关于框架的入门demo,我自己也写过一篇博客,大家有兴趣可以去看看,我会贴在下面。

IntelliJ IDEA+Maven

Eclipse使用的较少,而且IDEA确实使用体验很好,这次做毕设就使用了IDEA来开发,使用maven来管理依赖,也确实方便了许多,节省了很多的时间。

Jsp

2019年,用jsp确实有点老了,后续有时间会考虑使用Thymeleaf,以后把代码贴上来,有兴趣的同学可以用Thymeleaf改一改


使用的技术及开发的工具差不多介绍到这里,其实是很基础的项目,但是毕竟在学校没有实际自己开发过整个项目,对自己的能力还是有一定的提高,下面是我当时刚学习ssm框架的时候写的一个入门demo,用上面提到的技术整合了ssm框架,实现了查询和添加,大家有兴趣可以去看一看。

ssm框架整合全记录(idea版)
本文链接:https://blog.csdn.net/OliverND/article/details/100037462

系统的总体设计

系统权限

本系统为班级信息管理系统,班主任及班上的班委使用该系统来管理班级的各种信息,所以系统分了三个角色:

  1. 超级管理员(权限最大)
    超级管理员是系统中权限最大的角色,可以使用系统的全部功能,可以由学校的教务或者信息中心老师担任,对管理员进行增删改查的操作。
  2. 管理员(权限次之)
    管理员的权限比超级管理员少,可以使用系统的部分功能,一般由班级班主任担任,可以对用户进行增删改查的操作。
  3. 用户(权限最小)
    整个系统中权限最小的角色,仅限使用部分功能,由班级班委(如:班长、团支书等)担任,可以对班级中的学生担任。

系统流程图

系统的流程图如下,大家可以看一下,画的应该还算清楚
系统流程图

系统功能设计

系统功能模块图,根据角色的不同,对应的有不同的功能,做的时候时间短,角色权限这一块,并没有完全实现,只是用js代码,根据session里角色的信息把页面中对应的菜单隐藏了,这样不好,后面的版本我会改进的。
系统功能模块图

数据库设计

E-R图

根据本系统的需要,总共设计的八张表,分别为管理员表、用户表、学生表、课程表、教师表、角色表、系统信息表、用户表。
学生表、班级表、课程表、教师表E-R图如下:
学生表、班级表、课程表、教师表E-R图如下用户表、角色表E-R图如下:
用户表、角色表E-R图系统信息表E-R图如下:
系统信息表E-R图管理员表E-R图如下:
管理员表E-R图

数据库模型图

数据库模型图暂时不放了,答辩完我会放上来,有需要的可以根据E-R图先自己创建一下数据库表

模块实现

具体页面暂时不往上放了,我会贴部分代码,使用框架简化了开发,代码量少了好多。
实现功能的步骤为:
实体类=>dao层=>service层=>contorller
因为功能不是太多,我没有使用***.xml的映射文件,而是用的注解@Select、@insert等注解开发的数据持久层(dao层)。

具体实现的模块有以下几个,我只贴最后一个模块,也就是管理员管理模块的代码,供大家参考。

登录模块

注册模块

学生管理模块

课程管理模块

系统信息管理模块

管理员管理模块

  1. 实体类(domain/entity/pojo)
    Admin

    public class Admin {
    
        private Integer admin_id;
        private String admin_name;
    
        private String admin_password;
    
        public Integer getAdmin_id() {
            return admin_id;
        }
    
        public void setAdmin_id(Integer admin_id) {
            this.admin_id = admin_id;
        }
    
        public String getAdmin_name() {
            return admin_name;
        }
    
        public void setAdmin_name(String admin_name) {
            this.admin_name = admin_name;
        }
    
        public String getAdmin_password() {
            return admin_password;
        }
    
        public void setAdmin_password(String admin_password) {
            this.admin_password = admin_password;
        }
    
        public String getAdmin_role() {
            return admin_role;
        }
    
        public void setAdmin_role(String admin_role) {
            this.admin_role = admin_role;
        }
    
        private String admin_role;
    }
    
  2. dao层(dao)
    AdminDao

    @Repository
    public interface AdminDao {
    	@Select("select * from admin ")
    	public List<Admin> findAll();
    
    	@Select("select * from admin where admin_id = #{admin_id}")
    	public List<Admin> findByadmin_id(Integer admin_id);
    
    	@Insert("INSERT INTO admin(admin_id,admin_name,admin_password,admin_role) VALUES (#{admin_id},#{admin_name},#{admin_password},#{admin_role})")
    	public void insertAdmin(Admin admin);
    
    	@Delete("delete from admin where admin_id = #{admin_id}")
    	public Integer delAdmin(Integer admin_id);
    
    	@Update("update admin set admin_name = #{admin_name},admin_password = #{admin_password},admin_role = #{admin_role} where admin_id = #{admin_id}")
    	public void updateByadmin_id(Admin admin);
    
    	@Select("select * from admin where admin_name = #{admin_name}")
    	public List<Admin> loginCheck(String admin_name);
    }
    
  3. service层(service)
    AdminService

    public interface AdminService {
    
    
        public List<Admin> findAll();
    
        public List<Admin> findByadmin_id(Integer admin_id);
    
        public void insertAdmin(Admin admin);
    
        public Integer delAdmin(Integer admin_id);
    
        public void updateByadmin_id(Admin admin);
    
        public List<Admin> loginCheck(String admin_name,String admin_password);
    }
    
    1. service层实现类(Impl)
      AdminServiceImpl
      @Service("AdminService")
      @Transactional
      public class AdminServiceImpl implements AdminService {
      
          @Autowired
          private AdminDao adminDao;
      
      
          @Override
          public List<Admin> findAll() {
              return adminDao.findAll();
          }
      
          @Override
          public List<Admin> findByadmin_id(Integer admin_id) {
              return adminDao.findByadmin_id(admin_id);    }
      
      
          @Override
          public void updateByadmin_id(Admin admin){
              adminDao.updateByadmin_id(admin);
          }
      
          @Override
          public void insertAdmin(Admin admin) {
          adminDao.insertAdmin(admin);
          }
      
          @Override
          public Integer delAdmin(Integer admin_id)
          {
              return adminDao.delAdmin(admin_id);
          }
      
          @Override
          public List<Admin> loginCheck(String admin_name,String admin_password){
              List<Admin> adminList = adminDao.loginCheck(admin_name);
              if(adminList != null && adminList.iterator().next().getAdmin_password().equals(admin_password)){
                  return adminList;
              }
              return null;
          }
      }
      
  4. controller(controller)
    ``

    @Controller
    @RequestMapping("/admin")
    public class AdminController {
    
            @Autowired
            private AdminService adminService;
    
            @Autowired
            private RoleService roleService;
    
            //查询所有人员
            @RequestMapping(value="/findAlladmin",method = RequestMethod.GET)
            public ModelAndView findAll(@RequestParam(defaultValue="1",required=true,value="pageNo") Integer pageNo){
                ModelAndView modelAndView = new ModelAndView();
                Integer pageSize = 5;
                PageHelper.startPage(pageNo,pageSize);
                List<Admin> adminList = adminService.findAll();
                PageInfo<Admin> pageInfo = new PageInfo<Admin>(adminList);
                modelAndView.addObject("pageInfo",pageInfo);
                modelAndView.setViewName("admdatalist");
                return modelAndView;
            }
    
    
            //跳转添加页面
            @RequestMapping(value = "/insertpage",method = RequestMethod.GET)
            public String insertPage(){
                return "admfrom";
            }
    
            //添加操作
            @RequestMapping(value = "/saveAdmin",method = RequestMethod.POST)
            public void  saveAdmin(Admin admin, HttpServletRequest request, HttpServletResponse response, Model model) throws IOException {
                adminService.insertAdmin(admin);
    //        response.sendRedirect(request.getContextPath()+"/admin/findAlladmin");
                response.setContentType("text/html;charset=utf-8");
                response.getWriter().print("<script>alert('添加成功!请记好自己的账号密码呦!'); window.location='/admin/findAlladmin' </script>");
                return;
            }
    
    
            //修改页面
            @RequestMapping(value = "/updatePage")
            public String  updatePage(@RequestParam(name = "admin_id",required = false) Integer admin_id,Model model){
                List<Admin> adminList = adminService.findByadmin_id(admin_id);
                model.addAttribute("adminList",adminList);
                return "admUpdatefrom";
            }
    
            //修改操作
            @RequestMapping(value = "/updateAdmin",method = RequestMethod.POST)
            public  void  updateAdmin(Admin admin, HttpServletResponse response) throws IOException {
                adminService.updateByadmin_id(admin);
                response.setContentType("text/html;charset=utf-8");
                response.getWriter().print("<script>alert('修改成功!'); window.location='/admin/findAlladmin' </script>");
                return;
            }
    
    
            //删除操作
            @RequestMapping(value = "/deleteAdmin",method = RequestMethod.GET)
            public  void  delAdmin(@RequestParam(name = "admin_id",required = false) Integer admin_id, HttpServletResponse response) throws IOException {
                adminService.delAdmin(admin_id);
                response.setContentType("text/html;charset=utf-8");
                response.getWriter().print("<script>alert('删除成功!'); window.location='/admin/findAlladmin' </script>");
                return;
                //接收table中的参数:
                // 1. 给button添加<a>标签,添加href属性/admin/deleteAdmin?admid=${admin.admid} 问号后的参数会被传递
                // 2. controller方法中添加@RequestParam注解,其name属性值与?后所传递的参数name相同
            }
    }
    

总结

写到这里基本差不多了,虽然部分内容没有贴,但是管理员的增删改查已经基本完成了。
从2019年7月刚开始接触ssm,到2019年10月初稿完成,大部分时间都花费在了看视频学习框架的理论知识和看书上,虽然系统做的不是很完善,但对我的能力确实有了很大的提升,毕竟是第一次实际开发项目,积累了一定的经验,也有很多待解决的问题,回顾一下做如下几点的总结:

  1. 对开发中出现的问题或者bug,解决后一定要复现并记录下来,以后出现同样的错误看看以前踩过的坑可以很快的解决,把踩过的坑分享出来也可以帮助其他人解决问题,我觉得这是写博客很重要的一个意义。
  2. 学习新知识、新技术的时候,一定要学和练结合,千万不能等很多理论学完了再动手实践,没有效果,如果没有实现是对积极性的一种打击,还是要有良好的学习方法才可以事半功倍。
  3. 遇到错误一定要耐心,多看报错的信息,多用搜索引擎,看看别人解决问题的思路和方法,不能看见404或者500就放弃,有bug才是正常的
    这几点都是我这次做毕设深切的体会,通过这次确实学到了很多东西,虽然累但是很值得!
发布了15 篇原创文章 · 获赞 20 · 访问量 2013

猜你喜欢

转载自blog.csdn.net/OliverND/article/details/102379185