基于javaweb+mysql的ssm+maven校园共享自行车管理系统(java+ssm+jsp+easyui+bootstrap+mysql)

基于javaweb+mysql的ssm+maven校园共享自行车管理系统(java+ssm+jsp+easyui+bootstrap+mysql)

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

基于javaweb+mysql的SSM+Maven校园共享自行车管理系统(java+ssm+jsp+easyui+bootstrap+mysql)

项目介绍

管理员角色包含以下功能: 管理员登录,用户管理,服务点管理,共享单车管理,车辆分类管理,学生管理,自行车租赁管理,统计信息,密码修改等功能。

用户角色包含以下功能: 用户登录,基本信息查看等功能。

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.数据库:MySql 5.7版本; 6.是否Maven项目:是;

技术栈

  1. 后端:Spring+SpringMVC+Mybatis 2. 前端:JSP+EasyUI+BootStrap+jQuery

使用说明

  1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中jdbc.properties配置文件中的数据库配置改为自己的配置; 4. 运行项目,输入localhost:8080/ 登录

/**
 */
@Controller
@RequestMapping("/category")
public class CategoryController {

    @Autowired
    private CategoryService categoryService;

    //跳转到category页面
    @RequestMapping("/categoryManage")
    public String categoryMange(){
        return "category";
    }

    //显示所有分类
    @RequestMapping("/showAll")
    @ResponseBody
    public List<Category> showAll(){
       return categoryService.findAll();
    }

    //添加或更新分类 addOrUpdate
    @RequestMapping(value = "/addOrUpdate",method = RequestMethod.POST)
    @ResponseBody
    public JsonResult addOrUpdate(Category category){
        if(category == null) return new JsonResult(false, ResultEnum.SYSTEM_ERROR);
        if(category.getCid() == null ) return categoryService.add(category);
        return categoryService.update(category);
    }

    //删除分类
    @RequestMapping(value = "/remove",method = RequestMethod.POST)
    @ResponseBody
    public JsonResult remove(Integer cid){
        return categoryService.deleteById(cid);
    }

    //回显分类的表单数据
    @RequestMapping("/loadForm")
    //修改提交的密码
    @RequestMapping("/submitResetPwd")
    @ResponseBody
    public JsonResult submitResetPwd(String password, String newPassword,HttpSession httpSession){
        Admin admin = (Admin) httpSession.getAttribute("admin");
        if(!admin.getaPassword().equals(MD5Util.getMD5(password)))
            return new JsonResult(false,ResultEnum.OLD_PASSWORD_ERROR);
        admin.setaPassword(MD5Util.getMD5(newPassword));
        admin.setaUpdateTime(new Date());
        boolean isSuccess = adminService.upDate(admin);
        if(isSuccess) return new JsonResult(isSuccess, ResultEnum.UPDATE_SUCCESS);
        return new JsonResult(isSuccess, ResultEnum.UPDATE_FAIL);
    }

    //跳转到用户管理页面

    @RequestMapping("/adminManage")
    public String adminMange(){
        return "admin";
    }

    //显示用户页面
    @RequestMapping("/showAll")
    @ResponseBody
    public Page<Admin> showAll(Integer page, Integer rows){
        return adminService.findAllToPage(page,rows);
    }

    //删除用户
    @RequestMapping("/remove")
    @ResponseBody
    public JsonResult remove(Integer aid){
        return adminService.deleteById(aid);
    }

    // 加载服务点到表单下拉框 loadPlace
    @RequestMapping("/loadPlace")
    @ResponseBody
    public List<Place> loadPlace(){
        return adminService.loadPlace();
    }

    @ResponseBody
    public Student loadForm(Integer sid){
        return studentService.findById(sid);
    }

}

/**
 */
@Controller
@RequestMapping("/category")
public class CategoryController {

    @Autowired
    private CategoryService categoryService;

    //跳转到category页面
    @RequestMapping("/categoryManage")
    public String categoryMange(){
        return "category";
    }

    //显示所有分类
    @RequestMapping("/showAll")
    @ResponseBody
    public List<Category> showAll(){
       return categoryService.findAll();
    }

    //添加或更新分类 addOrUpdate

    @Override
    public Student findBySno(String sno) {
        StudentExample studentExample = new StudentExample();
        studentExample.createCriteria().andSnoEqualTo(sno);
        List<Student> students = studentMapper.selectByExample(studentExample);
        if(students != null && students.size() > 0) return students.get(0);
        return null;
    }

    @Override
    public Page findAllToPage(Integer page, Integer rows) {
        Page<Student> sPage = new Page<>();
        List<Student> lists = studentMapper.findToPage((page-1)*rows,rows);
        sPage.setRows(lists);
        sPage.setTotal(studentMapper.countByExample(new StudentExample()));
        return sPage;
    }

    @Override
    public JsonResult add(MultipartFile studentIcon, Student student,HttpServletRequest request) {
        if(!studentIcon.isEmpty()){
            String path = FileUtil.uploadImage(studentIcon, "studentIcon", request);
            if(path == null) return new JsonResult(false, ResultEnum.UPLOAD_TYPE_ERROR);
            student.setsIcon(path);
        }

        student.setsCreateTime(new Date());
        student.setsUpdateTime(new Date());
        if(student.getsSex() == null) student.setsSex("男");
        try{
            int   i = studentMapper.insertSelective(student);
            return    i > 0 ?  new JsonResult(true, ResultEnum.ADD_SUCCESS)
                    : new JsonResult(false, ResultEnum.ADD_FAIL);
        }catch (Exception e){
            e.printStackTrace();
            return new JsonResult(false, ResultEnum.REPEAT_ERROR);
        }
    }

    @Override
    public JsonResult removeById(Integer sid) {
        if(sid == null) return new JsonResult(false, ResultEnum.DELETE_FAIL);
        int i = studentMapper.deleteByPrimaryKey(sid);
        return i > 0 ? new JsonResult(true, ResultEnum.DELETE_SUCCESS) : new JsonResult(false, ResultEnum.DELETE_FAIL);
    }

    @Override
    public Student findById(Integer sid) {
        if(sid != null){
            return studentMapper.selectByPrimaryKey(sid);
        }

/**
 */
public interface AdminService {

    //验证登陆
    public String checkUserPwd(Admin admin);

    //更新
    public boolean upDate(Admin admin);

    //
    public Admin findByUsername(String username);

    //显示所有用户用PageBean封装
    Page<Admin> findAllToPage(Integer page, Integer rows);

    JsonResult deleteById(Integer aid);

    List<Place> loadPlace();

    JsonResult update(MultipartFile adminIcon, Admin admin, HttpServletRequest request);

    JsonResult add(MultipartFile adminIcon, Admin admin, HttpServletRequest request);
}

/**
 */
public interface BikeService {

    JsonResult add(MultipartFile bikeIcon, Bike bike, HttpServletRequest request,Integer bCount);

    @RequestMapping("/loadForm")
    @ResponseBody
    public Student loadForm(Integer sid){
        return studentService.findById(sid);
    }

}

/**
 */
@Controller
@RequestMapping("/category")
public class CategoryController {

    @Autowired
    private CategoryService categoryService;

    //跳转到category页面
    @RequestMapping("/categoryManage")
    public String categoryMange(){
        return "category";

/**
 */
@Controller
@RequestMapping("/category")
public class CategoryController {

    @Autowired
    private CategoryService categoryService;

    //跳转到category页面
    @RequestMapping("/categoryManage")
    public String categoryMange(){
        return "category";
    }

    //显示所有分类
    @RequestMapping("/showAll")
    @ResponseBody
    public List<Category> showAll(){
       return categoryService.findAll();
    }

    //添加或更新分类 addOrUpdate
    @RequestMapping(value = "/addOrUpdate",method = RequestMethod.POST)
    @ResponseBody
    public JsonResult addOrUpdate(Category category){
        if(category == null) return new JsonResult(false, ResultEnum.SYSTEM_ERROR);
        if(category.getCid() == null ) return categoryService.add(category);
        return categoryService.update(category);
    }

/**
 */
@Controller
@RequestMapping("/category")
public class CategoryController {

    @Autowired
    private CategoryService categoryService;

    //跳转到category页面
    @RequestMapping("/categoryManage")
    public String categoryMange(){
        return "category";
    }

    //显示所有分类
    @RequestMapping("/showAll")
    @ResponseBody
    public List<Category> showAll(){
       return categoryService.findAll();
    }

    //添加或更新分类 addOrUpdate
    @RequestMapping(value = "/addOrUpdate",method = RequestMethod.POST)
    @ResponseBody

}

/**
 */
@Service
public class StudentServiceImpl implements StudentService {

    @Autowired
    private StudentMapper studentMapper;

    @Override
    public Student findBySno(String sno) {
        StudentExample studentExample = new StudentExample();
        studentExample.createCriteria().andSnoEqualTo(sno);
        List<Student> students = studentMapper.selectByExample(studentExample);
        if(students != null && students.size() > 0) return students.get(0);
        return null;
    }

    @Override
    public Page findAllToPage(Integer page, Integer rows) {
        Page<Student> sPage = new Page<>();
        List<Student> lists = studentMapper.findToPage((page-1)*rows,rows);
        sPage.setRows(lists);

/**管理员controller
 */
@Controller
@RequestMapping("/admin")
public class AdminController {

    @Autowired
    private AdminService adminService;

    //跳转到首页
    @RequestMapping("/index")
    public String index(){
        return "index";
    }

    //验证登陆
    @RequestMapping(value = "/login",method = RequestMethod.POST)
    public String login(Admin admin, Model model, HttpSession session){
        String message = adminService.checkUserPwd(admin);
        if("成功".equals(message)) {
            //注入Session
            Admin realAdmin = adminService.findByUsername(admin.getaUsername());

            session.setAttribute("admin",realAdmin);
            //更新登陆的时间
            admin.setaLoginTime(new Date());
            admin.setaUpdateTime(new Date());
            admin.setaPassword(null);
            adminService.upDate(admin);
            return "redirect:index";
        }

        model.addAttribute("msg",message);
        return "forward:/login.jsp";
    }
    //退出登陆
    @RequestMapping("/logout")
    public String logout(HttpSession session){
        session.invalidate();
        return "redirect:/login.jsp";
    }

    //跳转到修改密码的页面
    @RequestMapping("/rePassword")
    public String rePassword(){
        return "rePassword";
 */
@Service
public class StudentServiceImpl implements StudentService {

    @Autowired
    private StudentMapper studentMapper;

    @Override
    public Student findBySno(String sno) {
        StudentExample studentExample = new StudentExample();
        studentExample.createCriteria().andSnoEqualTo(sno);
        List<Student> students = studentMapper.selectByExample(studentExample);
        if(students != null && students.size() > 0) return students.get(0);
        return null;
    }

    @Override
    public Page findAllToPage(Integer page, Integer rows) {
        Page<Student> sPage = new Page<>();
        List<Student> lists = studentMapper.findToPage((page-1)*rows,rows);
        sPage.setRows(lists);
        sPage.setTotal(studentMapper.countByExample(new StudentExample()));
        return sPage;
    }

    @Override
    public JsonResult add(MultipartFile studentIcon, Student student,HttpServletRequest request) {
        if(!studentIcon.isEmpty()){
            String path = FileUtil.uploadImage(studentIcon, "studentIcon", request);
            if(path == null) return new JsonResult(false, ResultEnum.UPLOAD_TYPE_ERROR);
            student.setsIcon(path);
        }

        student.setsCreateTime(new Date());
        student.setsUpdateTime(new Date());
        if(student.getsSex() == null) student.setsSex("男");
        try{
            int   i = studentMapper.insertSelective(student);
            return    i > 0 ?  new JsonResult(true, ResultEnum.ADD_SUCCESS)
                    : new JsonResult(false, ResultEnum.ADD_FAIL);
        }catch (Exception e){
            e.printStackTrace();
            return new JsonResult(false, ResultEnum.REPEAT_ERROR);
        }
    }

                return null;
            String filename = multipartFile.getOriginalFilename();
            String type = filename.substring(filename.lastIndexOf("."));
            String newFilename = UUIDUtil.getUUIDByTime()+type;
            String path = request.getServletContext().getRealPath("/images/"+saveDir)+"/"+newFilename;
            try{
                FileCopyUtils.copy(multipartFile.getInputStream(), new FileOutputStream(path));
                return "images/"+saveDir+"/"+newFilename;
            }catch (IOException e){
                e.printStackTrace();
                return null;
            }

    }
}

/**
 */
public interface AdminService {

    //验证登陆
    public String checkUserPwd(Admin admin);

    //更新
    public boolean upDate(Admin admin);

    //
    public Admin findByUsername(String username);

    //显示所有用户用PageBean封装
    Page<Admin> findAllToPage(Integer page, Integer rows);

    JsonResult deleteById(Integer aid);

    List<Place> loadPlace();

    JsonResult update(MultipartFile adminIcon, Admin admin, HttpServletRequest request);
    @ResponseBody
    public JsonResult remove(Integer oid,Integer oBid,String oState){
        return ordersService.deleteById(oid,oBid,oState);
    }

}

/**
 */
public class FileUtil {
    /**
     *
     * @param multipartFile 上传的文件
     * @param saveDir  在images文件夹下面的哪个文件夹
     * @param request
     * @return 返回一个文件路径 如果null则上传失败
     */
    public static String uploadImage(MultipartFile multipartFile,String saveDir, HttpServletRequest request){
            if(!multipartFile.getContentType().startsWith("image/"))
                return null;
            String filename = multipartFile.getOriginalFilename();
            String type = filename.substring(filename.lastIndexOf("."));
            String newFilename = UUIDUtil.getUUIDByTime()+type;
            String path = request.getServletContext().getRealPath("/images/"+saveDir)+"/"+newFilename;
            try{
                FileCopyUtils.copy(multipartFile.getInputStream(), new FileOutputStream(path));
                return "images/"+saveDir+"/"+newFilename;
            }catch (IOException e){
                e.printStackTrace();
                return null;
            }

    }
}


/**
 */
@Service
public class BikeControllerImpl implements BikeService {
    @Autowired
    private BikeMapper bikeMapper;

    @Autowired
    private CategoryService categoryService;

    //事务控制 该单车分类剩余量+1
    @Transactional
    @Override
    public JsonResult add(MultipartFile bikeIcon, Bike bike, HttpServletRequest request,Integer bCount) {
        if(!bikeIcon.isEmpty()){
            String path = FileUtil.uploadImage(bikeIcon, "bikeIcon", request);
            if(path == null) return new JsonResult(false, ResultEnum.UPLOAD_TYPE_ERROR);
            bike.setbIcon(path);
        }
        bike.setbState(BikeStateEnum.AVAILABLE.getState());
        bike.setbCreateTime(new Date());
        bike.setbUpdateTime(new Date());
        try{
            int row = 0;
            for (int i = 0; i < bCount; i++) {
                row += bikeMapper.insertSelective(bike);
            }
            if(row == bCount){
                return categoryService.updateRemainById(bike.getbCid(),bCount) ?
                        new JsonResult(true, ResultEnum.ADD_SUCCESS):new JsonResult(false, ResultEnum.ADD_FAIL);
            }else{
                throw new RuntimeException();
            }
        }catch (Exception e){
            e.printStackTrace();
        StudentExample studentExample = new StudentExample();
        studentExample.createCriteria().andSnoEqualTo(sno);
        List<Student> students = studentMapper.selectByExample(studentExample);
        if(students != null && students.size() > 0) return students.get(0);
        return null;
    }

    @Override
    public Page findAllToPage(Integer page, Integer rows) {
        Page<Student> sPage = new Page<>();
        List<Student> lists = studentMapper.findToPage((page-1)*rows,rows);
        sPage.setRows(lists);
        sPage.setTotal(studentMapper.countByExample(new StudentExample()));
        return sPage;
    }

    @Override
    public JsonResult add(MultipartFile studentIcon, Student student,HttpServletRequest request) {
        if(!studentIcon.isEmpty()){
            String path = FileUtil.uploadImage(studentIcon, "studentIcon", request);
            if(path == null) return new JsonResult(false, ResultEnum.UPLOAD_TYPE_ERROR);
            student.setsIcon(path);
        }

        student.setsCreateTime(new Date());
        student.setsUpdateTime(new Date());
        if(student.getsSex() == null) student.setsSex("男");
        try{
            int   i = studentMapper.insertSelective(student);
            return    i > 0 ?  new JsonResult(true, ResultEnum.ADD_SUCCESS)
                    : new JsonResult(false, ResultEnum.ADD_FAIL);
        }catch (Exception e){
            e.printStackTrace();
            return new JsonResult(false, ResultEnum.REPEAT_ERROR);
        }
    }

    @Override
    public JsonResult removeById(Integer sid) {
        if(sid == null) return new JsonResult(false, ResultEnum.DELETE_FAIL);
        int i = studentMapper.deleteByPrimaryKey(sid);
        return i > 0 ? new JsonResult(true, ResultEnum.DELETE_SUCCESS) : new JsonResult(false, ResultEnum.DELETE_FAIL);
    }

    @Override
    public Student findById(Integer sid) {
        if(sid != null){
            return studentMapper.selectByPrimaryKey(sid);
        }
    //跳转到租赁管理页面
    @RequestMapping("/ordersManage")
    public  String ordersMange(){
        return "orders";
    }

    //添加或修改订单
    @RequestMapping("/addOrUpdate")
    @ResponseBody
    public JsonResult addOrUpdate(Orders orders){
        if(orders.getOid() == null) return ordersService.add(orders);
            return ordersService.update(orders);
    }

    //点击修改按钮,加载订单表单
    @RequestMapping("/loadForm")
    @ResponseBody
    public Orders loadForm(Integer oid){
        return ordersService.findById(oid);
    }

    //显示所有的订单
    @RequestMapping("/showAll")
    @ResponseBody
    public Page<Orders> show(Integer page, Integer rows){
        return ordersService.findAllToPage(page,rows);
    }

    //删除订单
    @RequestMapping("/remove")
    @ResponseBody
    public JsonResult remove(Integer oid,Integer oBid,String oState){
        return ordersService.deleteById(oid,oBid,oState);
    }

}

 */
public interface AdminService {

    //验证登陆
    public String checkUserPwd(Admin admin);

    //更新
    public boolean upDate(Admin admin);

    //
    public Admin findByUsername(String username);

    //显示所有用户用PageBean封装
    Page<Admin> findAllToPage(Integer page, Integer rows);

    JsonResult deleteById(Integer aid);

    List<Place> loadPlace();

    JsonResult update(MultipartFile adminIcon, Admin admin, HttpServletRequest request);

    JsonResult add(MultipartFile adminIcon, Admin admin, HttpServletRequest request);
}

/**
 */
public interface BikeService {

    JsonResult add(MultipartFile bikeIcon, Bike bike, HttpServletRequest request,Integer bCount);

    JsonResult update(MultipartFile bikeIcon,Bike bike,HttpServletRequest request);

    Page<Bike> findAllToPage(Integer page, Integer rows);

    //当前bike d掉 和 更新该分类的数量

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值