C++小型股票交易系统的设计及代码_第1页
C++小型股票交易系统的设计及代码_第2页
C++小型股票交易系统的设计及代码_第3页
C++小型股票交易系统的设计及代码_第4页
C++小型股票交易系统的设计及代码_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、VC+课程设计股票交易系统设计程序名称:股票交易系统DODD:A级选择这个程序,我主要考虑到以下方面的原因:本程序难度较大,在编写程序的过程当中可以更加深刻地理解VC+当中的相关知识点,可以更好地通过实践了解编程的内涵。该课题所涉及到的内容和实际生活联系比较紧密,所以编写此程序意义较大。该课题是管理系统方面的小型程序,这类程序可以不断地扩充新的内容新的功能,可塑性高,实用性好,有很好的实际意义。程序设计要求:本程序要求改变数据结构,每个用户的数据库中要增加现金数成员。要求增加股票交易系统的接口设计:a.AddNewStock()增加新的股票;b.DeleteOldStock()删除旧的股票;c

2、.HangUpStock()挂起股票,停止交易;d.ModifyStock(Stock)修改股票的名称代码。要求的以上的修改都要输入密码,在输入正确的密码之后才能够进入数据库进行修改。将股票数据的处理由数组变成链表,可以处理多只股票的交易,链表一交易代码的序号进行排序。程序功能介绍:股票交易系统是一个小型的管理程序,在这个系统里,可以管理至多5只股票的交易。首先用户要注册,注册完后方可登陆。在登陆的界面中,管理员登陆后可以删减股票,挂起股票,解挂股票等等,通过这些功能来管理股票。同时,用户还可以查看股票情况,帮助自己进行股票的有效交易。股票的市场情况可根据用户的使用情况而随之变化。程序完成过程

3、:1、粗读程序第一遍看程序时,发现程序太长了,只是对整个程序有一个大致的了解。程序的主要功能是实现用户对股票操作系统的自主可视操作,本完成用户和股票数据的存储,实现反复操作。程序主要通过类来完成功能,涉及到数组及输入输出流的使用。在主函数中调用类中方法,实现页面中的转换,对数据进行处理。一开始有一点畏难情绪。2、细读程序以下对程序中类及其函数进行分析Stock类:存放股票数据,类中方法对股票进行各项操作。VoidHangUpStock();/挂起股票voidUnHangStock();解挂股票voidModifyStock(Stock);/修改股票voidDeleteStock();删除股票v

4、oidInterface。;/选择面板voidStockExchangeMarket。;/显示信息voidSwitchchoice。;/选择服务voidInputForNewStock();加入新股票voidMarketAnalysis。;/市场分析voidSave(Stock);保存修改Customer类:存放用户信息,类中方法对用户进行各项操作。Customer。;/对用户初始化voidLogin(char*,char*,Customer)const;/登录voidRegister(Customer*);/注册voidStockPortfolio(Customer)const;/Portf

5、olio-有价证券程序功能为对用户的指令进行处理,在认清设计方向的基础上,数的功能。程序反复声明了用中也存在缺陷,比如存在模拟股市的操作,完成对股票和对用户的修改及存档。ODDDOO,我分析了Stock和Customer类下数据与成员函Stock和Customer类的同一对象,浪费了系统资源;在一些函数调Input_For_New_Stock()方法,但是只有在第一次使用是才会调用,Customer类中原有Switch_function()也没有调用。在用户选择登录时,无法辨别用户名,只根据密码进行登录,当遇到密码相同的用户时,就分不清楚用户。密码是显示输入的不能有效的受到保护。由于这是个小程

6、序,数据通过数组存储,而不是通过指针,这使程序方便易懂,但限制了数据的空间,无法达到指针链表所能实现的不定长度存储。但是从现阶段的使用来看指针链表的形式过于麻烦反而会造成程序过度的复杂。现对系统进行操作分析:首先进入界面,进行用户识别,在这里用户可以查看市场信息、注册新用户、登录用户和分析股票。然后若登录,显示下一股票操作界面,选其他有相应操作。在股票操作界面中,有买入、卖出、添加新股票、挂出股票,恢复交易、删除已有股、挂起股票停止交易、修改代码及名称、查看等操作选择,用户可根据提示,完成相应操作。其中添加新股票、挂出股票,恢复交易、删除已有股、挂起股票,停止交易、修改代码及名称操作只对管理员

7、开放。3、修改程序首先,将重复声明的Stock和Customer类对象删除,使用Stock类的全局对象temp和shareMAX及Customer类的全局对象cust来实现数据的反复读取和存储,并修改因此引起的变动(如将Customer类中的charshareholdingname30改为charshareholdingname530;charshareholdingcode5改为charshareholdingcode55等)。在类中方法中涉及到查询处添加打印股票清单细明项目:(for(i=0;iMAX;+i)。修改已存在的sharei.StockExchange_Market();Inpu

8、tForNewStock(),使其可在空位置存储新股票信息。在理清了思路和对原来的源程序的分析思考,我对程序有了更为全面的了解,对所要添补调整想法。或改进的程序有了大致的思路。然后对原程序一遍又一遍的阅读,不断地改进思路,调整想法。分析出的程序流程如下:对于新的函数的增加完成情况:新增加的函数完成的情况(1)Input_For_New_Stock()添加新股票先对股票数据进行读取,显示股票信息,提示输入股票代码,考虑到输入流读取时会出现的一些错误,如输入回车,输入错误代码等,我对程序加入了一些代码,从而解决这些异常。然后调用Input_For_New_Stock(),提示输入股票的名称、代码、

9、流通股数量、发行价,同时随机生成股票上市价。最后,在Stock_File.dat的空位置插入存储新股票信息。(1)Delete_Stock()删除旧股票先对股票数据进行读取,显示股票信息。然后调用Delete_Stock(),提示输入要删除的股票代码,同样考虑到输入流读取时会出现的一些错误,如输入回车,输入错误代码等,我加入了一些代码,从而解决这些异常。最后,存储修改后的信息。Hang_Up_Stock()挂起股票,停止交易先对股票数据进行读取,显示股票信息。然后调用Hang_Up_Stock(),提示输入要挂起的股票代码,同样考虑到输入流读取时会出现的一些错误,如输入回车,输入错误代码等,我

10、加入了一些代码,从而解决这些异常。最后,存储修改后的信息。Modify_Stock()修改股票的名称、代码先对股票数据进行读取,显示股票信息。然后调用Modify_Stock(),提示输入要修改的股票代码,同样考虑到输入流读取时会出现的一些错误,如输入回车,输入错误代码等,我加入了一些代码,从而解决这些异常。最后,存储修改后的信息。修改后的结果存入Stock_File.dat。通过stock成员函数Saved)来实现此要求。程序创新:在程序设计要求外我添加了Un_Hang_Stock()解挂股票,恢复交易。先对股票数据进行读取,显示股票信息。然后调用Un_Hang_Stock(),提示输入要解

11、挂的股票代码,同样考虑到输入流读取时会出现的一些错误,如输入回车,输入错误代码等,我加入了一些代码,从而解决这些异常。最后,存储修改后的信息。加入股票发行价、上市价和帐户总资产、余额、市值等数据,并进行计算、输出等操作,加强系统功能,使系统更实用、逼真。编程心得:通过本课题,我复习了类和数组,更好的掌握了类间函数调用的关系以及如何实现类间复杂的相关调用。同时,我学习了输入输出流的使用,懂得了如何从特定的地址读取数据,如何正确将信息存储到特定的位置。此外,在调试的过程中我还碰到了一些问题,运行时经常出现一些意料之外的输出或无法输出预想的结果,症结在于没有合理的使用break、getch()、ci

12、n.get()等一些编程课本上未学过的函数。最后,通过翻阅资料与上机实践终于解决了这些问题。通过阅读本课题的程序,我掌握了一些阅读程序的技巧,培养了认真阅读程序的好习惯,并能够从较长的程序中找到程序的核心实现部分。此次课程设计让我借此契机加深领悟了C+的内涵,让我对编程有了实质性的了解和大致掌握,在不断思考与上机调试的过程中,培养自己的耐心,也培养了自己的意志。最终,终于完成了课程设计的任务。关键源代码及注解(修改后的代码用下划线标示)/*股票交易系统-源代码及关键源代码注解如下:*/#include#include#include#include#include#include#includ

13、e#defineMAX5inti=0,j=0,Hang,flag;intnum_of_stock;intgushu;classCustomer;classStockprivate:floatfaxing,shangshi;/股票发行价,上市价charstock_name20;/股票名称charstock_code6;/股票代码charchoice;/Interface()下选择inthang;/是否挂起(1DO,0为否)longintstock_volume;/股票总股数longintvolume_available;/股票可流通量public:Stock();voidHang_Up_Stoc

14、k();/挂起股票voidUn_Hang_Stock();/解挂股票voidModify_Stock(Stock);/修改股票voidDelete_Stock();/删除股票voidInterface();/选择面板voidStock_Exchange_Market();/显示信息voidSwitch_choice();/选择服务voidInput_For_New_Stock();/加入新股票voidMarket_Analysis。;/市场分析voidSave(Stock);/保存修改friendclassCustomer;classCustomerfriendclassStock;priva

15、te:intgly;/是否管理员charcustomer_name30;/用户名charpassword10;/密码charshare_holding_name530;/持有股票名称charshare_holding_code55;/持有股票代码longintshare_holding_value5;/持有股票数量doublemoney,shzh,zzch;/现金余额,市值,总资产public:Customer();voidLog_in(char*)const;/登录voidRegister(Customer*);/注册voidStock_Portfolio()const;/Portfolio

16、-有价证券;Stocktemp,shareMAX;/全局变量,声明股票对象Customercust;/声明用户对象,全局变量/Customer构造Customer:Customer()strcpy(Customer:customer_name,);for(i=0;iMAX;i+)strcpy(Customer:share_holding_namei,);strcpy(Customer:share_holding_codei,);share_holding_valuei=0;money=shzh=zzch=0;voidCustomer:Log_in(char*pass_word)constif(

17、strcmp(pass_word,password)=0)/核对密码Stock_Portfolio();elsecoutzzch;shzh=0;money=zzch;coutd否设为管理员?(y/n)endl;cinch;if(ch=y|ch=Y)gly=1;cout已设置.;elseif(ch=n|ch=N)gly=0;elsecout默认为非管理员.;getch();system(cls);coutendlendl;cout注册成功.endl;cout按任意键返回.endl;getch();voidCustomer:Stock_Portfolio()const/用户交易操作系统inti,a

18、;charch,share_code6,str20;longintvolume;start:system(cls);coutendlendl;coutttt欢迎使用!endl;couttt*股票交易系统*endl;coutttendl;couttt用户:cust.customer_nameendlendl;couttt买入1endl;couttt卖出2endl;couttt添加新股票3endl;couttt挂出股票,恢复交易4endl;couttt删除已有股5endl;couttt挂起股票,停止交易6endl;couttt修改代码及名称7endl;couttt查看8endl;couttt退出0

19、endl;coutendltt输入您的选择:;cinch;if(ch!=1)&(ch!=2)&(ch!=3)&(ch!=4)&(ch!=5)&(ch!=6)&(ch!=7)&(ch!=8)&(ch!=0)gotostart;elseswitch(ch)case3:/加入新股票if(cust.gly=1)for(i=0;iMAX;i+)if(strcmp(sharei.stock_name,)=0)/在股票数据空处添加新的内容sharei.Input_For_New_Stock();temp.Save(share);/写数据getch();gotostart;elsecout您无权添加股票!en

20、dl;getch();break;case5:/删除股票if(cust.gly=1)system(cls);coutnntt*股票交易系统*endl;coutttendl;cout公司tt代码t流通股t可动股t发行价t上市价endl;for(i=0;iMAX;+i)sharei.Stock_Exchange_Market();cin.get();temp.Delete_Stock();cin.get();break;elsecout您无权删除股票!endl;getch();break;case4:/解挂股票if(cust.gly=1)system(cls);coutnntt*股票交易系统*en

21、dl;coutttendl;cout公司tt代码t流通股t可动股t发行价t上市价endl;for(i=0;iMAX;+i)sharei.Stock_Exchange_Market();cin.get();temp.Un_Hang_Stock();break;elsecout您无权恢复股票!endl;getch();break;case6:/挂起股票if(cust.gly=1)system(cls);coutnntt*股票交易系统*endl;coutttendl;cout公司tt代码t流通股t可动股t发行价t上市价endl;for(i=0;iMAX;+i)sharei.Stock_Exchang

22、e_Market();cin.get();temp.Hang_Up_Stock();/进行break;elsecout您无权挂起股票!endl;getch();break;case7:/修改股票if(cust.gly=1)system(cls);coutnntt*股票交易系统*endl;coutttendl;cout公司tt代码t流通股t可动股t发行价t上市价endl;for(i=0;ivolume;a=cin.rdstate();while(a)/判断输入是否为整数cin.clear();cin.getline(str,20);cout非法输入,请重新输入一整数.endl;cinvolume

23、;a=cin.rdstate();if(sharei.volume_available=volume&cust.money=volume*sharei.shangshi)/改动各数据cust.share_holding_valuei=cust.share_holding_valuei+volume;strncpy(cust.share_holding_namei,sharei.stock_name,30);strcpy(cust.share_holding_codei,sharei.stock_code);sharei.volume_available=sharei.volume_availa

24、ble-volume;cust.money-=sharei.shangshi*volume;cust.shzh+=sharei.shangshi*volume;system(cls);coutd易成功!endl;coutendl;couttt*股票交易系统*endl;coutttendl;cout公司tt代码t流通股t可动股t发行价上市价状态endl;for(i=0;iMAX;i+)coutsharei.stock_nametsharei.stock_codetsharei.stock_volumetcust.share_holding_valueitsharei.faxingtsharei.

25、shangshit(sharei.hang=O?未挂起:已挂起)endl;cout持有股票市值t可用资金t总资产endl;coutcust.shzhttcust.moneyttcust.zzchendl;cin.get();ofstreamdataFile(cust.customer_name,ios:binary);dataFile.write(char*)(&cust),sizeof(cust);temp.Save(share);elseif(sharei.volume_available=volume)coutsharei.stock_name的可购股量少于您所要。;coutendl;c

26、out退出.;coutendl;getch();system(cls);gotostart;elseif(cust.money=volume*sharei.shangshi)cout资金不足!;cout退出.;coutendl;getch();system(cls);gotostart;elsei+;while(i=MAX)system(cls);cout您所输入代码错误.endl;cout退出.endl;gotostart;elsecoutendlCI入错误!;cin.get();break;case2:/卖出股票system(cls);couttt*股票交易系统*endl;couttten

27、dl;cout公司tt代码t流通股t可动股t发行价上市价状态endl;for(i=0;iMAX;i+)coutsharei.stock_nametsharei.stock_codetsharei.stock_volumetcust.share_holding_valueitsharei.faxingtsharei.shangshivolume;a=cin.rdstate();while(a)cin.clear();cin.getline(str,20);cout非法输入,重新输入一整数.endl;cinvolume;a=cin.rdstate();if(cust.share_holding_v

28、aluei=volume)cust.share_holding_valuei=cust.share_holding_valuei-volume;sharei.volume_available=sharei.volume_available+volume;cust.money+=sharei.shangshi*volume;cust.shzh-=sharei.shangshi*volume;system(cls);coutd易成功!endl;coutendl;couttt*股票交易系统*endl;coutttendl;cout公司tt代码t流通股t可动股t发行价上市价状态endl;for(i=0

29、;iMAX;i+)coutsharei.stock_nametsharei.stock_codetsharei.stock_volumetcust.share_holding_valueitsharei.faxingtsharei.shangshit(sharei.hang=O?未挂起:已挂起)endl;cout持有股票市值t可用资金t总资产endl;coutcust.shzhttcust.moneyttcust.zzchendl;ofstreamdata(cust.customer_name,ios:binary);data.write(char*)(&cust),sizeof(cust);

30、temp.Save(share);elsecout您没有足够股票可卖,;cout或您没有购买此股。按任意键返回endl;cout按任意键返回.endl;getch();break;cin.get();elsei+;while(i=MAX)system(cls);cout您没有购买该股或您输入错误。endl;cout退出.;getch();gotostart;elsecoutendlCI入错误!;cin.get();break;case8:/查看信息system(cls);couttt*股票交易系统*endl;coutttendl;cout公司tt代码t流通股t可动股t发行价上市价状态endl;

31、for(inti=0;iMAX;i+)coutsharei.stock_nametsharei.stock_codetsharei.stock_volumetcust.share_holding_valueitsharei.faxingtsharei.shangshichoice;if(choice!=1)&(choice!=2)&(choice!=3)&(choice!=0)system(cls);temp.Interface();elseSwitch_choice();voidStock:Switch_choice()charpass_word10;switch(choice)case1:

32、/进入股票交易市场system(cls);coutnntt*股票交易市场*endl;coutttcust.customer_name;cin.get();ifstreamread_customer(cust.customer_name);/读已有数据while(!read_customer.eof()/判断是否有记录read_customer.read(char*)(&cust),sizeof(cust);if(read_customer.fail()coutendl;coutd有记录!endl;getch();temp.Interface();elsecout用户密码:;charch;int

33、i=0;coutd入密码:endl;cout.flush();ch=getch();while(ch!=13)pass_wordi+=ch;coutstock_volume;cout输入发行价:;cinfaxing;cin.get();volume_available=stock_volume;num_of_stock+;srand(time(NULL);/随机生成股票上市价shangshi=(rand()%3+1)*faxing+rand()%1000/10;voidStock:Stock_Exchange_Market()coutstock_nametstock_codetstock_vo

34、lumetvolume_availabletfaxingtshangshit(hang=0?未挂起:已挂起)endl;voidStock:Hang_Up_Stock()/挂起股票charshare_code6,ch;cout输入您要挂起的股票代码:;cin.getline(share_code,6);i=0;flag=0;if(strcmp(share_code,)!=0)/当输入回车时报错while(iMAX)&(!flag)if(strcmp(sharei.stock_code,share_code)=0)flag=1;cout确定(y/n);cinch;if(ch=y)sharei.ha

35、ng=1;temp.Save(share);cout已挂起.endl;coutendl;break;elseif(ch=n)cout取消!endl;elsecout错误!endl;elsei+;if(i=MAX)cout您输入的代码错误!endl;break;getch();voidStock:Un_Hang_Stock()/解挂股票charshare_code6,ch;cout输入您要恢复的股票代码:;cin.getline(share_code,6);i=0;flag=0;while(!flag)&(iMAX)if(strcmp(sharei.stock_code,share_code)=

36、0)flag=1;cout确定(y/n);cinch;if(ch=y)sharei.hang=0;temp.Save(share);cout已恢复.endl;coutendl;break;elseif(ch=n)coutd消!endl;elsecout错误!endl;elsei+;if(i=MAX)cout您输入的代码错误!endl;break;getch();voidStock:Delete_Stock()charch,share_code6;cout输入删除股票代码:;cin.getline(share_code,6);i=0;flag=0;if(strcmp(share_code,)!=0)/当输入回车时报错while(iMAX)&(!flag)if(strcmp(sharei.stock_code,share_code)=0)flag=1;cout确定(y/n);cinch;if(ch=y)cust.money+=sharei.shangshi*cust.share_holding_valuei;cust.shzh-=sharei.shangshi*cust.share_holding_valuei;cust.s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论