没有合适的资源?快使用搜索试试~ 我知道了~
c++日期时间课程设计Time_Date。派生出DateTime类分享.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 82 浏览量
2021-12-08
12:32:54
上传
评论 1
收藏 29KB PDF 举报
温馨提示
试读
20页
c++日期时间课程设计Time_Date。派生出DateTime类分享.pdf
资源推荐
资源详情
资源评论
实验要求:
问题描述: (1)定义一个时间类 Time,能提供时、分、秒组成
的时间,并提供时间增加的方法(按秒) 。
(2)定义一个日期类 Date,记录年、月、日,并提供日期增加
的方法(按天)。
(3)由类 Time 和日期类 Date,派生出 DateTime 类,除具有年、
月、日、时、分、秒外,还增加国名和与格林威治时间的差。
编一应用程序,输入年、月、日、时、分、秒,在屏幕上模拟显
示一电子计时器, 不断输出下一秒的时间和日期, 以及格林威治的日
期和时间。
注意,当对日期增加 1 天后,会涉及所谓的“进位”问题:首先
算出本“日”所在的月份具有的天数 N,若加 1 之后的“日”数值超
过所在的月份具有的天数 N时,“进位”到月,而月份若超过 12 时
还要“进位”到年。
思考:可对该类增加你所考虑到的其他功能,如,对日期进行输
入,计算二日期的间隔天数,计算某日期为星期几,打印对象当前数
据的 y 年 m 月的月历,一次增加若干天,对两个日期进行其他比较
运算等。
题目分析:
定义时钟的相关属性, 包括 time,date,datetime类型的 year、
month、day、hour、minute、second,week等信息。
在计算时间日期的时候, 每达到 1 秒的时候对 second进行加 1,然后判断是
否达到 60 秒,达到的话 minute 就加 1,同样的方法对 hour、day、month 和 year
进行计算,在对 day 计数时,考虑到大小月和闰年,对 day 进行加 1 时,判断是
哪一月和是否为闰年。在确定年、月、日之后,使用函数 Week()进行对星期几
2
的计算,根据 1901 年每月 1 号是星期几可以得出现在是星期几。
在这个程序中,还使用了一个对话框类,使用对话框来对时间日期的设置。
在菜单栏里添加一个 “设置时间” 的选项和一个菜单消息, 当点击这个选项就会
弹出设置时间日期的对话框, 对话框中编辑控件设定了每个值的取值范围, 从而
对输入错误进行排除。
实验思路: 先判断年份是否是闰年,而计算出一年的天数,在定
义出 time 和 date 类,派生出 datetime 类。在进行实现赋值。同时
根据函数的重载推算出年份的二月天数, 而得到这天在这年的具体位
置。然后根据 void stuation1(datetime & t) 计算两日期相差天数。
用 void timers( datetime &dtime) 模 拟 电 子 计 时 器 , 用 goto
l;//exit();// 退出系统。
实验过程:
#include<iostream>
#include<string>
#include<cmath>
#include<windows.h>
using namespace std;
int mon[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
bool isleapyear(int year)// 判断是否是闰年
{return (year%4==0 && year%100!=0)||(year%400==0);
}
int mon_day(int year ,int month)// 判断月份对应的天数
{
if (isleapyear(year)&&month==2)
{
return 29;
}
else return mon[month];
}
int getyearday(int year)// 返回一年天数
{
if(isleapyear(year))
3
return 366;
else return 365;
}
class time
{
private:
int hour;
int minute;
int second;
public:
time();
time(int nhour,int nminute,int nsecond);
time(time &c);
~time();
int gethour(){return hour;};
int getminute(){return minute;};
int getsecond(){return second;};
void sethour(int nhour){hour=nhour;};
void setminute(int nminute){minute=nminute;};
void setsecond(int nsecond){second=nsecond;};
};
class date
{
private:
int year;
int month;
int day;
string week;
public:
date();
date(int y,int m,int d);
date(date &t);
~date();
int getyear(){return year;};
int getmonth(){return month;};
int getday(){return day;};
string getweek(){ return week;};
void setyear(int nyear){year=nyear;};
void setmonth(int nmonth){month=nmonth;};
void setday(int nday){day=nday;};
void setweek(string c){week=c;};
void reset(int y=0,int m=0,int d=0);
date operator +(const date &t);
date operator -(const date &t);
4
};
class datetime:public date,public time
{
private:
public:
datetime();
datetime(int nyear,int nmonth,int nday,int nhour,int nminute,int nsecond);
datetime(int nyear,int nmonth,int nday,time & c);
datetime(date & t,int nhour,int nminute,int nsecond);
datetime addbysecond();
datetime operator=(datetime & t);
datetime operator+(datetime & t);
};
time::time()
{
hour=0;
minute=0;
second=0;
}
time::time(int nhour,int nminute,int nsecond)
{
if(nhour>24||nhour<0)
{ hour=0;
}
else hour=nhour;
if(nminute>59||nminute<0)
{
minute=0;}
else minute=nminute;
if(nsecond>59||nsecond<0)
{
second=0;}
else second=nsecond;
}
time::time(time &c)
{
hour=c.hour;
minute=c.minute;
second=c.second;
}
time::~time()
{}
剩余19页未读,继续阅读
资源评论
- m0_747491572023-01-05超级好的资源,很值得参考学习,对我启发很大,支持!
gy51338424
- 粉丝: 0
- 资源: 11万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- foldcraftlauncher_262944.apk
- 珍藏多年的基于matlab实现潮流计算程序源代码集合,包含多个潮流计算程序.rar
- 使用FPGA实现串-并型乘法器
- 基于matlab实现针对基于双曲线定位的DV-Hop算法中误差误差出一种基于加权双曲线定位的DV-Hop改进算法.rar
- 基于matlab实现由遗传算法开发的整数规划,车辆调度问题.rar
- 电视家7.0(对电视配置要求高).apk
- 免费计算机毕业设计-基于JavaEE的医院病历管理系统设计与实现(包含论文+源码)
- 手机端 我的世界融合植物大战僵尸版.apk
- 植物大战僵尸 · 戴夫的老年生活 手机版.apk
- Runcraft · 我的世界跑酷游戏 手机端.apk
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功