基于springboot的图书进销存管理系统 - 详解

1. 在线演示:

后台:http://springbootk6oce.xiaobias.com/springbootk6oce/admin/dist/index.html#/login
前台:http://springbootk6oce.xiaobias.com/springbootk6oce/front/index.html
管理员:abo/abo
用户:用户1/123456、用户2/123456
资源:https://fifteen.xiaobias.com/source/86

2. 项目简介

图书进销存管理系统是一个基于Spring Boot和Vue.js构建的Web应用程序,旨在为图书经销商、书店或图书馆提供一个全面的信息化管理解决方案。该系统涵盖了图书采购(进货)、库存管理、批发销售(批销)、客户与供应商管理、财务收支分析等核心业务流程,实现了对图书商品从入库到销售出库的全生命周期管理。系统包含后台管理模块和前台信息展示模块,角色分为“管理员”和“用户”,不同角色拥有不同的操作权限。

3. 技术栈

层级技术选型
后端Spring Boot 2.2.2, MyBatis-Plus 2.3, Shiro 1.3.2 (权限控制), MySQL 5.7
前端 (后台)Vue.js, Element UI, Vue Router, Axios, ECharts
前端 (前台)jQuery, Layui, Vue.js
数据库MySQL
项目构建Maven
其他工具Hutool, FastJson, AMap (地图服务)

4. 详细介绍

4.1 系统功能模块

系统功能模块清晰,主要分为后台管理功能和前台展示功能。

后台管理功能 (主要面向管理员/内部员工):

  1. 基础数据管理:图书类型管理。
  2. 采购管理:进货订单的录入、审核、查看报表。
  3. 销售管理:批销订单的管理与报表。
  4. 库存管理:库存分析、商品退货处理。
  5. 伙伴管理:供应商信息管理和客户信息管理。
  6. 财务管理:收入金额与应收金额的录入与分析。
  7. 内容管理:图书信息的增删改查、评论管理。
  8. 用户管理:系统用户账号的管理与审核。
  9. 系统管理:轮播图配置、首页配置等。

前台展示功能 (主要面向客户/访客):

  1. 信息浏览:查看图书信息列表、详情。
  2. 模块查看:查看进货订单、商品退货、批销订单、客户信息等公开列表(权限通常仅为查看)。
  3. 个人中心:注册用户可管理个人信息、收藏夹。

4.2 数据库设计

数据库 springbootk6oce 包含多张表,核心业务表包括:

  • tushuxinxi:图书信息表,存储图书详情。
  • jinhuodingdan / pixiaodingdan:进货订单和批销订单表,记录交易流水。
  • gongyingshang / kehuxinxi:供应商和客户信息表。
  • shangpintuihuo:商品退货表。
  • kucunfenxi / shourujine / yingshoujine:库存、收入、应收分析表。
  • yonghu / users:前端用户和后端管理员用户表。
  • config:系统配置表,用于存储首页轮播图等。
  • discusstushuxinxi:图书评论表。
  • storeup:收藏表。

4.3 权限控制

系统使用 Apache Shiro 进行权限控制,并通过 Vue 前端路由和自定义指令(v-if="isAuth(...)")实现了精细化的按钮级权限管理。权限配置存储在 JavaScript 对象中,定义了不同角色(管理员用户)对每个菜单和功能的操作权限(如新增、查看、修改、删除、审核等)。

5. 部分代码

5.1 后端 Controller 示例 (伪代码)

@RestController
@RequestMapping("/jinhuodingdan")
public class JinhuodingdanController
{
@Autowired
private JinhuodingdanService jinhuodingdanService;
@RequestMapping("/list")
public R list(@RequestParam Map<
String, Object> params) {
// 查询分页数据
PageUtils page = jinhuodingdanService.queryPage(params);
return R.ok().put("data", page);
}
@RequestMapping("/save")
public R save(@RequestBody JinhuodingdanEntity jinhuodingdan) {
// 生成订单编号等业务逻辑
jinhuodingdanService.save(jinhuodingdan);
return R.ok();
}
// ... 其他方法 (update, delete, info)
}

5.2 前端 Vue 组件片段 (后台 - 列表页)

// views/modules/jinhuodingdan/list.vue 片段
<template>
  <div>
    <el-button v-if="isAuth('jinhuodingdan', '新增')" type="primary" @click="addOrUpdateHandle()">新增<
      /el-button>
      <el-table :data="dataList">
        <el-table-column prop="dingdanbianhao" label="订单编号">
          <
          /el-table-column>
          <el-table-column prop="tushumingcheng" label="图书名称">
            <
            /el-table-column>
            <el-table-column prop="shuliang" label="数量">
              <
              /el-table-column>
              <el-table-column fixed="right" label="操作">
                <template slot-scope="scope">
                  <el-button v-if="isAuth('jinhuodingdan', '查看')" type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">查看<
                    /el-button>
                    <el-button v-if="isAuth('jinhuodingdan', '修改')" type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">修改<
                      /el-button>
                      <el-button v-if="isAuth('jinhuodingdan', '删除')" type="text" size="small" @click="deleteHandle(scope.row.id)">删除<
                        /el-button>
                        <
                        /template>
                        <
                        /el-table-column>
                        <
                        /el-table>
                        <
                        /div>
                        <
                        /template>
                        <script>
                          export default {
                          data() {
                          return {
                          dataList: [],
                          // ...
                          };
                          },
                          methods: {
                          // 获取数据列表
                          getDataList() {
                          this.$http({
                          url: this.$http.adornUrl('/jinhuodingdan/list'),
                          method: 'get',
                          params: this.$http.adornParams({
                          ...this.dataForm
                          })
                          }).then(({data
                          }) =>
                          {
                          if (data && data.code === 0) {
                          this.dataList = data.data.list;
                          // ...
                          }
                          });
                          },
                          isAuth(tableName, key) {
                          ...
                          } // 权限判断方法
                          // ... 其他方法 (addOrUpdateHandle, deleteHandle)
                          }
                          };
                          <
                          /script>

5.3 SQL 查询片段 (MyBatis-Plus)

<!-- mapper/JinhuodingdanDao.xml -->
    <select id="selectListView" resultType="com.entity.view.JinhuodingdanView" >
    SELECT jinhuodingdan.* FROM jinhuodingdan jinhuodingdan
  <where> 1=1 ${ew.sqlSegment}</where>
  </select>

6. 部分截图

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

7. 项目总结

图书进销存管理系统是一个功能完整、结构清晰的全栈项目,具有以下特点:

  1. 技术选型合理:采用了当前企业级开发中非常流行的 Spring Boot + Vue 的前后端分离架构,技术栈成熟稳定,易于开发和维护。
  2. 业务覆盖全面:系统设计紧扣图书贸易行业的实际业务流程,从供应商到客户,从采购到销售再到财务,形成了完整的闭环管理。
  3. 权限设计细致:不仅实现了菜单级权限,更细化到了按钮级别,能够满足不同角色用户的复杂权限控制需求。
  4. 代码结构规范:前后端代码结构清晰,后端采用 MVC 分层架构,前端 Vue 组件化开发,符合软件开发规范。
  5. 用户体验良好:后台管理界面基于 Element UI,简洁美观;前台页面使用 Layui,风格统一。前后台都具备基本的交互效果。

总而言之,该项目是一个非常好的 Spring Boot + Vue 全栈学习范例,同时也具备直接用于实际业务环境的潜力。

posted @ 2025-09-22 19:48  wzzkaifa  阅读(22)  评论(0)    收藏  举报