logo资料库

股票交易系统Word版.doc

第1页 / 共32页
第2页 / 共32页
第3页 / 共32页
第4页 / 共32页
第5页 / 共32页
第6页 / 共32页
第7页 / 共32页
第8页 / 共32页
资料共32页,剩余部分请下载后查看
C++课程设计报告
C++课程设计报告 设计程序名称:股票交易系统 难易级别:A 级 选择这个程序,我主要考虑到以下方面的原因: 1、本程序难度较大,在编写程序的过程当中可以更加深刻地理解 C++当中的相 关知识点,可以更好地通过实践了解编程的内涵。 2、该课题所涉及到的内容和实际生活联系比较紧密,所以编写此程序意义较大。 3、该课题是管理系统方面的小型程序,这类程序可以不断地扩充新的内容新的 功能,可塑性高,实用性好,有很好的实际意义。 程序设计要求: 1、修改数据结构,增加现金成员,每只股票增加牌价。每个用户的数据库中同 样也增加现金数目的成员。 2、增加股票教育系统的接口程序。包括四个方面,对于以上的修改均须输入密 码,如输入密码正确后才能进入数据库进行修改。结果均存入 Stock_File.dat 中。 3、将股票数据的处理由数组改为链表,可以处理多只股票的交易,链表以交易 代码的序号进行排序。 4、增加用户数据系统的接口程序,包括修改用户名密码等,包括不能透支等。 程序完成过程: 在程序设计的过程中,我具体是这么做的: 1、粗读程序
2、细读程序 以下对程序中类及其函数进行分析 CStock 类:存放股票数据、节点、链表,类中方法对股票进行各项操作。 /***********************股票数据类***************************/ class CStock //股票数据类 { private: char stock_name[20]; //股票名称 char stock_code[6]; //股票代码 long int stock_volume; //股票总数 long int volume_available; //可购买股票数 int nHangup; //是否挂起, n 为 1 时挂起 double dlPrice; //股票的价格(新增) public: CStock(); //构造函数 CStock(char *code); //用股票代码初始化数据 CStock(char *name,char *code,int volume,double price); //初始化数 据 void SetStock(char *name,char *code,int volume,double price); //数 据赋值 int Compare(CStock &); //根据代码比较大小 int ComparePrice(CStock &); //根据价钱比较大小
void Show(); //显示股票信息 char *GetName(){return stock_name;} //返回股票的名称 double GetPrice(){return dlPrice;} //返回股票的价格,买卖之前判断是否 能进行交易 int GetHangup(){return nHangup;} //返回是否挂起 int GetVolume(){return volume_available;} void SubStockModify(int nNum);//购买股票时,市场该股可交易数减少 void AddStockModify(int nNum);//卖出股票时,市场该股可交易数增加 void Modify(int); /*******************股票结点***************************/ class StockNode //定义股票结点类 { private: CStock *pData; //用于指向数据类的指针 StockNode *pNext; //指向链表的下一个结点的指针 public: StockNode (){pData=0;pNext=0;} //结点构造函数 StockNode(StockNode &node) //用于拷贝的构造函数 { pData=node.pData; pNext=node.pNext; } void InputData(CStock *pdata){pData=pdata;} //输入数据
void ShowNode(){pData->Show();} CStock *GetData(){return pData;} /*返回股票数据类指针,可以调用数 据类的公有成员函数*/ friend class StockList; //定义链表类为友元类 }; /****************股票链表******************************/ class StockList { protected: StockNode *pHead; public: StockList(){pHead=0;} ~StockList(){DeleteList();} void AddNode(StockNode *pnode); //在首部添加结点 StockNode *DeleteNode(StockNode *); //删除一发指定的结点,返回 该结点的指针 StockNode *LookUp(CStock &); /*查找一个指定的数据,返回该数据所 在结点在链表中的指针,若未找到返回()*/ void ShowList(); //打印 void DeleteList(); //删除 StockNode *GetListHead(){return pHead;} // 返回链表首结点
StockNode *GetListNextNode(StockNode *); //返回链表指定结点的 下一个结点 void Insert(StockNode *pnode);//插入节点,按照价钱排序 }; CCust 类:存放用户信息,类中方法对用户进行各项操作。 /*****************用户数据***************************/ class CCust { private: char stock_name[20]; char stock_code[10]; int volume; public: CCust(); CCust(char *code); CCust(char *name,char *code,int nNum); void SetCust(char *name,char *code,int nNum); int Compare(CCust &);//比较股票代码,排序用 void Show();//显示用户购买股票的资料 void AddCustModify(int nNum); //购买股票,用户持有股数增加 void SubCustModify(int nNum); //卖出股票, 用户持有股票减少
int GetVolume(){return volume;} //当前拥有的股票数,卖出时首先判断 输入的数目是否合理 }; /******************用户结点**************************/ class CustNode { private: CCust *pData;//用于指向数据类的指针 CustNode *pNext;//指向链表的后向指针 public: CustNode(){pData=0;pNext=0;}//结点构造函数 CustNode(CustNode &node) { pData=node.pData; pNext=node.pNext; }//用于拷贝的构造函数 void InputData(CCust *pdata){pData=pdata;}//输入数据 void ShowNode(){pData->Show();} CCust *GetData(){return pData;} friend class CustList;//定义链表类为友元类 };
/**************************CustList*********************/ class CustList//定义用户链表类 { protected: CustNode *pHead;//链表头结点指针 public: CustList(){pHead=0;} ~CustList(){DeleteList();} void AddNode(CustNode *);//在首部添加结点 CustNode *DeleteNode(CustNode *);//删除一个指定的结点,返回该结 点的指针 CustNode *LookUp(CCust &);//查找一个指定的数据,返回该数据所在结 点在链表中的指针,若未找到返回 0 void ShowList();//打印整个链表 void DeleteList();//删除整个链表 CustNode *GetListHead(){return pHead;}//链表首结点 CustNode *GetListNextNode(CustNode *);//返回链表指定结点的下一 个结点 void Insert(CustNode *pnode);//以代码的顺序排列链表 Customer::LoadFile()//读取用户股票信息
{ if(this->custlist.GetListHead())this->custlist.DeleteList();// 清 空 原 来 存 有的顾客信息 CCust *p1; CustNode *p2; ifstream dataFile(this->custtable.Name); //打开用户资料文件 while(!dataFile.eof()){ p1=new CCust; dataFile.read((char*)(p1),sizeof(*p1)); if(dataFile.gcount()!=sizeof(*p1)){delete p1;break;}//若读取的数据 长度和文件长度不同,则退出该程序 void Customer::SaveFile()//保存用户股票信息 登陆函数 1 是否有记录 2 核对用户、密 码 用户类 注册函数 用户交易函数 1 输入用户名 2 输入密码 3 输入注册现金 1 购买股票 2 卖出股票 3 显示用户股票记录 4 显示股票市场情况 5 更改用户名及密码 编 写 各 功 能 函 数 两 类 中 的 函 数相互调用
分享到:
收藏