#include<iostream>
using namespace std;
class work
{
private: // 年 月 日
bool Isyear ( int year ) //判断是否为 闰年
{
return ( (0 == year % 4 && 0 != year % 400 ) || ( 0 == year % 400 ));
}
int GetmonthDay ( int year, int month ) //返回某年某月的天数
{
int Daynumber;
if ( 2 == month ) //2月单独处理
{
if ( Isyear ( year ) )
Daynumber = 29;
else
Daynumber = 28;
}
else
{
if ( (month < 8 && 1 == month % 2) || ( month >= 8 && month % 2 == 0)) // 8月前奇数 31天 8月后 偶数 31天
Daynumber = 31;
if (( month < 8 && 0 == month % 2) || ( month >= 8 && month % 2 == 1 ))
Daynumber = 30;
}
return Daynumber;
}
public:
int NowToDay ( int year, int month, int day) //计算有多少天。。。
{
int DiDay, i;
//2013年
if ( year == 2013 )
{
DiDay = 0;
for ( i = 9 ; i < month; i++) //月份天数 现在是 从9月算
DiDay += GetmonthDay ( year, i);
DiDay += day - 10; //从10号开始
}
// 2014年以后
if ( year >= 2014)
{
DiDay = 0;
for ( i = 9 ; i < 13; i++) //月份天数 现在是 从9月算算到 年底
DiDay += GetmonthDay ( year, i);
DiDay += day - 10;
for ( i = 2014 ; i < year ; i ++) //2014年 多少天
if ( Isyear ( i ))
DiDay += 366 ; //闰年+366
else
DiDay += 365;
for ( i = 0; i < month ; i++)
DiDay += GetmonthDay ( year , i); // 每月多少天
DiDay = DiDay - (GetmonthDay( year, i) - day); //这个月有几天。
}
return DiDay;
}
bool Input ( int year, int month, int day)
{
int Tureday;
if( year < 2013 || month >= 13 || day > 31 ) //如果输入的日期小于 2013 或者 大于 13月 或者大于31 天 返回假
{
return false;
}
else
{
Tureday = GetmonthDay ( year, month );
if ( day > Tureday )
return false;
}
return true;
}
int FindDayB(int year, int month, int day ) //查找某一天是休息还是上班
{
int all;
char week[8][20]= {
{"工作第一天"},{"工作第二天"},{"工作第三天"},{"工作第四天"},
{"工作第五天"},{"工作第六天"},{"休息第一天"},{"休息第二天"}};
all = NowToDay (year, month, day);
char night[3][20] = {
{"中班"},{"夜班"},{"早班"}};
cout<<"---------"<<night[((all + 6) / 8) % 3];
cout<<"B组员工"<<week[(all + 6)% 8]<<"---------"<<endl<<endl;
return 0;
}
int FindDayA(int year, int month, int day ) //查找某一天是休息还是上班
{
int all;
char week[8][20]= {
{"工作第一天"},{"工作第二天"},{"工作第三天"},{"工作第四天"},
{"工作第五天"},{"工作第六天"},{"休息第一天"},{"休息第二天"}};
all = NowToDay (year, month, day);
char night[3][20] = {
{"夜班"},{"早班"},{"中班"}};
cout<<"---------"<<night[((all + 4) / 8) % 3];
cout<<"A组员工"<<week[(all + 4)% 8]<<"---------"<<endl<<endl;
return 0;
}
int FindDayC(int year, int month, int day ) //查找某一天是休息还是上班
{
int all;
char week[8][20]= {
{"工作第一天"},{"工作第二天"},{"工作第三天"},{"工作第四天"},
{"工作第五天"},{"工作第六天"},{"休息第一天"},{"休息第二天"}};
all = NowToDay (year, month, day);
char night[3][20] = {
{"中班"},{"夜班"},{"早班"}};
cout<<"---------"<<night[((all) / 8) % 3];
cout<<"C组员工"<<week[(all )% 8]<<"---------"<<endl<<endl;
return 0;
}
int FindDayD(int year, int month, int day ) //查找某一天是休息还是上班
{
int all;
char week[8][20]= {
{"工作第一天"},{"工作第二天"},{"工作第三天"},{"工作第四天"},
{"工作第五天"},{"工作第六天"},{"休息第一天"},{"休息第二天"}};
all = NowToDay (year, month, day);
char night[3][20] = {
{"早班"},{"中班"},{"夜班"}};
cout<<"---------"<<night[((all +2) / 8) % 3];
cout<<"D组员工"<<week[(all+2 )% 8]<<"---------"<<endl<<endl;
return 0;
}
};