股票交易系统需求分析

设计撮合系统的目的

为了使应届毕业生入职前能有针对性的学习相关知识,使其入职后能尽快适应工作环境该课题主要针    对所有开发岗位对于非开发岗位想转开发岗位的同学,通过该课题的完成情况来证明自己入职时已经具备开发能力,从而进行岗位调整希望各位同学在做该课题的过程中能看到自己的不足,在毕业前有限时间内抓紧学习和加强相关技术知识。

3.2 需求概述

名称:股票交易系统的实现操作系统:Windows数据库:Oracle、SQLServer(两个接口数据库)或者Mysql开发语言:C++、java等自选,本课根据完成程度分为初级、中级、高级三个程度,个人根据自己的能力和时间,自行选择实现程度。

3.3 股票交易流程

模拟上海股票交易的委托、报盘、撮合三个业务。

委托:模拟证券公司接收到投资的股票买卖请求(不模拟撤单业务),写入交易所规定的接口库中(委托数据库)。

报盘:模拟交易所报盘机程序,读取委托接口库中券商写入的委托信息,送到交易所的撮合系统中(撮合数据库)。

撮合:模拟交易所的撮合系统,对报盘机报送上来的委托记录进行撮合,并反馈成交信息(撮合数据库)。

3.4 委托数据库接口说明

安装SQLServer数据库(版本不限)创建表脚本参见委托数据库接口表创建脚本.sql一共三张表ashare_ordwth委托表ashare_ordwth2委托确认表ashare_cjhb成交回报表。委托表结构,如表3-1所示,该表是由委托程序负责写,报盘程序读。

表3-1委托数据ashare_ordwth表

列名称

名称

类型

填写要求

rec_num

记录序号

INTEGER

必填,从1开始 ,连续递增 .表索引

date

日期

CHAR(8)

必填,数据写入时的日期,格式:20151013

time

时间

CHAR(8)

必填,数据写入时的时间,格式:13:11:11

reff

合同序号

CHAR(10)

必填,每笔委托合同序号唯一并递增,格式:0000000001

acc

股东代码

CHAR(10)

必填,委托程序前端输入,格式:A000000001

stock

股票代码

CHAR(6)

必填,6位数字组成,格式:600446

bs

买卖标志

CHAR(1)

必填,买入委托填‘B’,卖出委托填‘S’,大写

price

委托价格

CHAR(8)

必填,大于0,小数点保留两位,例如:12.31

qty

委托数量

CHAR(8)

必填,大于0,整数,例如: 2100

status

状态

CHAR(1)

必填,填‘R’

owflag

委托类型

CHAR(3)

必填,填‘ORD’

ordrec

委托类型

CHAR(8)

必填,填空

firmid

结算会员

CHAR(5)

必填,‘JZGF’

checkord

加密校验码

binary(16)

必填,填 0

branchid

营业部代码

CHAR(5)

必填,‘JZGF’

委托数据库第二张表,如表3-2所示,ashare_ordwth2委托确认表结构说明(该表是由委托程序读,报盘程序根据委托表信息写入)。

表3-2 ashare_ordwth2委托确认表

列名称

名称

类型

填写要求

rec_num

记录序号

INTEGER

必填,从1开始 ,连续递增 .表索引(与ashare_ordwth对应记录内容相同)

date

日期

CHAR(8)

必填,数据写入日期,格式:20151013(与ashare_ordwth对应记录内容相同)

time

时间

CHAR(8)

必填,数据写入时的时间,格式:13:11:12

reff

合同序号

CHAR(10)

必填,每笔委托合同序号唯一并递增,格式:0000000001(与ashare_ordwth对应记录内容相同)

acc

股东代码

CHAR(10)

必填,委托程序前端输入,格式:A000000001(与ashare_ordwth对应记录内容相同)

stock

股票代码

CHAR(6)

必填,6位数字组成,格式:600446(与ashare_ordwth对应记录内容相同)

bs

买卖标志

CHAR(1)

必填,买入委托填‘B’,卖出委托填‘S’,大写(与ashare_ordwth对应记录内容相同)

price

委托价格

CHAR(8)

必填,大于0,小数点保留两位,例如:12.31(与ashare_ordwth对应记录内容相同)

qty

委托数量

CHAR(8)

必填,大于0,整数,例如: 2100(与ashare_ordwth对应记录内容相同)

status

状态

CHAR(1)

必填,填‘R’ 

qty2

撤单数量

CHAR(8)

必填,填空

remark

备注信息

CHAR(30)

必填,填空

status1

状态1

CHAR(1)

必填,填‘R’

teordernum

申请编号

CHAR(8)

必填,填空

owflag

委托类型

CHAR(3)

必填,填‘ORD’

ordrec

委托类型

CHAR(8)

必填,填空

firmid

结算会员

CHAR(5)

必填,‘JZGF’

checkord

加密校验码

binary(16)

必填,填 0

rec_num2

Identity类型

integer

自动生成,不用填;自己程序实现每天复位从1开始

委托数据库第三张表,如表3-3所示,ashare_cjhb成交回报表结构说明(该表是由报盘程序负责写,委托程序读)。

表3-3 ashare_cjhb成交回报表

列名称

名称

类型

填写要求

gddm

股东代码

CHAR(10)

字段与撮合数据库接口中【成交回报表】ashare_cjhb数据完全一致

gdxm

股东姓名

CHAR(8)

bcrq

成交日期

CHAR(8)

cjbh

成交编号

INTEGER

gsdm

席位代码

CHAR(5)

cjsl

成交数量

CHAR(10)

bcye

本次余额

CHAR(10)

zqdm

股票代码

CHAR(6)

sbsj

申报时间

CHAR(6)

cjsj

成交时间

CHAR(6)

cjjg

成交价格

CHAR(6)

cjje

成交金额

CHAR(12)

sqbh

申请编号

CHAR(10)

bs

买卖标志

CHAR(1)

mjbh

马甲编号

CHAR(5)

rec_num

Identity类型

integer

自动生成,不用填,自己程序实现每天复位从1开始

3.5 撮合数据库接口说明

安装SQServer数据库(版本不限),创建表脚本参见撮合数据库接口表创建脚本.sql

一共两张表:ashare_ordwth委托表ashare_cjhb成交回报表。

撮合数据库第一张,如表3-4所示,ashare_ordwth委托表结构说明(该表是由报盘程序负责写,撮合程序读)。

表3-4 ashare_ordwth委托表

列名称

名称

类型

填写要求

rec_num

记录序号

INTEGER

除time字段,其他字段与委托数据库接口中委托表ashare_ordwth数据完全一致

time字段为数据写入时的时间,格式:13:11:12

date

日期

CHAR(8)

time

时间

CHAR(8)

reff

合同序号

CHAR(10)

acc

股东代码

CHAR(10)

stock

股票代码

CHAR(6)

bs

买卖标志

CHAR(1)

price

委托价格

CHAR(8)

qty

委托数量

CHAR(8)

status

状态

CHAR(1)

owflag

委托类型

CHAR(3)

ordrec

委托类型

CHAR(8)

firmid

结算会员

CHAR(5)

checkord

加密校验码

binary(16)

branchid

营业部代码

CHAR(5)

撮合数据库第二张表,如表3-5所示,ashare_cjhb成交回报表结构说明(该表是由撮合程序负责写,报盘程序读)。

表3-5 ashare_cjhb成交回报表

列名称

名称

类型

填写要求

gddm

股东代码

CHAR(10)

必填,对应委托记录的acc字段

gdxm

股东姓名

CHAR(8)

必填,填空

bcrq

成交日期

CHAR(8)

必填,数据写入时的日期,格式:20151013

cjbh

成交编号

INTEGER

必填,由撮合程序自行生成,不允许重复

gsdm

席位代码

CHAR(5)

必填,填‘12345’

cjsl

成交数量

CHAR(10)

必填,不能小于等于委托记录的委托数量(一笔委托可以对应多笔成交记录,由撮合程序自行控制每笔委托对应的成交笔数,但总成交数量不能超过该笔委托的委托数量)

bcye

本次余额

CHAR(10)

必填,等于成交数量

zqdm

股票代码

CHAR(6)

必填,对应该笔委托记录的stock字段

sbsj

申报时间

CHAR(6)

必填,该笔成交对应委托申请写入撮合数据库委托表ashare_ordwth的时间

cjsj

成交时间

CHAR(6)

必填,数据写入时的时间,格式:13:11:12

cjjg

成交价格

CHAR(6)

必填,等于委托价格

cjje

成交金额

CHAR(12)

必填,本条记录cjjg乘以cjsl,小数点保留2位

sqbh

申请编号

CHAR(10)

必填,对应该笔委托记录的reff字段

bs

买卖标志

CHAR(1)

必填,对应该笔委托记录的bs字段

mjbh

马甲编号

CHAR(5)

必填,填‘JZGF’

rec_num

Identit类型

integer

自动生成,不用填,自己程序实现每天复位从1开始

3.6 撮合系统功能需求

登录页面实现的功能:用户根据自己的投资者账号和密码,在正确输入的前提下用户才可以进入系统,进行以后的操作。初级要求:安装SQLServer数据库,建立委托数据库(名称自定)使用委托数据库接口表创建脚本.sql建立三张接口表也可以选Oracle数据库,参考委托数据库接口表创建脚本.sql自行修正为oracle对应版本,自行选择开发语言开发委托程序,程序架构自行选择可以通过委托程序进行委托数据录入,并写入委托数据库中的委托表ashare_ordwth根据委托数据库中的委托ashare_ordwth中新增记录,按照接口说明手工添加到委托确认ashare_ordwth2和成交回ashare_cjhb中,模拟完整业务流程。委托程序要为多线程,自行考虑实现方案委托数据接口写入功能委托记录查询功能,委托确认记录查询功能,成交回报记录查询功能,委托功能要求委托数据录入要素(对输入内容要进行合法性判断,离开输入框就要判断)股东代码输入框,证券代码输入框,买卖方向选择框(只能选择买入和卖出,选择买入相关字体或者区域显示红色,选择卖出时相关字体或者区域显示绿色,自行考虑颜色变化内容,要符合一般人的审美要求),委托价格输入框(输入数字,旁边翻译成大写显示),委托数量输入框(输入数量后,旁边显示委托金额,委托价格乘以委托数量,按照千分位格式显示),确定按键:确定后,系统自动生成合同序号,把委托记录写入委托数据库ashare_ordwth,前端弹出“委托已报,合同序号为XXXXXXXX”。系统自动生成合同序号要求:每笔委托要分配一个唯一的合同序号并且递增,格式:0000000001程序关闭重开后,如何保证序号不重复?自行考虑实现。委托记录查询功能,实时查委托数据库中的委ashare_ordwth,委托确认记录查询功能实时查询委托数据库中的委托确认表ashare_ordwth2成交回报记录查询功能实时查询委托数据库中的成交回报表ashare_cjhb查询的频率如何控制查询更合理?数据量大了 如何查询?自行考虑。其他功能数据库连接、用户、密码不能写死,通过参数配置来实现。委托数据库中的委托表委托确认表,成交回报中的数据每天要清空以前的数据,要通过程序来实现,如何防止清空时误删除当天数据?自行考虑实现方法。identity类型的字段每天要复位,从1开始,自行考虑实现中级要求:完成初级要求安装SQLServer数据库,建立撮合数据库(名称自定)使用撮合数据库接口表创建脚本.sql建立两张接口表也可以选择Oracle数据库,参考撮合数据库接口表创建脚本.sql自行修正为oracle对应版本自行选择开发语言开发报盘程序和撮合程序,程序架构自行选择,基本要求参照委托程序,报盘程序要为多线程,自行考虑实现方案,撮合程序要能实现一笔委托撮合多笔成交。高级要求:在完成全部功能的基础上,追求性能,委托程序:通过配置文件存放10W笔委托数据(合同序号不能提前准备由委托程序分配),委托程序读取该配置文件,分配合同序号,以最快的速度写入委托数据库的委托表ashare_ordwth中。最低要求达到1000笔/秒(可以通过接口库的time字段进行统计,time由数据写入时取数据库时间即可)。报盘程序:委托报盘、回写委托确认、读成交回写成交能分别达到1000笔/秒,撮合程序:一笔委托对应多笔成交(1-5笔之间随机)的基础上达到1000笔/秒,程序间消息传递。实现撮合程序撮合成交后,主动通知报盘程序读取撮合数据库成交记录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等天晴i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值