《面向对象程序设计》实验报告[二].doc
《《面向对象程序设计》实验报告[二].doc》由会员分享,可在线阅读,更多相关《《面向对象程序设计》实验报告[二].doc(18页珍藏版)》请在咨信网上搜索。
______________________________________________________________________________________________________________ 计算机科学与工程学院 《面向对象程序设计》实验报告[二] 专业班级 2017数字媒体技术01 实验地点 J411 学生学号 1705121411 指导教师 陈艳 学生姓名 黄浩博 实验时间 实验项目 类的定义及应用(6学时) 实验类别 基础性() 设计性(√) 综合性() 其它( ) 实验目的及要求 1.掌握类定义的语法; 2.掌握构造函数和析构函数的定义; 3.掌握几个关键字的用法:this、const、new/delete、friend 4.综合应用类的封装性解决常见问题; 5.完成实验内容,调试通过后将完整代码及运行截图粘贴到实验结果对应的题号下面; 6.对本次实验进行总结(遇到的问题,可行的解决方案,收获,体会等等) 7.完成实验报告后,以学号+姓名+实验2(.doc或.docx)为名上传到ftp://218.199.185.223/student/上传作业/陈艳/面向对象程序设计下对应班级及实验项目文件夹中 成 绩 评 定 表 类 别 评 分 标 准 分值 得分 合 计 上机表现 积极出勤、遵守纪律 主动完成设计任务 30分 程序与报告 程序代码规范、功能正确 报告详实完整、体现收获 70分 说明: 评阅教师: 日 期: 年 月 日 实 验 内 容 题目1: 下面设计一个三角形类,请按下列声明形式完成各成员函数的定义。添加主程序中初始化该类,并调用成员函数测试结果。 #include<iostream> using namespace std; class Triangle{ public: void Setabc(doublex, doubley, doublez); //设置三条边的值,注意要能成三角形 double Perimeter( ); //计算三角形的周长 double Area( ); //计算并返回三角形的面积 private: double a,b,c; //三条边的长度为私有数据成员 }; 题目2: 定义一个正方形类Square,编写构造函数、析构函数,Set()/Get()函数以 设置/读取边长,perimeter()函数和area函数分别求周长和面积。并在主程序中进行测试。 题目3: 定义时间类Time,并计算两个时间之间的间隔。 题目4: 定义Student类(包含3个数据成员name,id_number,score),计算班上30个学生的平均成绩,并按成绩高到低顺序输出高于平均成绩的学生信息。 题目5:从 定义复数类,实现实部、虚部的读写,复数计算,结果输出等功能。并在主程序中进行测试。 题目6: 定义Point类和Line类(Line类的成员是Point的对象——复合),在主程序中进行测试,体会构造函数、析构函数、赋值运算符函数、拷贝构造函数的调用。 实 验 结 果 题目1: #include<iostream> #include<math.h> using namespace std; class Triangle{ public: void Setabc(double x, double y, double z); double Perimeter(); double Area(); private: double a,b,c; }; int main(){ double a,b,c; cout<<"Please enter the triangle's a,b,c:"; cin>>a>>b>>c; Triangle triangle; triangle.Setabc(a,b,c); double len=triangle.Perimeter(); double s=triangle.Area(); cout<<"The triangle's Perimeter is :"<<len<<endl <<"The triangle's Area is :"<<s<<endl; return 0; } void Triangle::Setabc(double x, double y, double z){ a=x;b=y;c=z; } double Triangle::Perimeter(){ double len; len=a+b+c; return len; } double Triangle::Area(){ double p=(a+b+c)/2; double s=sqrt(p*(p-a)*(p-b)*(p-c)); return s; } 题目2: #include<iostream> class Square{ private: double m_a; public: Square(); ~Square(); void Set(double a); void Get(); double Perimeter(); double Area(); }; int main(){ Square square; std::cout<<"Please enter the square's length:"; double a,b,c; std::cin>>a; square.Set(a); square.Get(); b=square.Perimeter(); c=square.Area(); std::cout<<"The square's Perimeter is :"<<b<<std::endl <<"The square's Area is :"<<c<<std::endl; return 0; } Square::Square(){ std::cout<<"This project is about square!"<<std::endl; } Square::~Square(){ std::cout<<"Bye~~"<<std::endl; } void Square::Set(double a){ m_a=a; } void Square::Get(){ std::cout<<"The square's length is:"<<m_a<<std::endl; } double Square::Perimeter(){ return 4*m_a; } double Square::Area(){ return m_a*m_a; } 题目3: #include<iostream> class Time{ private: int m_hour,m_minute,m_second; public: Time(){std::cout<<"This is a new time."<<std::endl;}; void Set(int s,int m,int h){m_hour=h;m_minute=m;m_second=s;}; void Interval(Time s); ~Time(){std::cout<<"End..."<<std::endl;}; }; int main(){ Time time[2]; std::cout<<"Please enter the time in chronological order."; for(int a=0;a<2;a++){ std::cout<<"Please enter the time:(second minute,hour)"<<std::endl; int s,m,h; std::cin>>s>>m>>h; time[a].Set(s,m,h); } time[1].Interval(time[0]); return 0; } void Time::Interval(Time S){ int s,m,h; bool flag1(0),flag2(0); if(this->m_second>S.m_second) s=this->m_second-S.m_second; else { s=60+this->m_second-S.m_second; flag1=1; } if(flag1) this->m_minute--; if(this->m_minute>S.m_minute) m=this->m_minute-S.m_minute; else { m=60+this->m_minute-S.m_minute; flag2=1; } if(flag2) this->m_hour--; h=this->m_hour-S.m_hour; std::cout<<"The time interval is:(hour,minute,second) "<<h<<" hours,"<<m<<" minutes"<<s<<" seconds."; } 题目4: Student.h #ifndef STUDENT_H_INCLUDED #define STUDENT_H_INCLUDED #include<string> using std::string; class Student{ private: string m_name; long int m_id; float m_score; public: Student(string name="None",long int id=0,float score=0):m_name(name),m_id(id),m_score(score){}; void Set(string name,long int id,float score){m_name=name;m_id=id;m_score=score;}; float Interval(){return m_score;}; void pri(){std::cout<<"The name is "<<m_name<<".The id is "<<m_id<<".The score is "<<m_score<<".\n";}; bool bigger(const Student a){if(this->m_score>a.m_score) return true ;else return false;}; }; #endif // STUDENT_H_INCLUDED main.cpp #include<iostream> #include"Student.h" const int n=30; int scan(Student [],int ); void sear(Student []); void prin(Student [],float ); int main(){ Student student[n]; int x=0; float sum(0); x=scan(student,x); for(int a=0;a<n;a++){ sum+=student[a].Interval(); } std::cout<<"Average achievement is "<<sum/x<<std::endl; sear(student); prin(student,sum/x); return 0; } int scan(Student student[n],int x){ char ch; std::cout<<"Enter q to quit."<<std::endl; std::cin>>ch;std::cin.get(); for(int a=0;a<n&&ch!='q';a++){ std::cout<<"Please enter a Student:(name,id,score)"<<std::endl; string name; long int id; float score; std::cin>>name>>id>>score; std::cin.get(); student[a].Set(name,id,score); x++; std::cout<<"Enter q to quit."<<std::endl; std::cin>>ch;std::cin.get(); } return x; } void sear(Student student[n]){ for(int a=0;a<n;a++){ for(int b=1;b<n;b++){ if(student[b].bigger(student[a])){ Student c; c=student[a];student[a]=student[b];student[b]=c; } } } } void prin( Student student[n],float x){ for(int a=0;a<n;a++){ if(student[a].Interval()>x){ student[a].pri(); } else continue; } } 题目5: Comp.h #ifndef COMP_H_INCLUDED #define COMP_H_INCLUDED class Comp { private: int real,imag; public: Comp(int r=0,int i=0):real(r),imag(i){}; ~Comp(){}; void cset(int ,int ); void cput(); Comp operator+(const Comp &com) const; Comp operator-(const Comp &com) const; Comp& operator=(const Comp &com); }; #endif // COMPLEX_H_INCLUDED main.cpp #include<iostream> #include"Comp.h" void sca(Comp [],int ); void pri(Comp [],int ); int main(){ Comp a[3]; Comp b[3]; sca(a,3); std::cout<<"The a[3] :"; pri(a,3); b[0]=a[0]+a[1]; b[1]=a[0]-a[2]; b[2]=a[0]; std::cout<<"The b[3] :"; pri(b,3); return 0; } void Comp::cset(int r,int i){ real=r; imag=i; } void Comp::cput(){ std::cout<<"The complex's real is "<<real<<std::endl; std::cout<<"The complex's image is "<<imag<<std::endl; } Comp Comp::operator+(const Comp &com) const{ Comp sum; sum.real=this->real+com.real; sum.imag=this->imag+com.imag; return sum; } Comp Comp::operator-(const Comp &com) const{ Comp sum; sum.real=this->real-com.real; sum.imag=this->imag-com.imag; return sum; } Comp& Comp::operator=(const Comp &com){ this->real=com.real; this->imag=com.imag; return *this; } void sca(Comp a[],int n){ for(int x=0;x<n;x++){ int real,imag; std::cout<<x<<".Please enter the real :"; std::cin>>real; std::cout<<x<<".Please enter the image :"; std::cin>>imag; a[x].cset(real,imag); } } void pri(Comp a[],int n){ for(int x=0;x<n;x++){ a[x].cput(); } } 题目6: Line.h #ifndef LINE_H_ #define LINE_H_ class Point { private: int m_x, m_y; public: Point(int x = 0, int y = 0) :m_x(x), m_y(y) {}; ~Point() {}; void pset(int x, int y) { m_x = x; m_y = y; }; void pput(); Point operator+(const Point& point) const; Point operator-(const Point& point) const; Point& operator=(const Point& point); }; class Line { private: Point m_start, m_end; public: Line(int x1=0, int y1=0, int x2=0, int y2=0) :m_start(x1, y1), m_end(x2, y2) {}; ~Line() {}; void lput(); void lset(Point s, Point e) { m_start = s, m_end = e; }; Line operator+(const Line& line) const; Line operator-(const Line& line) const; Line& operator=(const Line& line); }; #endif Line.cpp #include<iostream> #include"Line.h" using std::cout; using std::endl; Point Point::operator+(const Point& point) const { Point p; p.m_x = this->m_x + point.m_x; p.m_y = this->m_y + point.m_y; return p; } Point Point::operator-(const Point& point) const { Point p; p.m_x = this->m_x - point.m_x; p.m_y = this->m_y - point.m_y; return p; } Point& Point::operator=(const Point& point) { this->m_x = point.m_x; this->m_y = point.m_y; return *this; } void Point::pput() { cout << m_x << "," << m_y << endl; } Line Line::operator+(const Line& line) const { Line l; l.m_start = this->m_start + line.m_start; l.m_end = this->m_end + line.m_end; return l; } Line Line::operator-(const Line& line) const { Line l; l.m_start = this->m_start - line.m_start; l.m_end = this->m_end - line.m_end; return l; } Line& Line::operator=(const Line& line) { this->m_start = line.m_start; this->m_end = line.m_end; return *this; } void Line::lput() { cout << "The start point's x,y is:"; m_start.pput(); cout << "The end point's x,y is:"; m_end.pput(); cout<<endl; } main.cpp #include<iostream> #include"Line.h" using std::cin; using std::cout; using std::endl; void pscan(Point[], int n); void lscan(Line[], Point [], int n,int m); void lprin(Line[], int); int main() { Point p[6]; pscan(p, 6); Line line[6]; lscan(line, p, 6, 6); line[3] = line[1] + line[0]; line[4] = line[0] - line[2]; line[5]=line[0]; lprin(line, 6); return 0; } void pscan(Point p[], int n) { int x, y; for (int m = 0; m < n; m++) { cout << "Please enter x,y:"; cin >> x >> y; p[m].pset(x, y); } } void lscan(Line l[], Point p[], int n,int m) { for (int x = 0,y=0; x < n&&x < m; x++,y++,y++) { l[x].lset(p[y], p[y+1]); } } void lprin(Line l[], int n) { for (int x = 0; x < n; x++) { cout << "The line "<<x<<" :"<<endl; l[x].lput(); } } 实 验 总 结 了解了有关类的使用,熟悉了编译器的设置 Welcome To Download !!! 欢迎您的下载,资料仅供参考! 精品资料- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向对象程序设计 面向 对象 程序设计 实验 报告
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文