当前位置:   article > 正文

免费分享一套SpringBoot+Vue超市(进销存,收银,积分)管理系统【论文+源码+SQL脚本】,帅呆了~~

免费分享一套SpringBoot+Vue超市(进销存,收银,积分)管理系统【论文+源码+SQL脚本】,帅呆了~~

大家好,我是java1234_小锋老师,看到一个不错的SpringBoot+Vue超市(进销存,收银,积分)管理系统,分享下哈。

项目介绍

本论文设计并实现了一套基于Spring Boot、Vue和MySQL的超市管理系统。该系统旨在通过现代化的Web应用技术提升超市管理效率和用户体验。首先,通过详细的需求分析和功能设计,确定了系统的核心模块包括商品管理、库存管理、销售管理、会员管理以及报表统计等功能。接着,采用了Spring Boot作为后端开发框架,利用其快速搭建和集成优势,实现了系统的业务逻辑和数据持久化功能,同时使用MySQL作为数据库管理系统,存储和管理系统的数据。前端界面采用Vue.js作为主要开发框架,结合Element UI组件库,实现了用户友好的界面设计和良好的交互体验。系统设计考虑了安全性、性能和可扩展性等方面,通过JWT实现用户认证和权限控制,优化了数据库查询和响应速度,支持后续功能扩展和业务需求变更。

本文详细阐述了系统的设计思路、技术选型、关键功能实现及其优化策略。通过系统测试和性能评估验证了系统的稳定性和可靠性。该超市管理系统不仅提升了超市管理效率,还改善了用户体验,具备了较高的实用和推广价值。

系统展示

部分代码

  1. package com.rabbiter.market.controller.login;
  2. import com.rabbiter.market.common.sercurity.annotation.NoRequireLogin;
  3. import com.rabbiter.market.common.web.response.JsonResult;
  4. import com.rabbiter.market.domain.system.menu.Menu;
  5. import com.rabbiter.market.service.login.ILoginService;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.util.StringUtils;
  8. import org.springframework.validation.annotation.Validated;
  9. import org.springframework.web.bind.annotation.GetMapping;
  10. import org.springframework.web.bind.annotation.PostMapping;
  11. import org.springframework.web.bind.annotation.RestController;
  12. import javax.servlet.http.HttpServletRequest;
  13. import javax.validation.constraints.NotEmpty;
  14. import java.util.List;
  15. import java.util.Map;
  16. @RestController
  17. @Validated
  18. public class LoginEmpController {
  19. @Autowired
  20. private ILoginService loginService;
  21. /**
  22. * 登入功能
  23. *
  24. * @param username
  25. * @param password
  26. * @return
  27. */
  28. @NoRequireLogin
  29. @PostMapping("/login")
  30. public JsonResult login(@NotEmpty(message = "账号不能为空") String username, @NotEmpty(message = "密码不能为空") String password) {
  31. Map<String, Object> map = loginService.login(username, password);
  32. return JsonResult.success(map);
  33. }
  34. /**
  35. * 退出功能
  36. * @return
  37. */
  38. @NoRequireLogin
  39. @GetMapping("/exit")
  40. public JsonResult exit(HttpServletRequest request) {
  41. String token = request.getHeader("token");
  42. if (StringUtils.hasLength(token)){
  43. loginService.exit(token);
  44. }
  45. return JsonResult.success();
  46. }
  47. @PostMapping("/logout")
  48. public JsonResult logout(@NotEmpty(message = "内容不能为空") String content,HttpServletRequest request) {
  49. loginService.logout(request.getHeader("token"), content);
  50. return JsonResult.success();
  51. }
  52. /**
  53. * 查询登录者的拥有的菜单
  54. * @param request
  55. * @return
  56. */
  57. @GetMapping("/empMenu")
  58. public JsonResult empMenu(HttpServletRequest request){
  59. List<Menu> menus=loginService.empMenu((String)request.getHeader("token"));
  60. return JsonResult.success(menus);
  61. }
  62. @NoRequireLogin
  63. @GetMapping("/checkedToken")
  64. public JsonResult checkedToken(String token){
  65. Map<String,Object> map=loginService.checkedToken(token);
  66. return JsonResult.success(map);
  67. }
  68. }
  1. <template>
  2. <div id="login">
  3. <div class="loginForm">
  4. <el-form :model="loginForm" ref="loginForm" class="demo-ruleForm">
  5. <br />
  6. <i class="iconfont icon-r-building" style="font-size: 36px">
  7. <b style="font-size: 28px"> 超市管理系统 </b> </i
  8. ><br /><br />
  9. <el-form-item prop="username">
  10. <el-row>
  11. <el-col :span="5" style="text-align: right">
  12. <i
  13. class="iconfont icon-r-user1"
  14. style="font-size: 28px; color: grey"
  15. >
  16. </i>
  17. </el-col>
  18. <el-col
  19. :span="19"
  20. style="text-align: left; padding-left: 10px"
  21. >
  22. <el-input
  23. v-model="loginForm.username"
  24. placeholder="账号"
  25. ></el-input>
  26. </el-col>
  27. </el-row>
  28. </el-form-item>
  29. <el-form-item prop="password">
  30. <el-row>
  31. <el-col :span="5" style="text-align: right">
  32. <i
  33. class="iconfont icon-r-lock"
  34. style="font-size: 28px; color: grey"
  35. >
  36. </i>
  37. </el-col>
  38. <el-col
  39. :span="19"
  40. style="text-align: left; padding-left: 10px"
  41. >
  42. <el-input
  43. type="password"
  44. v-model="loginForm.password"
  45. placeholder="密码"
  46. ></el-input>
  47. </el-col>
  48. </el-row>
  49. </el-form-item>
  50. <el-form-item>
  51. <el-button
  52. style="font-size: 18px"
  53. type="primary"
  54. @click="submitForm('loginForm')"
  55. >
  56. <i class="iconfont icon-r-yes" style="font-size: 18px">
  57. </i>
  58. 登录</el-button
  59. >
  60. </el-form-item>
  61. </el-form>
  62. </div>
  63. </div>
  64. </template>
  65. <style>
  66. #login {
  67. position: fixed;
  68. top: 0;
  69. left: 0;
  70. width: 100%;
  71. overflow-y: hidden;
  72. height: 100%;
  73. background: url("../assets/img/01.jpg") center top / cover no-repeat;
  74. }
  75. .loginForm {
  76. background-color: white;
  77. width: 400px;
  78. height: 280px;
  79. margin: 150px auto;
  80. text-align: center;
  81. padding-top: 10px;
  82. border-color: #555555;
  83. border-style: solid;
  84. border-radius: 15px;
  85. }
  86. .loginForm input {
  87. width: 260px;
  88. }
  89. h3 {
  90. margin: 10px 0;
  91. }
  92. .loginForm button {
  93. margin-right: 40px;
  94. }
  95. </style>
  96. <script>
  97. import { ajaxPost, popup } from "@/assets/js/common";
  98. import Cookies from "js-cookie";
  99. export default {
  100. data() {
  101. return {
  102. loginForm: {
  103. username: "",
  104. password: "",
  105. },
  106. rules: {
  107. username: [
  108. {
  109. required: true,
  110. message: "账号不能为空",
  111. trigger: "blur",
  112. },
  113. ],
  114. password: [
  115. {
  116. required: true,
  117. message: "密码不能为空",
  118. trigger: "blur",
  119. },
  120. {
  121. min: 6,
  122. max: 8,
  123. message: "密码长度为5-8位",
  124. trigger: "blur",
  125. },
  126. ],
  127. },
  128. };
  129. },
  130. methods: {
  131. submitForm(formName) {
  132. this.$refs[formName].validate((valid) => {
  133. if (valid) {
  134. ajaxPost("/login", this.loginForm)
  135. .then((res) => {
  136. res = res.data;
  137. if (res.code == 200) {
  138. Cookies.set("token", res.data.token, {
  139. expires: 1 / 48,
  140. });
  141. Cookies.set(
  142. "employee",
  143. JSON.stringify(res.data.employee),
  144. { expires: 1 / 48 }
  145. );
  146. popup("登录成功,请稍等...");
  147. this.$router.push("/index");
  148. } else {
  149. popup(res.msg, "warning");
  150. }
  151. });
  152. } else {
  153. popup("账号或密码格式不正确!", "error");
  154. }
  155. });
  156. },
  157. resetForm(formName) {
  158. this.$refs[formName].resetFields();
  159. },
  160. },
  161. };
  162. </script>

源码下载

(*^▽^*),看锋哥帖子置顶评论。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/830788
推荐阅读
相关标签
  

闽ICP备14008679号