日期和时间课程设计报告Word下载.docx
- 文档编号:20812552
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:72
- 大小:186.49KB
日期和时间课程设计报告Word下载.docx
《日期和时间课程设计报告Word下载.docx》由会员分享,可在线阅读,更多相关《日期和时间课程设计报告Word下载.docx(72页珍藏版)》请在冰豆网上搜索。
设置为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<
iostream.h>
time.h>
#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;
=(constcTime_t&
booloperator>
booloperator==(constcTime_t&
booloperator!
constcTime_toperator+(constcTime_t&
T)const;
intoperator-(cTime_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&
friendclasscTDmanage;
};
#endif
//cTime_t.hEnd
//cTime_t.cpp
//implementationofcTime_t
#include"
cTime_t.h"
intcTime_t:
:
format=1;
FlagMoreDay=0;
//defaultvaluesforstaticdatamembers
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(constcTime_t&
T)//copyc'
Seconds=T.Seconds;
Minutes=T.Minutes;
Hours=T.Hours;
constcTime_t&
cTime_t:
operator=(constcTime_t&
T)//operator=function
//copyreleventfields
return*this;
voidcTime_t:
print()const//printfunction
switch(format)
{
case1:
if(Seconds<
10&
&
Minutes<
10)
cout<
"
Thetimeis:
"
Hours<
0"
Minutes<
Seconds<
."
endl;
elseif(Seconds<
cout<
elseif(Minutes<
else
break;
case2:
if(Hours<
=12)
{
Hours<
AM."
else
}
if(Seconds<
cout<
Hours-12<
PM."
elseif(Minutes<
elseif(Seconds<
else
default:
Theformatisnotok"
//error(ifformatvaluewasn'
toneoftheabove
}
print1()const//printfunction
boolcTime_t:
operator<
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;
=(constcTime_t&
T)const//operator<
=function
=T.Seconds);
operator>
T)const//operator>
if(Hours>
if(Minutes>
T.Minutes)returntrue;
if(Minutes==T.Minutes)
return(Seconds>
//------------------------------------
T.Hours)
returntrue;
T.Minutes)
returntrue;
operator==(constcTime_t&
T)const//operator==function
return((Hours==T.Hours)&
(Minutes==T.Minutes)&
(Seconds==T.Seconds));
operator!
T)const//operator!
return!
((Hours==T.Hours)&
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
HourTemp=Hours+T.Hours;
if(HourTemp>
=24)
FlagMoreDay=1;
//toadddaytodateclass
HourTemp-=24;
return(cTime_t(HourTemp,MinuteTemp,SecondTemp));
//returnlocaltimeclass
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
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
}*/
operator++()//operator++function
if((Seconds=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 日期 时间 课程设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)