c++实验报告 类的组合及应用.docx
- 文档编号:23883273
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:12
- 大小:67.59KB
c++实验报告 类的组合及应用.docx
《c++实验报告 类的组合及应用.docx》由会员分享,可在线阅读,更多相关《c++实验报告 类的组合及应用.docx(12页珍藏版)》请在冰豆网上搜索。
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
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"< cin>>year_today; if((year%4==0)||(year%400==0))other=1; elseother=0; do{ cout<<"pleaseentermonth_today"< 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"< 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<<"两个日期相差的天数为: "< } /******main.cpp******/ #include"cdate2.h" #include usingnamespacestd; voidmain() { cdate_countcha; cout<<"pleaseenterthedateoftoday"< cha.set_today(); cout<<"pleaseenterthedateofyouwanttosubtract: "< cha.set(); cha.display(); } 运行结果截图 题目2: 定义一个学生类,数据有姓名(用指针实现)、学号、性别、出生日期(cdate类型),成绩,班排名;求一个班10名学生的平均分和排名。 源程序2 #ifndefSTUDENT_H #defineSTUDENT_H #include 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< "< } }; #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[j].setrank(); } } for(i=0;i<10;i++) { aver+=stu[i].getscore(); stu[i].show(); } cout<<"Theaverageis: "< return0; } 运行结果截图 思考问题 1.什么是面向对象,面向对象有哪些特征。 答: 所谓面向对象,就是以对象的观点来分析现实世界中的问题。 从普通人认识世界的观点出发,把事物归类、综合,提取共性并加以描述。 面向对象的特点有抽象、封装和信息隐藏、继承和多态。 2.什么是构造和析构函数,有什么特点,它们可以重载吗 答: 构造函数是一个函数名和类名相同的类成员函数,当这个类的对象被创建时,构造函数会被自动调用。 构造函数可以重载。 析构函数名也应与类名相同,只是在函数名前面加一个波浪符~,它不能带任何参数,也没有返回值(包括void类型)。 只能有一个析构函数,不能重载。 3.Const修饰符在类定义中有什么作用。 答: const修饰符表示该参数在成员函数内不会,也不能被修改,成员函数修饰为const时,只能读取成员变量,不能修改。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+实验报告 类的组合及应用 c+ 实验 报告 组合 应用