C++实现万年历小功能

本文实例为大家分享了C++实现万年历的具体代码,供大家参考,具体内容如下

用C++写了个简易的万年历。

具体功能如下:

1.打印指定年(用户输入)所有月份的年历

2.打印指定年指定月(用户输入)的月份

3.打印指定日期(用户输入)的星期数

4.可重复输入

贴上源码:

#include<iostream>
#include<windows.h>
#include<iomanip>
using namespace std;
int number;       //菜单键
int year, month, day;   //年、月、日
int i, j, t;       //for循环用的量
int s;          //星期X
char c;         //存放随机输入的数字,以实现“按任意键返回主菜单”的功能
char months[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };   //平年每个月的天数

void Pos(int x, int y);   //光标位置
void menu();        //主菜单函数
void runnian();       //如是闰年则变第二个月天数28为29
void oneyear();       //输出一整年的年历
void onemonth();      //输出一个月的月历
void xianshiweek();     //显示星期数

void Pos(int x, int y)//光标位置
{
 COORD pos;
 HANDLE hOutput;
 pos.X = x;
 pos.Y = y;
 hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
 SetConsoleCursorPosition(hOutput, pos);
}
void menu()//主菜单函数
{
 Pos(40, 3);
 cout << "***********************************" << endl;
 Pos(40, 4);
 cout << "*     欢迎使用万年历     *" << endl;
 Pos(40, 5);
 cout << "*     ---made by pjr     *" << endl;
 Pos(40, 6);
 cout << "***********************************" << endl;
 Pos(20, 8);
 cout << "操作键:" << endl;
 Pos(20, 9);
 cout << "1.显示一年的年历" << endl;
 Pos(20, 10);
 cout << "2.显示一月的月历" << endl;
 Pos(20, 11);
 cout << "3.显示某一天是星期几" << endl;
 Pos(20, 12);
 cout << "0.退出" << endl;
 Pos(20, 14);
 cout << "请输入操作键(0~3):";
 cin >> number;
 if (number < 0 || number>3)
 {
 system("cls");
 Pos(20, 15);
 cout << "输入数字无效,请重新输入!" << endl;
 menu();
 }
}
void runnian()   //如是闰年则变第二个月天数28为29
{
 cin >> year;
 if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))   //闰年判断公式
 {
 months[2] = 29;
 }
}
void oneyear()   //输出一整年的年历
{
 cout << "请输入年份:";
 runnian();
 system("cls");   //清屏
 cout << "请输入年份:" << year << endl << endl;
 s = (year - 1 + (year - 1) / 4 - (year - 1) / 100 + (year - 1) / 400 + 1) % 7;   //该年1月1日的星期数
 for (i = 1; i <= 12; i++)
 {
 cout << i << "月份的月历如下:" << endl;
 cout << setw(6) << "日" << setw(6) << "一" << setw(6) << "二" << setw(6) << "三" << setw(6) << "四" << setw(6) << "五" << setw(6) << "六" << endl;
 for (j = 0; j < s; j++)
 {
  cout << setw(6) << " ";
 }
 for (t = 1; t <= months[i]; t++)
 {
  cout << setw(6) << t;
  s = (s + 1) % 7;
  if (s % 7 == 0)   //当打印到星期六时,换行
  {
  cout << endl;
  }
 }
 cout << endl;
 }
 fflush(stdin);
 cout << "请按任意键返回主菜单:";
 cin >> c;
 system("cls");
 menu();
}
void onemonth()//输出一个月的月历
{
 int s = 0;
 cout << "请输入年份:";
 runnian();
 cout << "请输入月份:";
 cin >> month;
 system("cls");
 cout << "请输入年份:" << year << endl << endl;
 cout << "请输入月份:" << month << endl << endl;
 for (i = 1; i <= month - 1; i++)
 {
 s = s + months[i];   //该年1月1日到所求日期前一天的天数
 }
 s = (year - 1 + (year - 1) / 4 - (year - 1) / 100 + (year - 1) / 400 + 1 + s) % 7;   //所求日期的星期数
 cout << month << "月份的月历如下:" << endl;
 cout << setw(6) << "日" << setw(6) << "一" << setw(6) << "二" << setw(6) << "三" << setw(6) << "四" << setw(6) << "五" << setw(6) << "六" << endl;
 for (j = 0; j < s; j++)
 {
 cout << setw(6) << " ";
 }
 for (t = 1; t <= months[month]; t++)
 {
 cout << setw(6) << t;
 s = (s + 1) % 7;
 if (s % 7 == 0)
 {
  cout << endl;
 }
 }
 cout << endl;
 cout << "请按任意键返回主菜单:";
 cin >> c;
 system("cls");
 menu();
}
void xianshiweek()   //显示星期数
{
 int s = 0;
 cout << "请输入年份:";
 runnian();
 cout << "请输入月份:";
 cin >> month;
 cout << "请输入日期:";
 cin >> day;
 system("cls");
 cout << "请输入年份:" << year << endl << endl;
 cout << "请输入月份:" << month << endl << endl;
 cout << "请输入日期:" << day << endl << endl;
 for (i = 1; i <= month - 1; i++)
 {
 s = s + months[i];
 }
 s = (year - 1 + (year - 1) / 4 - (year - 1) / 100 + (year - 1) / 400 + day + s) % 7;
 cout << "显示的星期数如下:" << s << endl;
 cout << endl;
 cout << "请按任意键返回主界面:";
 cin >> c;
 system("cls");
 menu();
}
int main()//主函数
{
 setlocale(LC_ALL, "chs");//转中文
 menu();
 while (number != 0)
 {
 switch (number)
 {
 case 1:
 {
  oneyear();
  break;
 }
 case 2:
 {
  onemonth();
  break;
 }
 case 3:
 {
  xianshiweek();
  break;
 }
 }
 months[2] = 28; //把months[2]变为初值
 }
 if (number == 0)
 {
 system("pause");
 }
 return 0;
}

运行效果如下:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C++实现万年历源代码

    本文实例为大家分享了C++实现万年历的具体代码,供大家参考,具体内容如下 #include<iostream> #include<string> #include<fstream> #include<iomanip> using namespace std; #include<time.h> ofstream fout("日历.txt"); void Printtitle(int n); int OrEndl(int n);

  • C++实现简易万年历

    本文实例为大家分享了C++实现简易的万年历,供大家参考,具体内容如下 代码如下: /* *文件名称:万年历.cpp *作 者:chenghan *完成日期:2019/1/10 *版 本 号:1.0 *问题描述:制作一个简单的万年历 */ #include<iostream> #include <string> using namespace std; //判断一年是否为闰年,是返回true 否返回false bool isleapyear(int year); //兔子图案 voi

  • C++实现万年历功能

    本文实例为大家分享了C++实现万年历的具体代码,供大家参考,具体内容如下 1.此万年历功能 1>日期加减天数 2>日期与日期之间的差值 3>输入年月显示当月日历 2.代码实现 #include<iostream> #include<iomanip> using namespace std; class Date { public: Date(int year = 1990, int month = 1, int day = 1) //构造函数 :_year(yea

  • C++实现万年历小功能

    本文实例为大家分享了C++实现万年历的具体代码,供大家参考,具体内容如下 用C++写了个简易的万年历. 具体功能如下: 1.打印指定年(用户输入)所有月份的年历 2.打印指定年指定月(用户输入)的月份 3.打印指定日期(用户输入)的星期数 4.可重复输入 贴上源码: #include<iostream> #include<windows.h> #include<iomanip> using namespace std; int number; //菜单键 int yea

  • C语言实现万年历小功能

    本文实例为大家分享了C语言实现万年历的具体代码,供大家参考,具体内容如下 一.学了C语言,相信大家都可以做出来.我们要实现的就是用户输入年,月,日.然后打印出来. 二.需要用到的知识点 1.for循环.2.if判断.3.函数的调用 如果您们学了图形库的话,可以贴图上去,效果更加好看.我没有素材,所以,直接用C语言来完成. 三.运行结果 四.我们用C语言代码实现 /*******************************************************************

  • Visual Studio Debugger七个鲜为人知的小功能

    Visual Studio debugger是一个很棒的调试工具,可以帮助程序猿们快速地发现和解决问题.这里给大家简单介绍一下VS调试工具中的七个鲜为人知的小功能. 1. 一键跳转到指定语句 调试过程中经常需要拖拽黄箭头,使特定语句执行或者不执行.常规方法就是使用鼠标直接拖拽. 在Visual Studio 2017 15.3预览版中,有一个更简单地跳转到目标行的方法:在目标行盘旋鼠标指针,出现绿色竖线右箭头图标后,按住CTRL后鼠标左键点击,就把调试黄箭头移过去了,再点击调试下一步或者F5就直

  • AngularJs页面筛选标签小功能

    AngularJS 简介 AngularJS 是一个 JavaScript 框架.它可通过 <script> 标签添加到 HTML 页面. AngularJS 通过 指令 扩展了 HTML,且通过 表达式 绑定数据到 HTML. AngularJS 是一个 JavaScript 框架 AngularJS 是一个 JavaScript 框架.它是一个以 JavaScript 编写的库. AngularJS 是以一个 JavaScript 文件形式发布的,可通过 script 标签添加到网页中:

  • 使用jquery写个更改表格行顺序的小功能

    周末写了个更改表格行顺序的小功能,直接贴代码 表格部分如下: 复制代码 代码如下: <table class="table" id="test_table"> <thead> <tr> <th>时间</th> <th>详情</th> <th>操作</th> </tr> </thead> <tbody> <tr cid=

  • Servlet的5种方式实现表单提交(注册小功能),后台获取表单数据实例

    用servlet实现一个注册的小功能 ,后台获取数据. 注册页面: 注册页面代码 : <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <form action="/RequestDemo/RequestDemo3"

  • java调用微信接口实现网页分享小功能

    本文实例为大家分享了java调用微信接口实现网页分享小功能的具体代码,供大家参考,具体内容如下 // 获取access_token  *注意* 经过实际开发测试,微信分享不支持跨域请求,因此获取access_token的请求必须从服务器发起,否则无法获取到access_token所以以下都是服务端操作 微信接口说明参考地址 参考文章:Java微信分享接口开发详解 一.微信util类 public class ShareConstants { //微信获取ticket的接口 public stat

  • ES6 中可以提升幸福度的小功能

    一.变量解构赋值的用途 1)交换变量的值 let x = 1; let y = 2; [x, y] = [y, x] 2)从函数返回多个值 // 返回一个数组 function example(){ return [1, 2, 4]; } let [a, b, c] = example() // 返回一个对象 function example(){ return { foo:1, bar: 2 } } let {foo, bar} = example(); 或者 ( {foo, bar} = e

  • android实现录屏小功能

    本文实例为大家分享了android实现录屏小功能的具体代码,供大家参考,具体内容如下 思路 android实现录屏功能有两种方案,一种是直接使用android自带的MediaProjectionManager实现录屏功能,第二种是是只录语音,用户的操作通过某种方式进行记录保存,最后通过某种协议进行播放. 两种方案各有各的优缺点,前者实现方式简单,但无法只录制特定区域的画面,并且生成的视频文件一般都比较大.后者实现较为繁琐,音频录制android7.0之前没有暂停方法,只能生成多个文件,然后对音频

  • 用Java编程输出万年历的功能实现

    1.功能实现 输入1查看上个月日历 输入2查看下个月日历 输入3查看去年本月日历 输入4查看明年本月日历 输入5查看指定月份日历 2.代码所导入的包 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.Scan

随机推荐