欢迎来到得力文库 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
得力文库 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    最新C++课程设计报告1.0.doc

    • 资源ID:34714751       资源大小:1.35MB        全文页数:223页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    最新C++课程设计报告1.0.doc

    Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateC+课程设计报告1.0C+课程设计报告1.0课程设计报告课程设计题目:面向对象程序设计 学生姓名:吴泓专 业:软件工程班 级:1621801指导教师:张军 2017年 6月 16日课程设计目的: 综合运用所学过的知识进行实际程序设计。课程设计内容:Part1 1: 类的组合:定义point类,数据成员包括x,y,成员函数包括构造函数,拷贝构造函数和析构函数,以及setx,getx,sety,gety四个属性函数。定义line类,端点由两个point类的对象组成,包括构造函数,析构函数以及计算线段长度的函数getlength。在main函数中,定义line的对象,并输出其长度。#include<iostream>#include<cmath>using namespace std;class pointprivate:double x, y;public:point()point(double x, double y) :x(x), y(y)void setx(double xx)x = xx;double getx() return x; void sety(double yy)y = yy;double gety() return y; point(point & p)x = p.x;y = p.y;point();class lineprivate:point a, b;public:line(point aa,point bb) :a(aa), b(bb)double getlength()double length;length = sqrt(pow(a.getx() - b.getx(), 2) + pow(a.gety() - b.gety(), 2);return length;line();void main()point p1(2, 3);point p2(5, 6);line l1(p1,p2);cout << "The length of the line is " << l1.getlength()<<endl; Part1 1运行结果与分析:运行结果:输入 x1,y1,x2,y2:2 3 5 6p1:(2,3)p2:(5,6) Part1 1设计过程、思路与分析:1. 定义Point类,设置其成员函数(构造函数,拷贝构造函数和析构函数)以及setx,getx,sety,gety四个属性函数;2. 定义line类,设置其成员函数和getlength()函数。Getlength()函数可以输入和输出两点的坐标和两点之间的距离;3. 在主函数中定义类line对象myline。调用getlength()函数实现目的。Part1 2: 对象数组和函数:定义student类,数据成员包括姓名name和成绩score,成员函数包括构造函数,拷贝构造函数和析构函数。定义函数void highestscore(student s),输出分数最高的学生姓名和分数。在main函数中定义student sN,调用highestscore函数,输出分数最高的学生姓名和分数。#include<iostream>#include<string>const int N = 3;/定义要输入的学生数using namespace std;class student/定义student类private:string name;double score;public:student()/定义无参构造函数student(string n, double s) :name(n), score(s)/定义有参构造函数student(student &s)/拷贝构造函数name = s.name;score = s.score;void highestscore(student s)int k = 0;double max;max = s0.score;for (int i = 1; i < N; i+)if (max < si.score)max = si.score;k = i;cout << "The student's name: " << sk.name << endl;cout << "Highestscore is: " << sk.score << endl;student()friend ostream & operator <<(ostream & os, student s)os <<s.name << " " <<s.score << endl;return os;friend istream & operator >>(istream & is, student &s)is >> s.name >> s.score;return is;void main()student sN;for (int i = 0; i < N; i+)cin >> si;sN.highestscore(s);Part1 2运行结果与分析:运行结果:运行结果分析:输入的3位同学,成绩最高的是lisi 97,输出结果正确。Part1 2设计过程、思路与分析:定义student类,设置其成员函数(构造函数,拷贝构造函数和析构函数)和获取名字的函数getname()、获取成绩的函数getscore();定义highestscore(student s)函数。该函数中用k记录成绩最高的数组。并且输出其姓名和成绩的信息;主函数中定义对象数组sN,用for循环输入3个学生的姓名和学号,再调用higtestscore(student s)函数输出成绩最高的学生的信息。Part1 3: 静态数据成员:设计一个书类,能够保存书名、定价,所有书的本数和总价。(将书名和定价设计为普通数据成员;将书的本数和总价设计为静态数据成员)#include<iostream>#include<string>using namespace std;class Bookprivate:string name;double price;static int num;static double total;public:Book() Book(string name, double price);Book() Book(Book &con_refbook);string get_name();double get_price();static int get_num();static double get_total();void show();void put();Book:Book(string name, double price):name(name),price(price)num+;total += price;int Book:num = 0;int Book:get_num()return num;double Book:total = 0;double Book: get_total()return total;void Book:show()cout << "Book information:" << endl;cout << "name:" << name << " price:" << price << endl;void Book:put()cout << "Book total:" << num;cout << " price total:" << total << endl;int main()Book book1("Helloworld", 16.5);Book book2("C+ prime", 20.5);Book book3("C+ program", 30.0); book1.show();book2.show();book3.show();book3.put();system("pause");return 0;Part1 3运行结果与分析:运行结果:运行结果分析:一共输入三本书的书名和价格,输出的Book total为3,price total为67,输出结果正确。Part1 3设计过程、思路与分析:1. 定义Book类,设置其成员函数(构造函数,拷贝构造函数和析构函数)获取书名函数get_name()、获取价格函数get_price(),访问静态数据num的成员函数get_num()、访问静态数据total的成员函数get_total(),显示书名 及价格的函数show()、显示总价的函数put();2. 在主函数中定义Book类的三个对象book1、book2、book3,并且都初始化;3. 三个对象同时调用show( )函数,显示信息。最后调用put()函数显示书、 的总数和总价格。=Part1 4: 动态内存分配:定义point类,数据成员包括x,y,成员函数包括构造函数,拷贝构造函数和析构函数,以及setx,getx,sety,gety四个属性函数。在main函数中,用new和delete分配和释放N个point的数组。(N是const常量,N=10)#include<iostream>const int N = 10;using namespace std;class Pointprivate:float x, y;public:Point() Point() Point(float x, float y) :x(x), y(y) Point(Point &con_refpoint)x = con_refpoint.x;y = con_refpoint.y;void setx(float xx)x= xx;void sety(float yy)y= yy;float getx() return x; float gety() return y; ;int main()Point *p = new PointN;deletep;system("pause");return 0;Part1 4运行结果与分析:运行结果分析:程序主函数中位PointN数组申请了一段内存空间,并定义指针p指向该对象,然后用delete直接作用于指针,删除new创建的对象,释放指针p所指向的内存空间。Part1 4设计过程、思路与分析:1. 定义Point类,设置其成员函数(构造函数,拷贝构造函数和析构函数)以及setx( )、sety( )、getx( )、gety( )属性函数;2. 在主函数中用new来为Point对象数组申请一块连续的内存,然后用delete直接作用于指针,删除new创建的对象,释放指针p所指向的内存空间。=Part1 5 : 类的继承:定义一个point类,包含私有数据成员x,y,成员函数包括无参构造函数,带参构造函数,set和get属性函数。定义circle类,从point类公有派生,增加数据成员半径r,成员函数包括无参构造函数,带参构造函数,计算面积函数getarea。在main函数中定义一个circle的对象,并计算其面积。#include <iostream>using namespace std;class pointpublic:point() point(int x, int y)void set_x(int x)this->x = x;int get_x() return x;void set_y(int y)this->y = y;int get_y()return y;private:int x;int y;class circle :public pointpublic:circle() circle(int r,int x,int y):point(x,y)this->r = r;int get_r() return r;double getarea() return(3.14*r*r);private:int r;int main()circle c1(2, 3, 2);cout<<"r="<<c1.get_r()<<endl;cout << "the circle's area="<<c1.getarea() << endl;system("pause");return 0;Part1 5运行结果与分析:运行结果分析:在主函数中初始化圆的半径r=2,输出结果area=12.56 输出结果正确。Part1 5设计过程、思路与分析:1 定义Point类,设置其成员函数(构造函数,拷贝构造函数和析构函数)以及setx() sety() getx() gety() 四个属性函数。2 定义circle类,设置其成员函数(构造函数,拷贝构造函数和析构函数)以及获取半径r的函数get_r() 计算面积并获取面积的函数getarea()。3 在主函数中定义类的对象c1并初始化r=2。再调用getarea()函数输出面积=Part1 6 : 虚基类:定义vehicle类,数据成员包括私有的weight,公有的构造函数,析构函数和输出函数dispaly;从vehicle类公有派生car类,增加数据成员载人数personnum,公有的构造函数,析构函数和输出display;从vehicle类公有派生truck类,增加数据成员载货量laod,公有的构造函数,析构函数和输出函数display;从car类和truck类共同公有派生出pickup类,包括公有的构造函数和输出函数。在main函数中,定义pickup类对象,并输出其基本信息。#include <iostream>using namespace std;class vehiclepublic:vehicle() vehicle(int weight)this->weight = weight; vehicle()cout << "vehicle constructoring!" << endl;void display()cout << "the weight of vehicle is " << weight << endl;private:int weight;class car :virtual public vehiclepublic:car() car(int personnum, int weight) :vehicle(weight)this->personnum = personnum;car()cout << "car constructoring!" << endl;virtual void display()cout << "The number of person is " << personnum << endl;private:int personnum;class truck :virtual public vehiclepublic:truck() truck(int load, int weight) :vehicle(weight)this->load = load;truck()cout << "truck constructoring!" << endl;virtual void display()cout << "The load of the truck is: " << load << endl;private:int load;class pickup :public car,public truckpublic:pickup() pickup(int weight1, int weight2, int personnum, int load,int weight) :car(personnum, weight1), truck(load, weight2),vehicle(weight)cout << "pickup constructoring!"<< endl;virtual void display()vehicle:display();vehicle:vehicle();car:display();car:car();truck:display();truck:truck();int main()pickup p1(10,10, 20, 30,10);p1.display();system("pause");return 0;Part1 6运行结果与分析:运行结果:运行结果分析:在主函数中定义pickup类的对象p,并对其初始化。在主函数中调用pickup类中的show()函数。输出结果正确。Part1 6设计过程、思路与分析: 1.定义vehicle类,私有成员数据weight,设置其成员函数(构造函数,拷贝构造函数和析构函数)以及display()属性函数。 2.定义car类继承自虚基类vehicle,设置其成员函数(构造函数,拷贝构造函数和析构函数)以及display()属性函数。 3.定义truck类继承自虚基类vehicle,设置其成员函数(构造函数,拷贝构造函数和析构函数)以及display()属性函数。 4.定义类pickup继承类car和类truck, 设置其成员函数(构造函数,拷贝构造函数和析构函数)以及show()属性函数,在show()函数中调用类vehicle、类car、类truck中的display()函数。从而输出其基本信息。 5.在多重继承中,若一类声明为虚基类,则能保证一个派生类间接地多次继承该类时,派生类中只继承该基类的一份成员,避免了派生类中访问公共基类的共有属性多份拷贝的二义性。=Part1 7 : 运算符重载,友元函数和this指针:定义一个计数器类counter,具备自增,自减功能(前后缀);输入输出>>,<<功能。在main函数里测试该类。#include<iostream>#include<cmath>using namespace std;class counter;istream& operator>>(istream& is,counter& a);ostream& operator<<(ostream& os,counter& a);class counter /定义类counterprivate:double P;public:counter() /无参构造函数counter(double p):P(p) /带参构造函数counter operator +(); /重载前置+counter operator +(int); /重载后置+counter operator -(); /重载前置-counter operator -(int); /重载后置-friend istream& operator>>(istream& is,counter& a); /重载输入运算符>>friend ostream& operator<<(ostream& os,counter& a); /重载输出运算符<<counter counter:operator +() /前置+实现+P;return *this;counter counter:operator +(int) /后置+实现counter a=*this;+(*this);return a;counter counter:operator -() /前置-实现-P;return *this;counter counter:operator -(int) /后置-实现counter a=*this;-(*this);return a;istream& operator>>(istream& is,counter& a) /运算符>>实现is>>a.P;return is;ostream& operator<<(ostream& os,counter& a) /运算符<<实现os<<a.P;return os;int main()counter c1(5),c2(3); cout<<"c1="<<c1<<endl<<"c2="<<c2<<endl;cout<<"+c1="<<+c1<<endl; /测试自增自减功能cout<<"c1+="<<c1+<<endl;cout<<"c2-="<<c2-<<endl;cout<<"-c2="<<-c2<<endl;system("pause");return 0;Part1 7运行结果与分析:运行结果分析:定义c1的值为5,c2的值为3;此时+c1的数值为6;c1+输出时为6,输出后为7;此时c2输出时为3;-c2输出时为1,输出后为1;输出结果正确。Part1 7设计过程、思路与分析:1.定义counter类,私有成员数据weight,设置其成员函数(构造函数和析构函数)2.重载自加自减运算符和<<、>>运算符。3.在主函数中实现运算符重载。4.友元函数需要声明。=Part1 8 : 虚函数和抽象类:定义一个抽象类shape,包括公有的计算面积area函数,计算体积volume函数,输出基本信息函数printinfo(三个函数均为纯虚函数)。从shape公有派生point类,增加私有数据成员x,y坐标,以及构造函数,析构函数。从point公有派生circle类,增加私有数据成员半径r,以及构造函数,析构函数。从circle公有派生cylinder类,增加私有数据成员高度h,以及构造函数,析构函数。(在定义三个派生类的过程中,自己考虑需要重定义哪个虚函数)。在main函数中,定义shape类的指针,指向派生类的对象,输出三类对象的基本信息,面积,体积;(将shape指针改为引用再尝试)。#include <iostream>#include <cmath>#define P 3.1415using namespace std;class shapepublic:virtual double area() = 0;virtual double volume() = 0;virtual void printinfo () = 0;class point :public shapepublic:point() point(double x, double y)this->x = x;this->y = y;void printinfo()cout << "x=" << x << ",y=" << y << endl;point() private:double x;double y;class circle :public pointpublic:circle() circle(double r,double x,double y):point(x,y)this->r = r;double area()return P*r*r;void printinfo()point:printinfo();cout << "r=" << r << endl;cout << "circle area is " << area() << endl;circle() private:double r;class cylinder :public circlepublic:cylinder() cylinder(double h, double x,double y, double r) :circle(x, y,r)this->h = h;double volume()return h*circle:area();void printinfo()circle:printinfo();cout << "h=" << h << endl;cout << "cylinder volume is " << volume() << endl;cylinder() private:double h;int main()cylinder c1(5, 2, 2, 3);shape *s;/指针s = &c1;(*s).printinfo();cout << "circle area is " << s->area() << endl;cout << "volume is " << (*s).volume() << endl;system("pause");return 0;Part1 8运行结果与分析:运行结果:运行结果分析:在主函数中分别用了shape类的指针和引用,输出结果正确。Part1 8设计过程、思路与分析:4 先定义基类shape。设置三个纯虚函数并且声明:virtual double area()=0; /声明计算面积纯虚函数area();virtual void volume()=0; /声明计算体积纯虚函数volume();virtual void printinfo()=0; /声明输出基本信息纯虚函数printinfo();5 定义类point共有继承自类shape。并且在该类中实现三个纯虚函数。6 定义类circle共有继承自类point。并且在该类中实现三个纯虚函数。7 定义类cylinder共有继承自类circle。并且在该类中实现三个纯虚函数。8 在主函数中分别创建类point的对象a,circle的对象b,cylinder的对象c,并初始化;9 在主函数中分别定义shape类的指针和引用,调用printinfo()函数。=Part1 9 : 模板:设计一个堆栈的类模板Stack,在模板中用类型参数T表示栈中存放的数据,用非类型参数MAXSIZE代表栈的大小。#include<iostream>using namespace std;template<typename T, int MAXSIZE>class Stackpublic:Stack();bool full();bool empty();void push(T element);T gettop();void pop();Stack()deleteptr;private:int maxsize;int pos;T *ptr;template<typename T, int MAXSIZE>Stack<T, MAXSIZE>:Stack()maxsize = MAXSIZE;pos = 0;ptr = new TMAXSIZE;template<typename T, int MAXSIZE>bool Stack<T, MAXSIZE>:full()return pos >= MAXSIZE;template<typename T, int MAXSIZE>bool Stack<T, MAXSIZE>:empty()return pos<0;template<typename T, int MAXSIZE>void Stack<T, MAXSIZE>:push(T element)if (!full()pos+;ptrpos = element;elsecout << "the stack is full" << endl;template<typename T, int MAXSIZE>T Stack<T, MAXSIZE>:gettop()if (empty()cout << "the stack is empty" << endl;elsereturn ptrpos;template<typename T, int MAXSIZE>void Stack<T, MAXSIZE>:pop()if (empty()cout << "the stack is empty" << endl;elsepos-;int main()Stack<int, 5>s1;s1.push(5);s1.push(10);s1.push(2);s1.push(22);s1.push(7);cout << s1.gettop()

    注意事项

    本文(最新C++课程设计报告1.0.doc)为本站会员(1595****071)主动上传,得力文库 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知得力文库 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

    © 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

    黑龙江省互联网违法和不良信息举报
    举报电话:0468-3380021 邮箱:hgswwxb@163.com  

    收起
    展开