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

上传人:啊飒飒 文档编号:10814749 上传时间:2021-06-05 格式:DOC 页数:54 大小:395.50KB
返回 下载 相关 举报
日期和时间课程设计报告.doc_第1页
第1页 / 共54页
日期和时间课程设计报告.doc_第2页
第2页 / 共54页
日期和时间课程设计报告.doc_第3页
第3页 / 共54页
日期和时间课程设计报告.doc_第4页
第4页 / 共54页
日期和时间课程设计报告.doc_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《日期和时间课程设计报告.doc》由会员分享,可在线阅读,更多相关《日期和时间课程设计报告.doc(54页珍藏版)》请在三一文库上搜索。

1、日期和时间课程设计报告1. 功能1.1课程设计题目功能:定义了日期类、时间类和日期时间综合类,重载了+、-、+、-、=、=、=、=、!=等运算符,可以设置时间、日期,比较时间和日期的大小,可以进行时间、日期对象的运算(加减),并按多种格式输出结果。1.2思想和方法:通过重载运算符使运算符实现对对象的加减运算,并在结果输出时自动载入闰年判断程序,实现结果的智能化输出;将菜单输出和结果输出隔开,防止混淆;日期类中将星期五单独定义,实现对错误的处理;通过拷贝函数的运用,实现“+”、“-”的重载。1.3增加的新功能:增加了对运算起始日期时间的修改和各操作菜单的退出功能。2. 详细设计2.1 c_Tim

2、e类:重载了+、-、+、-、=、!=、=运算符;将时间是否超过或少于当天设置为静态静态成员函数,设置了两个输出函数;“-”中,优化了结构,以四行将原程序代替,将少于一天的情况在后面列出;“+”中,将数值超过范围的情况的处理在后面列出。2.2 c_Date类:重载了+、-、+、-、=、!=、=运算符;设置了两个输出函数;简化了“+”运算符,同时修正了错误;“+”“-”中,将数值超过范围的情况的处理在后面列出;在第一个函数中,对当前时间日期进行了赋值,是起始日期时间的设定函数。2.3 TDmanage类:重载了+、-、+、-、=、!=、=运算符;设置为c_Time和c_Date的派生类,可以实现对

3、时间和日期的混合加减比较。2.4 TDglobal类:为输入输出的专门的类,重载了运算符。2.5 error类:为专门处理错误的类,包括对原日期时间少于1900的处理,以及在“+”、“-”中结果少于1900的处理,以及输出时日期时间少于1900的处理。2.6 main类:以swith型进行菜单的输出,主要是对所有程序的综合处理,对菜单项的编辑,是最后的运行程序。3. 调试过程3.1出现了编译时无问题,而调试时提示没有相关函数的问题,编译结束后载入相关文件解决了问题。3.2无法有效退出,将函数改为swith型解决问题。3.3出现了输出结果与预期不符的状况,更改了输出变量名解决问题。3.4最开始时

4、没有设置对“+”的错误类进行设置,由于不太可能遇到相关情况,没有注意,后来看课本才发现。4. 输入输出开始界面时间格式的更改与否主操作菜单时间类操作,以“+”为例其后继续为主操作菜单日期类操作,以“-”为例综合类操作,以比较为例5. 总结本程序大量运用了运算符的重载,并且用到了多文件的处理,对以后处理或创建大程序很有帮助。而且运算符重载实际上是有很多技巧的,最一般的“+”“-”重载,需要考虑输入的数据的类型及对输出结果的要求。另外错误处理也是个难关,即“error”类,不仅要考虑原日期时间的处理,还要考虑对运算符错误的处理,很有可能会落下某些情况,需要不断调试以保证每种情况都考虑到了。这个程序

5、对个人对类处理必须相当熟悉,几乎将所有可能的情况都涉及了,而且难度不算太大,对于刚接触c+没有太长时间的我们是个很好的练习课程。6. 附件源程序:/cTime_t.h Begin#include #include #ifndef cTime_t_h#define cTime_t_hclass cTime_tstatic int FlagMoreDay;static int FlagLessDay;static int format;int Seconds;int Minutes;int Hours;struct tm *CurrentTime;time_t time_date;public:c

6、Time_t();cTime_t(const cTime_t &T);cTime_t(int hour,int min=0,int sec=0):Seconds(sec),Minutes(min),Hours(hour) ;cTime_t();const cTime_t& operator = (const cTime_t& T);inline void SetSec (int sec) Seconds=sec;inline void SetMin (int min) Minutes=min;inline void SetHour (int hour) Hours=hour;void prin

7、t() const;void print1() const;inline int GetSec () const return Seconds;inline int GetMin () const return Minutes;inline int GetHour () const return Hours;int getFlagMoreDay()return FlagMoreDay;int getFlagLessDay()return FlagLessDay;void resetFlagMoreDay()FlagMoreDay=0;void resetFlagLessDay()FlagLes

8、sDay=0;bool operator (const cTime_t& T)const;bool operator (const cTime_t& T)const;bool operator = (const cTime_t& T)const;bool operator = (const cTime_t& T)const;bool operator != (const cTime_t& T)const;const cTime_t operator + (const cTime_t& T) const;int operator - (cTime_t& T);const cTime_t oper

9、ator + (int NewMinutes);const cTime_t operator - (int NewMinutes);int getformat1()return format;void operator + ();void operator - (); static void ChangeFormat() format = (format=1)? 2 : 1 ; /format can be only 1 or 2friend ostream& operator (istream &in, cTime_t &T) ;friend class cTDmanage;#endif/c

10、Time_t.h End/cTime_t.cpp/implementation of cTime_t#include cTime_t.hint cTime_t:format=1;int cTime_t:FlagMoreDay=0; / default values for static data membersint cTime_t:FlagLessDay=0;/-cTime_t:cTime_t() /empty ctortime_date=time(0);CurrentTime=localtime(&time_date);Seconds=CurrentTime-tm_sec;Minutes=

11、CurrentTime-tm_min;Hours=CurrentTime-tm_hour;/-cTime_t:cTime_t(const cTime_t &T) /copy ctorSeconds=T.Seconds;Minutes=T.Minutes;Hours=T.Hours;/-const cTime_t& cTime_t:operator = (const cTime_t& T) /operator = functionSeconds=T.Seconds;Minutes=T.Minutes; / copy relevent fieldsHours=T.Hours;return *thi

12、s;/-void cTime_t:print() const /print functionswitch(format)case 1:if(Seconds10 & Minutes10)coutThe time is: Hours:0Minutes:0Seconds.endl;else if(Seconds10)coutThe time is: Hours:Minutes:0Seconds.endl;else if(Minutes10)coutThe time is: Hours:0Minutes:Seconds.endl;elsecoutThe time is: Hours:Minutes:S

13、econds.endl;break;case 2:if(Hours=12)if(Seconds10 & Minutes10)coutThe time is: Hours:0Minutes:0Seconds AM.endl;else if(Minutes10)coutThe time is: Hours:0Minutes:Seconds AM.endl;else if(Seconds10)coutThe time is: Hours:Minutes:0Seconds AM.endl;else coutThe time is: Hours:Minutes:Seconds AM.endl;else

14、if (Seconds10 & Minutes10)coutThe time is: Hours-12:0Minutes:0Seconds PM.endl; else if (Minutes10)coutThe time is: Hours-12:0Minutes:Seconds PM.endl;else if (Seconds10)coutThe time is: Hours-12:Minutes:0Seconds PM.endl;elsecoutThe time is: Hours-12:Minutes:Seconds PM.endl;break;default:coutThe forma

15、t is not okendl; /error (if format value wasnt one of the above/-void cTime_t:print1() const /print functionswitch(format)case 1:if(Seconds10 & Minutes10)cout Hours:0Minutes:0Seconds.endl;else if(Seconds10)cout Hours:Minutes:0Seconds.endl;else if(Minutes10)cout Hours:0Minutes:Seconds.endl;elsecout H

16、ours:Minutes:Seconds.endl;break;case 2:if(Hours=12)if(Seconds10 & Minutes10)coutHours:0Minutes:0Seconds AM.endl;else if(Minutes10)coutHours:0Minutes:Seconds AM.endl;else if(Seconds10)coutHours:Minutes:0Seconds AM.endl;else coutHours:Minutes:Seconds AM.endl;else if (Seconds10 & Minutes10)coutHours-12

17、:0Minutes:0Seconds PM.endl; else if (Minutes10)coutHours-12:0Minutes:Seconds PM.endl;else if (Seconds10)coutHours-12:Minutes:0Seconds PM.endl;elsecoutHours-12:Minutes:Seconds PM.endl;break;default:coutThe format is not okendl; /error (if format value wasnt one of the above/-bool cTime_t:operator (co

18、nst cTime_t& T)const /operator functionif (HoursT.Hours)return true;if(Hours=T.Hours)if(MinutesT.Minutes)return true;if(Minutes=T.Minutes)return (SecondsT.Seconds);return false;/-bool cTime_t:operator = (const cTime_t &T)const /operator = functionif (HoursT.Hours)return true;if(Hours=T.Hours)if(Minu

19、tesT.Minutes)return true;if(Minutes=T.Minutes)return (Seconds (const cTime_t& T)const /operator functionif (HoursT.Hours)return true;if(Hours=T.Hours)if(MinutesT.Minutes)return true;if(Minutes=T.Minutes)return (SecondsT.Seconds);return false;/-bool cTime_t:operator = (const cTime_t& T)const /operato

20、r = functionif (HoursT.Hours)return true;if(Hours=T.Hours)if(MinutesT.Minutes)return true;if(Minutes=T.Minutes)return (Seconds=T.Seconds);return false;/-bool cTime_t:operator = (const cTime_t &T)const /operator = functionreturn ( (Hours=T.Hours) & (Minutes=T.Minutes) & (Seconds=T.Seconds) );/-bool c

21、Time_t:operator != (const cTime_t &T)const/operator != functionreturn !( (Hours=T.Hours) & (Minutes=T.Minutes) & (Seconds=T.Seconds) );/-const cTime_t cTime_t:operator + (const cTime_t &T) const /operator + functionint HourTemp,MinuteTemp,SecondTemp;/define 3 temp variables to get time dataSecondTem

22、p=Seconds+T.Seconds;if(SecondTemp=60)/more thrn 1 minuteSecondTemp-=60;MinuteTemp=Minutes+T.Minutes+1;/so add to minuteelseMinuteTemp=Minutes+T.Minutes;if(MinuteTemp=60)/more then 1 hourMinuteTemp-=60;HourTemp=Hours+T.Hours+1;/add to hourelseHourTemp=Hours+T.Hours;if(HourTemp=24)FlagMoreDay=1; /to a

23、dd day to date classHourTemp-=24;return (cTime_t (HourTemp,MinuteTemp,SecondTemp) ); /return local time class /-int cTime_t:operator - (cTime_t &T)int newhour,newminute;newhour=Hours-T.Hours;newminute=Minutes-T.Minutes;return newhour*60+newminute;/*const cTime_t cTime_t:operator - (const cTime_t &T)

24、 const /operaor - functionint HourTemp,MinuteTemp,SecondTemp;/define 3 temp variables to get time dataHourTemp = Hours-T.Hours;if(HourTemp0)/T class hour was bigger then THIS classFlagLessDay=1; /to cut 1 day form date classHourTemp+=24;/ add 24 hours to previous dayMinuteTemp=Minutes-T.Minutes;if(M

25、inuteTemp0)/same for minutesMinuteTemp+=60;-HourTemp;SecondTemp=Seconds-T.Seconds;if(SecondTemp=60)MinuteTemp-=60;HourTemp+=1;while(HourTemp=24)HourTemp-=24;FlagMoreDay+=1;return (cTime_t (HourTemp,MinuteTemp,SecondTemp) );const cTime_t cTime_t:operator - (int NewMinutes)int HourTemp,MinuteTemp,Seco

26、ndTemp;SecondTemp=Seconds;HourTemp=Hours;MinuteTemp=Minutes-NewMinutes;while(MinuteTemp0)MinuteTemp+=60;HourTemp-=1;while(HourTemp0)HourTemp+=24;FlagLessDay=1;return (cTime_t (HourTemp,MinuteTemp,SecondTemp) );/cTime_t.cpp end/cDate_t.h Begin#include #include #ifndef cDate_t_h#define cDate_t_h#defin

27、e N 3class cDate_tenum Days Saturday,Sunday,Monday,Tuesday,Wensday,Thursday,Friday ;enum Months None,January,February,Mars,April,May,June,July,August,September,October,November,December ;static int format;static char Mon10;static char DDays10;int Day;int Month;int Year;struct tm *CurrentTime;time_t

28、time_date;public: bool Error;cDate_t();cDate_t(const cDate_t &D);cDate_t(int year,int month,int day);cDate_t()const cDate_t& operator = (const cDate_t& D);inline void SetDay (int day) Day=day;inline void SetMon (int mon) Month=mon;inline void SetYear (int year) Year=year;void print();void print1();i

29、nline int GetDayOfMonth () const return Day;inline int GetMonth () const return Month;inline int GetYear () const return Year;int GetDayOfYear(int year,int month,int day);int GetDaysInMonth(int month,int year);int GetDayOfWeek();bool IsLeapYear(int year);char* GetDayOfWeekName();char* GetNameOfMonth

30、();int RetriveDay(int Days,int year);int RetriveMonth(int Days,int year);bool operator (const cDate_t& D)const;bool operator (const cDate_t& D)const;bool operator = (const cDate_t& D)const;bool operator = (const cDate_t& D)const;bool operator != (const cDate_t& D)const;const cDate_t operator + (cons

31、t cDate_t& D) ;int operator - (cDate_t& D) ;const cDate_t operator + (int Days) ;const cDate_t operator - (int Days) ;int getformat2()return format;void operator + ();void operator - (); static void cDate_t:ChangeFormat() /implementation of static function must be in headerswitch(format) case 1: for

32、mat=2; break;case 2: format=3; break;case 3: format=1; friend ostream& operator (istream &in, cDate_t &D) ;void SetError() Error=false;friend class cTDmanage;#endif/cDate_t.h End/cDate_t.cpp Begin/implementation of cDate_t.h#include cDate_t.h#include error.h#include #define max(a, b) (a) (b) ? (a) :

33、 (b)#define min(a, b) (a) tm_mday;Month=CurrentTime-tm_mon+1;Year=CurrentTime-tm_year+1900;/-cDate_t:cDate_t(int year,int month,int day):Year(year),Month(month),Day(day) /ctorSetError();if (Year1900) /错误的数字 Error1();Error=true;/-cDate_t:cDate_t(const cDate_t &D) /拷贝的构造函数SetError();Day=D.Day;Month=D.Month;Year=D.Year;if (Year1900)/错误的数字Error1();Error=true;/-const cDate_t& cDate_t:operator = (const c

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

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1