股票交易系统代码.docx

上传人:b****1 文档编号:2289429 上传时间:2023-05-03 格式:DOCX 页数:19 大小:20.27KB
下载 相关 举报
股票交易系统代码.docx_第1页
第1页 / 共19页
股票交易系统代码.docx_第2页
第2页 / 共19页
股票交易系统代码.docx_第3页
第3页 / 共19页
股票交易系统代码.docx_第4页
第4页 / 共19页
股票交易系统代码.docx_第5页
第5页 / 共19页
股票交易系统代码.docx_第6页
第6页 / 共19页
股票交易系统代码.docx_第7页
第7页 / 共19页
股票交易系统代码.docx_第8页
第8页 / 共19页
股票交易系统代码.docx_第9页
第9页 / 共19页
股票交易系统代码.docx_第10页
第10页 / 共19页
股票交易系统代码.docx_第11页
第11页 / 共19页
股票交易系统代码.docx_第12页
第12页 / 共19页
股票交易系统代码.docx_第13页
第13页 / 共19页
股票交易系统代码.docx_第14页
第14页 / 共19页
股票交易系统代码.docx_第15页
第15页 / 共19页
股票交易系统代码.docx_第16页
第16页 / 共19页
股票交易系统代码.docx_第17页
第17页 / 共19页
股票交易系统代码.docx_第18页
第18页 / 共19页
股票交易系统代码.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

股票交易系统代码.docx

《股票交易系统代码.docx》由会员分享,可在线阅读,更多相关《股票交易系统代码.docx(19页珍藏版)》请在冰点文库上搜索。

股票交易系统代码.docx

股票交易系统代码

股票交易系统代码

#include

#include

#include

#include

#include

#include

classStocklist;//股票链表类的声明

structCusttable;//用户资料结构体声明

classCustlist;//股票数据类声明

Stocklist*head;//临时指向股票链表类的全局指针,作用是当程序运行时,把二进制中的数据写到这个临时的链表中,然后在这个临时的链表中进行各种操作,直到退出程序后再把临时的链表中的数据写入到二进制文件中,相当于保存并更新了文件中的数据。

Custtable*table;//临时指向用户资料结构体的指针,作用类似于上面的“临时指向股票链表类的全局指针”。

inlineistream&Flush(istream&stream)//在书本中看到的用于清空输入缓冲区的函数。

可以解决过多输入(如用cin.getline()接收数据时,过多的输入可以用该函数来清除掉,以免影响后面的输入),输入数据不符等问题。

{stream.clear();

intchars_to_skip=stream.rdbuf()->in_avail();

returnstream.ignore(chars_to_skip);

}

structCusttable//定义股票资料结构体

{charName[20];//用户姓名

intMoney;

};

classCStock//股票数据类

{private:

charstock_name[20];//股票名称

charstock_code[6];//股票代码

intstock_volume;//股票总股数

intvolume_available,nHangup;//可交易的股数

doublePrice;//股票的价格

CStock*pNext;

public:

CStock();//构造函数

CStock(char*code);//用股票代码初始化数据

CStock(char*name,char*code,intvolume,doubleprice);//初始化数据

voidSetStock(char*name,char*code,intvolume,doubleprice);//数据赋值

voidShow();//显示股票信息

char*GetName(){returnstock_name;}//返回股票名称

char*GetCode(){returnstock_code;}//返回股票代码

double&GetPrice(){returnPrice;}//返回股票价格,买卖之前判断现金是否足够

int&GetHangup(){returnnHangup;}//为1挂起,买卖之前判断是否能进行交易

int&GetVolume_available(){returnvolume_available;}//返回可交易总数,购买前判断输入的数据是否合理

voidSubStockModify(intnNum);//购买股票,市场该股可交易总数减少

voidAddStockModify(intnNum);//卖出股票,市场该股可交易总数增多

CStock*GetNext(){returnpNext;}//返回下一个结点的指针

~CStock(){cout<<"析构CStock类"<

};

CStock:

:

CStock()//构造函数

{strcpy(stock_name,"");strcpy(stock_code,"");

stock_volume=0;volume_available=0;

nHangup=0;Price=0;pNext=0;}

CStock:

:

CStock(char*code)//用股票代码初始化数据

{strcpy(stock_name,"");strcpy(stock_code,"");

stock_volume=0;volume_available=0;

nHangup=0;Price=0;pNext=0;}

CStock:

:

CStock(char*name,char*code,intvolume,doubleprice)//初始化数据

{strcpy(stock_name,name);strcpy(stock_code,code);

stock_volume=volume;volume_available=volume;

nHangup=0;Price=price;pNext=0;}

voidCStock:

:

SetStock(char*name,char*code,intvolume,doubleprice)//数据赋值

{strcpy(stock_name,name);strcpy(stock_code,code);

stock_volume=volume;volume_available=volume;

nHangup=0;Price=price;pNext=0;}

voidCStock:

:

Show()//显示股票信息

{cout<

:

left);

cout<

cout<

if(nHangup==1)cout<<"是";

elsecout<<"否";

cout<

voidCStock:

:

SubStockModify(intnNum)//购买股票,市场该股可交易总数减少

{volume_available-=nNum;

}

voidCStock:

:

AddStockModify(intnNum)//卖出股票,市场该股可交易总数增多

{volume_available+=nNum;}

classStocknode//股票结点类

{private:

CStock*pdata;//指向股票数据类的指针

Stocknode*pnext;//指向股票结点类的指针

public:

Stocknode(){pdata=0;pnext=0;};//构造函数

CStock*&Getpdata();//返回指向股票数据类的指针

Stocknode*&Getpnext();//返回指向股票结点类的指针

};

CStock*&Stocknode:

:

Getpdata()//返回指向股票数据类的指针

{returnpdata;

}

Stocknode*&Stocknode:

:

Getpnext()//返回指向股票结点类的指针

{returnpnext;

}

classStocklist//股票链表类

{private:

Stocknode*phead;//指向股票结点类的指针,是股票链表的头指针。

intnumofstock;//记录市场中已存在的股票数量,最多5只。

public:

Stocklist(){phead=0;numofstock=0;}//构造函数

~Stocklist(){Deletelist();}//析构函数

Stocknode*&Getphead(){returnphead;}//返回股票链表的头指针

voidShowlist();//展示股票链表中的所有股票

voidInsert(Stocknode*pnode);//插入股票结点到股票链表中

voidAddnewstock();//添加新股票

Stocknode*Lookupdata(char*str);//查找股票,返回指向股票结点类的指针

voidDeleteoldstock();//删除已存在的股票

voidModifystock(intnChoice);//修改股票数据

voidDeletelist();//删除整个股票链表

intGetnumofstock(){returnnumofstock;}

};

voidStocklist:

:

Insert(Stocknode*pnode)//插入股票结点到股票链表中

{if(head->Getphead()==0)//当股票链表的头指针为空,则把现在插入的结点的指针赋给头指针

{cout<<"该链表为空链表,现在插入第一个结点!

"<

pnode->Getpnext()=phead;phead=pnode;}

elseif(strcmp(phead->Getpdata()->GetCode(),pnode->Getpdata()->GetCode())>0)//链表中已有结点,把现在要插入的结点插入到链表开头

{pnode->Getpnext()=phead;phead=pnode;}

else

{Stocknode*p1,*p2;p1=p2=phead;

while(strcmp(p2->Getpdata()->GetCode(),pnode->Getpdata()->GetCode())<0&&p2->Getpnext()!

=0)//和链表中的其他几点进行比较,直到找到合适的插入位置

{p1=p2;p2=p2->Getpnext();}

if(strcmp(p2->Getpdata()->GetCode(),pnode->Getpdata()->GetCode())>0)//找到适合的插入点后,插入到链表中

{p1->Getpnext()=pnode;pnode->Getpnext()=p2;}

elseif(strcmp(p2->Getpdata()->GetCode(),pnode->Getpdata()->GetCode())==0)//若股票代码与之前已存在股票代码重复,则插入不成功

{cout<<"该股票与之前的股票代码有重复!

"<<"请重新操作!

"<

return;}

else

{p2->Getpnext()=pnode;//把结点插入到链表的尾部

pnode->Getpnext()=NULL;}}

numofstock++;

}

voidStocklist:

:

Addnewstock()//添加新股票

{CStock*p;Stocknode*pnode;

p=newCStock;longintstock_volume;

charstock_name[20];charstock_code[6];

doubleprice;pnode=newStocknode;//动态开辟新的股票结点空间

cout<<"现在添加新股票,请输入该股票的数据:

"<

cout<<"请输入股票名称:

"<

cin.getline(stock_name,20);//输入股票名

Flush(cin);//清空过多输入

cout<<"请输入股票代码:

"<

cin.getline(stock_code,6);Flush(cin);

cout<<"请输入股票总数:

"<>stock_volume;

while(!

cin)//用于解决当输入数据类型不符出现的错误

{cerr<<"输入数据类型不符,请输入数字!

"<

Flush(cin);cin>>stock_volume;}

cout<<"请输入该股票价格:

"<

cin>>price;//输入股票价格

while(!

cin)//用于解决当输入数据类型不符出现的错误

{cerr<<"输入数据类型不符,请输入数字!

"<

Flush(cin);cin>>stock_volume;}

cin.ignore();//清丢弃输入缓冲区中的字符,以免影响后面的输入

cout<<"创建该股票中..."<

p->SetStock(stock_name,stock_code,stock_volume,price);//数据赋值

pnode->Getpdata()=p;//把股票数据赋到结点中

Insert(pnode);//把刚创建的结点插入到链表中

}

voidStocklist:

:

Showlist()//展示股票链表中的所有股票

{Stocknode*pnode;

if(phead==0){cout<<"该链表为空链表!

"<

else

{pnode=phead;

while(pnode)

{pnode->Getpdata()->Show();

pnode=pnode->Getpnext();}

}

}

Stocknode*Stocklist:

:

Lookupdata(char*str)//查找股票

{Stocknode*pnode;pnode=phead;

cout<

cin.getline(code,6);

Flush(cin);

while(pnode->Getpnext()&&strcmp(pnode->Getpdata()->GetCode(),code))

{pnode=pnode->Getpnext();}

if(strcmp(pnode->Getpdata()->GetCode(),code)==0)

{returnpnode;}

else

return0;

}

voidStocklist:

:

Deleteoldstock()//删除已存在的股票

{

Stocknode*pnode,*p;pnode=phead;

cout<<"请输入你想删除的股票代码:

"<

charcode[6];cin.getline(code,6);

Flush(cin);

if(phead==0)//若链表为空,则结束该函数

{cout<<"该链表为空链表!

"<

return;}

while(pnode->Getpnext()&&strcmp(pnode->Getpdata()->GetCode(),code))//若链表不为空,则在链表中查找该股票

{p=pnode;

pnode=pnode->Getpnext();}

if(strcmp(pnode->Getpdata()->GetCode(),code)==0)

{cout<<"查找出的股票为:

"<

pnode->Getpdata()->Show();

charstr[30];

while

(1)

{do

{cout<<"是否确定删除该股票(y/n)?

"<

cin.getline(str,30);}

while((strcmp(str,"y")!

=0)&&(strcmp(str,"Y")!

=0)&&(strcmp(str,"n")!

=0)&&(strcmp(str,"N")!

=0));

if((strcmp(str,"y")==0)||(strcmp(str,"Y")==0))

{if(pnode==phead)//查找出的要删除的股票结点为链表的头结点

phead=phead->Getpnext();

else

p->Getpnext()=pnode->Getpnext();//不为头结点的情况

deletepnode;numofstock--;//删除该节点,删除动态开辟的空间

cout<<"删除股票成功!

"<

return;}

else

return;}}

else

cout<<"数据中没有该股票!

"<

}

voidStocklist:

:

Modifystock(intnChoice)//修改股票

{char*str="请输入你想修改的该股票的代码:

";

Stocknode*pnode;system("cls");

if(phead==0)//若链表为空链表

{cout<<"该链表为空链表!

"<

system("pause");}

else//若链表不为空

{pnode=head->Lookupdata(str);//首先查找出该股票

if(pnode)//如果要查找的股票存在

{cout<<"该股票为:

"<

pnode->Getpdata()->Show();//把查找出来要修改的股票展示出来

switch(nChoice)

{case1:

//更改股票名

{charname[20];

cout<<"你想把股票名称更改成:

";

cin.getline(name,20);

Flush(cin);

strcpy(pnode->Getpdata()->GetName(),name);

break;}

case2:

//更改股票代码

{charcode[6];

cout<<"你想把股票代码更改成:

";

cin.getline(code,6);Flush(cin);

strcpy(pnode->Getpdata()->GetCode(),code);

break;}

}

cout<

"<

pnode->Getpdata()->Show();system("pause");}

else//要修改的股票在链表中不存在

{cout<<"链表中没有该股票!

"<

system("pause");}

}

}

voidStocklist:

:

Deletelist()//删除链表

{if(phead==0)cout<<"该列表为空列表!

"<

else//若不为空则把节点从链表头结点开始逐个删除

{Stocknode*pnode;pnode=phead;

while(pnode)

{phead=phead->Getpnext();

deletepnode;pnode=phead;}

}}

voidInterface();//声明函数:

初始界面

voidManagementface();//声明函数:

股票管理界面

voidRegister();//声明函数:

注册

intLogin();//声明函数:

登录

voidreaddata()//从二进制文件中读入数据

{ifstreaminfile("Stock_File.dat",ios:

:

binary|ios:

:

nocreate);

if(!

infile)//若要读取的二进制文件不存在

{cout<<"要读取的\"Stock_File.dat\"文件不存在!

"<

cout<<"请确认该文件!

"<

cout<<"现在退出程序..."<

exit(0);}

Stocknode*p1;CStock*p2;

while(!

infile.eof())//若未到二进制文件结尾则继续把数据读进临时股票链表中

{p1=newStocknode;p2=newCStock;

infile.read((char*)p2,sizeof(CStock));

if(p2->GetPrice()==0)

break;

p1->Getpdata()=p2;head->Insert(p1);}

infile.close();

}

voidwritedata()//把临时股票链表中数据写入到二进制文件

{Stocknode*pnode;pnode=head->Getphead();

ofstreamoutfile("Stock_File.dat",ios:

:

binary|ios:

:

out);

while(pnode)//若未到股票链表结尾,则继续把链表中的数据写入到二进制文件中

{outfile.write((char*)pnode->Getpdata(),sizeof(CStock));

pnode=pnode->Getpnext();}

outfile.close();

}

voidmanagementchoice(intnChoice)//股票管理界面选项判断函数

{switch(nChoice)

{case1:

//添加新股票

{head->Addnewstock();//添加股票

system("pause");charstr[30];

while

(1)

{do

{system("cls");

cout<<"是否继续添加?

(y/n)"<

cin.getline(str,30);}

while((strcmp(str,"y")!

=0)&&(strcmp(str,"Y")!

=0)&&(strcmp(str,"n")!

=0)&&(strcmp(str,"N")!

=0));

if((strcmp(str,"y")==0)||(strcmp(str,"Y")==0))

{head->Addnewstock();//添加股票

system("pause");}

else

return;}}

cas

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2