基于Springboot实现汽车4S店销售管理系统

简介: 基于Springboot实现汽车4S店销售管理系统

项目编号:BS-XX-126

一,项目简介

   本项目基于Springboot框架开发实现,主要针对汽车4S店的销售信息进行管理,名为4S管家,主要包含管理员用户和员工用户,主要实现的功能有汽车销售信息管理、配件销售订单管理、售后服务订单管理、库存管理、客户管理、员工管理、系统用户管理、日志管理、系统说明等。特色功能包含图形报表统计功能,数据导入导出功能等。

二,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

后台开发技术:Springboot+Mybatis

前端开发技术:Bootstrap+Jquery+Ajax

三,系统展示

系统登陆

仪表盘

汽车订单管理

配件订单管理

售后订单管理

汽车库存管理

配件库存管理

客户管理

员工管理

员工管理

日志管理

Druid监控

四,核心代码展示

package com.gk.carshopsys.controller;
import com.github.pagehelper.PageInfo;
import com.gk.carshopsys.annotation.Log;
import com.gk.carshopsys.pojo.Admin;
import com.gk.carshopsys.service.AdminService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Service;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.mvc.support.RedirectAttributesModelMap;
import javax.servlet.http.HttpSession;
import java.lang.reflect.Array;
import java.sql.Date;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Controller
public class AdminController {
    @Autowired
    private AdminService adminService;
    //初始页面跳转登录页
    @RequestMapping("/")
    public String tologin(){
      return "login";
    };
    //跳转登录页
    @RequestMapping("/login")
    public String login(){
        return "login";
    };
    //主页跳转
    @RequestMapping("/index")
    public String toindex(){return "index";}
    //登录页响应页面跳转
    @PostMapping ("/login.action")
    public String adminlogin(@RequestParam("user") String user,
                             @RequestParam("username") String username,
                             @RequestParam("password") String password, Model model, HttpSession session){
        Admin admin=adminService.loginAdmin(username,password);
        if(admin!=null){
            session.setAttribute("loginUser",username);
            return "redirect:/index";
        }else{
            model.addAttribute("msg", "密码或者账号有误,请重新输入");
            return "login";
        }
    } ;
    //退出登录
    @RequestMapping("/logout")
    public String logout(HttpSession session){
        session.invalidate();
        return "redirect:/login";
    };
    //管理员用户列表跳转
    @RequestMapping("/adminlist")
    public  String toadminlist(){
        return "adminlist";
    };
    //返回管理员用户列表
    @Log("查询管理员")
    @RequestMapping("/adminlist/query")
    @ResponseBody
    public List<Admin> findAdmin(@RequestBody Map<String,String> param){
        String username = param.get("username");
        String id_s = param.get("id");
        if (id_s!=null && !id_s.equals("")){
            try{
                Integer id = Integer.parseInt(id_s);
                return adminService.findAdminByIdAndUsername(id,username);
            }catch (ClassCastException e){
                return adminService.findAdminByIdAndUsername(null,username);
            }
        }else {
            return adminService.findAdminByIdAndUsername(null,username);
        }
    };
    //管理员用户添加
    //RedirectAttributesModelMap类防止重定向后model丢失
    @Log("添加管理员")
    @PostMapping("/adminlist/add")
    public  String adminlistadd(@RequestParam("add_adminname") String username,
                                @RequestParam("add_password") String password,RedirectAttributesModelMap model){
        int result = adminService.addAdmin(username,password);
        if(result==-1){
            model.addFlashAttribute("addmsg","插入失败,用户名已存在,请重新插入");
            return "redirect:/adminlist";
        }
        if(result==1){
            model.addFlashAttribute("addmsg","插入成功");
        }else{
            model.addFlashAttribute("addmsg","插入未知错误");
        }
            return "redirect:/adminlist";
        };
    // 管理员用户更新
    @Log("修改管理员")
    @PostMapping("/adminlist/upadte")
    public String adminlistupadte(@RequestParam("update_id") Integer id,
                                  @RequestParam("update_adminname") String username,
                                  @RequestParam("update_password") String password,RedirectAttributesModelMap model){
        int result=adminService.updateAdmin(id,username,password);
        if(result==-1){
            model.addFlashAttribute("updatemsg","修改失败,用户名已存在,请重新修改");
            return "redirect:/adminlist";
        }
        if (result==1){
            model.addFlashAttribute("updatemsg","修改成功");
        }else {
            model.addFlashAttribute("updatemsg","修改失败,未知错误");
        }
        return "redirect:/adminlist";
    };
    //管理员用户批量删除
    @Log("删除管理员")
    @ResponseBody
    @RequestMapping("/adminlist/del")
    public Map<String,Integer> adminlistdel(@RequestBody List<Integer> ids){
        int result = adminService.delAdmin(ids);
        Map<String,Integer> map = new HashMap<>();
        map.put("code",result);
        return map;
    }
}
package com.gk.carshopsys.controller;
import com.alibaba.excel.EasyExcel;
import com.gk.carshopsys.annotation.Log;
import com.gk.carshopsys.pojo.Car;
import com.gk.carshopsys.pojo.Cust;
import com.gk.carshopsys.service.CarService;
import com.gk.carshopsys.utils.CarDataListener;
import com.gk.carshopsys.utils.CustDataListener;
import com.gk.carshopsys.utils.ExcelUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributesModelMap;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Controller
public class CarController {
    @Autowired
    private CarService carService;
    //Excel参数
    private HashMap<String,String> param;
    //excel传参
    @PostMapping("/carlist/excelparamset")
    @ResponseBody
    public void excelset(@RequestBody HashMap<String,String> params){
        param= params;
    }
    //excel下载
    @Log("导出汽车库存")
    @GetMapping("/carlist/excelexport")
    @ResponseBody
    public String excelexport(HttpServletResponse response) throws Exception {
        //导出的参数
        String id_s = param.get("id");
        String carname = param.get("carname");
        String brand = param.get("brand");
        String color = param.get("color");
        String type = param.get("type");
        String configuration = param.get("configuration");
        String low_price = param.get("low_price");//需要转型
        String hight_price = param.get("hight_price");//需要转型
        Car car = new Car();
        if(id_s!=null && !id_s.equals("")){
            try {
                Long id = Long.valueOf(id_s);
                car.setId(id);
            }catch (ClassCastException e){
            }finally {
                car.setBrand(brand);
                car.setCarname(carname);
                car.setColor(color);
                car.setType(type);
                car.setConfiguration(configuration);
            }
        }
        car.setBrand(brand);
        car.setCarname(carname);
        car.setColor(color);
        car.setType(type);
        car.setConfiguration(configuration);
        ExcelUtils.export2Web(response, "汽车库存表", "汽车库存信息",Car.class,carService.findCar(car,low_price,hight_price));
        return "success";
        }
    // easyexcel上传文件
    @Log("导入汽车库存")
    @PostMapping("/carlist/excelimport")
    public String upload(MultipartFile file, RedirectAttributesModelMap model) throws IOException {
        EasyExcel.read(file.getInputStream(), Car.class, new CarDataListener(carService)).sheet().doRead();
        return "redirect:/carlist";
    }
    //批量删除车型
    @Log("删除汽车库存")
    @ResponseBody
    @RequestMapping("/carlist/del")
    public Map<String,Integer> carlistdel(@RequestBody List<Integer> ids){
        int result = carService.delCar(ids);
        Map<String,Integer> map = new HashMap<>();
        map.put("code",result);
        return map;
    }
    @Log("更新汽车库存")
    @RequestMapping("/carlist/update")
    public String carUpdate(@RequestParam("update_id") Long id,
                            @RequestParam("update_brand") String brand,
                            @RequestParam("update_carname") String carname,
                            @RequestParam("update_price") Long price,
                            @RequestParam("update_color") String color,
                            @RequestParam("update_type") String type,
                            @RequestParam("update_quantity") Long quantity,
                            @RequestParam("update_configuration") String configuration,
                            RedirectAttributesModelMap model){
        Car car = new Car(id,brand,carname,price,color,type,quantity,configuration);
        int result =carService.updateCar(car);
        if(result==1){
            model.addFlashAttribute("addmsg","修改成功");
        }else {
            model.addFlashAttribute("addmsg","修改失败");
        }
        return "redirect:/carlist";
    }
    //查询车辆库存
    @Log("查询汽车库存")
    @RequestMapping("/carlist/query")
    @ResponseBody
    public List<Car> queryCar(@RequestBody HashMap<String,String> params){
        String id_s = params.get("id");
        String carname = params.get("carname");
        String brand = params.get("brand");
        String color = params.get("color");
        String type = params.get("type");
        String configuration = params.get("configuration");
        String low_price = params.get("low_price");//需要转型
        String hight_price = params.get("hight_price");//需要转型
        Car car = new Car();
        if(id_s!=null && !id_s.equals("")){
            try {
                Long id = Long.valueOf(id_s);
                car.setId(id);
            }catch (ClassCastException e){
            }finally {
                car.setBrand(brand);
                car.setCarname(carname);
                car.setColor(color);
                car.setType(type);
                car.setConfiguration(configuration);
            }
        }
        car.setBrand(brand);
        car.setCarname(carname);
        car.setColor(color);
        car.setType(type);
        car.setConfiguration(configuration);
        return carService.findCar(car,low_price,hight_price);
    }
    @Log("添加汽车库存")
    @RequestMapping("/carlist/add")
    public String carAdd(@RequestParam("add_brand") String brand,
                         @RequestParam("add_carname") String carname,
                         @RequestParam("add_price") Long price,
                         @RequestParam("add_color") String color,
                         @RequestParam("add_type") String type,
                         @RequestParam("add_quantity") Long quantity,
                         @RequestParam("add_configuration") String configuration,
                         RedirectAttributesModelMap model){
        Car car = new Car(brand,carname,price,color,type,quantity,configuration);
        int result =carService.addCar(car);
        if(result==1){
            model.addFlashAttribute("addmsg","添加车型成功");
        }else {
            model.addFlashAttribute("addmsg","添加车型失败,未知错误");
        }
        return "redirect:/carlist";
    }
    //跳转车辆库存管理页面
    @RequestMapping("/carlist")
    public String tocarlist(){
        return "carlist";
    }
}
package com.gk.carshopsys.controller;
import com.alibaba.excel.EasyExcel;
import com.gk.carshopsys.annotation.Log;
import com.gk.carshopsys.pojo.Car;
import com.gk.carshopsys.pojo.CarOrder;
import com.gk.carshopsys.pojo.CarOrderImport;
import com.gk.carshopsys.pojo.Cust;
import com.gk.carshopsys.service.CarOrderService;
import com.gk.carshopsys.utils.CarDataListener;
import com.gk.carshopsys.utils.CarOrderDataListener;
import com.gk.carshopsys.utils.ExcelUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributesModelMap;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Controller
public class CarOrderController {
    @Autowired
    CarOrderService carOrderService;
    //Excel参数
    private HashMap<String,String> param;
    //excel传参
    @PostMapping("/carorderlist/excelparamset")
    @ResponseBody
    public void excelset(@RequestBody HashMap<String,String> params){
        param= params;
    }
    //excel下载
    @Log("导出汽车订单")
    @GetMapping("/carorderlist/excelexport")
    @ResponseBody
    public String excelexport(HttpServletResponse response) throws Exception {
            ExcelUtils.export2Web(response, "汽车订单表", "订单信息",CarOrder.class,carOrderService.findCarOrder(param));
            return "success";
    }
    // easyexcel上传文件
    @Log("导入汽车订单")
    @PostMapping("/carorderlist/excelimport")
    public String upload(MultipartFile file, RedirectAttributesModelMap model) throws IOException {
        EasyExcel.read(file.getInputStream(), CarOrderImport.class, new CarOrderDataListener(carOrderService)).sheet().doRead();
        return "redirect:/carorderlist";
    }
    @RequestMapping("/carorderlist")
    public String toCarOrder(){
        return "carorderlist";
    }
    @Log("查询汽车订单")
    @RequestMapping("/carorderlist/query")
    @ResponseBody
    public List<CarOrder> quryCarOrderList(@RequestBody HashMap<String,String> params){
        return carOrderService.findCarOrder(params);
    }
    @Log("添加汽车订单")
    @RequestMapping("/carorderlist/add")
    public String addCarOrder(@RequestParam("add_carid") Long carid,
                              @RequestParam("add_custid") Long custid,
                              @RequestParam("add_empnum") String empnum,
                              @RequestParam("add_quantity") Integer quantity,
                              @RequestParam("add_state") String state,
                              @RequestParam("add_remarks") String remarks, RedirectAttributesModelMap model){
        int result = carOrderService.addCarOrder(carid,custid,empnum,quantity,state,remarks);
        if (result==-1){
            model.addFlashAttribute("addmsg","添加失败,车辆不存在");
            return "redirect:/carorderlist";
        }
        if (result==-2){
            model.addFlashAttribute("addmsg","添加失败,客户不存在");
            return "redirect:/carorderlist";
        }
        if (result==-3){
            model.addFlashAttribute("addmsg","添加失败,员工不存在");
            return "redirect:/carorderlist";
        }
        if (result==-4){
            model.addFlashAttribute("addmsg","添加失败,库存不足");
            return "redirect:/carorderlist";
        }
        if (result==1){
            model.addFlashAttribute("addmsg","添加订单成功");
            return "redirect:/carorderlist";
        }else{
            model.addFlashAttribute("addmsg","添加订单失败,未知错误");
            return "redirect:/carorderlist";
        }
    }
    @Log("更新汽车订单")
    @RequestMapping("/carorderlist/update")
    public String updateCarOrder(@RequestParam("update_id") Long id,
                                 @RequestParam("update_state") String state,
                                 @RequestParam("update_remarks") String remarks,
                                 @RequestParam("update_quantity") Long quantity,
                                 @RequestParam("update_carid") Long carid,RedirectAttributesModelMap model){
        CarOrder carOrder = new CarOrder();
        carOrder.setId(id);
        carOrder.setRemarks(remarks);
        carOrder.setCarid(carid);
        if(state.equals("取消订单")){
            carOrder.setState("已取消");
        }else{
            carOrder.setState(state);
        }
        int result = carOrderService.updateCarOrderById(carOrder,quantity);
        if (result==1){
            model.addFlashAttribute("addmsg","修改订单成功");
            return "redirect:/carorderlist";
        }else{
            model.addFlashAttribute("addmsg","修改订单失败,未知错误");
            return "redirect:/carorderlist";
        }
    }
    //批量删除订单
    //订单批量删除
    @Log("删除汽车订单")
    @ResponseBody
    @RequestMapping("/carorderlist/del")
    public Map<String,Integer> carorderlistdel(@RequestBody List<Integer> ids){
        int result = carOrderService.delCarOrder(ids);
        Map<String,Integer> map = new HashMap<>();
        map.put("code",result);
        return map;
    }
}
package com.gk.carshopsys.controller;
import com.alibaba.excel.EasyExcel;
import com.gk.carshopsys.annotation.Log;
import com.gk.carshopsys.pojo.Cust;
import com.gk.carshopsys.pojo.Emp;
import com.gk.carshopsys.service.CustService;
import com.gk.carshopsys.utils.CustDataListener;
import com.gk.carshopsys.utils.EmpDataListener;
import com.gk.carshopsys.utils.ExcelUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributesModelMap;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Controller
public class CustController {
    @Autowired
    CustService custService;
    //Excel参数
    private HashMap<String,String> param;
    //excel传参
    @PostMapping("/custlist/excelparamset")
    @ResponseBody
    public void excelset(@RequestBody HashMap<String,String> params){
        param= params;
    }
    //excel下载
    @Log("导出客户")
    @GetMapping("/custlist/excelexport")
    @ResponseBody
    public String excelexport(HttpServletResponse response) throws Exception {
        //导出的参数
        String custid_s = param.get("custid");
        String custname = param.get("custname");
        String job = param.get("job");
        String address = param.get("address");
        Cust cust = new Cust();
        if (custid_s!=null && !custid_s.equals("")){
            try{
                Long custid=Long.parseLong(custid_s);
                cust.setid(custid);
            }catch (ClassCastException e){
            }finally {
                cust.setCust_name(custname);
                cust.setJob(job);
                cust.setAddress(address);
                ExcelUtils.export2Web(response, "客户表", "客户信息",Cust.class,custService.findCust(cust));
                return "success";
            }
        }else {
            cust.setCust_name(custname);
            cust.setJob(job);
            cust.setAddress(address);
            ExcelUtils.export2Web(response, "客户表", "客户信息",Cust.class,custService.findCust(cust));
            return "success";
        }
    }
    // easyexcel上传文件
    @Log("导入客户")
    @PostMapping("/custlist/excelimport")
    public String upload(MultipartFile file, RedirectAttributesModelMap model) throws IOException {
        EasyExcel.read(file.getInputStream(), Cust.class, new CustDataListener(custService)).sheet().doRead();
        return "redirect:/custlist";
    }
    //跳转客户管理页面
    @RequestMapping("/custlist")
    public String tocustlist(){
        return "custlist";
    }
    //返回查询客户列表
    @Log("查询客户")
    @RequestMapping("/custlist/query")
    @ResponseBody
    public List<Cust> findcust(@RequestBody HashMap<String,String> params){
        //接收的数据
        String custid_s = params.get("custid");
        String custname = params.get("custname");
        String job = params.get("job");
        String address = params.get("address");
        Cust cust = new Cust();
        if (custid_s!=null && !custid_s.equals("")){
            try{
                Long custid=Long.parseLong(custid_s);
                cust.setid(custid);
            }catch (ClassCastException e){
            }finally {
                cust.setCust_name(custname);
                cust.setJob(job);
                cust.setAddress(address);
                return custService.findCust(cust);
            }
        }else {
            cust.setCust_name(custname);
            cust.setJob(job);
            cust.setAddress(address);
            return custService.findCust(cust);
        }
    }
//    添加客户
    @Log("添加客户")
    @PostMapping("/custlist/add")
    public  String addcust(@RequestParam("add_custname") String name,
                           @RequestParam("add_sex") String sex,
                           @RequestParam("add_job") String job,
                           @RequestParam("add_telphone") String telphone,
                           @RequestParam("add_address") String address,
                           RedirectAttributesModelMap model){
        Cust add_cust =new Cust(name,sex,job,telphone,address);
        int result = custService.addCust(add_cust);
        if(result==1){
            model.addFlashAttribute("addmsg","添加客户成功");
            return "redirect:/custlist";
        }else {
            model.addFlashAttribute("addmsg","添加客户失败,未知错误");
            return "redirect:/custlist";
        }
   }
   //更新修改客户
    @Log("更新客户")
    @PostMapping("/custlist/update")
    public String updatecust(@RequestParam("update_custid") Long id,
                             @RequestParam("update_custname") String name,
                             @RequestParam("update_sex") String sex,
                             @RequestParam("update_job") String job,
                             @RequestParam("update_telphone") String telphone,
                             @RequestParam("update_address") String address,
                             RedirectAttributesModelMap model){
        Cust update_cust =new Cust(id,name,sex,job,telphone,address);
        int result = custService.updateCust(update_cust);
        if(result==1){
            model.addFlashAttribute("updatemsg","修改客户成功");
            return "redirect:/custlist";
        }else {
            model.addFlashAttribute("updatemsg","修改客户失败,未知错误");
            return "redirect:/custlist";
        }
    }
    //批量删除客户
    //客户批量删除
    @Log("删除客户")
    @ResponseBody
    @RequestMapping("/custlist/del")
    public Map<String,Integer> custlistdel(@RequestBody List<Integer> ids){
        int result = custService.delCust(ids);
        Map<String,Integer> map = new HashMap<>();
        map.put("code",result);
        return map;
    }
}

五,项目总结

     项目整体设计简洁大方,功能实用性强,前后端交互比较符合人性化需求,比较适合用做毕业设计和课程设计使用。

 

相关文章
|
23天前
|
Web App开发 编解码 Java
B/S基层卫生健康云HIS医院管理系统源码 SaaS模式 、Springboot框架
基层卫生健康云HIS系统采用云端SaaS服务的方式提供,使用用户通过浏览器即能访问,无需关注系统的部署、维护、升级等问题,系统充分考虑了模板化、配置化、智能化、扩展化等设计方法,覆盖了基层医疗机构的主要工作流程,能够与监管系统有序对接,并能满足未来系统扩展的需要。
48 4
|
21天前
|
运维 监控 安全
云HIS医疗管理系统源码——技术栈【SpringBoot+Angular+MySQL+MyBatis】
云HIS系统采用主流成熟技术,软件结构简洁、代码规范易阅读,SaaS应用,全浏览器访问前后端分离,多服务协同,服务可拆分,功能易扩展;支持多样化灵活配置,提取大量公共参数,无需修改代码即可满足不同客户需求;服务组织合理,功能高内聚,服务间通信简练。
33 4
|
25天前
|
小程序 JavaScript Java
基于SpringBoot+Vue+uniapp微信小程序的教师管理系统的详细设计和实现
基于SpringBoot+Vue+uniapp微信小程序的教师管理系统的详细设计和实现
39 2
|
25天前
|
小程序 JavaScript Java
基于SpringBoot+Vue+uniapp微信小程序的健身管理系统及会员微信小程序的详细设计和实现
基于SpringBoot+Vue+uniapp微信小程序的健身管理系统及会员微信小程序的详细设计和实现
35 0
|
1月前
|
人工智能 监控 前端开发
springboot数字化智慧城市管理系统源码
支持对城市街道画面进行实时分析,系统可以实现违规摆摊检测、街道垃圾监测、违章停车识别、违规广告、出店经营检测、公共设施破坏、游摊小贩识别等违规识别。AI视频智识别分析系统通过AI技术手段提高城管对城市各个街道的巡查监管的工作效率。可以真正做到事前预警、事中高效检测预警。
22 5
|
1月前
|
消息中间件 Java 关系型数据库
JAVA云HIS医院管理系统源码、基于Angular+Nginx+ Java+Spring,SpringBoot+ MySQL + MyCat
JAVA云HIS医院管理系统 常规模版包括门诊管理、住院管理、药房管理、药库管理、院长查询、电子处方、物资管理、媒体管理等,为医院管理提供更有力的保障。 HIS系统以财务信息、病人信息和物资信息为主线,通过对信息的收集、存储、传递、统计、分析、综合查询、报表输出和信息共享,及时为医院领导及各部门管理人员提供全面、准确的各种数据。
34 1
|
1月前
|
JavaScript 前端开发 Java
Springboot+vue地方废品回收机构管理系统
Spring Boot和Vue.js结合打造Web应用。Spring Boot简化企业级应用开发,Vue.js专注用户界面。示例展示了一个简单的废品回收系统,包含用户管理、废品分类和回收记录模块。后端提供获取废品分类的API,前端使用Vue.js和Axios展示分类列表。实际项目需扩展登录、权限等更多功能。
30 7
|
1月前
|
前端开发 JavaScript Java
Springboot+vue的医患档案管理系统
这是一个医患档案管理系统,包含用户管理、病历管理和预约管理模块。示例展示了一个Spring Boot后端接口,用于获取所有病历信息,以及一个Vue.js前端,使用Axios调用该接口显示病历列表。实际项目需考虑登录、权限及病历CRUD功能,可按需求和技术栈扩展。
28 7
|
1月前
|
JavaScript Java 关系型数据库
基于 java + Springboot + vue +mysql 大学生实习管理系统(含源码)
本文档介绍了基于Springboot的实习管理系统的设计与实现。系统采用B/S架构,旨在解决实习管理中的人工管理问题,提高效率。系统特点包括对用户输入的验证和数据安全性保障。功能涵盖首页、个人中心、班级管理、学生管理、教师管理、实习单位管理、实习作业管理、教师评分管理、单位成绩管理和系统管理等。用户分为管理员、教师和学生,各自有不同的操作权限。
|
2月前
|
存储 监控 NoSQL
SpringBoot 后台管理系统
SpringBoot 后台管理系统
20 0