日期时间显示程序廖海洋.docx
- 文档编号:2069046
- 上传时间:2022-10-26
- 格式:DOCX
- 页数:29
- 大小:874.48KB
日期时间显示程序廖海洋.docx
《日期时间显示程序廖海洋.docx》由会员分享,可在线阅读,更多相关《日期时间显示程序廖海洋.docx(29页珍藏版)》请在冰豆网上搜索。
日期时间显示程序廖海洋
信息科学与技术学院
程序设计根底课程设计报告
题目名称:
日期时间显示程序
学生XX:
廖海洋
学号:
2021508010
专业班级:
14计科1班
指导教师:
郭理
2021年6月17日
1课程设计题目与要求
1.1设计题目
C++题目11:
日期时间显示程序:
编一应用程序,输入年、月、日、时、分、秒,在屏幕上模拟显示一电子计时器,不断输出下一秒的时间和日期,以及格林威治的日期和时间。
注意,当对日期增加1天后,会涉及所谓的"进位"问题:
首先算出本"日"所在的月份具有的天数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//定义时间类
{
public:
inthour;//时
intminute;//分
intsecond;//秒
Time(inth,intm,ints);
~Time(){};
voidadd();
voidshowTime();
};
功能:
记录年、月、日,并提供日期增加的方法〔按天〕。
classDateTime:
publicdate,Time//日期时间类
{
stringcountry;//国家名
inttime_differ;//时间差
public:
DateTime(inth,intmi,ints,inty,intm,intd);
~DateTime(){};
voidadd();//日期增加的方法
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:
年month:
月
功能:
返回一个月的天数
入口参数:
intyear,intmonth
出口参数:
0或1
图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
#include
#include
#include
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;
}
classTime//定义时间类
{
public:
inthour;//时
intminute;//分
intsecond;//秒
Time(inth,intm,ints);
~Time(){};
voidadd();
voidshowTime();
};
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;
}
}
voidTime:
:
showTime()//输出时间的方法
{
cout<<"\t\t※"<<"\t\t"< "< "< <<"\t\t※※※※※※※※※※※※※※※※"< //cout<<"\t\t"< "< "< } classdate//定义日期类 { public: intyear;//年 intmonth;//月 intday;//日 date(inty,intm,intd); ~date(){}; voidadd();//日期增加的方法
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 日期 时间 显示 程序 海洋