下载此beplayapp体育下载

C++课程设计.pdf


beplayapp体育下载分类:办公beplayapp体育下载 | 页数:约16页 举报非法beplayapp体育下载有奖
1 / 16
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该beplayapp体育下载所得收入归上传者、原创者。
  • 3.下载的beplayapp体育下载,不会出现我们的网址水印。
1 / 16 下载此beplayapp体育下载
beplayapp体育下载列表 beplayapp体育下载介绍
该【C++课程设计 】是由【小屁孩】上传分享,beplayapp体育下载一共【16】页,该beplayapp体育下载可以免费在线阅读,需要了解更多关于【C++课程设计 】的内容,可以使用beplayapp体育下载的站内搜索功能,选择自己适合的beplayapp体育下载,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此beplayapp体育下载到您的设备,方便您编辑和打印。:..VisualC++课程设计报告:..:股票交易系统(-1),可以管理多个股票,输入这些股票的名称、代码、总股数、可交易的股数以及状态,并且可不断添加新股票,但这些只能由管理员操作(输入密码正确方可)。用户先注册再登录(以后可应需要修改用户信息),然后可以买卖股票,股票交易市场的可交易股数随用户买卖股数的情况而变化。(-1、-2的所有功能)。)修改数据结构,增加现金成员,每支股票增加牌价。每个用的数据库中同样也增加现金数目的成员。2)增加股票交易系统的接口设计:()增加新的股票;()删除旧的股票;()挂起股票,停止交易;(Stock[])修改股票的名称代码。要求的以上的修改都要输入密码,在输入正确的密码之后才能够进入数据库进行修改。3)增加用户数据系统的接口程序,新增设计:、用户密码等基本成员;,增加现金的增减功能,须合乎用户的现金要求,即不能透支金额;:..,要先看看用户数据库中是否有此人,不能有一个人同时拥有两个账户。4)把股票数据\用户交易的数据处理由数组变成链表,可以处理多只股票的交易,链表以交易代码的序号进行排序。难度评定等级:A级。(1)题目分析——由大到小、各个击破1)程序的菜单结构本程序涉及市场和用户两个部分,有多个操作界面,所以首先须确定程序运行的总体框架,各级菜单的联系。根据课题要求,经过分析,设计出以下程序结构图。购买股票下显示股票记录卖出股票级菜显示用户股票记录用户注册单显示市场股票记录主菜单用户登录更改用户名及密码返回上一级进入管理系统添加股票记录显示股票记录退出系统下根据代码查询股票级菜根据代码删除股票单修改股票数据返回上一级:..2)菜单结构在程序中的体现本程序采用面向对象的程序设计方法,由于股票操作涉及市场和用户两个部分,顾分别设计出股票类(Stock)和用户类(Customer)用来封装市场和用户两部分的操作。将主菜单放在股票类的Interface()函数中,可以通过开关语句进行主菜单的操作。当输入管理员密码进入管理系统后,则进入下级菜单运行,下级菜单放在股票类的Switch()函数中,同样可通过开关语句进行各项操作。当选择用户登录后可调用用户类的成员函数Log_in,用户名密码正确则进入用户界面的下级菜单,此菜单放在用户类的Stock_Portfolio(Customercusttemp)函数中,也是通过开关语句进行各项用户操作。进一步分析课题要求,结合股票市场实际情况,理清思路,设计出了股票类(Stock)和用户类(Customer)所封装的程序功能图。新建股票市场函数显示股票记录、用户主菜单界面函数注册、登录、进入管股票类理界面、退出程序主菜单操作选择函数管理界面函数添加、显示、查询、两类中删除、更改股票记录函数的相互调用户注册函数用用户登录函数用户类买进、卖出股票、显示用户、市场股票记用户操作界面函数录、更改用户名和密码:..3)菜单功能的实现为了能实现程序中的各种功能,最为基本的便是要做好股票交易中的数据处理,课题要求用链表来处理数据。于是在市场部分增加了股票数据类(CStock)、股票节点类(CStockNode)和股票链表类(CStockList)来存放市场部分的股票数据,并在各类中封装了基本的操作函数,以实现菜单功能;相应的用户部分增加了用户资料列表(CustTable)、ust)、ustNode)和用户链ustList)来存放用户的各种数据并封装了功能函数。这样便可通过消息的传递来驱动整个程序的运行。这一块市场和用户两部分的数据结构非常相似,这里所采用的数据结构式将两部分分开搭建,虽然在结构上先得烦琐,但概念上清晰易懂,比较适合我这样的程序初学者。而另一种用一个类的两个对象来代替两个类的结构,很容易混淆不同类型的数据,概念上不甚明晰,所以选择了前者。(2)代码编写——周全考虑、重点突击前面通过对课题的深入分析,程序的设计思路已经明了,整体框架业已构建,接下来要做的便是加固关键部位、为框架添砖加瓦。1)类的设计要完成程序代码的编写,首先要把程序的蓝图规划好,在此程序中也就是要先设计好所涉及的股票数据类(CStock)类、股票节点类(CStockNode)、股票链表类(CStockList)、ust)、用户节ustNode)、ustList)、股票类(Stock)和用户类(Customer)等8个类,将相应的成员数据与函数进行封装到各个类中,:..之后根据所需功能往其中添加相应的函数语句。(具体类的设计蓝图请见源程序,在此不一一列举)。2)文件处理在整个股票市场的交易中需要各种数据的读写,这就涉及到复杂的文件操作,经过认真思考分析结合课题要求主要使用了三种文件:股票市场资料文件"",主要存放市场上所管理的股票的目前交易情况;用户名与密码文件"",存储用户注册的用户名及密码;用户买卖股票数据文件,用具体的用户名作为文件名,存放用户买卖股票的名称、代码、数量。三种文件均采用二进制文件,用程序读写,可起到保密作用。考虑到程序中多处涉及文件读写,于是在股票类(Stock)和用户类(Customer)中均封装了LoadFile()和SaveFile()函数专门用来对股票市场资料文件和用户买卖股票数据文件的读写操作,免去了重复编写代码的麻烦。在读文件时采用了while(!())的循环确保整个文件被全部读出,每次打开文件进行了读写操作后,都关闭文件,并进行了更新保存。文件操作在此程序是个难点,加上以前并没有对文件操作深入学****过,编写时花了不少时间查找资料请教他人,最终将其攻克。3)指针、链表、字符串数据结构由数组改为链表,不可避免的将出现许多指针操作,指针是C++学****的重点与难点,尤其对于初学者来说还没有形成明确的指针概念,所以在使用时难免显得力不从心。本程序中链表的形成、函数间数据的传递都涉及大量的指针。股票链表类(CStockList)(由于:..两部分结构相似,这里仅以市场部分为例)成员数据CStockNode*m_pHead,股票节点类(CStockNode)成员数据CStock*m_pData;CStockNode*m_pNext,这里都是通过类的指针来搭建链表,通过CStock类的指针*m_pData来引用股票数据,且在各类中又封装了删除、修改、得到得到数据等不同功能的指针函数,(cstock))->GetData()->Show()的多重引用便很常见,要能够熟练应用这些指针,首先要有明确的指针概念,其次要非常清楚链表的结构。另一方面便是空间的申请与释放,在CStockList类中定义了析构函数~CStockList(){DeleteList();}用来释放新建对象所占的空间。程序中有许多字符串的处理,股票名称、代码、用户名、密码都是字符串,在构造函数、赋值函数中大量使用到字符串处理函数。需要熟悉各字符串处理函数的功能。例如字符串比较函数strcmp(),当两字符相等时返回0,不等式根据比较字符串的大小返回一个正整数或负整数。在编写程序时误认为此函数的返回值是0或1,以致在比较两支股票代码的大小时错写成了returnstrcmp(m_stock_code,);导致程序在运行时出错,经检查发现问题后将此语句改为return(!strcmp(m_stock_code,)?1:0);还有字符串以\0结尾也很容易遗忘,在输入密码的函数中因为漏加\0导致输入无法结束。:..(3)调试优化—联系实际、友好界面为了使程序有更加友好的界面,更强的使用性,在完成了程序基本功能的编写调试后,联系现实情况对程序界面进行了修改,主要美化了股票交易界面、增加了输入错误提示、输入密码时显示星号等功能。1)输入错误提示在新增股票是需要输入股数及每股的价格,其类型分别为整型和双精度型,当输入字符或其他错误类型时便会出错。为了解决这一问题,增加了判断是否非法输入函数InputNum(longint&num)作为全局函数,并重载为InputNum(double&num)。当输入类型错误时便提示重新输入。使程序更为友好。2)密码输入显示星号我们看到日常生活中我们在输入密码时屏幕上显示的都是*号,从而有效保护了账户信息。为了实现这一功能增强程序的实用性,增加了全局函数voidInputCode(char*Password)利用getch()函数接收输入{inti=0;charch;的字符,();ch=getch();不需输入缓冲区保存,直接进while(ch!='\r'){入内存,让后便用'*'替换这个Password[i++]=ch;cout<<'*';字符。();能便实现了。ch=getch();}Password[i]='\0';cout<>num;while(!cin){//判断输入是否正确charstr[20];();//(str,20);//接收原输入数据cout<<"\t\t您的输入有误,请输入整数:";cin>>num;//重新输入}}voidInputNum(double&num)//函数重载,判断输入是否为双精度型{cin>>num;while(!cin){charstr[20];();(str,20);cout<<"\t\t您的输入有误,请输入数字:";cin>>num;}}:..)不能准确返回菜单程序中几乎所有的操作都是在各级菜单上完成的,所以当一项操作完成则必须返回菜单。在switch开关语句的各个分支中有些又嵌套着多重选择或循环语句,要在执行完各项操作中准确退回菜单先得比较困难。起先我使用break语句跳出选择或循环,但发现很多地方并不能如程序设计所需要的那样准确跳出,而是出现程序终止运行或本在下级菜单上运行的程序跳回到了主菜单。这种情况下,我选择了另一种跳出语句goto,goto语句用起来很是方便,这个问题在goto语句下很快解决。对于break语句的使用方法会在今后的学****过程中逐渐补上。2)文件的读写程序中共有股票市场资料""、用户名与密码""、用户买卖股票数据三种文件。均为二进制文件,只能由程序进行读写。由于C++学****时文件操作并没有作为重点学****所以在此次课程设计中先得尤为棘手。我首先找来C++书本,了解文件的打开、读写、关闭等操作。之后便开始文件操作代码的编写,起先我是将文件读写函数代码加在需要的地方,这样造成操作程序段很长很混乱,而且在编译时出现很多错误,又不容易修改。后来经过与同伴的讨论在高年级学长的指导下,将文件操作函数LoadFile()、SaveFile()作为成员函数封装在股票类(Stock)中,在需要时通过对象调用,这样使程序简单明了了许多,也有利于调试。:..函数代码如下:voidStock::LoadFile()//读取股票信息{if(this->())this->();CStock*p1;CStockNode*p2;ifstreamdataFile("");//(!())//判断输入文件是否结束{p1=newCStock;((char*)(p1),sizeof(*p1));//读取文件数据至p1if(()!=sizeof(*p1))//gcount()统计read函数读到的字符数{deletep1;break;}//判断是否读取正确p2=newCStockNode;p2->InputData(p1);(p2);}();//关闭文件}voidStock::SaveFile()//保存股票信息{CStock*p1;CStockNode*p2=this->();ofstreamdataFile("");//(p2){p1=p2->GetData();p2=this->(p2);((char*)(p1),sizeof(*p1));//以二进制形式输出数据至磁盘文件}();//关闭文件})课程设计中存在的缺陷a)密码输入:..虽然函数中增加了全局函数InputCode(),但其功能只是在输入密码时屏幕上显示星号。对于密码输入的数据类型或对于键入特殊的键做出相应反应并没有作规定,例如在输入密码时不小心输错,想用Backspace键取消时,程序却误将其当做密码一并输入。曾试图改进这个缺陷,但在设计过程中出现了另一个问题,就是如何将已经显示的星号从屏幕上消除,查阅了一些资料,但均没有关于这方面编程的介绍。这一问题我想会在今后的深入学****中进一步思考以解决。b),由于本程序涉及到得类比较多整个程序相对较大,在一个文件中显得比较乱不易于阅读与修改,而且在程序设计之初增加了调试的难度。在设计完本程序后我觉得可以将各个类放在不同的文件中,。再设计一个系统类(CSystem),在主函数通过它的对象来初始化股票市场。文件包含有利于程序的读写与修改,在调试时也有利于发现问题。我会在此课程设计之后用文件包含的方式重做课题,我想这会进一步加深对C++的理解,对以后的编程学****也是有很大用处的。2)学****体会a)进一步了解了VC++通过此次VC++课程设计,我加深了对类、链表、字符串、数组等知识的理解,更好的掌握了类间函数调用的关系以及如何实现类间复杂的相关调用。同时,我学****了输入输出流的使用、文件的读写。:..对getch()、flush()、clear()、ignore()、gcount()、eof()、system("cls")等函数的使用有了一定的了解。此外,在调试的过程中碰到了一些问题,运行时经常出现异常输出或没有实现设计中的输出情况,而症结便在于break、getch()、()的使用不当。最后,通过翻阅资料请教学长与不断地上机调试终于解决了这些问题。b)面向对象的程序设计方法此次课程设计是用面向对象的编程语言来写的,而且涉及到的类和对象也比较多。主要了解了面向对象的封装性和消息的传递。对面向对象以对象为中心、消息为驱动的特点有了一定的了解。在程序运行中通过创建对象来调用函数,再通过消息的传递达到对象间的通信,推动程序运行。这些有助于从结构化编程思维的逐渐转至面向对象。为MFC编程的学****奠定基础。c)熟悉VC++,逐渐具备了耐心阅读较长程序的能力与技巧,在不断地调试过程中,进一步熟悉了VC++,掌握了一些编写调试技巧,如自动列表功、设置断点单步跟踪等功能。为以后深入的编程学****打下了基础。这是自学****C++以来第一次编写一个系统的程序,设计过程中我使用了由大到小的编程思想,在编写这样较长较复杂的程序先从大处着手即分析程序构架,绘出程序蓝图后再进行编写。自我觉得这样的思路是比较合适的。程序的编写少不了细心与耐心,一个标点都能导致整个程序不能运行,这次课题设计使我在不断思考与调试的过程:..中,培养了耐心,锻炼了意志,最终完成了课题设计。注:?股票交易系统课题由市场和用户两部分组成,此程序由我与同学合作完成,我主要负责市场部分的程序编写。顾在课程设计报告中侧重对市场部分的设计分析。2009年9月

C++课程设计 来自beplayapp体育下载www.apt-nc.com转载请标明出处.

相关beplayapp体育下载 更多>>
非法内容举报中心
beplayapp体育下载信息
  • 页数16
  • 收藏数0收藏
  • 顶次数0
  • 上传人小屁孩
  • 文件大小574 KB
  • 时间2023-11-30
最近更新