IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> c++实现万年历 -> 正文阅读

[C++知识库]c++实现万年历

来自一个小白的作品

展示:
在这里插入图片描述

要求实现的内容

万年历练习
1. 教学目标:
  1)初步掌握图形界面设计与键盘交互(用户交互)。
  2)教师采用模块填充方式教学。
  3)教学计划4个课时。
2.要求
1)设计函数
    int Distinguish(int year,int month);/*判断月份的类型,确定此月的天数*/
2)设计函数
    float DayNum(int year,int month)
     计算从公元11日到所输入的时间的前一个月的最后一天的总天数*
     要求:所输入年内的月天数调用Distinguish(int year,int month)函数获取;
3)设计函数
   OutPut(float days,int year,int month)
   输出显示界面
   调用函数DayNum(int year,int month),Distinguish
4)设计函数char Content();/*输出一目录,提示用户选择后序的操作,并返回用户的选择*/
   界面菜单的设计,接收用户输入。
5)主程序:
   (1)调用函数	OutPut(DayNum(year,month),year,month)显示界面
     (2)调用函数 Content()显示菜单
     (3)根据用户输入执行相应操作。
        >   下一个月
    	<   上一个月  
	    ?   自定义年月 
	    #   退出     

源码:

#include<iostream>
#include<stdlib.h>
#include<conio.h>
using namespace std;
char Content();//打印菜单
int Distinguish(int year, int month);/*判断月份的类型,确定此月的天数*/
int DayNum(int year, int month);// 计算从公元1月1日到所输入的时间的前一个月的最后一天的总天数
void  OutPut(int days, int year, int month);
int main()
{
	int year = 0, month = 0;
	char select;//用char记录选择
l:cout << "!欢迎使用万年历!" << endl;
	cout << "please input the year and  month you want to see:";
	cin >> year;
	cin >> month;
	OutPut(DayNum(year, month), year, month);
m:select = Content();//将返回的字符接收
	switch (select)
	{
	case '>':

		month = month + 1;
		if (month >= 13)
		{
			year = year + 1;
			month = month % 12;
		}
		system("cls"); //清屏
		cout << year << "年" << month << "月\n";
		OutPut(DayNum(year, month), year, month);
		goto m;//18行定义
	case '<':
		month = month - 1;
		if (month <= 0)
		{
			year = year - 1;
			month = month + 12;
		}
		system("cls"); //清屏
		cout << year << "年" << month << "月\n";
		OutPut(DayNum(year, month), year, month);
		goto m;//18行定义
	case '?':
		system("cls"); //清屏
		goto l;
	case '#':
		system("cls");
		cout << "已退出,谢谢使用!" << endl;
		break;
	}
	return 0;
}
int Distinguish(int year, int month)//判断并返回所查月份的天数
{
	int days = 0;
	if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
	{
		if (month == 2)
		{
			days = 29;
		}
		else if (month == 4 || month == 6 || month == 9 || month == 11)
		{
			days = 30;
		}
		else if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
		{
			days = 31;
		}
	}
	else
	{
		if (month == 2)
		{
			days = 28;
		}
		else if (month == 4 || month == 6 || month == 9 || month == 11)
		{
			days = 30;
		}
		else if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
		{
			days = 31;
		}
	}
	return days;
}

char Content()
{
	char select;
	cout << "$$$$$$$$$$$$$$$$$$$$$$$$$$$$" << endl;
	cout << "$$$$$$$ > nest month $$$$$$$" << endl;
	cout << "$$$$$$$ < last month $$$$$$$" << endl;
	cout << "$$$$$$$ ? resert date $$$$$$" << endl;
	cout << "$$$$$$$$$$ # quit $$$$$$$$$$" << endl;
	cout << "$$$$$$$$$$$$$$$$$$$$$$$$$$$$" << endl;
	cout << "Please input your select: ";
	cin >> select;
	return select;
}

int DayNum(int year, int month)
{
	int days = 0;
	int pingyear = 0, runyear = 0;
	for (int i = 1; i <= year - 1; i++)
	{
		if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0)
		{
			runyear++;
		}
	}
	pingyear = year - 1 - runyear;//记得减1,因为我们计算的是全年到元年的整天数
	days = pingyear * 365 + runyear * 366;
	for (int i = 1; i <= month - 1; i++)//再加上输入的年的零散的几个月的天数
	{
		days += Distinguish(year, i);
	}
	return days;
}

void  OutPut(int days, int year, int month)
{
	int i, k = 0, n;
	cout << "日" << '\t' << "一" << '\t' << "二" << '\t' << "三" << '\t' << "四" << '\t' << "五" << '\t' << "六" << '\t' << endl;
	cout << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl;
	k = days % 7;
	if (k != 6)//表示第一行开头需要有k+1个空,k+1表示上个月所占空位置数。
	{
		for (i = 0; i < k + 1; i++)
			cout << ' ' << '\t';
	}
	k = k + 1 + 1;//调整k值,用于接下来的输出计数。此时,k代表下一个要输出的位置
	n = Distinguish(year, month);
	for (i = 1; i <= n; i++)
	{
		cout << i << '\t';
		if (k % 7 == 0) //每行七个
		{
			cout << endl;
		}
		k = k + 1;
	}
	cout << endl;
}
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-10 11:40:56  更:2022-05-10 11:41:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 20:39:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码