• Java项目:ssm汽车租赁系统设计


    作者主页:Java毕设网

     简介:Java领域优质创作者、Java项目、学习资料、技术互助

    文末获取源码

    一、相关文档

     

            本汽车租赁系统 采用SSM框架,Mysql数据库开发,充分保证了系统稳定性、完整性。
    汽车租赁系统的设计与实现的设计思想如下:
            1、操作简单方便、系统界面安全良好:简单明了的页面布局,方便查询汽车租赁系统 管理的相关信息。
            2、即时可见:对汽车租赁系统 信息的处理将立马在对应地点可以查询到,从而实现“即时发布、即时见效”的系统功能。
            3、功能的完善性:可以管理管理员;首页、个人中心、汽车类型管理,汽车信息管理,租赁信息管理,用户管理、续租信息管理、归还信息管理、保险信息管理、违章记录管理、留言板管理、系统管理,
            用户前台;首页、汽车信息、新闻资讯、留言反馈、我的、转跳到后台,
            用户后台;首页、个人中心、租赁信息管理、续租信息管理、归还信息管理、违章记录管理、我的收藏管理的修改和查看操作。

    二、项目介绍

    角色:管理员、用户

    用户登录进入汽车租赁系统 可以查看首页、个人中心、租赁信息管理、续租信息管理、归还信息管理、违章记录管理

    管理员登录进入汽车租赁系统可以查看首页、个人中心、汽车类型管理,汽车信息管理,租赁信息管理,用户管理、续租信息管理、归还信息管理、保险信息管理、违章记录管理、留言板管理、系统管理等

    由于本程序规模不大,可供课程设计,毕业设计学习演示之用

    三、环境需要

    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.是否Maven项目: 是;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目
    6.数据库:MySql 5.7/8.0等版本均可;

    四、技术栈

    后端:SSM(Spring+SpringMVC+Mybatis)
    前端:ElementUI+Vue

    五、使用说明

    1. 使用Navicat或者其它工具,在mysql中创建对应sql文件名称的数据库,并导入项目的sql文件;
    2. 使用IDEA/Eclipse/MyEclipse导入项目,修改配置,运行项目;
    3. 将项目中config.properties配置文件中的数据库配置改为自己的配置,然后运行;
    前台运行地址:http://localhost:8080/ssm6vo2w/front/index.html
    后台运行地址:http://localhost:8080/ssm6vo2w/admin/dist/index.html

    六、运行截图

    前台界面

    ​​​

    后台界面 

    ​​​​

    七、相关代码

    文件上传控制器

    1. @RestController
    2. @RequestMapping("file")
    3. @SuppressWarnings({"unchecked","rawtypes"})
    4. public class FileController{
    5. @Autowired
    6. private ConfigService configService;
    7. /**
    8. * 上传文件
    9. */
    10. @RequestMapping("/upload")
    11. public R upload(@RequestParam("file") MultipartFile file, String type,HttpServletRequest request) throws Exception {
    12. if (file.isEmpty()) {
    13. throw new EIException("上传文件不能为空");
    14. }
    15. String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);
    16. String fileName = new Date().getTime()+"."+fileExt;
    17. File dest = new File(request.getSession().getServletContext().getRealPath("/upload")+"/"+fileName);
    18. file.transferTo(dest);
    19. /**
    20. * 如果使用idea或者eclipse重启项目,发现之前上传的图片或者文件丢失,将下面一行代码注释打开
    21. * 请将以下的"D:\\ssmpiv99\\src\\main\\webapp\\upload"替换成你本地项目的upload路径,
    22. * 并且项目路径不能存在中文、空格等特殊字符
    23. */
    24. //FileUtils.copyFile(dest, new File("D:\\ssmpiv99\\src\\main\\webapp\\upload"+"/"+fileName)); /**修改了路径以后请将该行最前面的//注释去掉**/
    25. if(StringUtils.isNotBlank(type) && type.equals("1")) {
    26. ConfigEntity configEntity = configService.selectOne(new EntityWrapper().eq("name", "faceFile"));
    27. if(configEntity==null) {
    28. configEntity = new ConfigEntity();
    29. configEntity.setName("faceFile");
    30. configEntity.setValue(fileName);
    31. } else {
    32. configEntity.setValue(fileName);
    33. }
    34. configService.insertOrUpdate(configEntity);
    35. }
    36. return R.ok().put("file", fileName);
    37. }
    38. /**
    39. * 下载文件
    40. */
    41. @IgnoreAuth
    42. @RequestMapping("/download")
    43. public void download(@RequestParam String fileName, HttpServletRequest request, HttpServletResponse response) {
    44. try {
    45. File file = new File(request.getSession().getServletContext().getRealPath("/upload")+"/"+fileName);
    46. if (file.exists()) {
    47. response.reset();
    48. response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName+"\"");
    49. response.setHeader("Cache-Control", "no-cache");
    50. response.setHeader("Access-Control-Allow-Credentials", "true");
    51. response.setContentType("application/octet-stream; charset=UTF-8");
    52. IOUtils.write(FileUtils.readFileToByteArray(file), response.getOutputStream());
    53. }
    54. } catch (IOException e) {
    55. e.printStackTrace();
    56. }
    57. }
    58. }

    登录相关控制器

    1. @RequestMapping("users")
    2. @RestController
    3. public class UserController{
    4. @Autowired
    5. private UserService userService;
    6. @Autowired
    7. private TokenService tokenService;
    8. /**
    9. * 登录
    10. */
    11. @IgnoreAuth
    12. @PostMapping(value = "/login")
    13. public R login(String username, String password, String captcha, HttpServletRequest request) {
    14. UserEntity user = userService.selectOne(new EntityWrapper().eq("username", username));
    15. if(user==null || !user.getPassword().equals(password)) {
    16. return R.error("账号或密码不正确");
    17. }
    18. String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
    19. return R.ok().put("token", token);
    20. }
    21. /**
    22. * 注册
    23. */
    24. @IgnoreAuth
    25. @PostMapping(value = "/register")
    26. public R register(@RequestBody UserEntity user){
    27. // ValidatorUtils.validateEntity(user);
    28. if(userService.selectOne(new EntityWrapper().eq("username", user.getUsername())) !=null) {
    29. return R.error("用户已存在");
    30. }
    31. userService.insert(user);
    32. return R.ok();
    33. }
    34. /**
    35. * 退出
    36. */
    37. @GetMapping(value = "logout")
    38. public R logout(HttpServletRequest request) {
    39. request.getSession().invalidate();
    40. return R.ok("退出成功");
    41. }
    42. /**
    43. * 密码重置
    44. */
    45. @IgnoreAuth
    46. @RequestMapping(value = "/resetPass")
    47. public R resetPass(String username, HttpServletRequest request){
    48. UserEntity user = userService.selectOne(new EntityWrapper().eq("username", username));
    49. if(user==null) {
    50. return R.error("账号不存在");
    51. }
    52. user.setPassword("123456");
    53. userService.update(user,null);
    54. return R.ok("密码已重置为:123456");
    55. }
    56. /**
    57. * 列表
    58. */
    59. @RequestMapping("/page")
    60. public R page(@RequestParam Map params,UserEntity user){
    61. EntityWrapper ew = new EntityWrapper();
    62. PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
    63. return R.ok().put("data", page);
    64. }
    65. /**
    66. * 列表
    67. */
    68. @RequestMapping("/list")
    69. public R list( UserEntity user){
    70. EntityWrapper ew = new EntityWrapper();
    71. ew.allEq(MPUtil.allEQMapPre( user, "user"));
    72. return R.ok().put("data", userService.selectListView(ew));
    73. }
    74. /**
    75. * 信息
    76. */
    77. @RequestMapping("/info/{id}")
    78. public R info(@PathVariable("id") String id){
    79. UserEntity user = userService.selectById(id);
    80. return R.ok().put("data", user);
    81. }
    82. /**
    83. * 获取用户的session用户信息
    84. */
    85. @RequestMapping("/session")
    86. public R getCurrUser(HttpServletRequest request){
    87. Long id = (Long)request.getSession().getAttribute("userId");
    88. UserEntity user = userService.selectById(id);
    89. return R.ok().put("data", user);
    90. }
    91. /**
    92. * 保存
    93. */
    94. @PostMapping("/save")
    95. public R save(@RequestBody UserEntity user){
    96. // ValidatorUtils.validateEntity(user);
    97. if(userService.selectOne(new EntityWrapper().eq("username", user.getUsername())) !=null) {
    98. return R.error("用户已存在");
    99. }
    100. userService.insert(user);
    101. return R.ok();
    102. }
    103. /**
    104. * 修改
    105. */
    106. @RequestMapping("/update")
    107. public R update(@RequestBody UserEntity user){
    108. // ValidatorUtils.validateEntity(user);
    109. UserEntity u = userService.selectOne(new EntityWrapper().eq("username", user.getUsername()));
    110. if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
    111. return R.error("用户名已存在。");
    112. }
    113. userService.updateById(user);//全部更新
    114. return R.ok();
    115. }
    116. /**
    117. * 删除
    118. */
    119. @RequestMapping("/delete")
    120. public R delete(@RequestBody Long[] ids){
    121. userService.deleteBatchIds(Arrays.asList(ids));
    122. return R.ok();
    123. }
    124. }

    八、如果也想学习本系统,下面领取。关注并回复:270ssm

  • 相关阅读:
    java switch case 多条件 正确案例&错误案例
    动态规划:03爬楼梯
    梯度下降算法实现原理(Gradient Descent)
    SpringBoot 使用 Sa-Token 完成注解鉴权功能
    前端分页实现
    日常梳理-常用注解
    springboot+vue.js+Elementui在线课程管理系统
    人工智能:一种现代的方法 第三章 经典搜索 下
    NoSQL之 Redis配置与优化
    (附源码)计算机毕业设计SSM久宠宠物店管理系统
  • 原文地址:https://blog.csdn.net/qq_21856275/article/details/133245692