C++画图软件课程设计实验报告_第1页
C++画图软件课程设计实验报告_第2页
C++画图软件课程设计实验报告_第3页
C++画图软件课程设计实验报告_第4页
C++画图软件课程设计实验报告_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

C++画图软件课程设计实验报告第一篇:C++画图软件课程设计实验报告C++实验报告面向对象程序设计实验报告课程:学院:班级:姓名:学号:课题名称:起止时间:教师:面向对象程序设计电子信息学院计算机科学与技术画图软件2018.5.3~2018.6.1C++实验报告1.程序功能介绍:通过多种成员函数的定义和函数的重载与不同类的灵活应用,实现画图操作,如:具有鼠标拖动画图功能,左键按下开始画图,移动鼠标改变图形,右键按下取消绘制图形,且单独右键按下绘制背景色圆以擦去图形,左键抬起结束画图;具有设置不同线宽功能;具有设置不同颜色功能;至少实现矩形、圆、椭圆、直线这几种图形的功能;具有绘制实心和空心图形的功能;要求采用抽象类作为所有图形类的基等,所有功能已经通过验证。2.课程设计要求(1)具有鼠标拖动画图功能,左键按下开始画图,移动鼠标改变图形,右键按下取消绘制图形,左键抬起结束画图;(2)具有设置不同线宽功能;(3)具有设置不同颜色功能;(4)至少实现矩形、圆、椭圆、直线这几种图形的功能;(4)具有绘制实心和空心图形的功能;(5)要求采用抽象类作为所有图形类的基3.对课程题目的分析与注释1.建矩形类,圆类,椭圆类,直线类;2.用不同的flag分别用作:表示形状,判断鼠标位置,颜色。4.程序设计思路和说明5.课程设计中遇到的问题及解决方法(1)画出图形有重影;原因:flag识别鼠标左键按下状态,在程序中持续默认左键按下状态;修改前鼠标程序:caseWM_LBUTTONDOWN://左键按下;e.x0=m.x;1C++实验报告e.y0=m.y;e.flag=!e.flag;//开始画图或者停止画图break;解决方法:(2).向右画圆总会进入左侧项目区域原因:鼠标进入图标框区域flag记为零,向右拖动不会识别为零解决方案:讲画圆函数设置半径的if函数,一旦识别到左侧进入图标框即flag为0;1.课程设计结果(最终运行程序截图)2.还存在的不足之处3.对课程设计的感想和心得体会在题目刚发下来时,我觉得题目很难,自己绝对不会做的,可是后来在书上找了对应的内容看了看,发现程序这座堡垒其实不是多么的不可攻破,只要愿意花时间,这些都不是问题。还有一点,一个好的编程习惯会对你的改错和检查有很大的帮助,比如在某些行后面加上注释,这样有利于自己一一对应的找。做数学题目时是一环一环相扣的,其逻辑性就是一条线,而编c++时,其逻辑就像一个神经细胞,而每一个细胞有好多主突触(函数)和细胞(主函数)相连,每一个主突触又可以连很多其他突触,形成一个大枝节,而每个大支节又可以连接很多突触。所以每个程序就是通过主函数连接在一起的整体。程序就是有函数构成的。第二篇:C++课程设计实验报告(范文)C++课程设计报告设计题目:学院:专业班级:学生姓名:学生学号:指导教师:计算机技术与科学3班樊冠男40912140马军亮提交时间:2011/1/12成绩:目录C++课程设计报告第一章引言C++课程设计报告第二章概要设计C++课程设计报告第三章软件实现C++课程设计报告第四章结果与讨论第三篇:C++实验报告姓名:XX学院:XXX班级:XXX学号:XXXi++;}while(i<=10);cout<#includeusingnamespacestd;voidmain(){inti(1),sum(0);for(i;i<=10,i++){sum+=i;}cout<usingnamespacestd;constfloatpi=3.1416;voidmain(){intitype;cout<usingnamespacestd;structriqi{intyear;intmon;intday;inthour;intminut;intsecond;};voidmain(){riqia;cout<>a.year;cout<实验三、函数的应用(2学时)1、实验目的:掌握函数的定义和调用方法。练习重载函数使用。练习函数模板的使用练习使用系统函数。在main()函数中提示输入两个整数x,y,使用cin语句得到x,y的值,调用pow(x,y)函数计算x的y次幂的结果,再显示出来。程序名:lab3_4.cpp。编写递归函数intfib(intn),在主程序中输入n的值,调用fib函数计算Fibonacci级数。公式为fib(n)=fib(n-1)+fib(n-2),n>2;fib(1)=fib(2)=1。使用if语句判断函数的出口,在程序中用cout语句输出提示信息。程序名:lab3_5.cpp。7)调试操作步骤如下:选择菜单命令Build|StartDebug|StepIn,系统进入单步执行状态,程序开始运行,并出现一个DOS窗口,此时光标停在main()函数的入口处。把光标移到语句answer=fib(n)前,从Debug菜单单击RunToCursor,在程序运行的DOS窗口中按提示输入数字10,这时回到可视界面中,光标停在第11行,观察一下n的值。从Debug菜单中单击StepInto,程序进入fib函数,观察一下n的值,把光标移到语句return(fib(n-2)+fib(n-1))前,从Debug菜单单击RuntoCursor,再单击StepInto,程序递归调用fib函数,又进入fib函数,观察n的值。继续执行程序,参照上述的方法,观察程序的执行顺序,加深对函数调用和递归调用的理解。再试试Debug菜单栏中的别的菜单项,熟悉Debug的各种方法。4、实验原理C++中函数的重载使得同样的函数名下,只要参数类型、数目不同时,即可根据输入的数据进行相应的函数调用,使用起来简单方便。5、思考与体会C++中,函数的运用与之前学过的C语言既有相同之处,也有着不同的地方。相同的地方在于格式、用法等框架上的不变。但是C语言中对于同样的函数名是只能够申明一种函数的,倘若有相同的函数名出现系统即会报错,所以用起来有时是极为不便0//参数为两个双精度浮点形的函数intmax1(doublea,doubleb){a=a>b?a:b;returna;}//参数为三个双精度浮点形的函数intmax1(doublea,doubleb,doublec){a=a>b?a:b;a=a>c?a:c;returna;}voidmain(void){inta;doubleb;a=max1(1,2);cout<Lab3_3:#includeusingnamespacestd;intmax1(inta,intb){a=a>b?a:b;returna;}intmax1(inta,intb,intc){a=a>b?a:b;a=a>c?a:c;returna;}intmain(){inti,j,k;cout<”<2131415public:Rankrank;intfrequency;floatvoltage;CPU(Rankr,intf,floatv){//构造函数cout<rank=r;frequency=f;voltage=v;}voidrun(){cout<}voidstop(){cout<cout<cout<cout<};intmain(){CPUcpu(p5,500,2000);cpu.run();cpu.show();cpu.stop();return0;}Lab4_2#includeusingnamespacestd;enumRank{p1=1,p2,p3,p4,p5,p6,p7};//CPU类classCPU{public://析构函数-17computer(Rankr,intf,floatv){CPUcpu(r,f,v);//定义CPU对象RAMram(1);//定义RAM对象CDROMcdrom(1);//定义CDROM对象cpu.run();cpu.show();cpu.stop();}};intmain(){computercom(p4,300,3000);return0;}实验七、继承与派生(一、二)4学时1、实验目的:学习定义和使用类的继承关系,定义派生类。熟悉不同继承方式下对基类成员的访问控制。学习利用虚基类解决二义性问题2、实验任务a)定义一个基类Animal,有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge(intn)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗?编程试试看。b)定义一个基类BaseClass,有整型成员变量Number,构造其派生类DerivedClass,观察构造函数和析构函数的执行情况。c)定义一个车(vehicle)基类,具有MaxSpeed、Weight等成员变量,Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类。自行车类有高度(height)等属性,汽车类有座位数(SeatNum)等属性。从bicycle和motorcar派生出摩托车(motorcycle)类,在继承过程中,注意把vehicle设置为虚基类。如果不把vehicle设置为虚基类,会有什么问题?编程试试看。3、实验步骤编写程序定义基类Animal,成员变量age定义为私有的。构造派生类dog,在其成员函数SetAge(intn)中直接对age赋值时,会出现类似以下的错误提示:errorC2248:’age’:cannotaccessprivatememberdeclaredinclass‘Animal’errorC2248:’age’:cannotaccessprivatememberdeclaredinclass‘Animal’把age改为公有成员变量后重新编译就可以了。程序名为:lab7_1.cpp0确方便我们编程。6、部分参考代码Lab7_1#includeusingnamespacestd;classAnimal{public:intage;};classdog:publicAnimal{public:intSetAge(intn){age=n;returnage;}};voidmain(void){intage;dogd;age=d.SetAge(3);cout<Lab7_2#includeusingnamespacestd;classBaseClass{public:intNumber;BaseClass(){cout<cout<//Motorcycle继承bicycle和motorcar类classmotorcycle:publicbicycle,publicmotorcar{public:motorcycle(intseat,doubleH,doubleMS,doubleW){SeatNum=seat;height=H;MaxSpeed=MS;Weight=W;}voidshow(){cout<cout<cout<cout<intmain(){motorcycleche(3,30.33,90.84,500);che.show();return0;}实验八、多态性2学时1、实验目的:掌握运算符重载的方法习使用虚函数实现动态多态性。2、实验任务a)定义Point类,有坐标x,y两个成员变量;对Point类重载“++”、“--”运算符,实现对坐标值的改变。定义一个车(vehicle)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。观察虚函的作用。3、实验步骤编写程序定义Point类,在类中定义整型的私有成员变量x,y,定义成员函数Point&operator++();Pointoperator++(int);以实现对Point类重载“++”运算符,定义成函数Point&operator–();Pointoperator也就是函数的重载。6、部分参考代码Lab8_1#includeusingnamespacestd;classPoint{public:Point(doublex=0.0,doubley=0.0):xray(x),yray(y){}Pointoperator++(int);Pointoperator--(int);voidshow();private:doublexray;doubleyray;};PointPoint::operator++(int){returnPoint(xray++,yray++);}PointPoint::operator--(int){returnPoint(xray--,yray--);}voidPoint::show(){cout<intmain(){Pointp(4.5,6.5);cout<show(&v);return0;}第四篇:c++课程设计总结课程设计总结经过一个学期对《C++程序设计》的学习,我学习到了基本的理论知识,了解到了C++语言程序设计的思想,这些知识都为我的课程实践和进一步的学习打下了坚实的基础。在为期近两周的C++课程设计中,我体会颇多,学到了很多东西。我加强了对C++程序设计这门课程的认识,并且复习了自己以前学习到的知识。这些都使得我对计算机语言的学习有了更深入的认识!总之,通过这次课程设计,我收获颇丰,相信会为自己以后的学习和工作带来很大的好处。像职工信息表这样的程序设计,经历了平时在课堂和考试中不会出现的问题和考验。而这些问题,这并不是我们平时只靠课本,就可以轻易解决的。所以,锻炼了我们挑战难题,学会用已掌握的知识去解决具体问题的能力,进一步培养了独立思考问题和解决问题的能力。特别是学会了在VisualC++中如何调试程序的方法。当然,老师的指导和同学的帮助也是不可忽视的,他们给了我许多提示和帮助,教会了我编译复杂程序的方法。在老师和同学的帮助下,通过自己的努力,终于完成了这次职工信息表的简单课程设计。我经过这段时间的编程,对其中的艰辛,我是深有体会。从刚开始的选择程序、理解程序到后来的调试程序以及改进程序这个过程中,我遇到了各种各样的困难和挫折。但是我坚定信念,对自己充满了信心,想尽一切办法克服重重困难。通过课程设计的训练,我进一步学习和掌握了对程序的设计和编写,从中体会到了面向对象程序设计的方便和巧妙。懂得了在进行编写一个程序之前,要有明确的目标和整体的设计思想。另外某些具体的细节内容也是相当的重要。这些宝贵的编程思想和从中摸索到的经验都是在编程的过程中获得的宝贵财富。这些经验对我以后的编程会有很大的帮助的,我要好好利用。虽然这次课程设计是在参考程序的基础之上进行的,但是我觉得对自己是一个挑战和锻炼。我很欣慰自己能在程序中加入自己的想法和有关程序内容,也就是对它的程序改进了一番改进,并有创新。但是我感觉自己的创新还不够典型,总之还不是很满意。另外由于时间的紧迫和对知识的了解不够广泛,造成了系统中还存在许多不足,功能上还不够完善。以后我会继续努力,大胆创新,争取能编写出透射着自己思想的程序。这次课程设计让我充分认识到了自己的不足,认识到了动手能力的重要性。我会在以后的学习中更加努力锻炼自己,提高自己,让自己写出更好更完善的程序,为以后的编程打好基础!总而言之,这次C++程序设计实践让我收获很大。计算机科学与技术13-2班2010年7月4日第五篇:c++课程设计心得体会课程设计心得体会学生成绩管理是高等学校教务管理的重要组成部分,其内容较多,要完成能够实现人员的信息录入、查询、修改、删除、统计、保存、显示等操作。系统具体实现的功能如下:1.添加新的联系人2.删除所有联系人3.删除某个联系人4.查询某个联系人5.查询所有联系人6.将电话本导出到文件7.从文件导入电话本8.查询并编辑某个联系人9.全班同学的平均分大概的算法分析学生成绩管理软件的数据结构学生成绩一般都是以每个成员为单位进行管理的,一个学生学号用一个结点来表示。考虑到添加、查询和删除的方便,这些以学号为单位的结点用链表方式组成一个主目录。每个结点有四个域:(1)学生代号;(2)课程情况;(3)成绩信息管理情况;各函数的功能和实现(学生成绩管理的相关功能由对应的函数来实现)(1)添加新的联系人用代码实现输入及输出添加新的联系人的学号,姓名,性别,生日、语文成绩,数学成绩;完成添加工作。(2)删除某个联系人首先输入要删除的姓名,然后要在系统中查看是否有此记录,再用分支结构实现删除链表中此员工结点并修改学校员工链表及未找到这条记录;因为可能系统中不存在此记录。(3)删除所有联系人此功能要逐条删除联系人,则我们采用分支、循环结构实现首先遍历是否有给记录,输出读取记录或没有该记录;再到文件是否读完,若没读完则要循环继续读取,否则已删除了所有记

温馨提示

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

评论

0/150

提交评论