日期时间显示程序廖海洋Word文档下载推荐.docx
《日期时间显示程序廖海洋Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《日期时间显示程序廖海洋Word文档下载推荐.docx(29页珍藏版)》请在冰豆网上搜索。
![日期时间显示程序廖海洋Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2022-10/26/f2b3c074-bb9d-4e14-9784-db13f64ded03/f2b3c074-bb9d-4e14-9784-db13f64ded031.gif)
所在的月份具有的天数N,假设加1之后的"
数值超过所在的月份具有的天数N时,"
到月,而月份假设超过12时还要"
到年。
1.2设计要求
〔1〕定义一个时间构造体类型time,能提供时、分、秒组成的时间,并提供时间增加的方法〔按秒〕。
〔2〕定义一个日期构造体类型Date,记录年、月、日,并提供日期增加的方法〔按天〕。
〔3〕定义个日期时间构造体类型DateTime,除具有年、月、日、时、分、秒外,还增加国名和与格林威治时间的差。
思考:
可对该类增加你所考虑到的其他功能,如,对日期进展输入,计算二日期的间隔天数,计算某日期为星期几,打印对象当前数据的y年m月的月历,一次增加假设干天,对两个日期进展其他比拟运算等。
2总体设计
2.1总体功能框架
1.时间模块
功能:
能提供时、分、秒组成的时间,并提供时间增加的方法〔按秒〕。
2.日期化模块
记录年、月、日,并提供日期增加的方法〔按天〕。
3.日期时间模块
除具有年、月、日、时、分、秒外,还增加国名和与格林威治时间的差
4.时间差模块
1.计算从出生到现在的年,月,日
2.计算两日期间隔天数
3.计算某日为星期几蔡勒(Zeller)公式
4.根据给定的日期,求出它在该年的第几天
5.日历模块
显示y年m月的日历
6.验证模块
功能:
1.验证所有日期格式是否正确
2.验证所有时间格式是否正确
7.杂项:
1.当前系统时间
2.返回一个月的天数
3.判断是否是闰年
2.2数据构造概要设计
classdate(基类)
classTime(基类)
classDateTime:
publicdate,Time(派生类)
继承前两个类,并提供全部时间的增加方法
图2-1
3详细设计
3.1数据构造详细设计
classdate//定义日期类
{
public:
intyear;
//年
intmonth;
//月
intday;
//日
date(inty,intm,intd);
~date(){};
voidadd();
//日期增加的方法
voidshowdate();
};
功能:
能提供时、分、秒组成的时间,并提供时间增加的方法〔按秒〕。
classTime//定义时间类
{
inthour;
//时
intminute;
//分
intsecond;
//秒
Time(inth,intm,ints);
~Time(){};
voidadd();
voidshowTime();
记录年、月、日,并提供日期增加的方法〔按天〕。
publicdate,Time//日期时间类
stringcountry;
//国家名
inttime_differ;
//时间差
DateTime(inth,intmi,ints,inty,intm,intd);
~DateTime(){};
//日期增加的方法
voidshowDateTime();
继承data,time类,提供所有时间的增加方法(年月日时分秒)
3.2系统功能详细设计
time类时间增加函数:
add()
使时间增加的算法
入口参数:
无。
出口参数:
图3-1
data类中的成员函数add()
使日期增加的算法
图3-2
DateTime类add()
使所有函数增加的方法
图3-3
全局函数intDayInYear(intyear,intmonth,intday)year:
年month:
月day日;
能根据给定的日期,求出它在该年的第几天。
intyear,intmonth,intday
day;
图3-4
全局函数intyearDay(intyear,intmonth,intday,intyear1,intmonth1,intday1)
求日期间隔
intyear,intmonth,intday,intyear1,intmonth1,intday1
天数。
图3-5
全局函数voidcalendar(inty,intm)
显示日历
inty,intmy:
年m月
输出日历
图3-6
全局函数boolpass_date(inty,intm,intd)
验证日期格式是否正确
inty,intm,intdy:
年m:
月d:
日。
0或1
图3-7
全局函数intMonth_Day(intyear,intmonth)year:
月
返回一个月的天数
intyear,intmonth
图3-8
4运行结果
图4-1
显示菜单的系统时间
图4-2
通过输入的年月日时分秒,显示一个模拟动态时钟,并显示相应格林威治时间.
图4-3
通过输入的两个日期,计算两日期间隔天数
图4-4
通过输入的日期,计算这一日是星期几
图4-5
通过输入的日期,显示这一月的日历
图4-6
通过输入的生日,显示从出生到现在的年月日
5课程设计总结
5.1编程中的问题及解决方法
相对于其他同学来说我的题目还是相对简单,不过也遇到了一些问题,就是对一些东西还不太懂,但这终归来说是学习不够,我解决问题最主要的问题是在网上搜,还有就是和同学交流讨论
5.2小结
回忆这次课程设计,至今我仍感慨颇多,确实,自从拿到题目到完成整个编程,从理论到实践,在整整一个星期的日子里,可以学到很多很多的东西,同时不仅可以稳固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论和知识是远远不够的,只有把所学的理论知识与实际相结合起来,从理论中得出结论,才能真正为社会效劳,从而提高自己的实际动手能力和独立思考能力
5.3心得体会
这次课程设计自我感觉我的题目比拟简单,但是我也很用心的在做,相比于上课来说,我认为课程设计能学到更多的知识,在这个过程中,遇到不会的,我会自己查资料,上网,实现一个个的功能,虽然我这道题目并不是很难,但是却学到了很多.课堂上要讲授许多关于c++语言的语法规那么,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。
然而要使用c++语言这个工具解决实际问题,又必须掌握它。
通过屡次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的根底上就会自然而然地掌握c语言的语法规定。
对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,这是由于大局部学生是初次接触程序设计,缺乏程序设计的实践所致。
5.4程序设计方法
1.在这个程序首先我用到了oop面向对象的程序设计思想,
2.我用到了基类和派生类的方法来实现模拟时钟的实现
3.在实现星期的函数中我还用到的数学方法来计算
[1]C++面向对象程序设计教程〔第3版〕.:
清华大学2021.6
附:
源代码
#include<
iostream>
#include<
windows.h>
cstdio>
time.h>
usingnamespacestd;
boolIsLeap(intyear)//判断是否是闰年
return(year%4==0)&
&
(year%100!
=0)||(year%400==0);
}
intMonth_Day(intyear,intmonth)//返回一个月的天数
intday=0;
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
day=31;
elseif(month==4||month==6||month==9||month==11)
day=30;
elseif(month==2)
day=28+IsLeap(year);
returnday+1;
Time:
:
Time(inth,intm,ints):
hour(h),minute(m),second(s)//采用成员初始化列表对成员赋值
{}
voidTime:
add()//时间增加的方法
if(second<
60)
++second;
if(second==60)
{
++minute;
second=0;
}
if(minute==60)
++hour;
minute=0;
if(hour==24)
hour=0;
}
showTime()//输出时间的方法
cout<
<
"
\t\t※"
\t\t"
hour<
时"
minute<
分"
second<
秒"
endl
<
\t\t※※※※※※※※※※※※※※※※"
endl;
//cout<
intyear;
//年
intmonth;
//月
intday;
//日
date(inty,intm,intd);
~date(){};