图书销售管理系统

组长:洪程岷 组员:李海伦,左一凡

1 系统分析

1.1 项目背景

       现代社会对个人知识和技能的要求越来越高,因此人们更倾向于购买书籍来扩展自己的知识和技能。为了提高销售效率、改善库存管理、提升客户服务等。项目的目的可能是建立一个高效的销售管理系统,以便更好地跟踪库存、管理订单和客户信息,并提供更好的服务体验。目标群体可能包括图书店管理人员、销售人员和顾客。这些描述有助于确定项目的范围和功能需求,以及为项目的实施制定合适的计划。

1.2图书销售管理系统需求分析

1.2.1图书销售流程分析:

系统应支持图书零售购买和退货流程,包括结账、销售小票生成以及对销售小票流水号进行查询以办理退货。

1.2.2会员管理分析

系统需要支持会员管理功能,包括会员添加、查找、删除、信息修改、充值、挂失与特别处理等。

系统还需要支持会员组管理,包括添加、删除、设置折扣和积分换算等功能。

 1.2.3图书管理分析:

系统需要支持图书进货和退货功能,同时处理金额差异。

图书的编目和修改功能应该包括使用多种方式进行查找,如书名、作者等。

对于已编目的图书,系统应该提供修改图书的基本信息、零售价和最低折扣价设置的功能。

1.2.4出版社管理分析

系统应支持对出版社的管理,包括添加、删除、修改出版社信息,并能够查询出版社的资料。

1.2.5系统管理分析

系统需要提供系统设置功能,包括添加、删除、修改系统操作员,同时设置其控制权限。

还需要支持密码修改功能以及对系统数据库的备份与恢复。

2 系统设计

2.1全局E-R图

+2.2关系模型设计

出版社(出版社ID,出版社名称,地址,联系方式) 主码:出版社ID

图书信息(ISBN,图书名,出版社ID,作者,售价)  主码:ISBN    外码:出版社ID

库存(ISBN,日期,进货数量,退货数量) 主码:(ISBN,日期)

(关系)存储(ISBN,日期,存储数量) 主码(ISBN,日期)

销售员(销售员编号,姓名,性格,登录密码)  主码:销售员编号

(关系)销售(ISBN,销售员编号,销量)  主码:(ISBN,销售员编号) 外码:ISBN,销售员编号

顾客(联系方式,姓名,性别,会员组编号)  主码:联系方式  外码:会员组编号

(关系)买卖(满意度,销售员编号,联系方式)   主码:(销售员编号,联系方式)  外码:销售员编号,联系方式

充值记录(记录编号,充值金额,充值日期,联系方式)  主码:记录编号  外码:联系方式

会员(会员编号,剩余金额,消费次数,累计消费金额,会员组编号)  主码:会员编号  外码:会员组编号

会员组(会员组编号,等级,折扣)  主码:会员组编号

(关系)属于(会员编号,会员组编号,联系方式)  主码:(会员编号,会员组编号,联系方式)  外码:会员编号,会员组编号,联系方式

2.2建表

1出版商表

CREATE TABLE Publishers (
    PublisherID VARCHAR(5)  NOT NULL,
    Name VARCHAR(50) NOT NULL,
    Address VARCHAR(30),
    ContactInfo VARCHAR(20),
    PRIMARY KEY(PublisherID)
);

2图书表

CREATE TABLE Books (
    BookID VARCHAR(20) PRIMARY KEY,
    Title VARCHAR(50),
    PublisherID VARCHAR(5),
    Author VARCHAR(20),
    Price DECIMAL(5, 2),
    FOREIGN KEY (PublisherID) REFERENCES Publishers(PublisherID)
    ON DELETE CASCADE
    ON UPDATE CASCADE
);

3 库存表

CREATE TABLE Inventory (
    BookID VARCHAR(20),
    Quantity INT,
    recordday DATE,
    PurchaseQuantity INT,
    ReturnQuantity INT,
    PRIMARY KEY (BookID,recordday)
);

4(关系)存储表

CREATE TABLE Storage (
    BookID VARCHAR(20),
    recordday DATE,
    StorageQuantity INT,
    PRIMARY KEY (BookID,recordday)
);

5销售员表

CREATE TABLE SalesMan (
    SalesManID VARCHAR(20),
    SalesManName VARCHAR(5),
    SalesManSex  char(1),
    PassWorld VARCHAR(20),
    PRIMARY KEY (SalesManID)
);

6销售表

CREATE TABLE Sales (
    BookID VARCHAR(20),
    SalesManID VARCHAR(20),
    SalesQuantity INT,
    PRIMARY KEY (BookID,SalesManID),
    FOREIGN KEY (BookID) REFERENCES Books(BookID),
    FOREIGN KEY (SalesManID) REFERENCES SalesMan(SalesManID)
);

7顾客表

CREATE TABLE Customers (
    CustomerName VARCHAR(20),
    CustomerSex char(1),
    CustomerContactInfo VARCHAR(20),
    VIPGroupID VARCHAR(5),
    PRIMARY KEY (CustomerContactInfo),
    FOREIGN KEY (VIPGroupID) REFERENCES VIPGroups (VIPGroupID) 
);

8(关系)买卖表

CREATE TABLE Trade (
    SalesManID VARCHAR(20),
    CustomerContactInfo VARCHAR(20),
    Satisfaction VARCHAR(5),
    PRIMARY KEY (SalesManID,CustomerContactInfo),
    FOREIGN KEY (SalesManID) REFERENCES SalesMan(SalesManID),
    FOREIGN KEY (CustomerContactInfo) REFERENCES Customers(CustomerContactInfo)
);

9会员组表

CREATE TABLE VIPGroups (
    VIPGroupID VARCHAR(5) PRIMARY KEY,
    Level VARCHAR(5),
    Discount DECIMAL(4, 2)
);

10会员表

CREATE TABLE VIP (
    VIPID VARCHAR(5) PRIMARY KEY,
    RemainMoney DECIMAL(5,2),
    consumeTimes INT,
    TotalCost DECIMAL(5, 2),
    VIPGroupID VARCHAR(5),
  FOREIGN KEY (VIPGroupID) REFERENCES VIPGroups (VIPGroupID)
);

11充值记录表

CREATE TABLE RechargeRecords (
    RecordID VARCHAR(20) PRIMARY KEY,
    CustomerContacInfo VARCHAR(20),
    RechargeAmount DECIMAL(5, 2),
    RechargeDate DATE,
    FOREIGN KEY (CustomerContacInfo) REFERENCES Customers(CustomerContacInfo)
);

12(关系)属于表

CREATE TABLE Customer-VIP-VIPGroup (
    CustomerContactInfo VARCHAR(20),
    VIPID VARCHAR(5),
    VIPGroupID VArCHAR(5),
    FOREIGN KEY (CustomerContactInfo) REFERENCES Customers(CustomerContactInfo),
    FOREIGN KEY (VIPID) REFERENCES VIP(VIPID),
    FOREIGN KEY (VIPGroupID) REFERENCES VIPGroup(VIPGroupID),
);

3 完整性设计

3.1触发器

1进货数量或退货数量增加的时候,存储数量增加对应的数量


CREATE TRIGGER UpdateStorageQuantity
AFTER UPDATE ON Inventory
FOR EACH ROW
BEGIN
    DECLARE new_recordday DATE;
    SET new_recordday = NEW.recordday;

    IF OLD.PurchaseQuantity <> NEW.PurchaseQuantity THEN
        UPDATE Storage
        SET StorageQuantity = StorageQuantity + (NEW.PurchaseQuantity - OLD.PurchaseQuantity)
        WHERE BookID = NEW.BookID AND recordday = new_recordday;
    END IF;

    IF OLD.ReturnQuantity <> NEW.ReturnQuantity THEN
        UPDATE Storage
        SET StorageQuantity = StorageQuantity + (NEW.ReturnQuantity - OLD.ReturnQuantity)
        WHERE BookID = NEW.BookID AND recordday = new_recordday;
    END IF;
END;

4 系统测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值