丽水数理c++实验报告二_第1页
丽水数理c++实验报告二_第2页
丽水数理c++实验报告二_第3页
丽水数理c++实验报告二_第4页
丽水数理c++实验报告二_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1、实验一 c+类的定义及成员引用一、实验目的:1. 掌握类和对象的概念及特性;2. 掌握c+类和对象的定义;3. 掌握对象成员的基本引用方法;4. 掌握简单的面向对象程序的编写;二、实验任务题目1 图形类设计设计三个图形类:circle(圆)、rectangle(矩形)、triangle(三角形);1、cirlce 类基本信息:圆心坐标、半径;rectangle 类基本信息:长、宽;triangle 类基本信息:三个顶点坐标;其中:成员变量为 private 属性,成员函数为public 属性;2、每个图形类有计算图形的面积getarea(),显示图形的基本信息函数show(),修改基本信息的函

2、数set(形参)。以circle 类为例:通过getarea()计算圆的面积,show()函数中显示圆心坐标、直径、周长、面积等基本信息;set(int x,int y, int r)函数可以修改圆心坐标和半径。3、当输入数据为不合理数据时(例如:输入的三角形的顶点是否能组成一个三角形),提示用户输入错误;测试数据1、circle 类测试数据:圆心:(20,30) 半径:5(-20,40) 30(40,-10) -52、rectangle 类测试数据:顶点坐标:20,5040,5-9,1043,-83、triangle 类测试数据:顶点:(20,30)、(40,50)、(40,20)(10,1

3、0)、(50,10)、(35,10)源程序:#include#include#includeusing namespace std;/圆的面积 class circleprivate:int x;int y;int r;public:circle ()int x=0;int y=0;int r=0;float circle_getarea();void circle_show(); void circle_set(int a,int b,int c)x=a;y=b;r=c;float circle:circle_getarea()float s;s=3.14*r*r;return s;void

4、 circle:circle_show() float s;if(r0)cout(x,y)setw(6)rsetw(6)2*rsetw(6)2*3.14*rsetw(6)sendl;elsecout输入的数据错误!=b) a=b; if(a=c)a=c;if(b=c)b=c; if(x1-x4)*(x1-x2)+(y1-y4)*(y1-y2)=0&(x1-x2=x4-x3)&(y1-y2=y4-y3) length=a; width=b; ;float rectangle: rectangle_getarea() float z;z=length*width;return z;void rec

5、tangle:rectangle_show() float z;if(z0)cout矩形的长:lengthsetw(2) 宽: widthsetw(2) 面积: zendl; elsecout输入数据错误!l3&l1+l3l2&l2+l3l1) d=(l1+l2+l3)/2; s=sqrt(d*(d-l1)*(d-l2)*(d-l3); else s=0;void triangle_show();void triangle_set(int x1,int y1,int x2,int y2,int x3,int y3) m1=x1;n1=y1;m2=x2;n2=y2;m3=x3;n3=y3; fl

6、oat a,b,c;a=sqrt(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);b=sqrt(x1-x3)*(x1-x3)+(y1-y3)*(y1-y3); c=sqrt(x3-x2)*(x3-x2)+(y3-y2)*(y3-y2); l1=a; l2=b; l3=c; ;void triangle:triangle_show()float s;int c;c=!s;switch(c)case 0: cout三角形三点坐标;setw(2)(m1,n1)setw(2)(m2,n2)setw(2)(m3,n3)endl; cout三角形边长:setw(2)l1 l2 l3endl;

7、 cout三角形的面积:setw(2)sendl; break;case 1: cout输入数据错误!x1y1r1; cinx2y2r2;cinx3y3r3;cina1b1;cina2b2;cina3b3;cina4b4;cink1l1k2l2k3l3;cink4l4k5l5k6l6; c1.circle_set( x1, y1,r1); c2.circle_set(x2, y2, r2); c3.circle_set( x3, y3, r3);r.rectangle_set(a1,b1,a2,b2,a3,b3,a4,b4);t1.triangle_set(k1,l1,k2,l2,k3,l3)

8、;t2.triangle_set(k4,l4,k5,l5,k6,l6);cout-圆-endl;cout圆心坐标setw(6)直径setw(6)半径setw(6)周长setw(6)面积endl;c1.circle_getarea();c1.circle_show();c2.circle_getarea();c2.circle_show();c3.circle_getarea();c3.circle_show();cout-矩形-endl;r.rectangle_getarea();r.rectangle_show();cout-三角形- endl;t1.triangle_getarea();t

9、1.triangle_show();t2.triangle_getarea();t2.triangle_show();return 0;运行结果: 题目2 学生类设计设计一个 studnet(学生)类1、基本信息:学号、姓名、性别、出生日期、年级、班级、院系、专业;其中:基本信息为 private 属性,成员函数为public 属性;2、student 类有多个构造函数:缺省构造函数、带参数的构造函数、带默认参数的构造函数3、基本功能:1)可以从键盘输入学生的基本信息;2)setinfo(形参表)函数可以修改学生的基本信息函数,例如:班级、专业等;3)show()函数显示学生信息;4) 当输入

10、数据为不合理数据时,提示用户输入错误;测试数据1、学号:2005001 姓名:zhangesan 出生日期:85 年11 月年级:05 级班级:jy01 院系:computer 专业:application2、学号:2005002 姓名:lihuan 出生日期:84 年11 月3、学号:2005003 姓名:wang 出生日期:85 年7 月年级:05 级班级:jy01 院系:computer 专业:software4、学号:2005004 姓名:zhan 出生日期:85 年11 月年级:05 级班级:jy025、学号:2005005 姓名:song 出生日期:85 年11 月思考与扩展采用什

11、么方式可以让学号自动按输入顺序生成?源程序代码:#include#include#includeusing namespace std;class studentprivate:int number;string name;string year;string grade;string clas;string department;string profession;public:student( )grade=05级; student(string cla); /student:student(int num=2005001):number(num)void setinto( int b,

12、string b1,string b2,string b3,string b4,string b5,string b6) number=b;name=b1;year=b2;grade=b3;clas=b4;department=b5;profession=b6;void show();student:student(string cla)clas=cla; void student:show() cout学号:numbersetw(6)姓名:namesetw(10)出生日期:yearsetw(6)年级:gradesetw(6)班级:classetw(6)院系:departmentsetw(6)

13、专业:professionendlendl; int main() student stud5; int i,j,num;for(i=0,num=2005001;ia1a2a3a4a5a6;studi.setinto(num,a1, a2, a3,a4, a5,a6);studi.show(); return 0;操作结果:实验二 c+中的构造函数与析构函数一、实验目的:5. 掌握c+中使用构造函数创建对象;6. 掌握c+中使用析构函数释放对象;7. 掌握构造函数的重载特性;8. 掌握类相关的指针及数组的使用方法;9. 掌握const成员及static成员的特性;10. 掌握友元的特性。二、实

14、验任务1. 人员管理设计某小型公司的 employee(人员)类(1)类1)employee 类:基本信息:编号、姓名、性别、出生日期、职位等;出生日期使用自定义的 date(日期)类;其中:基本信息为 private 属性,成员函数为public 属性;多个构造函数:缺省构造函数、带参数的构造函数、带默认参数的构造函数;可以从外部访问类成员的友员函数;2)date 类:成员变量:年、月、日成员函数:setyear(int year)、setmonth(int month)、setday(int day)getyear()、getmonth()、getday()(2)基本功能:1)职工信息的录

15、入;2)职工信息的显示;3)用对象数组保存已输入的职工对象;4)可以修改人员的基本信息,如:姓名、职位等;5)可以通过编号或姓名进行人员查询;(3)实验提示1)注意带参数的构造函数和带默认参数的构造函数的声明与定义;2)定义employee 类的成员变量时,应注意变量类型的声明;3)在查询时,通过申明成employee 类的友元函数来访问类的成员变量;*/#include #include #define n 100using namespace std;class dateprivate: int year; int month; int day;public: void setyear(i

16、nt x) year=x; void setmonth(int x) month=x; void setday(int x) day=x; int getyear() return year; int getmonth() return month; int getday() return day; date():year(2000),month(1),day(1) date(int x, int y,int z) year=x; month=y; day=z; ;class employeeprivate: int no; char name16; char sex8; date birth

17、; char pos32;public: void setname(char* n) strcpy(name,n); void setpos(char* n) strcpy(pos,n); employee():no(0),birth(2000,1,1) strcpy(name,andy); strcpy(sex,male); strcpy(pos,intern); employee& operator=(employee& x) no=x.no; birth.setyear(x.birth.getyear(); birth.setmonth(x.birth.getmonth(); birth

18、.setday(x.birth.getday(); strcpy(name,); strcpy(sex,x.sex); strcpy(pos,x.pos); employee(int n, char* str, char* y,date day, char* p) no = n; strcpy(name,str); strcpy(sex,y); birth=day; strcpy(pos,p); friend string getname(employee x) string name; int i; for(i=0;i!=0;i+) name+=i; re

19、turn name; friend int getno(employee x) return x.no; friend string getsex(employee x) string sex; int i; for(i=0;x.sexi!=0;i+) sex+=x.sexi; return sex; friend date getbirth(employee x) return x.birth; friend string getpos(employee x) string pos; int i; for(i=0;x.posi!=0;i+) pos+=x.posi; return pos;

20、;void main() employee *personsn; employee temp; date day; int num=0; int i,choose=1,choose1=0; int n,y,m,d; char str16; char s8; char p32; coutntt=endl; couttt1:录入 2:显示 3:修改 4:查找 0:退出endl; couttt=endl; coutchoose; while(choose!=0) switch(choose) case 1: if(num=15) coutfull!n; continue; coutn; coutymd; coutstr; couts; coutp; personsnum+=new employee(n,str,s,date(y,m,d),p); break; case 2: cout编号t姓名t性别t生日tt职务endl; for(i=0;inum;i+) coutgetno(*personsi)tgetname(*personsi)tgetsex(*personsi)tgetbirth(*personsi).getyear() getbirth(*personsi).getmonth() getbirth(*personsi).getday()tgetpos(*personsi)

温馨提示

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

评论

0/150

提交评论