c++实验报告 类的组合及应用.docx

上传人:b****1 文档编号:1653652 上传时间:2022-10-23 格式:DOCX 页数:11 大小:79.51KB
下载 相关 举报
c++实验报告 类的组合及应用.docx_第1页
第1页 / 共11页
c++实验报告 类的组合及应用.docx_第2页
第2页 / 共11页
c++实验报告 类的组合及应用.docx_第3页
第3页 / 共11页
c++实验报告 类的组合及应用.docx_第4页
第4页 / 共11页
c++实验报告 类的组合及应用.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

c++实验报告 类的组合及应用.docx

《c++实验报告 类的组合及应用.docx》由会员分享,可在线阅读,更多相关《c++实验报告 类的组合及应用.docx(11页珍藏版)》请在冰豆网上搜索。

c++实验报告 类的组合及应用.docx

c++实验报告类的组合及应用

c++实验报告类的组合及应用

 

 

————————————————————————————————作者:

————————————————————————————————日期:

 

昆明理工大学信息工程与自动化学院学生实验报告

(201-201学年第二学期)

课程名称:

C++程序设计开课实验室:

年月日

年级

学号

姓名

成绩

实验项目名称

类的组合及应用

指导教师

教师评语

 

教师签名:

年月日

题目1:

在cdate类中增加日期相加和相减的功能,如:

在日期上加上XX天,得到一个新日期;

实现两个日期相减,两个日期之间相距多少天;

日期减去XX天后是什么日期。

源程序1

/******cdate.h******/

#ifndefCDATE

#defineCDATE

//class1

classcdate

public:

cdate(){year=1900;month=1;day=1;};//初始化

cdate(intyear_get,intmonth_get,intday_get);//赋值

voidnext();

voidset();

voiddisplay();

intget_year();

intget_month();

intget_day();

voiddate_count_date();

//private:

intyear,month,day,d,other;

};//类定义

//class2继承class1

classcdate_count:

publiccdate

public:

//cdate_count();

intcount(inty,intm,intd1);

intget_year_number(intw,inti);

intget_month_number(intx,intj);

intget_day_number(inty,intk);

voiddisplay();

voidset_today();

private:

inty,m,d1,cha;

intyear_today,month_today,day_today;

};

#endif

/******cdate.cpp******/

#include"cdate2。

h"

#include

#include〈iomanip>

usingnamespacestd;

cdate:

:

cdate(intyear_get,intmonth_get,intday_get)

{

year=year_get;

month=month_get;

day=day_get;

}//赋值

voidcdate:

:

next()

{

day+=1;

}//加一

voidcdate:

:

set()

{

cout〈<"pleaseenteryear”〈

cin〉〉year;

if((year%4==0)||(year%400==0))other=1;

elseother=0;

do{

cout〈<"pleaseentermonth”〈

cin〉>month;

}

while(month<1||month〉12);

switch(month)

case1:

d=31;break;

case2:

d=28+other;break;

case3:

d=31;break;

case4:

d=30;break;

case5:

d=31;break;

case6:

d=30;break;

case7:

d=31;break;

case8:

d=31;break;

case9:

d=30;break;

case10:

d=31;break;

case11:

d=30;break;

case12:

d=31;break;

do

{

cout<<"pleaseenterday”〈

cin>>day;

while(day>d||day〈1);

}//设定

voidcdate:

date_count_date()

{}cdate;

voidcdate_count:

set_today()

{

cout〈〈"pleaseenteryear_today”〈〈endl;

cin>>year_today;

if((year%4==0)||(year%400==0))other=1;

elseother=0;

do{

cout〈<"pleaseentermonth_today"<〈endl;

cin>>month_today;

while(month〈1||month>12);

switch(month)

case1:

d=31;break;

case2:

d=28+other;break;

case3:

d=31;break;

case4:

d=30;break;

case5:

d=31;break;

case6:

d=30;break;

case7:

d=31;break;

case8:

d=31;break;

case9:

d=30;break;

case10:

d=31;break;

case11:

d=30;break;

case12:

d=31;break;

do

cout<〈"pleaseenterday_today"〈〈endl;

cin>〉day_today;

while(day>d||day〈1);

}//设定今天

intcdate_count:

get_year_number(intw,inti)

{

y=w—i;

returny;

}

intcdate_count:

get_month_number(intx,intj)

{

m=x-j;

m=(m>=0)?

m:

-m;

returnm;

intcdate_count:

get_day_number(inty,intk)

d1=y—k;

d1=(d1>=0)?

d1:

—d1;

returnd1;

intcdate_count:

count(inty,intm,intd1)

{

y=get_year_number(year_today,year);

m=get_month_number(month_today,month);

d1=get_day_number(day_today,day);

cha=365*y+31*m+d1;

returncha;

}

voidcdate_count:

:

display()

cha=count(y,m,d1);

cout<〈”两个日期相差的天数为:

"〈〈cha<〈"day"<〈endl;

/******main。

cpp******/

#include"cdate2。

h”

#include

usingnamespacestd;

voidmain()

{

cdate_countcha;

cout<<”pleaseenterthedateoftoday”〈〈endl;

cha.set_today();

cout〈<”pleaseenterthedateofyouwanttosubtract:

"〈〈endl;

cha。

set();

cha.display();

运行结果截图

 

题目2:

定义一个学生类,数据有姓名(用指针实现)、学号、性别、出生日期(cdate类型),成绩,班排名;求一个班10名学生的平均分和排名。

源程序2

#ifndefSTUDENT_H

#defineSTUDENT_H

#include〈iostream〉

usingnamespacestd;

classcdate

{

public:

intyear;

intmonth;

intday;

voidset(intyy,intmm,intdd){

year=yy;month=mm;day=dd;}

};

classstudent

{

private:

charname[10];

charsex;//m代表男生,f代表女生

intnumber;

cdatebirth;

doublescore;

intrank;

public:

student()

{}

voidsets()

{intyy,mm,dd;

cin>〉name>>sex〉>number〉>score>〉yy>>mm>>dd;

birth。

set(yy,mm,dd);

rank=1;

}

doublegetscore()

returnscore;

voidsetrank()

{

rank++;

}

voidshow()

cout〈〈name<〈”排名:

"<

}

};

#endif

/******main.cpp******/

#include

usingnamespacestd;

intmain()

{

inti,aver=0,j;

studentstu[10];

for(i=0;i<10;i++)

stu[i].sets();

for(i=0;i〈10;i++)//排名

for(j=0;j〈10;j++)

{

if(stu[j]。

getscore()〈stu[i]。

getscore())

stu[j].setrank();

for(i=0;i〈10;i++)

{

aver+=stu[i]。

getscore();

stu[i].show();

cout〈〈"Theaverageis:

"<

return0;

 

运行结果截图

 

思考问题

1.什么是面向对象,面向对象有哪些特征。

答:

所谓面向对象,就是以对象的观点来分析现实世界中的问题。

从普通人认识世界的观点出发,把事物归类、综合,提取共性并加以描述.面向对象的特点有抽象、封装和信息隐藏、继承和多态。

2.什么是构造和析构函数,有什么特点,它们可以重载吗

答:

构造函数是一个函数名和类名相同的类成员函数,当这个类的对象被创建时,构造函数会被自动调用.构造函数可以重载。

析构函数名也应与类名相同,只是在函数名前面加一个波浪符~,它

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1