图书销售管理系统开发:功能需求与数据库设计实践
图书销售管理系统开发:功能需求与数据库设计实践
图书销售管理系统是一个用于管理图书库存、处理订单、跟踪销售和管理客户信息的软件系统。它为书店、图书馆或在线书店等图书销售业务提供了一个集成的解决方案。
1、系统分析
1.1 项目背景
在当今数字化时代,图书销售行业面临着诸多挑战和机遇。随着互联网的普及和电子商务的发展,越来越多的消费者选择在网上购买图书,这对传统的实体书店造成了一定的冲击。同时,图书销售企业也面临着库存管理、订单处理、客户关系管理等方面的问题,需要一个高效、智能的管理系统来提高运营效率和客户满意度。
目前,一些图书销售企业仍然采用传统的手工管理方式,这种方式存在着效率低下、容易出错、数据不准确等问题。另外,一些企业虽然使用了信息化管理系统,但这些系统往往功能单一,无法满足企业的综合管理需求。因此,开发一个功能强大、易于使用的图书销售管理系统具有重要的现实意义。
1.1.2 选题的目的和意义
本项目的目的是开发一个图书销售管理系统,旨在为图书销售企业提供一个全面、高效的管理平台,帮助企业实现以下目标:
- 通过自动化库存管理、订单处理和客户关系管理等功能,减少人工操作,提高工作效率,降低运营成本
- 提供便捷的在线购物体验,及时处理客户订单和投诉,提高客户满意度和忠诚度
- 实时监控库存水平,自动生成采购订单,避免库存积压和缺货现象的发生
- 通过对销售数据的分析,为企业决策提供有力支持,帮助企业制定合理的营销策略和业务发展规划
2、系统设计
2.1 系统需求分析
2.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 ;