基于springboot的教师科研信息管理系统(含ssm版本)

简介: 该系统创作于2022年3月,分为两个版本,springboot和ssm整合,数据库设计详细。数据层为MyBatis,mysql数据库,具有完整的业务逻辑,适合选题:教师、科研、论文管理、科研管理等。

项目介绍:



该系统创作于2022年3月,分为两个版本,springboot和ssm整合,数据库设计详细。数据层为MyBatis,mysql数据库,具有完整的业务逻辑,适合选题:教师、科研、论文管理、科研管理等。


项目功能:



开发完成一个涉及教师基本信息、学习经历、承担的科研项目以及论文、著作等成果的管理信息系统,满足对项目、成果信息的查询、汇总等需求。系统分为教师和管理员两个角色
教师
登录注册,修改密码,退出系统
查看修改个人基本信息
增删改自己的学习经历,科研项目和论文、著作成果并提交管理员进行审核
管理员
人才管理:显示所有教师的信息,统计教师的人数,增删改查教师信息
科研管理:显示所有的科研项目以及论文、著作等成果信息,并进行统计,增删改查信息
科研审核:审核通过,审核不通过;审核不通过,退回教师那,教师可以进行编辑修改,重新提交审核
可以看到所有教师的科研项目和论文、著作成果并进行查询


模型:



9d16bbbb646740a884c622e129f1c2e9.png


数据库表结构文档:



1e847ca66cb94818be5fe60645649ad9.png


系统包含技术:



后端:SSM/springboot

前端:layui,js,css等,html页面

开发工具:idea

数据库:mysql 5.7

JDK版本:jdk1.8

tomcat版本:tomcat8


部分截图说明:



下面是登录


6f4078756f5e4b87a293a8a922184897.png


管理员-首页


104206bc2271444fb9993c826f254ada.png


管理员-人才管理


693fecc8139c4d8aa6ccdbb21ff80a7e.png


管理员-科研项目管理


cc02a3bf21f44a4bb19f07c0713f157b.png


管理员-著作成果管理


7dea7dc5cf41462e998f4b2eb711ca29.png


管理员-论文管理


40f3153546c74789881864e271e13ea2.png


教师-论文维护


98714447284c4e39b260453162c1dff2.png


教师-新增科研项目


49733216781947caa1fe5a3587700f2a.png


部分代码:



拦截器


@Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        HttpSession session = request.getSession();
        if(session.getAttribute("userInfo") != null){
            return true;
        }
        // 不符合条件的给出提示信息,并转发到主页面
        request.setAttribute("msg", "您还没有登录,请先登录!");
        request.getRequestDispatcher("/logout").forward(request, response);
        //返回true通过,返回false拦截
        return false;
    }


登录


  /**
   * 进入首页
   */
  @RequestMapping(value = "/index")
  public String index(HttpSession session) {
    String type = (String)session.getAttribute("type");
    if(type==null || type.equals("")){
      return "login";
    }
    if(type.equals("01")){
      Admin admin = (Admin)session.getAttribute("userInfo");
      if(admin==null){
        return "login";
      }
    }
    if(type.equals("02")){
      Teacher teacher = (Teacher)session.getAttribute("userInfo");
      if(teacher==null){
        return "login";
      }
    }
    return "index";
  }
  /**
   * 进入个人中心
   */
  @RequestMapping(value = "/profile")
  public String profile() {
    return "profile";
  }
  /**
   * 登录
   * 将提交数据(username,password)写入Admin对象
   */
  @RequestMapping(value = "/login")
  @ResponseBody
  public String login(String username, String password, String type, Model model, HttpSession session) {
    Map mp = new HashMap();
    mp.put("username",username);
    mp.put("password",password);
    if(username.equals("") || password.equals("")){
      return "202";
    }
    if(type.equals("01")){
      List<Admin> admins = adminService.queryFilter(mp);
      if(admins!=null && admins.size()==1){
        session.setAttribute("userInfo", admins.get(0));
        session.setAttribute("type", "01");
      }else{
        return "201";
      }
    }else{
      List<Teacher> teachers = teacherService.queryFilter(mp);
      if(teachers!=null && teachers.size()==1){
        session.setAttribute("userInfo", teachers.get(0));
        session.setAttribute("type", "02");
      }else{
        return "201";
      }
    }
    return "200";
  }


论文操作


/**进入列表页面*/
    @GetMapping("/paper")
    public String userIframe(Model model, HttpServletRequest request){
        HttpSession session = request.getSession();
        String type = (String)session.getAttribute("type");
        if(type.equals("02")){
            Teacher teacher = (Teacher)session.getAttribute("userInfo");
            Map mps = new HashMap();
            mps.put("id",teacher.getId());
            List<Teacher> teacherList = teacherService.queryFilter(mps);
            model.addAttribute("teacherList",teacherList);
        }else{
            List<Teacher> teacherList = teacherService.findAll();
            model.addAttribute("teacherList",teacherList);
        }
        return "PaperList";
    }
    /**列表数据*/
    @GetMapping("/list")
    @ResponseBody
    public PageResultVo findPaper(Paper paper, Integer limit, Integer page, HttpServletRequest request){
        HttpSession session = request.getSession();
        String type = (String)session.getAttribute("type");
        if(type.equals("02")){
            Teacher teacher = (Teacher)session.getAttribute("userInfo");
            paper.setTid(String.valueOf(teacher.getId()));
        }
        PageHelper.startPage(page,limit);
        List<Paper> paperList = paperService.selectByCondition(paper);
        PageInfo<Paper> pages = new PageInfo<>(paperList);
        return JsonData.table(paperList,pages.getTotal());
    }
    /**
     * 文件上传
     */
    @RequestMapping(value = "/uploadFile")
    @ResponseBody
    public JSONObject uploadFile(HttpServletRequest request) throws IOException {
        JSONObject jsonObject = new JSONObject();
        try {
            MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
            //使用UUID给图片重命名,并去掉四个“-”
            // 获取上传的文件
            MultipartFile multiFile = multipartRequest.getFile("file");
            SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");
            String name = sf.format(new Date());
            //获取文件的扩展名
            String ext = FilenameUtils.getExtension(multiFile.getOriginalFilename());
            //以绝对路径保存重名命后的图片
            multiFile.transferTo(new File(fileUpload+"/"+name + "." + ext));
            jsonObject.put("code",name + "." + ext);
            return jsonObject;
        } catch (Exception e) {
            e.printStackTrace();
            jsonObject.put("code", 0);
            return jsonObject;
        }
    }



以上就是部分功能展示,从整体上来看,本系统功能是十分完整的,界面设计简洁大方,交互友好,数据库设计也很合理,规模适中,代码工整,清晰,适合学习使用。


好了,今天就到这儿吧,小伙伴们点赞、收藏、评论,一键三连走起呀,下期见~~


相关文章
|
15天前
|
druid Java Maven
|
2月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
348 37
|
23天前
|
Java Maven Spring
springboot学习一:idea社区版本创建springboot项目的三种方式(第三种为主)
这篇文章介绍了在IntelliJ IDEA社区版中创建Spring Boot项目的三种方法,特别强调了第三种方法的详细步骤。
118 0
springboot学习一:idea社区版本创建springboot项目的三种方式(第三种为主)
|
20天前
|
Java Maven Spring
查看springboot版本支持最高的java版本
截至最近更新,Spring Boot 3.0及以上版本支持的最高Java版本为Java 17。鉴于技术的不断演进,建议直接参考Spring Boot的官方文档获取最准确的支持信息,因为这些版本兼容性可能会随着新版本的发布而有所变化。选择与你的Spring Boot版本相匹配的Java版本,可以确保充分利用框架特性,同时保证项目的稳定性和前瞻性。
34 0
|
2月前
|
前端开发 Java Spring
【非降版本解决】高版本Spring boot Swagger 报错解决方案
【非降版本解决】高版本Spring boot Swagger 报错解决方案
|
1月前
|
自然语言处理 搜索推荐 Java
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图(一)
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图
45 0
|
1月前
|
存储 自然语言处理 搜索推荐
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图(二)
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图(二)
29 0
|
3月前
|
JavaScript 前端开发 Java
SpringBoot + Vue 前端后分离项目精进版本
这篇文章详细介绍了一个基于SpringBoot + Vue的前后端分离项目的搭建过程,包括前端Vue项目的初始化、依赖安装、页面创建和路由配置,以及后端SpringBoot项目的依赖添加、配置文件修改、代码实现和跨域问题的解决,最后展示了项目运行效果。
SpringBoot + Vue 前端后分离项目精进版本
|
3月前
|
缓存 前端开发 JavaScript
前后端分离 SpringBoot+Vue商城买卖系统通杀版本。大家可以参考学习一下
这篇文章介绍了一个使用SpringBoot+Vue开发的前后端分离商城系统,包括技术架构、开发环境、实现的功能以及项目截图,并展示了普通用户和商家端的功能界面。
前后端分离 SpringBoot+Vue商城买卖系统通杀版本。大家可以参考学习一下
|
3月前
|
Java API 开发者
JDK8到JDK17版本升级的新特性问题之SpringBoot选择JDK17作为最小支持的Java lts版本意味着什么
JDK8到JDK17版本升级的新特性问题之SpringBoot选择JDK17作为最小支持的Java lts版本意味着什么
118 0
JDK8到JDK17版本升级的新特性问题之SpringBoot选择JDK17作为最小支持的Java lts版本意味着什么