#include<iostream>
# include<fstream>
#include<time.h>
#include<string>
#include<iomanip>
using namespace std;
void bangzhu();
void xianzaishijian();
void chakanrili();
int runnian(int);
int tianshu(int,int);
void shuru();
int shurupanduan(int ,int,int);
void shuchu();
void shuxiang(int);
void shuchushuxiang();
void dijitian();
void nianli();
int main() //主函数
{
int a;
bangzhu();
while(cin>>a)
{if(a==0)
break;
system("cls"); switch(a)
{//case 0: break;break;
case 1: xianzaishijian(),bangzhu();break;
case 2: chakanrili();break;
case 3: shuchushuxiang();break;
case 4: dijitian();break;
case 5: nianli();break; case 9: bangzhu();break;} }
return 0;} void xianzaishijian() //输出现在时间以及当前月份日历
{
time_t t = time(NULL);
struct tm *local = localtime(&t);
int year = local -> tm_year + 1900;
int month = local -> tm_mon + 1;
int day = local -> tm_mday;
int hour = local -> tm_hour;
int minute = local -> tm_min;
int second = local -> tm_sec; int d,y,m,l;
y=year;
m=month;
d=day;
int z=1;
l=shurupanduan(y, m,z);
while(l==0)
{cin>>y>>m;
l=shurupanduan(y,m,z);
}
int q,s,i,sum=0;
for(i=1905;i<y;i++)
{sum+=365;
s=runnian(i);
if(s==1)
sum++;}
for(i=1;i<m;i++)
{s=runnian(y);
switch(i)
{case 1:q=31;break;
case 2:q=28;break;
case 3:q=31;break;
case 5:q=31;break;
case 7:q=31;break;
case 8:q=31;break;
case 10:q=31;break;
case 12:q=31;break;
case 4:q=30;break;
case 6:q=30;break;
case 9:q=30;break;
case 11:q=30;break;}
sum+=q;
}
if(s==1&&m>2)
sum++;
switch(m)
{case 1:q=31;break;
case 2:q=28;break;
case 3:q=31;break;
case 5:q=31;break;
case 7:q=31;break;
case 8:q=31;break;
case 10:q=31;break;
case 12:q=31;break;
case 4:q=30;break;
case 6:q=30;break;
case 9:q=30;break;
case 11:q=30;break;}
s=runnian(y);
if(s==1&&m==2)
q++;
int u,w;
u=sum%7;
w=3*u;
sum=sum+d;
d--;
d=sum%7; cout <<"当前时间: "<<endl<<year<<"年"<<month<<"月"<<day<<"日"<<' '<<"星期"; switch(d)
{case 0:cout<<"日";break;
case 1:cout<<"一";break;
case 2:cout<<"二";break;
case 3:cout<<"三";break;
case 4:cout<<"四";break;
case 5:cout<<"五";break;
case 6:cout<<"六";break;
}
cout<<" ";
shuxiang(year);
cout <<endl<<" "<<hour<<":"<<minute<<":"<<second<<endl<<endl;
cout<<" 日 一 二 三 四 五 六"<<endl;
for(i=1;i<=w;i++)
cout<<' ';
for(i=1;i<=q;i++)
{if(u==6)
{cout<<fixed<<setw(2)<<i<<" "<<endl;;
u=-1;}
else cout<<fixed<<setw(2)<<i<<' '; u++;} }
void bangzhu() //操作指令提示
{ cout<<"请输入以下指令"<<endl<<endl; cout<<" 1.输出当前时间 " <<endl;
cout<<"============================"<<endl;
cout<<" 2.查看指定月份日历 "<<endl;
cout<<"============================"<<endl;
cout<<" 3.查看属相 "<<endl;
cout<<"============================"<<endl;
cout<<" 4,计算指定日期是一年中的第几天"<<endl;
cout<<"============================"<<endl;
cout<<" 5,显示输出任何一年的年历,并写入一文本"<<endl;
cout<<"============================"<<endl;
cout<<" 9.输出指令集"<<endl;
cout<<"============================"<<endl;
cout<<" 0.结束本程序 "<<endl ;
cout<<"============================"<<endl;
} int shurupanduan(int a,int b,int c=1) //判断输入年月是否正确
{int l=1,q;
if(a<=0||b<=0||b>12||c<0)
{l=0;
cout<<"您的输入有误请重新输入"<<endl;}
switch(b)
{case 1:q=31;break;
case 2:q=28;break;
case 3:q=31;break;
case 5:q=31;break;
case 7:q=31;break;
case 8:q=31;break;
case 10:q=31;break;
case 12:q=31;break;
case 4:q=30;break;
case 6:q=30;break;
case 9:q=30;break;
case 11:q=30;break;}
if(c>q)
{l=0;
cout<<"您的输入有误请重新输入"<<endl;} return l;} int runnian(int a) //判断是是否为闰年
{int l=0;
if((a%4==0&&a%100!=0)||(a%400==0))
l=1;
return l;
} void chakanrili() //查看指定月份日历
{cout<<"请输入年月中间用空格隔开如2013 1"<<endl;
int y,m,l;
cin>>y>>m;
int z=1;
l=shurupanduan(y,m,z);
while(l==0)
{cin>>y>>m;
l=shurupanduan(y,m,z);
}
int q,s,i,sum=0;
for(i=1905;i<y;i++)
{sum+=365;
s=runnian(i);
if(s==1)
sum++;}
for(i=1;i<m;i++)
{s=runnian(y);
switch(i)
{case 1:q=31;break;
case 2:q=28;break;
case 3:q=31;break;
case 5:q=31;break;
case 7:q=31;break;
case 8:q=31;break;
case 10:q=31;break;
case 12:q=31;break;
case 4:q=30;break;
case 6:q=30;break;
case 9:q=30;break;
case 11:q=30;break;}
sum+=q;
}
if(s==1&&m>2)
sum++;
switch(m)
{case 1:q=31;break;
case 2:q=28;break;
case 3:q=31;break;
case 5:q=31;break;
case 7:q=31;break;
case 8:q=31;break;
case 10:q=31;break;
case 12:q=31;break;
case 4:q=30;break;
case 6:q=30;break;
case 9:q=30;break;
case 11:q=30;break;}
s=runnian(y);
if(s==1&&m==2)
q++;
int u,w;
u=sum%7;
w=3*u;
cout<<" 日 一 二 三 四 五 六"<<endl;
for(i=1;i<=w;i++)
cout<<' ';
for(i=1;i<=q;i++)
{if(u==6)
{cout<<fixed<<setw(2)<<i<<" "<<endl;;
u=-1;}
else cout<<fixed<<setw(2)<<i<<' '; u++;}
cout<<endl;} void shuxiang(int y)//判断属相
{int p;
p=y%12;
switch(p)
{case 1:cout<<"鸡年";break;
case 2:cout<<"狗年";break;
case 3:cout<<"猪年";break;
case 4:cout<<"鼠年";break;
case 5:cout<<"牛年";break;
case 6:cout<<"虎年";break;
case 7:cout<<"兔年";break;
case 8:cout<<"龙年";break;
case 9:cout<<"蛇年";break;
case 10:cout<<"马年";break;
case 11:cout<<"羊年";break;
case 12:cout<<"猴年";break;}
}
void shuchushuxiang() //输出属相
{
cout<<"请输入年份"<<endl;
int y;
cin>>y;
shuxiang(y);
cout<<endl;
}
void dijitian()
{int y,m,d,sum=0,i,l,s,q;
cout<<"请输入年月日"<<endl;
cin>>y>>m>>d;
l=shurupanduan(y,m,d);
while(l==0)
{cin>>y>>m;
l=shurupanduan(y,m,d);
}
for(i=1;i<m;i++)
{s=runnian(y);
switch(i)
{case 1:q=31;break;
case 2:q=28;break;
case 3:q=31;break;
case 5:q=31;break;
case 7:q=31;break;
case 8:q=31;break;
case 10:q=31;break;
case 12:q=31;break;
case 4:q=30;break;
case 6:q=30;break;
case 9:q=30;break;
case 11:q=30;break;}
sum+=q;
}
if(s==1&&m>2)
sum++;
sum=sum+d;
cout<<y<<"年"<<m<<"月"<<d<<"日是这一年中第"<<sum<<"天"<<endl; }
void nianli()
{cout<<"请输入文本名称:";
char s[20];
cin>>s;
ofstream outfile(s,ios::out);
cout<<"请输入年份"<<endl;
int y,m,l;
cin>>y;
for(m=1;m<=12;m++)
{
int z=1;
l=shurupanduan(y,m,z);
while(l==0)
{cin>>y>>m;
l=shurupanduan(y,m,z);
}
int q,s,i,sum=0;
for(i=1905;i<y;i++)
{sum+=365;
s=runnian(i);
if(s==1)
sum++;}
for(i=1;i<m;i++)
{s=runnian(y);
switch(i)
{case 1:q=31;break;
case 2:q=28;break;
case 3:q=31;break;
case 5:q=31;break;
case 7:q=31;break;
case 8:q=31;break;
case 10:q=31;break;
case 12:q=31;break;
case 4:q=30;break;
case 6:q=30;break;
case 9:q=30;break;
case 11:q=30;break;}
sum+=q;
}
if(s==1&&m>2)
sum++;
switch(m)
{case 1:q=31;break;
case 2:q=28;break;
case 3:q=31;break;
case 5:q=31;break;
case 7:q=31;break;
case 8:q=31;break;
case 10:q=31;break;
case 12:q=31;break;
case 4:q=30;break;
case 6:q=30;break;
case 9:q=30;break;
case 11:q=30;break;}
s=runnian(y);
if(s==1&&m==2)
q++;
int u,w;
u=sum%7;
w=3*u;
outfile<<" "<<y<<"年"<<m<<"月"<<endl;
outfile<<" 日 一 二 三 四 五 六"<<endl;
for(i=1;i<=w;i++)
outfile<<' ';
for(i=1;i<=q;i++)
{if(u==6)
{outfile<<fixed<<setw(2)<<i<<" "<<endl;;
u=-1;}
else outfile<<fixed<<setw(2)<<i<<' '; u++;}
outfile<<endl;
}
for(m=1;m<=12;m++)
{
int z=1;
l=shurupanduan(y,m,z);
while(l==0)
{cin>>y>>m;
l=shurupanduan(y,m,z);
}
int q,s,i,sum=0;
for(i=1905;i<y;i++)
{sum+=365;
s=runnian(i);
if(s==1)
sum++;}
for(i=1;i<m;i++)
{s=runnian(y);
switch(i)
{case 1:q=31;break;
case 2:q=28;break;
case 3:q=31;break;
case 5:q=31;break;
case 7:q=31;break;
case 8:q=31;break;
case 10:q=31;break;
case 12:q=31;break;
case 4:q=30;break;
case 6:q=30;break;
case 9:q=30;break;
case 11:q=30;break;}
sum+=q;
}
if(s==1&&m>2)
sum++;
switch(m)
{case 1:q=31;break;
case 2:q=28;break;
case 3:q=31;break;
case 5:q=31;break;
case 7:q=31;break;
case 8:q=31;break;
case 10:q=31;break;
case 12:q=31;break;
case 4:q=30;break;
case 6:q=30;break;
case 9:q=30;break;
case 11:q=30;break;}
s=runnian(y);
if(s==1&&m==2)
q++;
int u,w;
u=sum%7;
w=3*u;
cout<<" "<<y<<"年"<<m<<"月"<<endl;
cout<<" 日 一 二 三 四 五 六"<<endl;
for(i=1;i<=w;i++)
cout<<' ';
for(i=1;i<=q;i++)
{if(u==6)
{cout<<fixed<<setw(2)<<i<<" "<<endl;;
u=-1;}
else cout<<fixed<<setw(2)<<i<<' '; u++;}
cout<<endl;
}
}

c++日历改进版的更多相关文章

  1. 【Time系列四】查询各月份的日历

    荒废了两个星期没学java了,今天一心想突破"日历查询"这个小程序.先用比较简单的python实现下. 无奈天资愚钝,想了一个上午.最后卡在了日期排列的问题上,只好去参考下别人的代 ...

  2. 【踩坑速记】开源日历控件,顺便全面解析开源库打包发布到Bintray/Jcenter全过程(新),让开源更简单~

    一.写在前面 自使用android studio开始,就被它独特的依赖方式:compile 'com.android.support:appcompat-v7:25.0.1'所深深吸引,自从有了它,麻 ...

  3. 开源一款简单清爽的日历组件,JavaScript版的

    源码会在最后给出地址,需要的朋友自己去下载.最近项目需要做一个日程安排的功能,就是点击日历的某一天弹出一个录入页面,填完信息后保存当天的日程安排.有日程的日期会有不同的标记(比如加一个背景色啥的).网 ...

  4. FullCalendar日历插件说明文档

    FullCalendar提供了丰富的属性设置和方法调用,开发者可以根据FullCalendar提供的API快速完成一个日历日程的开发,本文将FullCalendar的常用属性和方法.回调函数等整理成中 ...

  5. 被逼着写的jquery工作日管理日历插件

    因为工作原因,在我刚进入新公司之后,立马要求让我做一个jquery的插件demo.我的天,我面试的可是.net工程师啊.虽然以前接触过js,jquery,但也只是接触过一丢丢啊,没办法,只好硬着头皮上 ...

  6. java基础练习 字符串,控制流,日历,日期等

    1,对基本控制流程的一些练习 package org.base.practice3; import org.junit.Test; /** * Created with IntelliJ IDEA. ...

  7. [JS,Canvas]日历时钟

    [JS,Canvas]日历时钟 Html: <!doctype html> <html> <head> <meta charset="UTF-8&q ...

  8. 用NSCalendar和UICollectionView自定义日历,并实现签到显示

    前一段时间因为工作需要实现了一个可以签到的日历,来记录一下实现的思路 效果如图:   这里的基本需求是: 1,显示用户某个月的签到情况,已经签到的日子打个圈,没有签到且在某个时间范围内的可以签到,其他 ...

  9. java日历显示年份、月份

    import java.util.Scanner;class CalendarMain{     //主函数入口    public static void main(String[] args)   ...

随机推荐

  1. IBM之MQ使用指南

    随着计算机网络和分布式应用的不断发展.远程消息传递越来越成为应用系统中必不可少的组成部分. 商业消息中间件的出现保证了消息传输的可靠性,高效率和安全性,同一时候也降低了系统的开发周期. 眼下应用最多的 ...

  2. 【Linux编程】存储映射I/O

    存储映射I/O使一个磁盘文件与存储空间中的一个缓冲区相映射,对缓冲区的读.写操作就是对文件的读.写操作,从而能够不再使用read.write系统调用. 将文件映射到存储区的函数由mmap完毕,函数原型 ...

  3. 使用WiX Toolset创建.NET程序发布Bootstrapper(安装策略管理)(一)——初识WiX

    原文:使用WiX Toolset创建.NET程序发布Bootstrapper(安装策略管理)(一)--初识WiX Visual Studio 打包安装七宗罪 开发.NET的人,肯定会使用Visual ...

  4. JDK源码分析—— ArrayBlockingQueue 和 LinkedBlockingQueue

    JDK源码分析—— ArrayBlockingQueue 和 LinkedBlockingQueue 目的:本文通过分析JDK源码来对比ArrayBlockingQueue 和LinkedBlocki ...

  5. pro-engineer&UG

    Pro/Engineer操作软件是美国参数技术公司(PTC)旗下的CAD/CAM/CAE一体化的三维软件.Pro/Engineer软件以参数化著称,是参数化技术的最早应用者,在目前的三维造型软件领域中 ...

  6. JVM必备指南(转)

    本文由 ImportNew - xiafei 翻译自 anturis.欢迎加入翻译小组.转载请见文末要求. 简介 Java虚拟机(JVM)是Java应用的运行环境,从一般意义上来讲,JVM是通过规范来 ...

  7. Java流读写

    写: package com.wjy.write; import java.io.BufferedWriter; import java.io.FileOutputStream; import jav ...

  8. U11认识与学习bash

    1.使用命令clear来清除界面. 2.命令别名设置alias和unalias: 例如: alias lm='ls -l | more' 查看当前的别名设置有哪些: alias unalias lm ...

  9. 直接拿来用!最火的Android开源项目(三部完整版)

    GitHub在中国的火爆程度无需多言,越来越多的开源项目迁移到GitHub平台上.更何况,基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要.利用这些项目,有时能够让你 ...

  10. 游戏开发实验室的内部讲座总结----c++

     第三节  动态内存分配new和delete 经过调试设置断点,发现new 函数事实上还是调用的malloc函数. 第四节  引用 一个变量是能够有多个引用的,引用也是能够传递的.  常量是不能有 ...