毕业设计:基于Springboot实现求职招聘,校园招聘系统

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介:  本项目基于Springboot 开发实现了一个求职招聘网站,系统分为前端求职招聘和后台数据管理后台。主要分为四个角以:管理员,求职者,公司管理员,公司HR,不同的角色进入系统有不同的功能操作。用户身份可以在后台管理设定。系统功能完整,界面美观大方,适合做毕业设计使用。运行环境:开发工具:IDEA或ECLIPSE数据库:MYSQL+REDIS开发技术:Springboot+mybatis+mybatisPlus+shiro前端开发:AJAX+Jquery+layui2.1 功能需求2.1.1 系统划分

 作者主页:编程指南针

简介:Java领域优质创作者、CSDN博客专家  Java项目、简历模板、学习资料、面试题库、技术互助

文末获取源码

目录

一、项目概述.............................................................................................................. 3

二、需求分析.............................................................................................................. 3

2.1 功能需求............................................................................................................... 3

2.2 性能需求............................................................................................................. 10

三、数据库设计........................................................................................................ 10

3.1 实体关系图......................................................................................................... 10

3.2 数据库表设计...................................................................................................... 10

四、详细设计............................................................................................................ 10

4.1 登录设计............................................................................................................. 10

4.2 订单管理............................................................................................................. 11

五、系统界面............................................................................................................ 11

5.1相关界面.............................................................................................................. 11

六、心得体会............................................................................................................ 12

一,项目概述:

  项目编码:BS-PT-059

  本项目基于Springboot 开发实现了一个求职招聘网站,系统分为前端求职招聘和后台数据管理后台。主要分为四个角以:管理员,求职者,公司管理员,公司HR,不同的角色进入系统有不同的功能操作。用户身份可以在后台管理设定。系统功能完整,界面美观大方,适合做毕业设计使用。

运行环境:

开发工具:IDEA或ECLIPSE

数据库:MYSQL+REDIS

开发技术:Springboot+mybatis+mybatisPlus+shiro

前端开发:AJAX+Jquery+layui

2.1 功能需求

2.1.1 系统划分

image.gif编辑

2.1.1.1 用户角色划分

    1. 求职者

    登录本网站的一种用户,可以检索并查看网站入驻的公司及其发布的岗位信息,创建自己的简历,与招聘者进行联系。

      1. 应聘者

            2.1、HR

                   公司下的某一个HR,可以发布新岗位和取消自己发布的岗位招聘

            2.2、公司管理员

                   公司管理员,填写公司相关信息入驻网站后成为该角色,可以管理本公司发布的所有岗位,以及管理所有员工

      3、管理员

      可以查看站内相关数据,对私信、系统、设置进行管理。

      2.1.1.2 前台服务的用例图及说明

        1. 招聘者功能

        image.gif编辑

          1. 查看个人信息:查看自己账号的基本信息及修改
          2. 修改密码:修改自己账号的登录密码
          3. 私信:与求职者私信
          4. 公司入驻:如果是第一次登录该网站,用户可以输入公司信息,进行入驻网站,随后可发布岗位
          5. 岗位管理:对岗位进行发布、取消、编辑等操作
          6. 员工管理:权限允许的前提下,管理自己公司内所有的hr
          7. HR信息:查看自己的基本信息
            1. 求职者功能:

            image.gif编辑

              1. 查看个人信息:查看自己账号的基本信息及修改
              2. 修改密码:修改自己账号的登录密码
              3. 私信:对感兴趣岗位的HR进行联系
              4. 个人简历:创建自己的简历,供HR查看
              5. 搜索岗位:搜索自己感兴趣的岗位
              6. 搜索公司:搜索自己感兴趣的公司

              2.1.1.3 管理员后台用例图

              image.gif编辑

                1. 查看个人信息:查看自己账号的基本信息及修改
                2. 修改密码:修改自己账号的登录密码
                3. 公司管理:管理站内所有入驻的公司
                4. 用户管理:管理站内所有用户
                5. 岗位管理:管理站内所有岗位
                6. 简历管理:管理站内所有简历
                7. 数据字典:管理站内数据字典
                8. 私信管理:查看所有用户的聊天关系、聊天记录等 三、数据库设计
                  3.1 实体关系图
                  image.gif编辑
                  表结构暂略

                五、系统界面

                  1. 首页:

                  image.gif编辑

                  2.登录界面:

                  image.gif编辑

                  3.注册界面

                  image.gif编辑

                  4.岗位查看搜索

                  image.gif编辑

                  5.公司查看界面

                  image.gif编辑

                  6.HR管理界面

                  image.gif编辑

                  7.岗位管理界面

                  image.gif编辑

                  8.员工管理

                  image.gif编辑

                  9.个人简历

                  image.gif编辑

                  10.管理员后台管理

                  image.gif编辑

                  系统部分核心代码:

                  package com.iurac.recruit.controller;
                  import cn.hutool.core.date.DateUtil;
                  import cn.hutool.core.util.IdUtil;
                  import cn.hutool.core.util.ObjectUtil;
                  import cn.hutool.core.util.ReUtil;
                  import cn.hutool.core.util.StrUtil;
                  import com.iurac.recruit.entity.Job;
                  import com.iurac.recruit.entity.User;
                  import com.iurac.recruit.exception.ManageException;
                  import com.iurac.recruit.security.RedisCacheManager;
                  import com.iurac.recruit.service.UserService;
                  import com.iurac.recruit.util.ImageUtil;
                  import com.iurac.recruit.util.Result;
                  import com.iurac.recruit.util.SaltUtil;
                  import com.iurac.recruit.util.TableResult;
                  import com.iurac.recruit.vo.PageResultVo;
                  import com.sun.org.apache.regexp.internal.RE;
                  import com.sun.org.apache.xpath.internal.operations.Mult;
                  import org.apache.shiro.SecurityUtils;
                  import org.apache.shiro.authc.IncorrectCredentialsException;
                  import org.apache.shiro.authc.UnknownAccountException;
                  import org.apache.shiro.authc.UsernamePasswordToken;
                  import org.apache.shiro.authz.annotation.RequiresRoles;
                  import org.apache.shiro.crypto.hash.Md5Hash;
                  import org.apache.shiro.subject.Subject;
                  import org.springframework.beans.factory.annotation.Autowired;
                  import org.springframework.stereotype.Controller;
                  import org.springframework.ui.Model;
                  import org.springframework.web.bind.annotation.*;
                  import org.springframework.web.multipart.MultipartFile;
                  import javax.servlet.http.HttpSession;
                  import java.io.IOException;
                  import java.util.Objects;
                  @Controller
                  public class UserController {
                      @Autowired
                      private RedisCacheManager redisCacheManager;
                      @Autowired
                      private UserService userService;
                      @GetMapping({"/","/index"})
                      public String toIndex(Model model){
                          User user = (User) SecurityUtils.getSubject().getPrincipal();
                          if(ObjectUtil.isNotNull(user)){
                              model.addAttribute("userInfo",user);
                          }
                          return "index";
                      }
                      @GetMapping("/login")
                      public String toLogin(){
                          return "login";
                      }
                      @GetMapping("/register")
                      public String toRegister(){
                          return "register";
                      }
                      @PostMapping("/login")
                      @ResponseBody
                      public Result login(String username, String password, String code, HttpSession session) {
                          String codes = (String) session.getAttribute("KAPTCHA_SESSION_KEY");
                          if (StrUtil.hasBlank(codes)) {
                              throw new RuntimeException("验证码已超时!");
                          }
                          String msg = "";
                          try {
                              if (codes.equalsIgnoreCase(code)){
                                  //获取主体对象
                                  Subject subject = SecurityUtils.getSubject();
                                  subject.login(new UsernamePasswordToken(username, password));
                                  return Result.succ("登录成功");
                              }else{
                                  throw new RuntimeException("验证码错误!");
                              }
                          } catch (UnknownAccountException e) {
                              e.printStackTrace();
                              msg="用户名错误!";
                          } catch (IncorrectCredentialsException e) {
                              e.printStackTrace();
                              msg="密码错误!";
                          }catch (Exception e){
                              e.printStackTrace();
                              msg=e.getMessage();
                          }
                          return Result.fail(msg);
                      }
                      @GetMapping("logout")
                      public String logout() {
                          Subject subject = SecurityUtils.getSubject();
                          subject.logout();
                          return "login";
                      }
                      @PostMapping("/register")
                      @ResponseBody
                      public Result register(User user, @RequestParam("role")String role) throws Exception {
                          user.setImg("default.png");
                          userService.register(user,role);
                          return Result.succ("操作成功");
                      }
                      @PostMapping("/user/update")
                      @ResponseBody
                      public Result updateUserInfo(@RequestParam(value = "phone",required = false) String phone,
                                                   @RequestParam(value = "email",required = false) String email,
                                                   @RequestParam(value="imgFile",required = false) MultipartFile file) throws Exception {
                          User user = (User) SecurityUtils.getSubject().getPrincipal();
                          redisCacheManager.getCache("authenticationCacheName").remove(user);
                          if(!StrUtil.hasBlank(phone)){
                              if(ReUtil.isMatch("(13\\d|14[579]|15[^4\\D]|17[^49\\D]|18\\d)\\d{8}", phone)) {
                                  user.setPhone(phone);
                              }else {
                                  return Result.fail("请输入正确的手机号");
                              }
                          }
                          if(!StrUtil.hasBlank(email)){
                              if(ReUtil.isMatch("\\w[-\\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\\.)+[A-Za-z]{2,14}", email)){
                                  user.setEmail(email);
                              }else {
                                  return Result.fail("请输入正确的邮箱地址");
                              }
                          }
                          if(ObjectUtil.isNotNull(file) && !file.isEmpty()){
                              String originalFileName = file.getOriginalFilename();
                              String imgName = user.getImg().equals("default.png")?ImageUtil.getFileName(originalFileName.substring(originalFileName.lastIndexOf("."))): user.getImg();
                              user.setImg(imgName);
                              ImageUtil.saveImage(file,user.getImg(),"userIcon");
                          }
                          if(!userService.updateById(user)){
                              return Result.fail("系统错误");
                          }
                          redisCacheManager.getCache("authenticationCacheName").put(user.getUsername(),user);
                          return Result.succ("操作成功");
                      }
                      @PutMapping("/user/updatePassword/{password}")
                      @ResponseBody
                      public Result updateUserInfo(@PathVariable("password") String password) throws Exception {
                          User user = (User) SecurityUtils.getSubject().getPrincipal();
                          if(ReUtil.isMatch("[\\S]{6,12}", password)) {
                              Md5Hash md5Hash = new Md5Hash(password,user.getSalt(),1024);
                              if(md5Hash.toHex().equals(user.getPassword())){
                                  return Result.fail("请输入新密码");
                              }
                              redisCacheManager.getCache("authorizationCacheName").remove(user.toString());
                              redisCacheManager.getCache("authenticationCacheName").remove(user);
                              user.setPassword(md5Hash.toHex());
                              System.out.println(user.getPassword());
                          }else {
                              return Result.fail("密码必须6到12位,且不能出现空格");
                          }
                          if(!userService.updateById(user)){
                              return Result.fail("系统错误");
                          }
                          redisCacheManager.getCache("authenticationCacheName").put(user.getUsername(),user);
                          return Result.succ("操作成功");
                      }
                      @RequiresRoles("admin")
                      @ResponseBody
                      @GetMapping("/user/getByCondition")
                      public TableResult<User> getByCondition(@RequestParam("page")Long page, @RequestParam("limit")Long limit,
                                                             @RequestParam("username")String username, @RequestParam("role")String role,
                                                             @RequestParam("startDate")String startDate, @RequestParam(value = "endDate",required = false)String endDate,
                                                             @RequestParam("locked")String locked){
                          PageResultVo<User> pageResultVo = userService.getByCondition(page,limit,username,role,locked,startDate,endDate);
                          return new TableResult(0,"",pageResultVo.getTotal(),pageResultVo.getRecords());
                      }
                      @RequiresRoles("admin")
                      @ResponseBody
                      @PostMapping("/user/save")
                      public Result saveUser(@RequestParam("username")String username, @RequestParam("role")String[] role,
                                               @RequestParam("password")String password, @RequestParam(value = "imgFile",required = false) MultipartFile file,
                                               @RequestParam("phone")String phone, @RequestParam("email")String email) throws IOException, ManageException {
                          if(StrUtil.hasEmpty(username,password,phone,email) || role.length<=0){
                              return Result.fail("请输入完整信息,避免输入空格");
                          }
                          if(!ReUtil.isMatch("[\\S]{6,12}", password)) {
                              return Result.fail("密码必须6到12位,且不能出现空格");
                          }
                          if(!ReUtil.isMatch("(13\\d|14[579]|15[^4\\D]|17[^49\\D]|18\\d)\\d{8}", phone)) {
                              return Result.fail("请输入正确的手机号");
                          }
                          if(!ReUtil.isMatch("\\w[-\\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\\.)+[A-Za-z]{2,14}", email)){
                              return Result.fail("请输入正确的邮箱地址");
                          }
                          User user = new User();
                          user.setId(IdUtil.simpleUUID());
                          user.setUsername(username);
                          user.setCreateTime(DateUtil.now());
                          user.setSalt(SaltUtil.getSalt(8));
                          Md5Hash md5Hash = new Md5Hash(password, user.getSalt(), 1024);
                          user.setPassword(md5Hash.toHex());
                          user.setLocked("0");
                          user.setPhone(phone);
                          user.setEmail(email);
                          if(ObjectUtil.isNotNull(file) && !file.isEmpty()){
                              String originalFileName = file.getOriginalFilename();
                              user.setImg(ImageUtil.getFileName(originalFileName.substring(originalFileName.lastIndexOf("."))));
                              ImageUtil.saveImage(file,user.getImg(),"userIcon");
                          }else {
                              user.setImg("default.png");
                          }
                          userService.saveUser(user,role);
                          return Result.succ("操作成功");
                      }
                      @RequiresRoles("admin")
                      @ResponseBody
                      @PostMapping("/user/update/{id}")
                      public Result updateUser(@PathVariable("id")String id,@RequestParam("role")String[] role,
                                               @RequestParam("password")String password, @RequestParam(value = "imgFile",required = false) MultipartFile file,
                                               @RequestParam("phone")String phone, @RequestParam("email")String email) throws IOException, ManageException {
                          if(StrUtil.hasEmpty(password,phone,email) || role.length<=0){
                              return Result.fail("请输入完整信息,避免输入空格");
                          }
                          if(!ReUtil.isMatch("[\\S]{6,12}", password)) {
                              return Result.fail("密码必须6到12位,且不能出现空格");
                          }
                          if(!ReUtil.isMatch("(13\\d|14[579]|15[^4\\D]|17[^49\\D]|18\\d)\\d{8}", phone)) {
                              return Result.fail("请输入正确的手机号");
                          }
                          if(!ReUtil.isMatch("\\w[-\\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\\.)+[A-Za-z]{2,14}", email)){
                              return Result.fail("请输入正确的邮箱地址");
                          }
                          User user = userService.getById(id);
                          redisCacheManager.getCache("authorizationCacheName").remove(user.toString());
                          redisCacheManager.getCache("authenticationCacheName").remove(user);
                          user.setSalt(SaltUtil.getSalt(8));
                          Md5Hash md5Hash = new Md5Hash(password, user.getSalt(), 1024);
                          user.setPassword(md5Hash.toHex());
                          user.setPhone(phone);
                          user.setEmail(email);
                          if(ObjectUtil.isNotNull(file) && !file.isEmpty()){
                              String originalFileName = file.getOriginalFilename();
                              user.setImg(ImageUtil.getFileName(originalFileName.substring(originalFileName.lastIndexOf("."))));
                              ImageUtil.saveImage(file,user.getImg(),"userIcon");
                          }
                          userService.updateUser(user,role);
                          return Result.succ("操作成功");
                      }
                      @RequiresRoles("admin")
                      @ResponseBody
                      @PostMapping("/user/delete/{id}")
                      public Result deleteUser(@PathVariable("id")String id) throws  ManageException {
                          userService.deleteUser(id);
                          return Result.succ("操作成功");
                      }
                      @RequiresRoles("admin")
                      @ResponseBody
                      @PostMapping("/user/lock/{id}")
                      public Result lockUser(@PathVariable("id")String id) throws  ManageException {
                          User user = userService.getById(id);
                          user.setLocked("1".equals(user.getLocked())?"0":"1");
                          userService.updateById(user);
                          return Result.succ("操作成功");
                      }
                  }

                  image.gif

                  package com.iurac.recruit.controller;
                  import cn.hutool.core.util.IdUtil;
                  import cn.hutool.core.util.ObjectUtil;
                  import cn.hutool.core.util.ReUtil;
                  import cn.hutool.core.util.StrUtil;
                  import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
                  import com.iurac.recruit.entity.Company;
                  import com.iurac.recruit.entity.Resume;
                  import com.iurac.recruit.entity.User;
                  import com.iurac.recruit.exception.ManageException;
                  import com.iurac.recruit.service.ResumeService;
                  import com.iurac.recruit.util.ImageUtil;
                  import com.iurac.recruit.util.Result;
                  import com.iurac.recruit.util.TableResult;
                  import com.iurac.recruit.vo.PageResultVo;
                  import org.apache.shiro.SecurityUtils;
                  import org.apache.shiro.authz.annotation.RequiresRoles;
                  import org.apache.shiro.authz.annotation.RequiresUser;
                  import org.springframework.beans.factory.annotation.Autowired;
                  import org.springframework.ui.Model;
                  import org.springframework.web.bind.annotation.*;
                  import org.springframework.stereotype.Controller;
                  import org.springframework.web.multipart.MultipartFile;
                  import java.io.IOException;
                  /**
                   * <p>
                   *  前端控制器
                   * </p>
                   *
                   * @author iurac
                   * @since 2021-06-03
                   */
                  @Controller
                  public class ResumeController {
                      @Autowired
                      private ResumeService resumeService;
                      @PostMapping("/resume/saveOrUpdate")
                      @ResponseBody
                      public Result saveOrUpdate(Resume resume,
                                                   @RequestParam(value="imgFile",required = false) MultipartFile file) throws Exception {
                          if(StrUtil.hasBlank(resume.getName(),resume.getTechnology(),resume.getSalary(), resume.getMajor(),resume.getJob(),
                                  resume.getIntroduction(),resume.getExperience(),resume.getCollege(),resume.getBirth(),resume.getEducation(),
                                  resume.getPolitical(),resume.getMarriage(),resume.getSex())){
                              return Result.fail("请输入完成信息,避免输入空格");
                          }
                          if(!ReUtil.isMatch("(13\\d|14[579]|15[^4\\D]|17[^49\\D]|18\\d)\\d{8}", resume.getPhone())) {
                              return Result.fail("请输入正确的手机号");
                          }
                          if(!ReUtil.isMatch("\\w[-\\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\\.)+[A-Za-z]{2,14}", resume.getEmail())){
                              return Result.fail("请输入正确的邮箱地址");
                          }
                          User user = (User) SecurityUtils.getSubject().getPrincipal();
                          resume.setUserId(user.getId());
                          QueryWrapper<Resume> queryWrapper = new QueryWrapper<>();
                          queryWrapper.eq("user_id",user.getId());
                          Resume exitedResume = resumeService.getOne(queryWrapper);
                          resume.setPhoto("default.png");
                          boolean isUpdate = true;
                          if(ObjectUtil.isNull(exitedResume)){//判断是新增还是更新
                              resume.setId(IdUtil.simpleUUID());
                              isUpdate = false;
                          }else {
                              resume.setId(exitedResume.getId());
                              resume.setPhoto(exitedResume.getPhoto());
                          }
                          if(ObjectUtil.isNotNull(file) && !file.isEmpty()){
                              String originalFileName = file.getOriginalFilename();
                              String photoName = resume.getPhoto().equals("default.png")?ImageUtil.getFileName(originalFileName.substring(originalFileName.lastIndexOf("."))): resume.getPhoto();
                              resume.setPhoto(photoName);
                              ImageUtil.saveImage(file,resume.getPhoto(),"photo");
                          }
                          boolean flag = isUpdate?resumeService.updateById(resume):resumeService.save(resume);
                          if(flag){
                              return Result.succ("操作成功");
                          }else {
                              return Result.fail("系统错误");
                          }
                      }
                      @RequiresRoles("admin")
                      @ResponseBody
                      @GetMapping("/resume/getByCondition")
                      public TableResult<Resume> getByCondition(@RequestParam("page")Long page, @RequestParam("limit")Long limit,
                                                                 @RequestParam("username")String username){
                          PageResultVo<Resume> pageResultVo = resumeService.getByCondition(page,limit,username);
                          return new TableResult(0,"",pageResultVo.getTotal(),pageResultVo.getRecords());
                      }
                      @RequiresRoles("admin")
                      @ResponseBody
                      @PostMapping("/resume/update/{id}")
                      public Result updateResume(@PathVariable("id")String id, @RequestParam(value = "imgFile",required = false) MultipartFile file,
                                                 Resume resume) throws IOException {
                          if(StrUtil.hasEmpty(resume.getSex(),resume.getMarriage(),resume.getPolitical(),resume.getEducation(),
                                  resume.getEmail(),resume.getAge(),resume.getPhone(),resume.getName(),resume.getExperience(),
                                  resume.getTechnology(),resume.getSalary(),resume.getMajor(),resume.getIntroduction(),resume.getCollege(),
                                  resume.getBirth(),resume.getJob())){
                              return Result.fail("请输入完整信息,避免输入空格");
                          }
                          Resume exitedResume = resumeService.getById(id);
                          resume.setId(id);
                          resume.setUserId(exitedResume.getUserId());
                          resume.setPhoto(exitedResume.getPhoto());
                          if(ObjectUtil.isNotNull(file) && !file.isEmpty()){
                              String originalFileName = file.getOriginalFilename();
                              resume.setPhoto(ImageUtil.getFileName(originalFileName.substring(originalFileName.lastIndexOf("."))));
                              ImageUtil.saveImage(file,resume.getPhoto(),"companyIcon");
                          }
                          return resumeService.updateById(resume)?Result.succ("操作成功"):Result.fail("操作失败");
                      }
                      @RequiresRoles("admin")
                      @ResponseBody
                      @PostMapping("/resume/delete/{id}")
                      public Result deleteResume(@PathVariable("id")String id) {
                          resumeService.removeById(id);
                          return Result.succ("操作成功");
                      }
                      /**
                       *
                       * @param id  用户ID
                       * @param model
                       * @return
                       */
                      @RequiresUser
                      @GetMapping("/resume/detail/{id}")
                      public String detail(@PathVariable("id")String id, Model model) {
                          Resume resume = resumeService.getByUserId(id);
                          model.addAttribute("resumeInfo",resume);
                          return "service/detail_resume";
                      }
                  }

                  image.gif


                  相关实践学习
                  基于Redis实现在线游戏积分排行榜
                  本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
                  云数据库 Redis 版使用教程
                  云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
                  相关文章
                  |
                  4天前
                  |
                  小程序 JavaScript Java
                  基于SpringBoot+Vue+uniapp微信小程序的校园水电费管理微信小程序的详细设计和实现
                  基于SpringBoot+Vue+uniapp微信小程序的校园水电费管理微信小程序的详细设计和实现
                  25 0
                  |
                  4天前
                  |
                  小程序 JavaScript Java
                  基于SpringBoot+Vue+uniapp微信小程序的医院核酸检测服务系统的详细设计和实现
                  基于SpringBoot+Vue+uniapp微信小程序的医院核酸检测服务系统的详细设计和实现
                  31 0
                  |
                  5天前
                  |
                  人工智能 移动开发 前端开发
                  Springboot医院智慧导诊系统源码:精准推荐科室
                  医院智慧导诊系统是在医疗中使用的引导患者自助就诊挂号,在就诊的过程中有许多患者不知道需要挂什么号,要看什么病,通过智慧导诊系统,可输入自身疾病的症状表现,或选择身体部位,在经由智慧导诊系统多维度计算,精准推荐科室,引导患者挂号就诊,实现科学就诊,不用担心挂错号。
                  12 2
                  |
                  5天前
                  |
                  人工智能 前端开发 Java
                  Java语言开发的AI智慧导诊系统源码springboot+redis 3D互联网智导诊系统源码
                  智慧导诊解决盲目就诊问题,减轻分诊工作压力。降低挂错号比例,优化就诊流程,有效提高线上线下医疗机构接诊效率。可通过人体画像选择症状部位,了解对应病症信息和推荐就医科室。
                  45 10
                  |
                  5天前
                  |
                  Java 关系型数据库 MySQL
                  一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
                  UWB (ULTRA WIDE BAND, UWB) 技术是一种无线载波通讯技术,它不采用正弦载波,而是利用纳秒级的非正弦波窄脉冲传输数据,因此其所占的频谱范围很宽。一套UWB精确定位系统,最高定位精度可达10cm,具有高精度,高动态,高容量,低功耗的应用。
                  一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
                  |
                  14天前
                  |
                  Java Linux
                  Springboot 解决linux服务器下获取不到项目Resources下资源
                  Springboot 解决linux服务器下获取不到项目Resources下资源
                  |
                  22天前
                  |
                  Java API Spring
                  SpringBoot项目调用HTTP接口5种方式你了解多少?
                  SpringBoot项目调用HTTP接口5种方式你了解多少?
                  71 2
                  |
                  22天前
                  |
                  前端开发 JavaScript Java
                  6个SpringBoot 项目拿来就可以学习项目经验接私活
                  6个SpringBoot 项目拿来就可以学习项目经验接私活
                  33 0
                  |
                  1月前
                  |
                  前端开发 Java 关系型数据库
                  SpringBoot+MyBatis 天猫商城项目
                  SpringBoot+MyBatis 天猫商城项目
                  55 1
                  |
                  1月前
                  |
                  JSON JavaScript 前端开发
                  解决js中Long类型数据在请求与响应过程精度丢失问题(springboot项目中)
                  解决js中Long类型数据在请求与响应过程精度丢失问题(springboot项目中)
                  37 0

                  相关实验场景

                  更多