《C++画图软件课程设计实验报告.docx》由会员分享,可在线阅读,更多相关《C++画图软件课程设计实验报告.docx(12页珍藏版)》请在第一文库网上搜索。
1、c+画图软件课程设计实验报告第一篇:C+画图软件课程设计实验报告C+实验报告面向对象程序设计实验报告课程:学院:班级:姓名:学号:课题名称:起止时间:教师:面向对象程序设计电子信息学院计算机科学与技术画图软件2018.5.3-2018.6.1C+实验报告1程序功能介绍:通过多种成员函数的定义和函数的重载与不同类的灵活应用,实现画图操作,如:具有鼠标拖动画图功能,左键按下开始画图,移动鼠标改变图形,右键按下取消绘制图形,且单独右键按下绘制背景色圆以擦去图形,左键抬起结束画图;具有设置不同线宽功能;具有设置不同颜色功能;至少实现矩形、圆、椭圆、直线这几种图形的功能;具有绘制实心和空心图形的功能;要
2、求采用抽象类作为所有图形类的基等,所有功能已经通过验证。2 .课程设计要求(1)具有鼠标拖动画图功能,左键按下开始画图,移动鼠标改变图形,右键按下取消绘制图形,左键抬起结束画图;(2)具有设置不同线宽功能;(3)具有设置不同颜色功能;(4)至少实现矩形、圆、椭圆、直线这几种图形的功能;(4)具有绘制实心和空心图形的功能;(5)要求采用抽象类作为所有图形类的基3 .对课程题目的分析与注释4 ,建矩形类,圆类,椭圆类,直线类;5 .用不同的f1ag分别用作:表示形状,判断鼠标位置,颜色。6 .程序设计思路和说明7 .课程设计中遇到的问题及解决方法(1)画出图形有重影;原因:f1ag识别鼠标左键按下
3、状态,在程序中持续默认左键按下状态;修改前鼠标程序:caseWM_1BUTT。NDoWN:左键按下;e.x=m.x;1C+实验报告e.y=mye.f1ag=!e.f1ag;开始画图或者停止画图break;解决方法:(2) ,向右画圆总会进入左侧项目区域原因:鼠标进入图标框区域f1ag记为零,向右拖动不会识别为零解决方案:讲画圆函数设置半径的if函数,一旦识别到左侧进入图标框即f1ag为O;1 .课程设计结果(最终运行程序截图)2 .还存在的不足之处3 .对课程设计的感想和心得体会在题目刚发下来时,我觉得题目很难,自己绝对不会做的,可是后来在书上找了对应的内容看了看,发现程序这座堡垒其实不是多么
4、的不可攻破,只要愿意花时间,这些都不是问题。还有一点,一个好的编程习惯会对你的改错和检查有很大的帮助,比如在某些行后面加上注释,这样有利于自己对应的找。做数学题目时是一环一环相扣的,其逻辑性就是一条线,而编c+时,其逻辑就像一个神经细胞,而每一个细胞有好多主突触(函数)和细胞(主函数)相连,每一个主突触又可以连很多其他突触,形成一个大枝节,而每个大支节又可以连接很多突触。所以每个程序就是通过主函数连接在一起的整体。程序就是有函数构成的。第二篇:C+课程设计实验报告(范文)C+课程设计报告设计题目:学院:专业班级:学生姓名:学生学号:指导教师:计算机技术与科学3班樊冠男40912140马军亮提交
5、时间:2011/1/12成绩:目录C+课程设计报告第一章引言C+课程设计报告第二章概要设计C+课程设计报告第三章软件实现C+课程设计报告第四章结果与讨论第三篇:C+实验报告姓名:XX学院:XXX班级:XXX学号:XXXi+;whi1e(i=10);cout#inc1udeusingnamespacestd;voidmain()inti(1)zsum(0);for(i;i=10J+)(sum+=i;)coutusingnamespacestd;constf1oatpi=3.1416;voidmain()intitype;coutusingnamespaceStdjstructriqiintyea
6、r;intmon;intday;inthour;intminut;intsecond;voidmain()riqia;couta.year;cout2;fib(1)=fib(2)=1o使用if语句判断函数的出口,在程序中用cout语句输出提示信息。程序名:Iab3_5.cpp。7)调试操作步骤如下:选择菜单命令BuiIdIStartDebugStepIn,系统进入单步执行状态,程序开始运行,并出现一个DOS窗口,此时光标停在main()函数的入口处。把光标移到语句answer=fib(n)前,从Debug菜单单击RunToCursor,在程序运行的DOS窗口中按提示输入数字10,这时回到可视界
7、面中,光标停在第11行,观察一下n的值。从Debug菜单中单击StepInto,程序进入fib函数,观察一下n的值,把光标移到语句return(fib(n-2)+fib(n-1)前z从Debug菜单单击RuntoCursor,再单击StepInto,程序递归调用fib函数,又进入fib函数,观察n的值。继续执行程序,参照上述的方法,观察程序的执行顺序,加深对函数调用和递归调用的理解。再试试Debug菜单栏中的别的菜单项,熟悉Debug的各种方法。4、实验原理C+中函数的重载使得同样的函数名下,只要参数类型、数目不同时,即可根据输入的数据进行相应的函数调用,使用起来简单方便。5、思考与体会C+中
8、,函数的运用与之前学过的C语言既有相同之处,也有着不同的地方。相同的地方在于格式、用法等框架上的不变。但是C语言中对于同样的函数名是只能够申明一种函数的,倘若有相同的函数名出现系统即会报错,所以用起来有时是极为不便O参数为两个双精度浮点形的函数intmax1(doub1eazdoub1eb)a=ab?a:b;returna;参数为三个双精度浮点形的函数intmax1(doub1eazdoub1ebzdoub1ec)a=ab?a:b;a=ac?a:c;returna;voidmain(void)inta;doub1ebja=max1(1z2)coutb?a:b;returna;intmax1(i
9、ntazintbjntc)a=ab?a:b;a=ac?a:c;returna;intmain()inti,j,k;CoUt2131415pub1ic:Rankrank;intfrequency;f1oatvo1tage;CPU(Rankrzintfj1oatv)构造函数coutrank=r;frequency=f;vo1tage=v;)voidru()coutvoidstop()coutcoutcoutcout);intmain()CPUcpu(p5z5002000)jcpu.run()jcpu.show()jcpu.stop();return0;1ab4_2#inc1udeusingname
10、spacestd;enumRankp1=1,p2,p3,p4,p5,p6,p7;CPU类c1assCPUpub1ic:析构函数-17computer(Rankrzintfzf1oatv)CPUcpu(rjzv);定义CPU对象RAMram(1);定义RAM对象CDROMcdrom(1);定义CDROM对象cpu.run();cpu.show();cpu.stop(););intmai()computercom(p4z300z3000);return0;)实验七、继承与派生(一、二)4学时1实验目的:学习定义和使用类的继承关系,定义派生类。熟悉不同继承方式下对基类成员的访问控制。学习利用虚基类解
11、决二义性问题2、实验任务a)定义一个基类AnimaI,有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge(intn)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗?编程试试看。b)定义一个基类BaseCIass,有整型成员变量Number,构造其派生类DerivedCIass,观察构造函数和析构函数的执行情况。C)定义一个车(VehiCIe)基类,具有MaXSPeed、Weight等成员变量,Run、Stop等成员函数,由此派生出自行车(bicyc1e)类、汽车(motorcar)类。自行车类有高度(height)等属性,汽车类有座位数(Sea
12、tNUm)等属性。从bicyc1e和motorcar派生出摩托车(motorcyc1e)类,在继承过程中,注意把vehic1e设置为虚基类。如果不把vehic1e设置为虚基类,会有什么问题?编程试试看。3、实验步骤编写程序定义基类AnimaI,成员变量age定义为私有的。构造派生类dog,在其成员函数SetAge(intn)中直接对age赋值时,会出现类似以下的错误提示:errorC2248:agexannotaccessprivatememberdec1aredinc1asszAnimaerrorC2248age,:cannotaccessprivatememberdec1aredinc1a
13、sszAnima把age改为公有成员变量后重新编译就可以了。程序名为:Iab7_1.cpp0确方便我们编程。6、部分参考代码1ab7_1*inc1udeusingnamespacestd;c1assAnima1pub1ic:intage;c1assdog:pub1icAnima1pub1ic:intSetAge(intn)age=n;returnage;voidmain(void)intage;dogd;age=d.SetAge(3);cout1ab7_2#inc1udeusingnamespacestd;c1assBaseC1asspub1ic:intNumber;BaseC1ass()co
14、utcout/Motorcyc1e继承bicyc1e和motorcar类c1assmotorcyc1e:pub1icbicyc1efpub1icmotorcarpub1ic:motorcyc1e(intseatzdoub1eHzdoub1eMSzdoub1eW)SeatNum=Seat;height=H;MaxSpeed=MS;Weight=W;)voidshow()coutcoutcoutcoutintmain()motorcyc1eche(3z30.33z90.84,500)jche.show()jreturn0;)实验八、多态性2学时1实验目的:掌握运算符重载的方法习使用虚函数实现动态多态性。2、实验任务a)定义Point类,有坐标x,y两个成员变量;对Point类重载+、-运算符,实现对坐标值的改变。定义一个车(Vehide)基类z有Run、Stop等成员