您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > C++程序综合实训报告
[键入文字][键入文字]C++实训报告VisualC++与面向对象的程序设计专业:自动化2013级姓名:学号:[键入文字][键入文字]目录一、序言二、windows编程三、文档/视图结构四、图形设备接口和资源五、对话框六、实训感想[键入文字][键入文字]一、序言为期两星期的C++实训已经基本结束,但是给我的影响是相当大的。通过这次实训,使我明白C++这门课程光仅仅是听课是远远不够的,上机训练也不容忽视。通过上机训练,才能够明白自己知识的不足,才能够有的放矢,更加深刻的理解C++中的知识点。通过实训,我找到了许多知识漏点,学到了很多以前不懂的知识,以前认为自己已经懂了的知识点也理解更加深刻了。尤其是遇到了自己当时不知道如何编写的C++题目如何编写,通过自己的学习和同同学的交流后,试编和改错,最后能够顺利的编写出来,带来的也有成就感。并增加了我们对C++的兴趣和学好C++的信心。与同学们交流的过程中,了解了程序的多种解决方法,知道了不同编写方法有不同的特点。总结C++实训的几个重要作用。1.加深对课堂讲授内容的理解课堂上要讲授许多关于C++的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。然而要使用C++这个工具解决实际问题,又必须掌握它。在理解的基础上就会自然而然地掌握C++的语法规定。对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差。学习C++不能停留在学习它的语法规则,而是利用学到的知识编写C++程序,解决实际问题。即把C++作为工具,描述解决实际问题的步骤,由计算机帮助我们解题。只有通过上机才能检验自己是否掌握C++、自己编写的程序是否能够正确地解题。自己编好程序上机调试运行时,可能有很多你想不到的情况发生,通过解决这些问题,可以逐步提高自己对C++的理解和程序开发能力。2.熟悉程序开发环境、学习计算机系统的操作方法一个C++程序从编辑、编译、连接到运行,都要在一定的外部操作环境下才能进行。所谓环境就是所用的计算机系统硬件、软件条件,只有学会使用这些环境,才能进行程序开发工作。通过上机实验,熟练地掌握C++开发环境,为以后真正编写计算机程序解决实际问题打下基础。同时,在今后遇到其它开发环境时就会触类旁通,很快掌握新系统的使用。3.学习上机调试程序完成程序的编写,决不意味着万事大吉。你认为万无一失的程序,实际上机运行时可能不断出现麻烦。如编译程序检测出一大堆错误。有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。通过这次为数不多的几天计算机实践学习,我们更好的了解了一些关于C++的知识,理解巩固了我们C++的理论知识。C++这门课程对于我们应用电子专业的同学也相当重要,我们会再将来继续学习并熟悉这门课程。通过这次实训,也使我们发现了许多问题。在实训中,我们认识到自己还有很多的知识没学好,基础知识没理清,而且许多东西还要去翻书,去上网搜索。而且遇到一些小错误运行不出来,就会烦躁不安,觉得有些自暴自弃或者抱怨项目的变态,以后要克服,尽量保持一颗良好的心态,学好C++,也学好用C++编写一个按要求的系统。还有就是对于未来,近程就是下学期,我觉得我还有许多方面需要提高。首先我要继续学习好C++的基础知识,然后能在电脑上熟练的运用。然后每天都能写一些程序,上网时候多看一些优秀的教程和优秀的代码。遇到问题时多和同学讨论,并且多弄出几套方案,多锻炼自己结局问题的能力和与同学合作的能力。[键入文字][键入文字]二、初步认识和理解windows编程MicrosoftWindows是广泛应用于计算机操作系统,具有图形用户和多任务、多窗口特点。Windows编程使用事件驱动的程序设计思想。在事件驱动的程序结构中,程序的控制流不在由事件的预定发生顺序来决定。而是由实际运行时各种事件的实际发生来触发。使用事件驱动原理的程序如下图所示。鼠标消息其他消息Windows应用程序消息来源有以下4种:1.输入消息:包括键盘和鼠标的输入。这类消息首先放在系统消息队列中,然后由Windows将他们送入应用程序消息队列中,由应用程序来处理消息。2.控制消息:用来与Windows的控制对象(列表框、按钮、检查框等)进行双向通信。3.系统消息:对程序化的事件或系统时钟中断做出反应。4.用户消息:程序员自己定义并在应用程序中主动发出的,由应用程序内部处理。MFC编程是Windows编程的一种。而MFC编程中类可以分为两种:CObject类的派生类以及非CObject派生类。典型的windows应用程序结构有以下4种:1.控制台应用程序:该类应用程序简单,可以不使用MFCl类库。2.基于框架窗口的应用程序:在此类应用程序中。主程序为框架窗口。CFrameWnd派生类附属于应用程序的CWinApp派生类对象的m_pMainWnd成员。3.基于对话框的应用程序:基于对话框的应用程序与基于框架窗口的应用程序差别不大,只是用CDialog派生类对象代替了CFrameWnd派生类对象作为应用程序的主窗口。4.基于文档/视图结构的应用程序:文档/视图应用程序有较为复杂的结构。通过程序10-2来认识MFC编程。一、程序作用:在客户区显示一个简单的折线图。二、程序主体:1:在OnDraw()函数中加入voidCMy10_2View::OnDraw(CDC*pDC){CMy10_2Doc*pDoc=GetDocument();ASSERT_VALID(pDoc);//TODO:adddrawcodefornativedatahereconstintxOrg=50;constintyOrg=350;constintxMax=700;Windows消息队列应用程序取消息键盘消息处理消息[键入文字][键入文字]constintyMin=20;pDC-MoveTo(xOrg,yOrg);pDC-LineTo(xMax,yOrg);pDC-MoveTo(xOrg,yOrg);pDC-LineTo(xOrg,yMin);//画折线pDC-MoveTo(101,320);pDC-LineTo(168,280);pDC-LineTo(182,100);pDC-LineTo(200,200);pDC-LineTo(320,330);pDC-LineTo(500,210);pDC-LineTo(520,180);pDC-LineTo(550,143);pDC-LineTo(586,88);pDC-LineTo(612,45);//轴标题intx=(xMax-xOrg)/2;inty=yOrg+10;pDC-TextOut(x,y,Force);x=xOrg-20;y=(yOrg-yMin)/2;pDC-TextOut(x,y,D);y+=15;pDC-TextOut(x,y,i);y+=15;pDC-TextOut(x,y,p);}三、程序流程:程序开始用moveTo()函数将绘图位置移到起始点处调用LineTo()函数画出一条直线显示出折线[键入文字][键入文字]四:运行结果:通过程序10-4进一步体会MFC编程。一、程序作用:利用折线,近似的画出sin(x)的曲线二、程序主体1:在CMyView.cpp的头部添加代码,以便在程序中使用sin(x)函数//10_4View.cpp:implementationoftheCMy10_4Viewclass//#includestdafx.h#include10_4.h#include10_4Doc.h#include10_4View.h#includeMath.h#ifdef_DEBUG#definenewDEBUG_NEW2:在OnDraw()函数中加入如下代码voidCMy10_4View::OnDraw(CDC*pDC){CMy10_4Doc*pDoc=GetDocument();ASSERT_VALID(pDoc);//TODO:adddrawcodefornativedatahere//划线constdoublePI=3.14159265359;constdoubledbYMax=1.0;constdoubledbYMin=-1.0;constdoubledbXMin=0.0;constdoubledbXMax=2*PI;constintiPt=200;constintxOrg=50;[键入文字][键入文字]constintyOrg=350;constintxMax=700;constintyMin=20;//换算数据doubledbXRatio=(xMax-xOrg)/(dbXMax-dbXMin);doubledbYRatio=(yOrg-yMin)/(dbYMax-dbYMin);intx=xOrg;inty=yOrg;pDC-MoveTo(x,y);for(inti=0;i=iPt;i++){x=(int)(dbXRatio*(dbXMax/iPt*i-dbXMin)+xOrg);y=(int)(yOrg-dbYRatio*(sin(dbXMax/iPt*i)-dbYMin));pDC-LineTo(x,y);}//画轴pDC-MoveTo(xOrg,yOrg);pDC-LineTo(xMax,yOrg);pDC-MoveTo(xOrg,yOrg);pDC-LineTo(xOrg,yMin);//轴标题x=(xMax-xOrg)/2;y=yOrg+10;pDC-TextOut(x,y,X);x=xOrg-20;y=(yOrg-yMin)/2;pDC-TextOut(x,y,Y);}三、程序流程:程序开始近似画出sin()曲线在CMyView.cpp的头部添加#includeMath.h在OnDraw()函数中加入代码[键入文字][键入文字]四、程序运行结果:通过利用画线MoveTo()和LineTO()成员函数来画轴和画折线,其中MoveTo()只需用一次来确定起点。Sin()曲线只需在折线的基础上加以改造便可得。Windows编程中很重要的就是编制消息处理函数,编制消息处理函数有时又被称作消息映射或捕获消息。有的消息实际上可以放在SDI的4个类中的任何一个类中,此时,消息在SDI各类中的传递过程为:视图类—文档类—框架类—应用程序类。如果前一个类中定义了消息处理函数则消息将不会再传递到后面的类中,具体应在哪个类中定义处理函数,有程序员根据需要而定使用MFC应用程序框架进行编程最简单就是单文档界面SDI。提供一个可运行的“空”程序,仅实现一些通用基本功能,其他功能由程序员去实现就是MFC的基本工作原理。理解应用程序框架的程序结构,尤其是能加入代码的地方并加入适当的代码,就是使用应用程序框架编程的第一步。换算数据并画出折线画轴写轴标题输出sin()曲线[键入文字][键入文字]三、文档/视图结构一、文档/视图的概念MFC对“文档”的设计思想是:一个类中的所有成员变量,都应该能够保存到一个文件中去,反之,也应该能从一个文件中读出来,加载到该类相应的成员变量中去。MFC对此的实现机制就是文档/视图的串行化(Serialize)。在MFC中,文档类负责管理数据,提供保存和加载数据的功能。视图类负责数据的显示,以及给用户提供对数据的编辑和修改功能。MFC给我们提供Document/View结构,将一个应用程序所需要的“数据处理与显示”的函数空壳都设计好了,这些函数都是虚函数,我们可以在派生类中重写这些函数。有关文件读写的操作在CDocument的Serialize函数中进行,有关数据和图形显示的操作在CView的OnDraw函数中进行。我们在其派生类中,只需要去关注Serialize和OnDraw函数就可以了,其它的细节我们不需要去理会,程序就可以良好地运行。当我们按下“打开文件”菜单项时,ApplicationFramework会激活文件
本文标题:C++程序综合实训报告
链接地址:https://www.777doc.com/doc-4613734 .html