c++课程设计重载运算符编程Word格式.docx

上传人:b****5 文档编号:19421316 上传时间:2023-01-06 格式:DOCX 页数:9 大小:67.06KB
下载 相关 举报
c++课程设计重载运算符编程Word格式.docx_第1页
第1页 / 共9页
c++课程设计重载运算符编程Word格式.docx_第2页
第2页 / 共9页
c++课程设计重载运算符编程Word格式.docx_第3页
第3页 / 共9页
c++课程设计重载运算符编程Word格式.docx_第4页
第4页 / 共9页
c++课程设计重载运算符编程Word格式.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

c++课程设计重载运算符编程Word格式.docx

《c++课程设计重载运算符编程Word格式.docx》由会员分享,可在线阅读,更多相关《c++课程设计重载运算符编程Word格式.docx(9页珍藏版)》请在冰豆网上搜索。

c++课程设计重载运算符编程Word格式.docx

四、设计小组成员

0806401-09冯雅文、0806401-10李敏、0806401-11孙慧群

五、指导老师

贾丽媛老师

六、设计课题

一个日期类Date,包括年、月、日等私有成员。

要求实现日期的基本运算,如一日期加上天数,一日期减去天数、两日期相差天数

七、基本思路及关键问题的解决方法

(一)基本思路:

1:

在Date类中设计如下重载运算符函数:

Dateoperator+(intdays);

返回一日期加一天数得到的日期

Dateoperator-(intdays);

返回一日期减去天数得到的日期

intoperator-(Date&

b);

返回两日期相差的天数

2:

在实现这些重载运算符函数调用以下私有成员函数:

leap(int);

判断指定的年份是否为闰年

dton(Date&

);

将指定日期转换为从0年0月0日起的天数

ntod(int);

将指定的0年0月0日起的天数转换为对应的日期

3:

在main()中,实现日期的基本运算

(二)关键问题的解决办法:

闰年与非闰年的判断,以及各月的天数的获得问题,解决办法是设置并引用二维数组

日期基本问题的实现问题,解决办法是在Date类中设计重载运算符函数:

Dateoperator+(intdays)、Dateoperator-(intdays)、intoperator-(Date&

b),同时调用以下私有成员函数leap(int)、dton(Date&

)、ntod(int)得以实现

如何使输入的日期有效,如20111334为无效日期,解决办法是在input()中设置if(month>

12||month<

1||day>

day_tab[leap(year)][month-1]||year<

=0),判断日期是否为有效日期。

八、流程图

图1

九、调试过程中出现的问题及相应解决办法

输入无效日期时,也能得到运算结果,如输入01332时,程序没察觉输入错误,细

心检查发现if语句编写错误,改正后得到正确的结果;

重载运算符函数的编写,如求两日期相差天数时,由于编写错误,得到错误的答案,

后通过看书,查相关资料,终于改写成功。

十、课程设计心得体会

通过此次课程设计,不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。

让我发现了许多自己平时学习的不足和薄弱环节,同时也让我明白到c++的学习方法就是“用编程来学会编程”,通过看懂例程,然后修改、完善例程、最后自己独立编程。

在此次课程设计过程中,和同学们相互探讨,相互学习,相互监督,让我学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。

总之,这次课程设计,考验了我综合运用知识的能力,真正做到学以致用,让我体会到了编程的乐趣,以后我会再接再厉,学得更好。

十一、源程序(每句语言要有详细解释)

#include<

iostream.h>

intday_tab[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},

{31,29,31,30,31,30,31,31,30,31,30,31}};

//day_tab二维数组存放各月天数,第一行对应非闰年,第二行对应闰年

classDate

{

intyear,month,day;

intleap(int);

intdton(Date&

Datentod(int);

public:

Date(){}

voidinput()

{

cin>

>

year>

month>

day;

while(month>

day_tab[leap(year)][month-1]||day<

=0||year<

=0)

{

cout<

<

"

invaliddate!

endl;

inputadateagain"

}

}

Date(inty,intm,intd)

year=y;

month=m;

day=d;

}

Dateoperator+(intdays)//返回一日期加上天数得到的日期

staticDatedate;

intnumber=dton(*this)+days;

date=ntod(number);

returndate;

Dateoperator-(intdays)//返回一日期减去天数得到的日期

intnumber=dton(*this);

number-=days;

b)//返回两日期相差的天数

intdays=dton(*this)-dton(b);

if(days>

returndays;

else

return-days;

voiddisp()

cout<

year<

."

month<

day<

};

intDate:

:

leap(intyear)//判断指定的年份是否为闰年

if(year%4==0&

&

year%100!

=0||year%400==0)//是闰年

return1;

else//不是闰年

return0;

d)//将指定日期转换为从0年0月0日起的天数

inty,m,days=0;

for(y=1;

y<

=d.year;

y++)

if(leap(y))

days+=366;

else

days+=365;

for(m=0;

m<

d.month-1;

m++)

if(leap(d.year))

days+=day_tab[1][m];

else

days+=day_tab[0][m];

days+=d.day;

DateDate:

ntod(intn)//将指定的0年0月0日起的天数转换为对应的日期

inty=1,m=1,d,rest=n,lp;

while

(1)

{

if(leap(y))

{

if(rest<

=366)

break;

rest-=366;

}

else

=365)

rest-=365;

y++;

}

y--;

lp=leap(y);

while(true)

if(lp)

if(rest>

day_tab[1][m-1])

rest-=day_tab[1][m-1];

else

break;

day_tab[0][m-1])

rest-=day_tab[0][m-1];

m++;

d=rest;

returnDate(y,m,d);

voidmain()

Datenow,then;

intn;

now:

;

now.input();

then:

then.input();

相差天数:

(then-now)<

pleaseinputn:

cin>

n;

Dated1=now+n,d2=now-n;

now+n:

d1.disp();

now-n:

d2.disp();

十二、实验结果:

日期输入正确时:

日期输入错误时:

参考文献

[美]WalterSavitch著,周靖译,C++面向对象程序设计——基础、数据结构与编程思想,清华大学出版社,2004

陈文宇,张松梅编著,C++语言教程,电子科技大学出版社,2004

谭浩强编著,C++程序设计,清华大学出版社,2004

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

当前位置:首页 > 工程科技 > 能源化工

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

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