c++实验报告 类的组合及应用Word文档格式.docx
《c++实验报告 类的组合及应用Word文档格式.docx》由会员分享,可在线阅读,更多相关《c++实验报告 类的组合及应用Word文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
#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
//cdate_count();
intcount(inty,intm,intd1);
intget_year_number(intw,inti);
intget_month_number(intx,intj);
intget_day_number(inty,intk);
voidset_today();
private:
inty,m,d1,cha;
intyear_today,month_today,day_today;
#endif
/******cdate.cppllz2012.4.21******/
#include"
cdate2.h"
#include<
iostream>
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"
endl;
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;
case3:
case4:
d=30;
case5:
case6:
case7:
case8:
case9:
case10:
case11:
case12:
do
pleaseenterday"
day;
while(day>
d||day<
1);
}//设定
date_count_date()
{}cdate;
voidcdate_count:
set_today()
pleaseenteryear_today"
year_today;
pleaseentermonth_today"
month_today;
pleaseenterday_today"
day_today;
}//设定今天
intcdate_count:
get_year_number(intw,inti)
y=w-i;
returny;
}
get_month_number(intx,intj)
m=x-j;
m=(m>
=0)?
m:
-m;
returnm;
get_day_number(inty,intk)
d1=y-k;
d1=(d1>
d1:
-d1;
returnd1;
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;
display()
cha=count(y,m,d1);
两个日期相差的天数为:
"
cha<
day"
/******main.cpp******/
voidmain()
cdate_countcha;
pleaseenterthedateoftoday"
cha.set_today();
pleaseenterthedateofyouwanttosubtract:
cha.set();
cha.display();
运行结果截图
题目2:
定义一个学生类,数据有姓名(用指针实现)、学号、性别、出生日期(cdate类型),成绩,班排名;
求一个班10名学生的平均分和排名。
源程序2
#ifndefSTUDENT_H
#defineSTUDENT_H
intyear;
intmonth;
intday;
voidset(intyy,intmm,intdd){
year=yy;
month=mm;
day=dd;
classstudent
charname[10];
charsex;
//m代表男生,f代表女生
intnumber;
cdatebirth;
doublescore;
intrank;
public:
student()
{}
voidsets()
{intyy,mm,dd;
name>
sex>
number>
score>
yy>
mm>
dd;
birth.set(yy,mm,dd);
rank=1;
doublegetscore()
returnscore;
voidsetrank()
rank++;
voidshow()
name<
排名:
rank<
LLZH.h"
intmain()
inti,aver=0,j;
studentstu[10];
for(i=0;
i<
10;
i++)
stu[i].sets();
i++)//排名
for(j=0;
j<
j++)
if(stu[j].getscore()<
stu[i].getscore())
stu[j].setrank();
aver+=stu[i].getscore();
stu[i].show();
Theaverageis:
aver/10.0<
return0;
思考问题
1.什么是面向对象,面向对象有哪些特征。
答:
所谓面向对象,就是以对象的观点来分析现实世界中的问题。
从普通人认识世界的观点出发,把事物归类、综合,提取共性并加以描述。
面向对象的特点有抽象、封装和信息隐藏、继承和多态。
2.什么是构造和析构函数,有什么特点,它们可以重载吗
构造函数是一个函数名和类名相同的类成员函数,当这个类的对象被创建时,构造函数会被自动调用。
构造函数可以重载。
析构函数名也应与类名相同,只是在函数名前面加一个波浪符~,它不能带任何参数,也没有返回值(包括void类型)。
只能有一个析构函数,不能重载。
3.Const修饰符在类定义中有什么作用。
答:
const修饰符表示该参数在成员函数内不会,也不能被修改,成员函数修饰为const时,只能读取成员变量,不能修改。