日期和时间课程设计报告.docx

上传人:b****5 文档编号:7687615 上传时间:2023-01-25 格式:DOCX 页数:72 大小:186.49KB
下载 相关 举报
日期和时间课程设计报告.docx_第1页
第1页 / 共72页
日期和时间课程设计报告.docx_第2页
第2页 / 共72页
日期和时间课程设计报告.docx_第3页
第3页 / 共72页
日期和时间课程设计报告.docx_第4页
第4页 / 共72页
日期和时间课程设计报告.docx_第5页
第5页 / 共72页
点击查看更多>>
下载资源
资源描述

日期和时间课程设计报告.docx

《日期和时间课程设计报告.docx》由会员分享,可在线阅读,更多相关《日期和时间课程设计报告.docx(72页珍藏版)》请在冰豆网上搜索。

日期和时间课程设计报告.docx

日期和时间课程设计报告

日期和时间课程设计报告

日期和时间课程设计报告

1.功能

1.1课程设计题目功能:

定义了日期类、时间类和日期时间综合类,重载了+、-、++、--、=、>=、<=、==、!

=等运算符,可以设置时间、日期,比较时间和日期的大小,可以进行时间、日期对象的运算(加减),并按多种格式输出结果。

1.2思想和方法:

通过重载运算符使运算符实现对对象的加减运算,并在结果输出时自动载入闰年判断程序,实现结果的智能化输出;将菜单输出和结果输出隔开,防止混淆;日期类中将星期五单独定义,实现对错误的处理;通过拷贝函数的运用,实现“+”、“-”的重载。

1.3增加的新功能:

增加了对运算起始日期时间的修改和各操作菜单的退出功能。

2.详细设计

2.1c_Time类:

重载了+、-、++、--、==、!

=、<、>、<=、>=运算符;将时间是否超过或少于当天设置为静态静态成员函数,设置了两个输出函数;“-”中,优化了结构,以四行将原程序代替,将少于一天的情况在后面列出;“+”中,将数值超过范围的情况的处理在后面列出。

2.2c_Date类:

重载了+、-、++、--、==、!

=、<、>、<=、>=运算符;设置了两个输出函数;简化了“+”运算符,同时修正了错误;“+”“-”中,将数值超过范围的情况的处理在后面列出;在第一个函数中,对当前时间日期进行了赋值,是起始日期时间的设定函数。

2.3TDmanage类:

重载了+、-、++、--、==、!

=、<、>、<=、>=运算符;设置为c_Time和c_Date的派生类,可以实现对时间和日期的混合加减比较。

2.4TDglobal类:

为输入输出的专门的类,重载了<<,>>运算符。

2.5error类:

为专门处理错误的类,包括对原日期时间少于1900的处理,以及在“+”、“-”中结果少于1900的处理,以及输出时日期时间少于1900的处理。

2.6main类:

以swith型进行菜单的输出,主要是对所有程序的综合处理,对菜单项的编辑,是最后的运行程序。

3.调试过程

3.1出现了编译时无问题,而调试时提示没有相关函数的问题,编译结束后载入相关文件解决了问题。

3.2无法有效退出,将函数改为swith型解决问题。

3.3出现了输出结果与预期不符的状况,更改了输出变量名解决问题。

3.4最开始时没有设置对“+”的错误类进行设置,由于不太可能遇到相关情况,没有注意,后来看课本才发现。

4.输入输出

开始界面

时间格式的更改与否

主操作菜单

时间类操作,以“+”为例

其后继续为主操作菜单

日期类操作,以“-”为例

综合类操作,以比较为例

5.总结

本程序大量运用了运算符的重载,并且用到了多文件的处理,对以后处理或创建大程序很有帮助。

而且运算符重载实际上是有很多技巧的,最一般的“+”“-”重载,需要考虑输入的数据的类型及对输出结果的要求。

另外错误处理也是个难关,即“error”类,不仅要考虑原日期时间的处理,还要考虑对运算符错误的处理,很有可能会落下某些情况,需要不断调试以保证每种情况都考虑到了。

这个程序对个人对类处理必须相当熟悉,几乎将所有可能的情况都涉及了,而且难度不算太大,对于刚接触c++没有太长时间的我们是个很好的练习课程。

6.附件

源程序:

//cTime_t.hBegin

#include

#include

#ifndefcTime_t_h

#definecTime_t_h

classcTime_t

{

staticintFlagMoreDay;

staticintFlagLessDay;

staticintformat;

intSeconds;

intMinutes;

intHours;

structtm*CurrentTime;

time_ttime_date;

public:

cTime_t();

cTime_t(constcTime_t&T);

cTime_t(inthour,intmin=0,intsec=0):

Seconds(sec),Minutes(min),Hours(hour){};

~cTime_t(){};

constcTime_t&operator=(constcTime_t&T);

inlinevoidSetSec(intsec){Seconds=sec;}

inlinevoidSetMin(intmin){Minutes=min;}

inlinevoidSetHour(inthour){Hours=hour;}

voidprint()const;

voidprint1()const;

inlineintGetSec()const{returnSeconds;}

inlineintGetMin()const{returnMinutes;}

inlineintGetHour()const{returnHours;}

intgetFlagMoreDay(){returnFlagMoreDay;}

intgetFlagLessDay(){returnFlagLessDay;}

voidresetFlagMoreDay(){FlagMoreDay=0;}

voidresetFlagLessDay(){FlagLessDay=0;}

booloperator<(constcTime_t&T)const;

booloperator<=(constcTime_t&T)const;

booloperator>(constcTime_t&T)const;

booloperator>=(constcTime_t&T)const;

booloperator==(constcTime_t&T)const;

booloperator!

=(constcTime_t&T)const;

constcTime_toperator+(constcTime_t&T)const;

intoperator-(cTime_t&T);

constcTime_toperator+(intNewMinutes);

constcTime_toperator-(intNewMinutes);

intgetformat1(){returnformat;}

voidoperator++();

voidoperator--();

staticvoidChangeFormat(){format=(format==1)?

2:

1;}//formatcanbeonly1or2

friendostream&operator<<(ostream&out,constcTime_t&T);

friendistream&operator>>(istream&in,cTime_t&T);

friendclasscTDmanage;

};

#endif

//cTime_t.hEnd

//cTime_t.cpp

//implementationofcTime_t

#include"cTime_t.h"

intcTime_t:

:

format=1;

intcTime_t:

:

FlagMoreDay=0;//defaultvaluesforstaticdatamembers

intcTime_t:

:

FlagLessDay=0;

//------------------------------------

cTime_t:

:

cTime_t()//emptyc'tor

{

time_date=time(0);

CurrentTime=localtime(&time_date);

Seconds=CurrentTime->tm_sec;

Minutes=CurrentTime->tm_min;

Hours=CurrentTime->tm_hour;

}

//------------------------------------

cTime_t:

:

cTime_t(constcTime_t&T)//copyc'tor

{

Seconds=T.Seconds;

Minutes=T.Minutes;

Hours=T.Hours;

}

//------------------------------------

constcTime_t&cTime_t:

:

operator=(constcTime_t&T)//operator=function

{

Seconds=T.Seconds;

Minutes=T.Minutes;//copyreleventfields

Hours=T.Hours;

return*this;

}

//------------------------------------

voidcTime_t:

:

print()const//printfunction

{

switch(format)

{

case1:

if(Seconds<10&&Minutes<10)

cout<<"Thetimeis:

"<

0"<

0"<

elseif(Seconds<10)

cout<<"Thetimeis:

"<

"<

0"<

elseif(Minutes<10)

cout<<"Thetimeis:

"<

0"<

"<

else

cout<<"Thetimeis:

"<

"<

"<

break;

case2:

if(Hours<=12)

{

if(Seconds<10&&Minutes<10)

cout<<"Thetimeis:

"<

0"<

0"<

elseif(Minutes<10)

cout<<"Thetimeis:

"<

0"<

"<

elseif(Seconds<10)

cout<<"Thetimeis:

"<

"<

0"<

else

cout<<"Thetimeis:

"<

"<

"<

}

else

{

if(Seconds<10&&Minutes<10)

cout<<"Thetimeis:

"<

0"<

0"<

elseif(Minutes<10)

cout<<"Thetimeis:

"<

0"<

"<

elseif(Seconds<10)

cout<<"Thetimeis:

"<

"<

0"<

else

cout<<"Thetimeis:

"<

"<

"<

}

break;

default:

cout<<"Theformatisnotok"<

}

}

//------------------------------------

voidcTime_t:

:

print1()const//printfunction

{

switch(format)

{

case1:

if(Seconds<10&&Minutes<10)

cout<

0"<

0"<

elseif(Seconds<10)

cout<

"<

0"<

elseif(Minutes<10)

cout<

0"<

"<

else

cout<

"<

"<

break;

case2:

if(Hours<=12)

{

if(Seconds<10&&Minutes<10)

cout<

0"<

0"<

elseif(Minutes<10)

cout<

0"<

"<

elseif(Seconds<10)

cout<

"<

0"<

else

cout<

"<

"<

}

else

{

if(Seconds<10&&Minutes<10)

cout<

0"<

0"<

elseif(Minutes<10)

cout<

0"<

"<

elseif(Seconds<10)

cout<

"<

0"<

else

cout<

"<

"<

}

break;

default:

cout<<"Theformatisnotok"<

}

}

 

//------------------------------------

boolcTime_t:

:

operator<(constcTime_t&T)const//operator

{

if(Hours

if(Hours==T.Hours)

{

if(Minutes

if(Minutes==T.Minutes)return(Seconds

}

returnfalse;

}

//------------------------------------

boolcTime_t:

:

operator<=(constcTime_t&T)const//operator<=function

{

if(Hours

if(Hours==T.Hours)

{

if(Minutes

if(Minutes==T.Minutes)return(Seconds<=T.Seconds);

}

returnfalse;

}

//------------------------------------

boolcTime_t:

:

operator>(constcTime_t&T)const//operator>function

{

if(Hours>T.Hours)returntrue;

if(Hours==T.Hours)

{

if(Minutes>T.Minutes)returntrue;

if(Minutes==T.Minutes)

return(Seconds>T.Seconds);

}

returnfalse;

}

//------------------------------------

boolcTime_t:

:

operator>=(constcTime_t&T)const//operator>=function

{

if(Hours>T.Hours)

returntrue;

if(Hours==T.Hours)

{

if(Minutes>T.Minutes)

returntrue;

if(Minutes==T.Minutes)

return(Seconds>=T.Seconds);

}

returnfalse;

}

//------------------------------------

boolcTime_t:

:

operator==(constcTime_t&T)const//operator==function

{

return((Hours==T.Hours)&&(Minutes==T.Minutes)&&(Seconds==T.Seconds));

}

//------------------------------------

boolcTime_t:

:

operator!

=(constcTime_t&T)const//operator!

=function

{

return!

((Hours==T.Hours)&&(Minutes==T.Minutes)&&(Seconds==T.Seconds));

}

//------------------------------------

constcTime_tcTime_t:

:

operator+(constcTime_t&T)const//operator+function

{

intHourTemp,MinuteTemp,SecondTemp;//define3tempvariablestogettimedata

SecondTemp=Seconds+T.Seconds;

if(SecondTemp>=60)//morethrn1minute

{

SecondTemp-=60;

MinuteTemp=Minutes+T.Minutes+1;//soaddtominute

}

else

MinuteTemp=Minutes+T.Minutes;

if(MinuteTemp>=60)//morethen1hour

{

MinuteTemp-=60;

HourTemp=Hours+T.Hours+1;//addtohour

}

else

HourTemp=Hours+T.Hours;

if(HourTemp>=24)

{

FlagMoreDay=1;//toadddaytodateclass

HourTemp-=24;

}

return(cTime_t(HourTemp,MinuteTemp,SecondTemp));//returnlocaltimeclass

}

//------------------------------------

intcTime_t:

:

operator-(cTime_t&T)

{

intnewhour,newminute;

newhour=Hours-T.Hours;

newminute=Minutes-T.Minutes;

returnnewhour*60+newminute;

}

/*constcTime_tcTime_t:

:

operator-(constcTime_t&T)const//operaor-function

{

intHourTemp,MinuteTemp,SecondTemp;//define3tempvariablestogettimedata

HourTemp=Hours-T.Hours;

if(HourTemp<0)//TclasshourwasbiggerthenTHISclass

{

FlagLessDay=1;//tocut1dayformdateclass

HourTemp+=24;//add24hourstopreviousday

}

MinuteTemp=Minutes-T.Minutes;

if(MinuteTemp<0)//sameforminutes

{

MinuteTemp+=60;

--HourTemp;

}

SecondTemp=Seconds-T.Seconds;

if(SecondTemp<0)//sameforseconds

{

SecondTemp+=60;

--MinuteTemp;

}

return(cTime_t(HourTemp,MinuteTemp,SecondTemp));//returnlocalclass

}*/

//------------------------------------

voidcTime_t:

:

operator++()//operator++function

{

if((Seconds=

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

当前位置:首页 > 初中教育 > 理化生

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

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