问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

图书销售管理系统开发:功能需求与数据库设计实践

创作时间:
2025-01-22 09:24:50
作者:
@小白创作中心

图书销售管理系统开发:功能需求与数据库设计实践

图书销售管理系统是一个用于管理图书库存、处理订单、跟踪销售和管理客户信息的软件系统。它为书店、图书馆或在线书店等图书销售业务提供了一个集成的解决方案。

1、系统分析

1.1 项目背景

在当今数字化时代,图书销售行业面临着诸多挑战和机遇。随着互联网的普及和电子商务的发展,越来越多的消费者选择在网上购买图书,这对传统的实体书店造成了一定的冲击。同时,图书销售企业也面临着库存管理、订单处理、客户关系管理等方面的问题,需要一个高效、智能的管理系统来提高运营效率和客户满意度。

目前,一些图书销售企业仍然采用传统的手工管理方式,这种方式存在着效率低下、容易出错、数据不准确等问题。另外,一些企业虽然使用了信息化管理系统,但这些系统往往功能单一,无法满足企业的综合管理需求。因此,开发一个功能强大、易于使用的图书销售管理系统具有重要的现实意义。

1.1.2 选题的目的和意义

本项目的目的是开发一个图书销售管理系统,旨在为图书销售企业提供一个全面、高效的管理平台,帮助企业实现以下目标:

  • 通过自动化库存管理、订单处理和客户关系管理等功能,减少人工操作,提高工作效率,降低运营成本
  • 提供便捷的在线购物体验,及时处理客户订单和投诉,提高客户满意度和忠诚度
  • 实时监控库存水平,自动生成采购订单,避免库存积压和缺货现象的发生
  • 通过对销售数据的分析,为企业决策提供有力支持,帮助企业制定合理的营销策略和业务发展规划

2、系统设计

2.1 系统需求分析

2.1.1 功能需求

根据上述功能需求,可以将其分类为以下几个模块:

  1. 用户管理模块:
  • 用户注册:用户能够在系统中注册账号,提供必要的个人信息
  • 用户登录:用户可以使用注册的账号和密码登录系统
  • 修改密码:用户能够修改自己的登录密码
  • 用户注销:用户可以注销自己的账号
  1. 图书管理模块:
  • 添加图书:管理员能够添加新的图书信息到系统中
  • 修改图书:管理员可以修改已有的图书信息
  • 删除图书:管理员可以删除不再销售的图书信息
  • 查询库存:管理员可以查询图书的库存数量
  • 促销设置:管理员可以设置图书的促销活动
  1. 订单管理模块:
  • 购买图书:用户可以在系统中浏览图书信息,并选择购买
  • 订单查询:用户可以查询自己的订单历史记录
  • 订单查询:管理员可以查询所有用户的订单历史记录
  1. 系统管理模块:
  • 添加用户账号:管理员能够添加新的用户账号
  • 删除用户账号:管理员可以删除不再使用的用户账号
  • 查询用户账号:管理员可以查询系统中的用户账号信息
  • 图书信息查询:管理员可以查询系统中所有图书的信息

2.1.2 非功能需求

  • 性能要求:系统应具备快速响应和处理用户请求的能力,特别是在高峰时段
  • 数据存储要求:系统需要安全可靠地存储图书信息、用户信息和订单信息等数据
  • 安全性要求:系统应具备用户认证、授权和数据加密等安全机制,保护用户信息和交易安全
  • 界面设计要求:系统界面应简洁、易用,提供良好的用户体验
  • 可扩展性要求:系统应具备良好的可扩展性,能够方便地添加新的功能和模块

2.1.3 数据需求

  • 用户信息:包括用户名、密码、姓名、联系方式等
  • 图书信息:包括图书名称、作者、出版社、价格、库存数量等
  • 订单信息:包括订单号、用户 ID、图书 ID、购买数量、订单状态等
  • 库存信息:包括图书 ID、库存数量等

2.1.4 安全需求

  • 用户认证:系统应通过用户名和密码对用户进行认证,确保只有授权用户能够访问系统
  • 数据加密:系统应采用适当的加密技术,对用户密码等敏感信息进行加密存储
  • 权限管理:系统应根据用户角色和权限,对不同用户的操作进行限制,确保数据安全
  • 日志记录:系统应记录用户的登录、操作等日志信息,便于进行安全审计

2.2 数据库设计

2.2.1 数据库需求分析

  • 存储用户信息、图书信息、订单信息等
  • 实现用户管理、图书管理和订单管理功能
  • 数据库需求包括用户表、图书表、订单表等

2.2.2 概念结构设计

全局ER 图

2.2.3 数据库逻辑结构设计

关系模型的设计:

  • Reader(读者)

  • reader_id:读者 ID,主键

  • reader_name:读者姓名

  • reader_phone:读者电话号码

  • reader_password:读者密码

  • Order(订单)

  • order_id:订单 ID,主键

  • order_price:订单价格

  • order_total:订单总价

  • order_amount:订单数量

  • order_remark:订单备注

  • order_book_id:订单图书 ID,外键,关联 Book 表的 book_id

  • order_reader_id:订单读者 ID,外键,关联 Reader 表的 reader_id

  • Book(图书)

  • book_id:图书 ID,主键

  • book_name:图书名称

  • book_writer:图书作者

  • book_publish:图书出版社

  • book_amount:图书库存数量

  • book_price:图书价格

  • Admin(管理员)

  • admin_id:管理员 ID,主键

  • admin_name:管理员姓名

  • admin_phone:管理员电话号码

  • admin_password:管理员密码

2.2.4 数据库物理结构设计

数据库表结构的设计

2.2.5 数据库视图设计

  • 图书信息视图 (Book Information View)

  • 包含图书的编号、名称、作者、价格、库存数量和类型名称等信息。可用于显示图书信息和进行图书管理操作。

  •   CREATE VIEW Book_Information_View AS
      SELECT b.book_id, b.title, b.author, b.price, b.stock_qty, c.type_name
      FROM Books b
      JOIN Categories c ON b.type_id = c.type_id;
    
  • 用户订单视图 (User Order View)

  • 包含订单编号、用户姓名、图书名称、订购数量和订单日期等信息。可用于显示用户的订单信息和进行订单管理操作。

  •   CREATE VIEW User_Order_View AS
      SELECT o.order_id, u.username, b.title, o.quantity, o.order_date
      FROM Orders o
      JOIN Users u ON o.user_id = u.user_id
      JOIN Books b ON o.book_id = b.book_id;
    
  • 管理员信息视图 (Admin Information View)

  • 包含管理员ID、管理员姓名和性别等信息。可用于显示管理员信息和进行管理员管理操作。

  •   CREATE VIEW Admin_Information_View AS
      SELECT admin_id, admin_name, gender
      FROM Admins;
    

2.2.6 触发器的建立

  • 用户下单后的触发器
  •   CREATE TRIGGER trg_update_stock_after_order
      AFTER INSERT ON Orders
      FOR EACH ROW
      BEGIN
          DECLARE current_stock INT;
          -- 获取当前图书的库存数量
          SELECT stock_qty INTO current_stock
          FROM Books
          WHERE book_id = NEW.book_id;
          -- 减少相应图书的库存量
          UPDATE Books
          SET stock_qty = current_stock - NEW.quantity
          WHERE book_id = NEW.book_id;
      END;
    
  • 触发事件:当用户成功下单购买图书时触发
  • 操作内容:更新相应图书的库存数量,减少库存量
  • 目的:实时更新库存信息,确保系统库存数据准确性

2.2.7 存储过程的建立

  • 存储过程1: 添加图书信息

  •   DELIMITER //
      CREATE PROCEDURE AddBook(IN book_title VARCHAR(100), IN book_author VARCHAR(50), IN book_price DECIMAL, IN book_stock INT, IN book_type_id VARCHAR(10), IN book_supplier_id VARCHAR(10))
      BEGIN
          INSERT INTO Books (title, author, price, stock_qty, type_id, supplier_id)
          VALUES (book_title, book_author, book_price, book_stock, book_type_id, book_supplier_id);
      END //
      DELIMITER ;
    
  • 存储过程2: 修改图书信息

  •   DELIMITER //
      CREATE PROCEDURE UpdateBook(IN book_id VARCHAR(10), IN new_price DECIMAL, IN new_stock INT)
      BEGIN
          UPDATE Books
          SET price = new_price, stock_qty = new_stock
          WHERE book_id = book_id;
      END //
      DELIMITER ;
    
  • 存储过程3: 删除图书信息

  •   DELIMITER //
      CREATE PROCEDURE DeleteBook(IN book_id VARCHAR(10))
      BEGIN
          DELETE FROM Books
          WHERE book_id = book_id;
      END //
      DELIMITER ;
    
  • 存储过程4: 查询订单信息

  •   DELIMITER //
      CREATE PROCEDURE GetOrderDetails(IN order_id VARCHAR(10))
      BEGIN
          SELECT * FROM Orders
          WHERE order_id = order_id;
      END //
      DELIMITER ;
    
  • 存储过程5: 查询用户订单信息

  •   DELIMITER //
      CREATE PROCEDURE GetUserOrders(IN user_id VARCHAR(10))
      BEGIN
          SELECT * FROM Orders
          WHERE user_id = user_id;
      END //
      DELIMITER ;
    

2.2.8 函数设计

  • 函数1: 计算订单总价

  •   DELIMITER //
      CREATE FUNCTION CalculateTotalPrice(order_id VARCHAR(10)) RETURNS DECIMAL
      BEGIN
          DECLARE total_price DECIMAL;
          SELECT SUM(b.price * o.quantity)
          INTO total_price
          FROM Orders o
          JOIN Books b ON o.book_id = b.book_id
          WHERE o.order_id = order_id;
          RETURN total_price;
      END //
      DELIMITER ;
    
  • 函数2: 获取图书库存数量

  •   DELIMITER //
      CREATE FUNCTION GetStockQuantity(book_id VARCHAR(10)) RETURNS INT
      BEGIN
          DECLARE stock_qty INT;
          SELECT stock_qty
          INTO stock_qty
          FROM Books
          WHERE book_id = book_id;
          RETURN stock_qty;
      END //
      DELIMITER ;
    
  • 函数3: 查询特定用户的订单数量

  •   DELIMITER //
      CREATE FUNCTION GetUserOrderCount(user_id VARCHAR(10)) RETURNS INT
      BEGIN
          DECLARE order_count INT;
          SELECT COUNT(*)
          INTO order_count
          FROM Orders
          WHERE user_id = user_id;
          RETURN order_count;
      END //
      DELIMITER ;
    
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号