C++ 小型股票交易系统的设计及代码

合集下载

股票交易系统代码大全(doc 12页)

股票交易系统代码大全(doc 12页)

股票交易系统代码大全(doc 12页)#include<iostream.h>#include<stdlib.h>#include<string.h>#include<conio.h>#include<fstream.h>#include<iomanip.h>class Stocklist; //股票链表类的声明struct Custtable; //用户资料结构体声明class Custlist; //股票数据类声明Stocklist *head; //临时指向股票链表类的全局指针,作用是当程序运行时,把二进制中的数据写到这个临时的链表中,然后在这个临时的链表中进行各种操作,直到退出程序后再把临时的链表中的数据写入到二进制文件中,相当于保存并更新了文件中的数据。

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

inline istream& Flush(istream& stream) //在书public: CStock(); //构造函数CStock(char *code); //用股票代码初始化数据CStock(char *name,char *code,int volume,double price); //初始化数据void SetStock(char *name,char *code,int volume,double price); //数据赋值void Show(); //显示股票信息char *GetName(){return stock_name;}//返回股票名称char *GetCode(){return stock_code;} //返回股票代码double &GetPrice(){return Price;} //返回股票价格,买卖之前判断现金是否足够int &GetHangup(){return nHangup;} //为1挂起,买卖之前判断是否能进行交易int &GetVolume_available(){return volume_available;} //返回可交易总数,购买前判断输入的数据是否合理void SubStockModify(int nNum); //购买股票,市场该股可交易总数减少void AddStockModify(int nNum); //卖出股票,市场该股可交易总数增多CStock *GetNext(){return pNext;} //返回下一个结点的指针~CStock(){cout<<"析构CStock类"<<endl;} //析构函数};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,int volume,double price) //初始化数据{ strcpy(stock_name,name);strcpy(stock_cod e,code);stock_volume=volume;volume_available=volu me;nHangup=0;Price=price;pNext=0;}void CStock::SetStock(char *name,char *code,int volume,double price) //数据赋值{ strcpy(stock_name,name);strcpy(stock_cod e,code);stock_volume=volume;volume_available=volu me;nHangup=0;Price=price;pNext=0;}void CStock::Show() //显示股票信息{ cout<<setiosflags(ios::left);cout<<setw(15)<<"股票名称"<<setw(13)<<"代码"<<setw(14)<<"总股数"<<setw(16)<<"可交易股数"<<setw(13)<<"是否挂起"<<setw(10)<<"价格";cout<<setw(15)<<stock_name<<setw(12)<<st ock_code<<setw(16)<<stock_volume<<setw(16)<<volume_available<<setw(11);if(nHangup==1) cout<<"是";else cout<<"否";cout<<setw(10)<<Price<<endl;}void CStock::SubStockModify(int nNum) //购买股票,市场该股可交易总数减少{ volume_available-=nNum;}void CStock::AddStockModify(int nNum) //卖出股票,市场该股可交易总数增多{ volume_available+=nNum; }class Stocknode //股票结点类{ private:CStock *pdata; //指向股票数据类的指针Stocknode *pnext; //指向股票结点类的指针public:Stocknode(){pdata=0;pnext=0;}; //构造函数CStock *&Getpdata(); //返回指向股票数据类的指针Stocknode *&Getpnext(); //返回指向股票结点类的指针};CStock *&Stocknode::Getpdata() //返回指向股票数据类的指针{ return pdata;}Stocknode *&Stocknode::Getpnext() //返回指向股票结点类的指针{ return pnext;}class Stocklist //股票链表类{ private: Stocknode *phead; //指向股票结点类的指针,是股票链表的头指针。

亲手编写的股票系统代码C

亲手编写的股票系统代码C
void switche_admine();
void printface();
};
class Customer
{
private:
CustTable custtable;
public:
CustList custlist;
void PrintTitle();
void Log_in(char * ,char *,Customer) const;//进入注册客户的资料
{
pData=node.pData;
pNext=node.pNext;
}
void InputData(CStock *pdata)
{
pData=pdata;
}
void ShowNode()
{
pData-&gt;Show();
}
CStock *GetData()
{
{
Password[i++]=ch;
cout&lt;&lt;&#39;*&#39;;
cout.flush();
ch=getch();
}
Password[i]=&#39;\0&#39;;
cout&lt;&lt;endl;
}
struct CustTable
{
char Name[50];
{
char str[80];
cin.clear();
cin.getline(str,80);
cout&lt;&lt;&quot;\t\t您的输入有误,请输0或1:&quot;;

股票交易系统源程序代码

股票交易系统源程序代码

#include<stdio.h>#include<fstream.h>#include<windows.h>#include <iomanip>struct Stock{char Name[10];int flag; // 1买入2卖出0都是不float Pri[20];float Price; // 记录股票当前价格};struct Stock S[5]={{"桂冠电力",0},{"华北制药",0},{"S T 金泰",0},{"伊利股份",0},{"柳州重工",0}};int cishu=0; //全局变量,记录变化的次数int time1,time2,time3,time4,time5; //全局变量,记录买入股票的时间float ZhiYin,ZhiSun; //全局变量, 记录用户设定的止盈/止损金额float Mairujia[5]; //全局变量,记录买入价float Maichujia[5]; //全局变量,记录卖出价int Gupiaoshu; //全局变量,设置每次买入股票的数目int PreNum=0; //记录当前所有的股票数目float DQGB; //记录当前股本void print(Stock S[]) //输出函数{int i;system("cls"); /*运行前清屏*/printf("\n\t\t 〓股票自动交易系统[深市全部列表] 〓\n\n"); printf("\n\t\t股票名称当前股价涨速买/卖\n\n"); for(i=0;i<5;i++){printf("\t\t%s ",S[i].Name); //股票名称printf("\t%4.2f(元/股) ",S[i].Price); //当前股价(元/股)if(cishu>0 && cishu<=20) //涨速%{if(S[i].Pri[cishu]>S[i].Pri[cishu-1])printf(" \t+%4.2f",S[i].Pri[cishu]-S[i].Pri[cishu-1]);elseprintf(" \t%4.2f",S[i].Pri[cishu]-S[i].Pri[cishu-1]);if(S[i].Pri[cishu]>S[i].Pri[cishu-1])printf("↑");if(S[i].Pri[cishu]<S[i].Pri[cishu-1])printf("↓");if(S[i].flag==0) //显示买入卖出printf(" ");if(S[i].flag==1)printf("买入");if(S[i].flag==2)printf("卖出");}elseprintf("\t\t ");printf("\n");printf("\n");}printf("\n");printf("当前你拥有股本为:%4.2f(元)\n当前你拥有股票数:%d(股)\n",DQGB,PreNum);if(PreNum==0) //因为第一次股票数是零,而零不能作分母,所以在此作一个判定printf("当前股票成本为:\n");elseprintf("当前股票成本为: %4.2f(元/股)\n",DQGB/PreNum);}void change(Stock S[]) //股价动态变化函数{ cishu++;int i,j;for(i=0;i<5;i++){S[i].Price=S[i].Pri[cishu];}// 定时买入设置买入标志买入时记下买入价格记录当前股本记录当前拥有的股票数目if(time1==cishu) { S[0].flag=1; Mairujia[0]=S[0].Price; DQGB+=Gupiaoshu*Mairujia[0]; PreNum+=Gupiaoshu;}if(time2==cishu) { S[1].flag=1; Mairujia[1]=S[1].Price; DQGB+=Gupiaoshu*Mairujia[1]; PreNum+=Gupiaoshu;}if(time3==cishu) { S[2].flag=1; Mairujia[2]=S[2].Price; DQGB+=Gupiaoshu*Mairujia[2]; PreNum+=Gupiaoshu;}if(time4==cishu) { S[3].flag=1; Mairujia[3]=S[3].Price; DQGB+=Gupiaoshu*Mairujia[3]; PreNum+=Gupiaoshu;}if(time5==cishu) { S[4].flag=1; Mairujia[4]=S[4].Price; DQGB+=Gupiaoshu*Mairujia[4]; PreNum+=Gupiaoshu;}for(j=0;j<5;j++){if(S[j].flag==1)if( S[j].Price-Mairujia[j] > ZhiYin ) //止盈{ //设置卖出标志记录卖出价格记录当前股本记录当前拥有的股票数目S[j].flag=2; Maichujia[j]=S[j].Price; DQGB-=Gupiaoshu*Maichujia[j];PreNum-=Gupiaoshu;}if(S[j].flag==1)if( Mairujia[j]-S[j].Price > ZhiSun ) //止损{ S[j].flag=2; Maichujia[j]=S[j].Price; DQGB-=Gupiaoshu*Maichujia[j];PreNum-=Gupiaoshu;}}}void main() //主函数{int i,j;printf("\n请输入欲购五支股票买入时间: ___点(24小时制)\n\n");printf("--");scanf("%d%d%d%d%d",&time1,&time2,&time3,&time4,&time5);printf("\n\n请输入每次买入的股票数:__ \n\n--");scanf("%d",&Gupiaoshu);printf("\n\n请输入止盈值:__\n\n--");scanf("%f",&ZhiYin);printf("\n\n请输入止损值:__\n\n--");scanf("%f",&ZhiSun);system("cls"); /*运行前清屏*/printf("\n\n\n\n\n\n\t\t\t\t正在进入大盘... ");Sleep(5000);ifstream fin;fin.open("gupiao.txt");for(i=0;i<5;i++)for(j=0;j<20;j++)fin>>S[i].Pri[j];fin.close();for(i=0;i<5;i++) //给股价初始化S[i].Price=S[i].Pri[0];for(i=0;i<15;i++){print(S);Sleep(2000);change(S);Sleep(2000);}}/*例如机械的设定正负10%为止损、止盈点,或者一旦从高点下跌5%就止盈股票成本=(买入股票数*单股股价+买入股票数*单股股价-卖出股票数*单股股价)/现有股票数*/。

国外五大股票交易系统,及其源码

国外五大股票交易系统,及其源码

国外五大股票交易系统,及其源码交易系统交易系统定义交易系统是指在交易市场中能实现稳定赢利的一套规则。

它包括科学的资金管理,有效的分析技术,良好的风险控制。

它的最终目的是实现交易员的稳定赢利。

它可分为主观交易系统、客观交易系统和两者相结合的交易系统。

一个交易系统就是一个交易员的心血结晶,它体现了交易员的交易哲学。

因此它不具有普适性,即一个交易系统只有在它的创造者手中才能发挥出最大效果。

所以对交易员来讲,只有打造出自己的交易系统才能走上稳定盈利的道路。

简介在股票、期货业内,交易系统的叫法很混乱,也很杂,不仅一般股民、期民;市民不详,包括一些业内人士虽常把交易系统挂在嘴边、甚至述之笔端,而实际上也不知所云,特别是一些软件制作与经销商,更出于推销的目的,故意夸大产品性能,模糊交易系统与一般行情播报软件或者行情的辅助分析软件的本质差异,更加剧了这种混乱的情况,很不利于交易系统的研究、交流与开发.操作。

什么是交易系统?从简单的概念上讲,交易系统是系统交易思维的物化。

系统交易思维是一种理念,它体现为在行情判断分析中对价格运动的总体性的观察和时间上的连续性观察,表现为在决策特征中对交易对象、交易资本和交易投资者的这三大要素的全面体现。

关于系统交易思维涉及的内容很多,这里不可能予以更多篇幅作为重点来讨论。

但有一点必须指出,交易系统既然是系统交易思维的物化,就绝非是当前市面上哪些单纯的行情播报软件或者行情的辅助分析软件可比的。

来源交易系统(Trading System)这个词在二十世纪七十年代末期始流行于华尔街(未做严格考证)。

大约在二十世纪九十年代中后期跟着一批海归这个词进入国内投资界。

目前国内关于交易系统的专著尚不多,其中波涛的《系统交易方法》公认为经典之作,其他还有一些,如王大毅的《赢家思路》、金石的《永久生存》、朴铁军的《波段赢金》。

另外雪峰的《股市技术分析实战技法》其实也谈得很多而且很实在。

国外引进的书有范撒凯的《通向金融王国的自由之路》,这本书主要从趋势跟踪系统的角度来谈,不是很全面。

C语言销售管理系统设计(内含完整代码及附件)

C语言销售管理系统设计(内含完整代码及附件)

用户下载须知程序语言:C、C++、C#(红色字体表示本课设使用的程序设计语言)图形功能选项:Win32控制台程序(黑框、文本界面)、Win32程序、MFC、WinForm、DirectX10(红色字体表示本课设的程序图形类别,默认为非图形界面Win32控制台程序)数据结构:基础类型、数组、链表、双向链表、搜索树(非平衡二叉树)、平衡二叉树、链表与平衡二叉树相结合、堆栈、队列、串、图(红色字体表示本课设使用的数据结构)C++语言项:STL库(红色字体表示使用C++的STL库)编译环境:Windows 7 64位旗舰版(Linux及其他环境请谨慎下载)集成开发环境:Visual C++ 6.0、DEVC++、CodeBlocks、Visual Studio 2015(需进行修改)均可通过编译。

(若无法通过编译运行,则会用浅蓝色字体表示)分多头文件编译:否(所有代码基本都包含在一个文件内,如需试验头文件功能,请自行参考相关文献)内容说明:1、课设题目及预览内容将在第二页开始展示。

2、代码行数:304行3、目录所示内容,本文基本涵盖,如无内容,会在本页进行说明。

4、附录绝对包含用户使用手册及程序完整源代码和详细注释。

5、如需下载其他头文件(例如DirectX需另行配置),本文会在此进行说明。

6、未经平台、本人及相关法律法规允许,请勿用于其它商业行为,否则后果自负。

7、本文撰写内容仅供学习参考,另外,由于本人水平有限,编写之处难免存在错误和纰漏,恳请各位老师或同学批评指正。

销售管理系统设计某公司有四个销售员(编号:1-4),负责销售五种产品(编号:A-E)。

每个销售员都将当天出售的每种产品各写一张便条交上来。

每张便条包含内容:1)销售员的代号,2)产品的代号,3)这种产品当天的销售额。

每位销售员每天上缴1张便条。

系统基本功能:1、系统以菜单方式工作2、便条信息录入功能(便条信息用文件保存)3、收集到了上个月的所有便条后,读取销售情况1)计算每个人每种产品的销售额。

股票交易系统-交易管理子系统详细设计

股票交易系统-交易管理子系统详细设计

3 详细设计3.1 登录模块设计3.1.1 模块描述本模块是用户进行身份认证以及认证凭据销毁的模块。

用户通过输入正确的用户名和密码,通过点击页面上的提交按钮来打开相应的页面。

3.1.2 功能IPO图如下:登录:输入处理输出3.1.3 性能完成系统的安全登录和登出。

3.1.6 设计方法登录页面login.php通过表单把文本框内输入的用户名和密码提交给后台处理页面check.php,后台通过检索数据库来判断用户名与密码是否合法。

如果合法,则将表单数据写入$_session[],并跳转到admin.php;如果不合法,则输出相应提示并返回login.php。

伪代码如下:Connection BD;//连接数据库DB.open(); //打开数据库If(BD.searchQuery(form.id,form.pwd)) //检索数据库{If(fetch_row(result)) //如有搜索结果,开始跳转{$_SESSION[‘id’]=$id;$_SESSION[‘pwd’]=$pwd;//保留登录凭据echo "<script> window.location= 'http://localhost/admin.php' </script>";//跳转}else{Echo error; //如果没有,提示相应问题history.go(-1); //返回登录页面}}3.1.7 流程逻辑3.1.8 接口3.2 查看信息模块设计3.2.1模块描述本模块是用户进行身份认证后可以使用的页面。

用户通过页面的下拉列表选择要查询的股票名称,页面通过检索数据库展示相应的股票信息和股票交易信息。

3.2.2 功能IPO图如下:3.2.3 性能用户选择相应的股票名称,系统将展示搜索结果。

股票信息:3.2.6 设计方法用户选择股票名称,通过表单传入相应的检索函数中进行检索。

股票交易系统编程

股票交易系统编程

交易系统编程1、如何把熟悉的技术指标转换成交易模型?第一步:把KDJ指标公式COPY过来。

RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;{算出(收盘价-N周期内的最低价)/(N周期的最高价—N周期内的最低价)*100的值,用RSV来表示。

} BACKGROUNDSTYLE(1);{确定背景的样式,钝化)}K:SMA(RSV,M1,1),COLORWHITE;{RSV的移动加权平均的值用K表示,并且画白色的线。

}D:SMA(K,M2,1),COLORYELLOW;{K的移动加权平均的值用D表示,并且画黄色的线。

}J:3*K-2*D,COLORMAGENTA;{3倍的K减去2倍的D的值用J表示,并且画紫色的线。

}第二步:原有公式主要是画线,所以稍作修改。

如下:RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;{第一行不需要修改}{第二行删除,在交易模型中不用钝化}K:=SMA(RSV,M1,1);{在“:”后加上“=”变为只定义不用画线,所以把后面的颜色函数(COLORWHITE)也去掉}D:=SMA(K,M2,1);{同上}J:=3*K-2*D;{同上}第三步:把自己总结的交易条件写上,就可完成交易模型。

如下:RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;K:=SMA(RSV,M1,1);D:=SMA(K,M2,1);J:=3*K-2*D;CROSS(K,D),BK;{K向上穿越D,发出买开交易指令}CROSS(J,100),SP;{J向上穿越100,发出卖平交易指令}CROSS(D,K),SK;{K向下穿越D,发出卖开交易指令}CROSS(0,J),BP;{J向下穿越0,发出买平交易指令}{{}内为文字说明,编写模型时不用写出}2、如何编制交叉(金叉/死叉)类型的交易模型?MA5:=MA(CLOSE,5);{5个周期收盘价的简单移动平均}MA10:=MA(CLOSE,10);{10个周期收盘价的简单移动平均}MA20:=MA(CLOSE,20);{20个周期收盘价的简单移动平均}CROSS(MA10,MA20),BK;{当MA10上穿MA20时,发出买入开仓交易指令}CROSS(MA10,MA5),SP;{当MA10上穿MA5时,发出卖出平仓交易指令} CROSS(MA20,MA10),SK;{当MA20上穿MA10时,发出卖出开仓交易指令}CROSS(MA5,MA10),BP;{当MA5上穿MA10时,发出买入平仓交易指令} {{}内为文字说明,编写模型时不用写出}3、如何编制多条件类型的交易模型?RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;K:=SMA(RSV,3,1);D:=SMA(K,3,1);J:=3*K-2*D;{以上为KDJ公式}MA5:=MA(CLOSE,5);MA10:=MA(CLOSE,10);{以上为定义5个周期收盘价的简单移动平均和10个周期收盘价的简单移动平均}(CROSS(MA5,MA10)&&REF(J,1)<70)||(CROSS(K,D)&&J<30),BK;{5周期均线上穿10周期均线并且前一个周期的J值(KDJ)少于70或者KD金叉时并且J值小于30时发出买入开仓交易指令}CROSS(D,K)&&REF(J,1)>70,SP;{KD出现死叉并且前一个周期J值大于70时发出卖出平仓交易指令}(CROSS(MA10,MA5)&&REF(J,1)>30)||(CROSS(D,K)&&J>70),SK;{5周期均线下叉10周期均线并且前一个周期的J值(KDJ)大于30或者KD死叉时并且J值大于70时发出卖出开仓交易指令}CROSS(K,D)&&REF(J,1)<30,BP;{KD出现金叉并且前一个周期J值小于30时发出买入平仓交易指令}{{}内为文字说明,编写模型时不用写出}4、如何编制REF(X,N)类型的交易模型?A:=OPEN-(((REF(HIGH,1)-REF(LOW,1))+(REF(HIGH,2)-REF(LOW,2))+(REF(H IGH,3)-REF(LOW,3))+(REF(HIGH,4)-REF(LOW,4)))/4)*1.8;{A=当前周期的开盘价-[(一个周期前的最高价减最低价的差+两个周期前的最高价减最低价的差+三个周期前的最高价减最低价的差+四个周期前的最高价减最低价的差)/4]*1.8}REF(CLOSE,1)<REF(CLOSE,2)&&REF(CLOSE,2)<REF(CLOSE,3)&&REF(CLOSE,3)<REF(CLOSE,4)&&CLOSE>A,BPK;{连续四个周期的收盘价小于前一周期的收盘价并且当前周期的收盘价大于A时,发出买平并且买开(反手)交易指令}REF(CLOSE,1)>REF(CLOSE,2)&&REF(CLOSE,2)>REF(CLOSE,3)&&REF(CL OSE,3)>REF(CLOSE,4)&&CLOSE<=A,SPK;{连续四个周期的收盘价大于前一周期的收盘价并且当前周期的收盘价小于等于A时,发出卖平并且卖开(反手)交易指令}{{}内为文字说明,编写模型时不用写出}5、如何编制价差类型的交易模型?MA5:=MA(CLOSE,5);{5个周期收盘价的简单移动平均}MA10:=MA(CLOSE,10);{10个周期收盘价的简单移动平均}CROSS(MA10,MA5)||(CLOSE-MA5)>8,SK;{10周期均线上穿5周期均线或者收盘价与5周期均线的差值大于8时,发出卖出开仓交易指令}(MA5-CLOSE)>6,BP;{5周期均线与收盘价的差值大于6时,发出买入平仓交易指令}CROSS(MA5,MA10)||(MA5-CLOSE)>8,BK;{5周期均线上穿10周期均线或者收盘价与5周期均线的差值大于8时,发出买入开仓交易指令}(CLOSE-MA5)>6,SP;{收盘价与5周期均线的差值大于6时,发出卖出平仓交易指令}{{}内为文字说明,编写模型时不用写出}6、如何编制简单价差类型的套利模型?CROSS(300,CLOSE),BKSK;{CLOSE为两个品种的价差。

c++题目交易思路

c++题目交易思路

当涉及到交易思路的C++题目时,通常涉及设计一个交易系统或者实现某种交易策略。

下面是一个简单的例子,展示了如何使用C++来实现一个简单的股票交易系统:```cpp#include <iostream>#include <string>class Stock {private:std::string symbol;double price;int quantity;public:Stock(std::string sym, double pr, int qty) : symbol(sym), price(pr), quantity(qty) {}void buy(int qty, double buyPrice) {quantity += qty;price = buyPrice;std::cout << "Bought " << qty << " shares of " << symbol << " at $" << buyPrice << " each." << std::endl;}void sell(int qty, double sellPrice) {if (qty > quantity) {std::cout << "Not enough shares to sell." << std::endl;return;}quantity -= qty;price = sellPrice;std::cout << "Sold " << qty << " shares of " << symbol << " at $" << sellPrice << " each." << std::endl;}void display() {std::cout << "Stock: " << symbol << ", Price: $" << price << ", Quantity: " << quantity<< std::endl;}};int main() {Stock apple("AAPL", 150.0, 100);apple.display();apple.buy(50, 155.0);apple.sell(30, 160.0);apple.display();return 0;}```这个简单的例子创建了一个Stock类,其中包含股票的标识符、价格和数量等属性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VC++课程设计-股票交易系统设计程序名称:股票交易系统难易级别:A级选择这个程序,我主要考虑到以下方面的原因:1.本程序难度较大,在编写程序的过程当中可以更加深刻地理解VC++当中的相关知识点,可以更好地通过实践了解编程的内涵。

2.该课题所涉及到的内容和实际生活联系比较紧密,所以编写此程序意义较大。

3.该课题是管理系统方面的小型程序,这类程序可以不断地扩充新的内容新的功能,可塑性高,实用性好,有很好的实际意义。

程序设计要求:本程序要求改变数据结构,每个用户的数据库中要增加现金数成员。

要求增加股票交易系统的接口设计:a. Add New Stock( ) 增加新的股票;b. Delete Old Stock( ) 删除旧的股票;c. Hang Up Stock( ) 挂起股票,停止交易;d. Modify Stock (Stock []) 修改股票的名称代码。

要求的以上的修改都要输入密码,在输入正确的密码之后才能够进入数据库进行修改。

将股票数据的处理由数组变成链表,可以处理多只股票的交易,链表一交易代码的序号进行排序。

程序功能介绍:股票交易系统是一个小型的管理程序,在这个系统里,可以管理至多5只股票的交易。

首先用户要注册,注册完后方可登陆。

在登陆的界面中,管理员登陆后可以删减股票,挂起股票,解挂股票等等,通过这些功能来管理股票。

同时,用户还可以查看股票情况,帮助自己进行股票的有效交易。

股票的市场情况可根据用户的使用情况而随之变化。

程序完成过程:1、粗读程序第一遍看程序时,发现程序太长了,只是对整个程序有一个大致的了解。

程序的主要功能是实现用户对股票操作系统的自主可视操作,本完成用户和股票数据的存储,实现反复操作。

程序主要通过类来完成功能,涉及到数组及输入输出流的使用。

在主函数中调用类中方法,实现页面中的转换,对数据进行处理。

一开始有一点畏难情绪。

2、细读程序以下对程序中类及其函数进行分析Stock类:存放股票数据,类中方法对股票进行各项操作。

V oid Hang Up Stock( ) ;//挂起股票void Un Hang Stock();//解挂股票void Modify Stock(Stock []);//修改股票void Delete Stock();//删除股票void Interface();//选择面板void Stock Exchange Market();//显示信息void Switch choice();//选择服务void Input For New Stock();//加入新股票void Market Analysis();//市场分析void Save(Stock[]);//保存修改Customer类:存放用户信息,类中方法对用户进行各项操作。

Customer();//对用户初始化void Log in(char *, char *,Customer) const;//登录void Register(Customer *);//注册void Stock Portfolio(Customer) const; // Portfolio--有价证券程序功能为对用户的指令进行处理,模拟股市的操作,完成对股票和对用户的修改及存档。

在认清设计方向的基础上,反复细读程序,我分析了Stock和Customer类下数据与成员函数的功能。

程序反复声明了Stock和Customer类的同一对象,浪费了系统资源;在一些函数调用中也存在缺陷,比如存在Input_For_New_Stock()方法,但是只有在第一次使用是才会调用,Customer类中原有Switch_function()也没有调用。

在用户选择登录时,无法辨别用户名,只根据密码进行登录,当遇到密码相同的用户时,就分不清楚用户。

密码是显示输入的不能有效的受到保护。

由于这是个小程序,数据通过数组存储,而不是通过指针,这使程序方便易懂,但限制了数据的空间,无法达到指针链表所能实现的不定长度存储。

但是从现阶段的使用来看指针链表的形式过于麻烦反而会造成程序过度的复杂。

现对系统进行操作分析:首先进入界面,进行用户识别,在这里用户可以查看市场信息、注册新用户、登录用户和分析股票。

然后若登录,显示下一股票操作界面,选其他有相应操作。

在股票操作界面中,有买入、卖出、添加新股票、挂出股票,恢复交易、删除已有股、挂起股票,停止交易、修改代码及名称、查看等操作选择,用户可根据提示,完成相应操作。

其中添加新股票、挂出股票,恢复交易、删除已有股、挂起股票,停止交易、修改代码及名称操作只对管理员开放。

3、修改程序首先,将重复声明的Stock和Customer类对象删除,使用Stock类的全局对象temp和share[MAX]及Customer类的全局对象cust来实现数据的反复读取和存储,并修改因此引起的变动(如将Customer类中的char share holding name [30] 改为char share holding name[5][30];char share holding code[5] 改为char share holding code[5][5]等)。

在类中方法中涉及到查询处添加打印股票清单细明项目:(for(i=0;i<MAX;++i){share[i].Stock Exchange_Market();})。

修改已存在的Input For New Stock(),使其可在空位置存储新股票信息。

在理清了思路和对原来的源程序的分析思考,我对程序有了更为全面的了解,对所要添补或改进的程序有了大致的思路。

然后对原程序一遍又一遍的阅读,不断地改进思路,调整想法。

分析出的程序流程如下:程序创新:1.在程序设计要求外我添加了Un_Hang_Stock()——解挂股票,恢复交易。

先对股票数据进行读取,显示股票信息。

然后调用Un_Hang_Stock(),提示输入要解挂的股票代码,同样考虑到输入流读取时会出现的一些错误,如输入回车,输入错误代码等,我加入了一些代码,从而解决这些异常。

最后,存储修改后的信息。

2.加入股票发行价、上市价和帐户总资产、余额、市值等数据,并进行计算、输出等操作,加强系统功能,使系统更实用、逼真。

编程心得:通过本课题,我复习了类和数组,更好的掌握了类间函数调用的关系以及如何实现类间复杂的相关调用。

同时,我学习了输入输出流的使用,懂得了如何从特定的地址读取数据,如何正确将信息存储到特定的位置。

此外,在调试的过程中我还碰到了一些问题,运行时经常出现一些意料之外的输出或无法输出预想的结果,症结在于没有合理的使用break、getch()、cin.get()等一些编程课本上未学过的函数。

最后,通过翻阅资料与上机实践终于解决了这些问题。

通过阅读本课题的程序,我掌握了一些阅读程序的技巧,培养了认真阅读程序的好习惯,并能够从较长的程序中找到程序的核心实现部分。

此次课程设计让我借此契机加深领悟了C++的内涵,让我对编程有了实质性的了解和大致掌握,在不断思考与上机调试的过程中,培养自己的耐心,也培养了自己的意志。

最终,终于完成了课程设计的任务。

关键源代码及注解(修改后的代码用下划线标示)/* 股票交易系统--源代码及关键源代码注解如下:*/#include <iostream.h>#include <stdlib.h>#include <string.h>#include <conio.h>#include <fstream.h>#include <iomanip.h>#include <time.h>#define MAX 5int i=0,j=0,Hang,flag;int num_of_stock;int gushu;class Customer;class Stock{private:float faxing,shangshi;//股票发行价,上市价char stock_name[20];//股票名称char stock_code[6];//股票代码char choice;//Interface()下选择int hang;//是否挂起(1为是,0为否)long int stock_volume;//股票总股数long int volume_available;//股票可流通量public:Stock();void Hang_Up_Stock();//挂起股票void Un_Hang_Stock();//解挂股票void Modify_Stock(Stock []);//修改股票void Delete_Stock();//删除股票void Interface();//选择面板void Stock_Exchange_Market();//显示信息void Switch_choice();//选择服务void Input_For_New_Stock();//加入新股票void Market_Analysis();//市场分析void Save(Stock[]);//保存修改friend class Customer;};class Customer{friend class Stock;private:int gly;//是否管理员char customer_name[30];//用户名char password[10];//密码char share_holding_name[5][30];//持有股票名称char share_holding_code[5][5];//持有股票代码long int share_holding_value[5];//持有股票数量double money,shzh,zzch;//现金余额,市值,总资产public:Customer();void Log_in(char *) const;//登录void Register(Customer *);//注册void Stock_Portfolio() const; // Portfolio--有价证券};Stock temp,share[MAX];//全局变量,声明股票对象Customer cust;//声明用户对象,全局变量//Customer构造Customer::Customer(){strcpy(Customer::customer_name,"");for(i=0;i<MAX;i++){strcpy(Customer::share_holding_name[i],"");strcpy(Customer::share_holding_code[i],"");share_holding_value[i]=0;money=shzh=zzch=0;}}void Customer::Log_in(char *pass_word) const{if(strcmp(pass_word,password)==0)//核对密码Stock_Portfolio();else{cout<<endl;cout<<"密码错误..."<<endl;}}void Customer::Register(Customer *cust){char ch;system("cls"); //执行系统命令:清屏=clscin.get();cout<<"欢迎进入 ************* 股票交易系统***********"<<endl;cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;cout<<"输入用户名: ";cin.getline(customer_name,30);cout<<"输入您的密码(少于 8 字): "<<endl;{char ch;int i=0;cout.flush();ch=getch();while(ch!=13){password[i++]=ch;cout<<'*';cout.flush();ch=getch();}password[i]=0;}cout<<endl;cout<<"输入您的资金:";cin>>zzch;shzh=0;money=zzch;cout<<"是否设为管理员?(y/n)"<<endl;cin>>ch;if(ch=='y'||ch=='Y'){gly=1;cout<<"已设置...";}else if(ch=='n'||ch=='N')gly=0;elsecout<<"默认为非管理员...";getch();system("cls");cout<<endl<<endl;cout<<"注册成功..."<<endl;cout<<"按任意键返回..."<<endl;getch();}void Customer::Stock_Portfolio() const//用户交易操作系统{int i,a;char ch,share_code[6],str[20];long int volume;start:system("cls");cout<<endl<<endl;cout<<"\t\t\t 欢迎使用!!!!!"<<endl;cout<<"\t\t************* 股票交易系统***********"<<endl;cout<<"\t\t-----------------------------------------"<<endl;cout<<"\t\t 用户: "<<cust.customer_name<<endl<<endl;cout<<"\t\t 买入..........................[1]"<<endl;cout<<"\t\t 卖出..........................[2]"<<endl;cout<<"\t\t 添加新股票....................[3]"<<endl;cout<<"\t\t 挂出股票,恢复交易.............[4]"<<endl;cout<<"\t\t 删除已有股....................[5]"<<endl;cout<<"\t\t 挂起股票,停止交易.............[6]"<<endl;cout<<"\t\t 修改代码及名称................[7]"<<endl;cout<<"\t\t 查看..........................[8]"<<endl;cout<<"\t\t 退出..........................[0]"<<endl;cout<<endl<<"\t\t 输入您的选择: ";cin>>ch;if((ch!='1')&&(ch!='2')&&(ch!='3')&&(ch!='4')&&(ch!='5')&&(ch!='6')&&(ch!='7') &&(ch!='8')&&(ch!='0'))goto start;else{switch(ch){case '3':{ //加入新股票if(cust.gly==1){for(i=0;i<MAX;i++){if(strcmp(share[i].stock_name,"")==0)//在股票数据空处添加新的内容{share[i].Input_For_New_Stock();temp.Save(share);//写数据getch();goto start;}}}else{cout<<"您无权添加股票!"<<endl;getch();break;}}case '5':{ //删除股票if(cust.gly==1){system("cls");cout<<"\n\n\t\t************* 股票交易系统**********"<<endl;cout<<"\t\t-----------------------------------------"<<endl;cout<<" 公司\t\t代码 \t流通股 \t可动股 \t发行价 \t上市价"<<endl;for(i=0;i<MAX;++i){share[i].Stock_Exchange_Market();}cin.get();temp.Delete_Stock();cin.get();break;}else{cout<<"您无权删除股票!"<<endl;getch();break;}}case '4':{ //解挂股票if(cust.gly==1){system("cls");cout<<"\n\n\t\t*********** 股票交易系统***********"<<endl;cout<<"\t\t-----------------------------------------"<<endl;cout<<" 公司\t\t代码 \t流通股 \t可动股 \t发行价 \t上市价"<<endl;for(i=0;i<MAX;++i){share[i].Stock_Exchange_Market();}cin.get();temp.Un_Hang_Stock();break;}else{cout<<"您无权恢复股票!"<<endl;getch();break;}}case '6':{ //挂起股票if(cust.gly==1){system("cls");cout<<"\n\n\t\t*********** 股票交易系统***********"<<endl;cout<<"\t\t-------------------------------------------"<<endl;cout<<" 公司\t\t代码 \t流通股 \t可动股 \t发行价 \t上市价"<<endl;for(i=0;i<MAX;++i){share[i].Stock_Exchange_Market();}cin.get();temp.Hang_Up_Stock();//进行break;}else{cout<<"您无权挂起股票!"<<endl;getch();break;}}case '7':{//修改股票if(cust.gly==1){system("cls");cout<<"\n\n\t\t************ 股票交易系统**********"<<endl;cout<<"\t\t------------------------------------------"<<endl;cout<<" 公司\t\t代码 \t流通股 \t可动股 \t发行价 \t上市价"<<endl;for(i=0;i<MAX;++i){share[i].Stock_Exchange_Market();}cin.get();temp.Modify_Stock(share);break;}else{cout<<"您无权挂起股票!"<<endl;getch();break;}}case '1':{//买入system("cls");cout<<"\n\n\t\t************* 股票交易系统**********"<<endl;cout<<"\t\t----------------------------------------------"<<endl;cout<<" 公司\t\t代码 \t流通股\t可动股 \t发行价上市价状态"<<endl;for(i=0;i<MAX;++i){share[i].Stock_Exchange_Market();//显示市场信息}cout<<"\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;cout<<" 持有股票市值\t可用资金\t总资产"<<endl;cout<<cust.shzh<<"\t\t"<<cust.money<<"\t\t"<<cust.zzch<<endl;cin.get();cout<<endl<<"输入您要购买的股票代码:";cin.getline(share_code,6);if(strcmp(share_code,"")!=0)//当输入回车时报错{i=0;flag=0;while((i<MAX)&&(!flag)){if (strcmp(share[i].stock_code,share_code)==0){if(share[i].hang==1){cout<<"股票已挂起,停止交易!"<<endl;break;}else{gushu=int(cust.money/share[i].shangshi);cout<<"您最多可购买:"<<gushu<<endl;flag=1;cout<<"输入购买量: ";cin>>volume;a=cin.rdstate();while(a)//判断输入是否为整数{cin.clear();cin.getline(str,20);cout<<"非法输入,请重新输入一整数."<<endl;cin>>volume;a=cin.rdstate();}if(share[i].volume_available>=volume&&cust.money>=volume*share[i].shangshi) {//改动各数据cust.share_holding_value[i]=cust.share_holding_value[i]+volume;strncpy(cust.share_holding_name[i],share[i].stock_name,30);strcpy(cust.share_holding_code[i],share[i].stock_code);share[i].volume_available=share[i].volume_available-volume;cust.money-=share[i].shangshi*volume;cust.shzh+=share[i].shangshi*volume;system("cls");cout<<"交易成功!"<<endl;cout<<endl;cout<<"\t\t************* 股票交易系统************"<<endl;cout<<"\t\t------------------------------------------"<<endl;cout<<" 公司\t\t代码 \t流通股\t可动股 \t发行价上市价状态"<<endl;for(i=0;i<MAX;i++){cout<<" "<<share[i].stock_name<<"\t"<<share[i].stock_code<<"\t"<<share[i].stock_volume<<"\t"<<cust.share_holding_value[i]<<"\t"<<share[i].faxing<<"\t "<<share[i].shangshi<<"\t "<<(share[i].hang==0?"未挂起":"已挂起")<<endl;}cout<<" 持有股票市值\t可用资金\t总资产"<<endl;cout<<cust.shzh<<"\t\t"<<cust.money<<"\t\t"<<cust.zzch<<endl;cin.get();ofstream dataFile (cust.customer_name,ios::binary);dataFile.write((char*)(&cust),sizeof(cust));temp.Save(share);}elseif(share[i].volume_available<=volume){cout<<share[i].stock_name<<"的可购股量少于您所要。

相关文档
最新文档