资源简介
试利用单链表作为存放委托的数据结构(撮合队列),编写一模拟股票交易的程序,该程序有以下几个功能:
1. 委托申请:
输入:每个委托包括四个数据项,股票编码( 4 位数字)、价格(浮点数)、数量(整数)、买 / 卖( B/S )
输出: a. 程序为每个委托产生一个唯一的序号( d ),该序号从 1 开始; b. 每笔成交包括:成交价格( %6.1f )、成交量( %4d )、新的委托序号( d )、匹配的委托序号( d )。
2. 查询未成交的委托:
输入:股票编码
输出:按撮合队列中委托的顺序,分别输出该股票未成交的委托,每个输出的委托包括:委托序号( d )、 股票编码 ( d ) 、 价格( %6.1f )、数量( %4d )、 B/S (买 / 卖 )
3. 委托撤消:
输入:要撤消的委托号。
输出:若成功,显示该委托信息,其中委托包括数据项:委托序号、股票编码、价格、数量、 B/S (买 / 卖 ) ;否则显示“ not found ”失败信息。
委托输入格式 : 1 股票编码 价格 数量 买卖
查询输入格式 : 2 股票编码
委托撤销 : .3 委托号
退出: 0
代码片段和文件信息
#include
#include
int count;
struct date
{
int orderid;
int stockid;
float price;
int quantity;
int bs;
struct date* next;
};
typedef struct date DATE;
typedef struct date* PDATE;
struct stock
{
int stockid;
struct stock* next;
struct date* b;
struct date* s;
};
typedef struct stock STOCK;
typedef struct stock* PSTOCK;
PDATE adress[10000];
PSTOCK ad[10000];
PSTOCK home;
PDATE setnew(PDATE p0int stockidfloat priceint quantityint bs)
{
PDATE p;
p=(PDATE) malloc (sizeof(DATE));
p->bs=bs; if(p0!=NULL)
{
p->next=p0->next;
p0->next=p;
}
else
p->next=NULL;
p->orderid=count++;
adress[p->orderid]=p;
p->price=price;
p->quantity=quantity;
p->stockid=stockid;
return p;
}
PSTOCK setnewstock(int stockid)
{
PSTOCK p=NULL;
p=(PSTOCK)malloc(sizeof(STOCK));
ad[stockid]=p;
p->b=NULL;
p->s=NULL;
p->stockid=stockid;
return p;
}
PSTOCK insert(PSTOCK homeint stockidfloat priceint bsint quantity)
{
PDATE p2;
if(ad[stockid]==NULL)
setnewstock(stockid);
PDATE p1=NULL;
if(bs==1)//大to小
{
p1=ad[stockid]->b;
if(p1==NULL)
{
ad[stockid]->b=setnew(NULLstockidpricequantitybs);
return ad[stockid];
}
else
{
while(1)
{
if(p1->price {
p2=setnew(p1p1->stockidp1->pricep1->quantityp1->bs);
p1->bs=bs;
int tempid;
tempid=p2->orderid;
p2->orderid=p1->orderid;
p1->orderid=tempid;
p1->price=price;
p1->quantity=quantity;
adress[p2->orderid]=p2;
adress[p1->orderid]=p1;
return ad[stockid];
}
else if(p1->next==NULL)
{
setnew(p1stockidpricequantitybs);
return ad[stockid];
}
p1=p1->next;
}
}
}
else//小to大
{
p1=ad[stockid]->s;
if(p1==NULL)
{
ad[stockid]->s=setnew(NULLstockidpricequantitybs);
return ad[stockid];
}
else
{
while(1)
{
if(p1->price>price)
{
p2=setnew(p1p1->stockidp1->pricep1->quantityp1->bs);
p1->bs=bs;
int tempid;
tempid=p2->orderid;
p2->orderid=p1->orderid;
p1->orderid=tempid;
p1->price=price;
p1->quantity=quantity;
adress[p2->orderid]=p2;
adres
相关资源
- 数据结构年终考题范围和答案 耿国华
- 数据结构 朱战力 习题解答 数据结构
- 数据结构课程设计 6 1 彩票系统
- 教学计划编制系统
- 大数(链表、数组)实现
- MP3文件ID3v2ID3v2APEv2标签读取
- 课程作业:模拟仓库管理系统
- 自己写的航空订票系统c 版--数据结构
- 数据结构实验魔王语言
- 航空订票系统_数据结构课程设计
- 多项式求和(数据结构C 版)
- 尚观培训linux董亮老师关于数据结构的
- 数据结构 知识点总结
- 华南理工大学数据结构复习提纲二
- 华南理工大学数据结构复习提纲一
- 数据结构用C 写的停车场系统源代码
- 一个简单实用个人日记管理系统
- 带时间温度显示的室内灯光控制系统
- 数据结构(河北科技大学)
- 数据结构考前习题 清华大学出版社
- 数据结构课件(北邮)
- 数据结构实验 基于栈的表达式求值
- 数据结构课程设计——图书管理系统
- 成绩管理系统(数据结构)
- FIR低通滤波器 ccs运行环境
- 数据结构-最小通信网问题
- 数据结构课程设计同学通讯录系统
- 数据结构课程设计 公园导游图
- 数据结构殷人昆版的课后答案
- 2006年湖北工业大学409数据结构试题
评论
共有 条评论