弱水3001 2023-11-29 16:34 采纳率: 100%
浏览 39
已结题

股票交易系统设计(sql语言)

一、实验报告详细要求

  1. 数据库设计说明书
    1.问题的描述
    2.需求分析
  2. 概念模型
    3.逻辑结构
    3.1 局部 E-R 图(选做)
    3.2 全局 E-R 图(选做)
    4.数据库实现:创建及查询的 SQL 语句
  3. 界面功能说明:使用说明书
  4. 数据字典(https://pan.baidu.com/s/1DQPgKs8KMXOrgIM6qQ71XA 
    提取码:vz4y)
    二、题目描述
  5. 项目名称:股票交易系统
  6. 功能要求:
    a. 用户类型:
     管理员用户:负责股票发行和退市操作
     交易用户:可以进入系统交易和查看股票
     *操盘手:用户可以授权操盘手进行股票操作
    b. 股票交易:
     交易用户对指定股票进行交易:
     股票发行:无持有人,可直接按发行价买入
     挂盘销售:持有人可对持有股票挂盘销售
     每支股票发行数量、开盘价、每手数量在数据初始化时自定义
    c. 股票操作:
     股票发行
     股票退市
     *异常股票:ST
     *股票增发
    d. 股票查询,股票交易数据查询,包括但不限于:
     指定股票:查看当前五个挂盘情况包括价格和数量
     指定日期范围:年、月、日
     交易数据:交易量、开盘价、收盘价
     历史交易:当前用户历史交易情况及每笔交易的收益
     ***指标数据:行业股均值、行业交易量统计等
  7. 界面要求:
    a. 编程环境:Jupyter notebook/Mysql
    b. 不强制要求使用 GUI 编程
    c. 功能使用说明务必详细在报告中的“界面功能说明”中详细清楚的列举
  • 写回答

18条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2023-11-29 16:34
    关注

    引自强大而免费的微信小程序:皆我百晓生

    数据库设计说明书

    1. 问题的描述:
      股票交易系统是一个用于管理股票发行和交易的系统。该系统需要支持管理员用户、交易用户和操盘手用户。管理员用户负责股票的发行和退市操作,交易用户可以进行股票交易和查看股票信息,操盘手用户可以被授权进行股票操作。系统需要支持股票发行、挂盘销售、股票退市等功能,并能提供股票价格、交易量、收盘价等交易数据的查询。

    2. 需求分析:
      根据问题描述,我们需要设计一个数据库来存储股票交易系统的相关数据,并支持相应的查询操作。数据库需要包括以下表:

    • 公司表(Company):记录公司的基本信息,如公司代码、证券代码、公司名称等。
    • 股票表(Stock):记录股票的基本信息,如股票代码、股票名称、证券代码等。
    • 持有人表(Holder):记录持有人的基本信息,如持有人代码、持有人姓名等。
    • 交易表(Trade):记录股票的交易信息,如交易代码、交易日期、交易价格等。
    • 操盘手表(Trader):记录操盘手的基本信息,如操盘手代码、操盘手姓名等。

    概念模型

    1. 逻辑结构
      逻辑结构包括以下实体表格:
    • 用户表(User):存储用户的基本信息,包括用户ID、用户名和密码等。
    • 股票表(Stock):存储股票的基本信息,包括股票代码、股票名称和发行数量等。
    • 持股表(Holding):存储用户持有的股票信息,包括用户ID、股票代码、持股数量和购入价格等。
    • 挂盘表(Listing):存储用户挂盘销售的股票信息,包括用户ID、股票代码、挂盘数量和挂盘价格等。
    • 交易表(Transaction):存储用户交易的股票信息,包括用户ID、股票代码、交易类型、交易数量和交易价格等。

    2、数据库设计

    2.1 逻辑结构

    用户表(User):

    • 主键:用户ID(UserID)
    • 用户名(Username)
    • 密码(Password)
    • 用户类型(UserType)

    股票表(Stock):

    • 主键:股票ID(StockID)
    • 股票名称(StockName)
    • 发行数量(IssueQuantity)
    • 开盘价(OpeningPrice)
    • 每手数量(LotSize)

    持股表(Holding):

    • 外键:用户ID(UserID)
    • 外键:股票ID(StockID)
    • 持有数量(HoldingQuantity)

    挂盘表(Listing):

    • 外键:股票ID(StockID)
    • 挂盘价格(ListingPrice)
    • 挂盘数量(ListingQuantity)

    交易表(Transaction):

    • 主键:交易ID(TransactionID)
    • 外键:用户ID(UserID)
    • 外键:股票ID(StockID)
    • 交易类型(TransactionType)
    • 交易数量(TransactionQuantity)
    • 交易价格(TransactionPrice)
    • 交易日期(TransactionDate)

    2.2 数据库实现:创建及查询的 SQL 语句

    1. 创建表
    CREATE TABLE User (
        UserID INT PRIMARY KEY,
        Username VARCHAR(50),
        Password VARCHAR(50),
        UserType VARCHAR(20)
    );
    
    CREATE TABLE Stock (
        StockID INT PRIMARY KEY,
        StockName VARCHAR(50),
        IssueQuantity INT,
        OpeningPrice DECIMAL(10,2),
        LotSize INT
    );
    
    CREATE TABLE Holding (
        UserID INT,
        StockID INT,
        HoldingQuantity INT,
        PRIMARY KEY (UserID, StockID),
        FOREIGN KEY (UserID) REFERENCES User(UserID),
        FOREIGN KEY (StockID) REFERENCES Stock(StockID)
    );
    
    CREATE TABLE Listing (
        StockID INT,
        ListingPrice DECIMAL(10,2),
        ListingQuantity INT,
        FOREIGN KEY (StockID) REFERENCES Stock(StockID)
    );
    
    CREATE TABLE Transaction (
        TransactionID INT PRIMARY KEY,
        UserID INT,
        StockID INT,
        TransactionType VARCHAR(20),
        TransactionQuantity INT,
        TransactionPrice DECIMAL(10,2),
        TransactionDate DATE,
        FOREIGN KEY (UserID) REFERENCES User(UserID),
        FOREIGN KEY (StockID) REFERENCES Stock(StockID)
    );
    

    相关sql:

    1. 股票发行操作(管理员用户):
    -- 添加新的股票
    INSERT INTO Stock (StockID, StockName, IssueQuantity, OpeningPrice, LotSize)
    VALUES (1, '股票1', 1000, 10.00, 100);
    
    -- 添加持股信息
    INSERT INTO Holding (UserID, StockID, HoldingQuantity)
    VALUES (1, 1, 1000);
    
    1. 股票交易操作(交易用户):
    -- 挂盘销售股票
    INSERT INTO Listing (StockID, ListingPrice, ListingQuantity)
    VALUES (1, 11.00, 100);
    
    -- 购买挂盘股票
    INSERT INTO Transaction (TransactionID, UserID, StockID, TransactionType, TransactionQuantity, TransactionPrice, TransactionDate)
    VALUES (1, 1, 1, '买入', 10, 11.00, '2020-01-01');
    
    1. 股票退市操作(管理员用户):
    -- 删除股票
    DELETE FROM Stock WHERE StockID = 1;
    
    1. 股票查询操作:
    -- 查看指定股票的挂盘情况
    SELECT * FROM Listing WHERE StockID = 1;
    
    -- 指定日期范围内的交易数据
    SELECT * FROM Transaction WHERE TransactionDate BETWEEN '2020-01-01' AND '2020-12-31';
    
    -- 查询用户的历史交易情况及每笔交易的收益
    SELECT T.TransactionID, T.UserID, T.StockID, T.TransactionType, T.TransactionQuantity, T.TransactionPrice, T.TransactionDate, (T.TransactionQuantity * T.TransactionPrice) AS Profit
    FROM Transaction T
    INNER JOIN Holding H ON T.UserID = H.UserID AND T.StockID = H.StockID
    WHERE H.UserID = 1;
    
    -- 行业股均值和交易量统计
    SELECT AVG(S.OpeningPrice) AS AvgPrice, SUM(T.TransactionQuantity) AS TotalQuantity
    FROM Stock S
    INNER JOIN Transaction T ON S.StockID = T.StockID;
    

    这些SQL语句可以作为股票交易系统的基础操作,您可以根据实际需求进行扩展和修改。希望对您有帮助!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(17条)

报告相同问题?

问题事件

  • 系统已结题 12月14日
  • 已采纳回答 12月6日
  • 创建了问题 11月29日