万年历软件可以实现日历显示,日历查询,日历修改,日期备忘录,信息帮助这些功能:
#include
#include"CalendarTable.h"
#include
int main()
{
CalendarTable();
system("pause");
return 0;
}
/****************************************************************************************/
#pragma once
#include
#include
#include
#include"time.h"
#include
#include
#include
void CalendarTable();
void CalculateDay();
void ShowEveryMonth();
int JudgeLeapYear();
int JudgeMonth();
void AlterCalendarTable();
/**************************************************************************/
void ShowEveryMonth(int year)
{
int month=1;
while (month <= 12)
{
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))//是闰年
{
//printf("是闰年\n");
printf("************************\n");
//printf("本月日历\n");
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)//1 3 5 7 8 10 12月的日历
{
printf("1 2 3 4 5 6 7\n");
printf("8 9 10 11 12 13 14\n");
printf("15 16 17 18 19 20 21\n");
printf("22 23 24 25 26 27 28\n");
printf("29 30 31\n");
}
else if (month == 4 || month == 6 || month == 9 || month == 11)//4 6 9 11月的日历
{
//printf("其他月份\n");
printf("1 2 3 4 5 6 7\n");
printf("8 9 10 11 12 13 14\n");
printf("15 16 17 18 19 20 21\n");
printf("22 23 24 25 26 27 28\n");
printf("29 30\n");
}
else//2月的日历
{
printf("1 2 3 4 5 6 7\n");
printf("8 9 10 11 12 13 14\n");
printf("15 16 17 18 19 20 21\n");
printf("22 23 24 25 26 27 28\n");
printf("29\n");
}
}
else
{
//printf("不是闰年\n");
printf("************************\n");
//printf("本月日历\n");
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)//1 3 5 7 8 10 12月的日历
{
printf("1 2 3 4 5 6 7\n");
printf("8 9 10 11 12 13 14\n");
printf("15 16 17 18 19 20 21\n");
printf("22 23 24 25 26 27 28\n");
printf("29 30 31\n");
}
else if (month == 4 || month == 6 || month == 9 || month == 11)//4 6 9 11月的日历
{
//printf("其他月份\n");
printf("1 2 3 4 5 6 7\n");
printf("8 9 10 11 12 13 14\n");
printf("15 16 17 18 19 20 21\n");
printf("22 23 24 25 26 27 28\n");
printf("29 30\n");
}
else//2月的日历
{
printf("1 2 3 4 5 6 7\n");
printf("8 9 10 11 12 13 14\n");
printf("15 16 17 18 19 20 21\n");
printf("22 23 24 25 26 27 28\n");
}
}
month++;
}
}
void CalculateDay(int year,int month,int day)//计算天数
{
//int year;
//int month;
//int day;
//printf("请输入要查询的日期\n");
//scanf("%d/%d/%d", &year, &month, &day);
time_t t;
struct tm *local;
time(&t);
local = localtime(&t);
int ThisYear = 1900 + local->tm_year;
int ThisDay = local->tm_mday;
int ThisWeek = local->tm_wday;
int Next1ThisYear = ThisYear - 1;//现实时间大
int Next2ThisYear = ThisYear + 1;//现实时间小
int ThisMonth = 1 + local->tm_mon;
int Next1ThisMonth = ThisMonth - 1;
int Next2ThisMonth = ThisMonth + 1;
int Next1Month = month + 1;
int Next2Month = month - 1;
int TotalGapDay = 0;
int TotalGapLeapYear = 0;
int TotalGapYear = 0;
int BigMonth = 0;
int LittleMonth = 0;
int SecondMonth = 0;
int WeekResult = 0;
int RetMonth = 0;
int InputDay = 0;
int InputThisDay = 0;
int LeapSecondMonth = 0;
int NotLeapSecondMonth = 0;
if (Next1ThisYear >= year)
{
while (Next1ThisYear > year)
{
int ret;
ret = JudgeLeapYear(Next1ThisYear);
if (ret == 1)
{
TotalGapLeapYear++;
}
else
{
TotalGapYear++;
}
Next1ThisYear--;
}
}
else
{
while (Next2ThisYear < year)
{
int ret;
ret = JudgeLeapYear(Next2ThisYear);
if (ret == 1)
{
TotalGapLeapYear++;
}
else
{
TotalGapYear++;
}
Next2ThisYear++;
}
}
while (Next1ThisMonth >= 1 && year { while (year < ThisYear&&Next1Month <= 12)//输入不是本年的月份情况 { if (Next1Month == 1 || Next1Month == 3 || Next1Month == 5 || Next1Month == 7 || Next1Month == 8 || Next1Month == 10 || Next1Month == 12) { BigMonth++; } else if (Next1Month == 4 || Next1Month == 6 || Next1Month == 9 || Next1Month == 11) { LittleMonth++; } else { int ret = 0; ret = JudgeLeapYear(year); if (ret == 1) { LeapSecondMonth++; } else { NotLeapSecondMonth++; } } Next1Month++; } if (Next1ThisMonth == 1 || Next1ThisMonth == 3 || Next1ThisMonth == 5 || Next1ThisMonth == 7 || Next1ThisMonth == 8 || Next1ThisMonth == 10 || Next1ThisMonth == 12) { BigMonth++; } else if (Next1ThisMonth == 4 || Next1ThisMonth == 6 || Next1ThisMonth == 9 || Next1ThisMonth == 11) { LittleMonth++; } else { int ret = 0; ret = JudgeLeapYear(ThisYear); if (ret == 1) { LeapSecondMonth++; } else { NotLeapSecondMonth++; } } Next1ThisMonth--; } while (Next2Month >= 1 && year > ThisYear) { while (year >ThisYear&&Next2ThisMonth <= 12)//不是本年输入年份的月份情况 { if (Next2ThisMonth == 1 || Next2ThisMonth == 3 || Next2ThisMonth == 5 || Next2ThisMonth == 7 || Next2ThisMonth == 8 || Next2ThisMonth == 10 || Next2ThisMonth == 12) { BigMonth++; } else if (Next2ThisMonth == 4 || Next2ThisMonth == 6 || Next2ThisMonth == 9 || Next2ThisMonth == 11) { LittleMonth++; } else { int ret = 0; ret = JudgeLeapYear(ThisYear); if (ret == 1) { LeapSecondMonth++; } else { NotLeapSecondMonth++; } } Next2ThisMonth++; } if (Next2Month == 1 || Next2Month == 3 || Next2Month == 5 || Next2Month == 7 || Next2Month == 8 || Next2Month == 10 || Next2Month == 12) { BigMonth++; } else if (Next2Month == 4 || Next2Month == 6 || Next2Month == 9 || Next2Month == 11) { LittleMonth++; } else { int ret = 0; ret = JudgeLeapYear(year); if (ret == 1) { LeapSecondMonth++; } else { NotLeapSecondMonth++; } } Next2Month--; } if (year == ThisYear) { if (month > ThisMonth) { while (Next2Month > ThisMonth) { if (Next2Month == 1 || Next2Month == 3 || Next2Month == 5 || Next2Month == 7 || Next2Month == 8 || Next2Month == 10 || Next2Month == 12) { BigMonth++; } else if (Next2Month == 4 || Next2Month == 6 || Next2Month == 9 || Next2Month == 11) { LittleMonth++; } else if (Next2Month == 2) { int ret = 0; ret = JudgeLeapYear(year); if (ret == 1) { LeapSecondMonth++; } else { NotLeapSecondMonth++; } } Next2Month--; } } else if (month < ThisMonth) { while (Next1Month < ThisMonth) { if (Next1Month == 1 || Next1Month == 3 || Next1Month == 5 || Next1Month == 7 || Next1Month == 8 || Next1Month == 10 || Next1Month == 12) { BigMonth++; } else if (Next1Month == 4 || Next1Month == 6 || Next1Month == 9 || Next1Month == 11) { LittleMonth++; } else if (Next1Month == 2) { int ret = 0; ret = JudgeLeapYear(year); if (ret == 1) { LeapSecondMonth++; } else { NotLeapSecondMonth++; } } Next1Month++; } } else { if (day >= ThisDay) { printf("同年同一个月,相差%d天\n", day - ThisDay); TotalGapDay = day - ThisDay; if (TotalGapDay % 7 == 0) { WeekResult = ThisWeek; } else { if ((TotalGapDay % 7 + ThisWeek) <= 7) { WeekResult = TotalGapDay % 7 + ThisWeek; } else { WeekResult = TotalGapDay % 7 + ThisWeek - 7; } } printf("今天是星期%d\n", WeekResult); return; } else { printf("同年同一个月,相差%d天\n", ThisDay - day); TotalGapDay = ThisDay - day; if (TotalGapDay % 7 == 0) { WeekResult = ThisWeek; } else { if ((ThisWeek - TotalGapDay % 7) >= 0) { WeekResult = ThisWeek - TotalGapDay % 7; } else { WeekResult = 7 - TotalGapDay % 7 + ThisWeek; } } printf("今天是星期%d\n", WeekResult); return; } } } if (year < ThisYear) { InputThisDay = ThisDay; RetMonth = JudgeMonth(month); if (RetMonth == 1) { InputDay = 31 - day; } else if (RetMonth == 0) { InputDay = 30 - day; } else { int ret = JudgeLeapYear(year); if (ret == 1) { InputDay = 29 - day; } else { InputDay = 28 - day; } } } else if (year > ThisYear) { InputDay = day; RetMonth = JudgeMonth(ThisMonth); if (RetMonth == 1) { InputThisDay = 31 - ThisDay; } else if (RetMonth == 0) { InputThisDay = 30 - ThisDay; } else { int ret = JudgeLeapYear(ThisYear); if (ret == 1) { InputThisDay = 29 - ThisDay; } else { InputThisDay = 28 - ThisDay; } } } else { if (month < ThisMonth) { InputThisDay = ThisDay; RetMonth = JudgeMonth(month); if (RetMonth == 1) { InputDay = 31 - day; } else if (RetMonth == 0) { InputDay = 30 - day; } else { int ret = JudgeLeapYear(year); if (ret == 1) { InputDay = 29 - day; } else { InputDay = 28 - day; } } } else if (month > ThisMonth) { InputDay = day; RetMonth = JudgeMonth(ThisMonth); if (RetMonth == 1) { InputThisDay = 31 - ThisDay; } else if (RetMonth == 0) { InputThisDay = 30 - ThisDay; } else { int ret = JudgeLeapYear(year); if (ret == 1) { InputThisDay = 29 - ThisDay; } else { InputThisDay = 28 - ThisDay; } } } } TotalGapDay = TotalGapYear * 365 + TotalGapLeapYear * 366 + BigMonth * 31 + LittleMonth * 30 + LeapSecondMonth * 29 + NotLeapSecondMonth * 28 + InputThisDay + InputDay; printf("相差%d天\n", TotalGapDay); } int JudgeMonth(int month)//判断月份 { int ret = 0; if (month == 1 ||month == 3 ||month == 5 || month == 7 || month == 8 || month == 10 || month == 12) { ret = 1; return ret; } else if (month == 4 || month == 6 || month == 9 || month == 11) { return ret; } else { ret = -1; return ret; } } int JudgeLeapYear(int year)//判断是否为闰年 { int ret=0; if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) { ret = 1; return ret; } else { return ret; } } void ReturnMenu()//回主菜单 { CalendarTable(); } void ShowData()//显示当前日期 { struct tm *local; time_t t; t = time(NULL); local = localtime(&t); printf("%d", 1900 + local->tm_year); printf("/"); printf("%d", 1 + local->tm_mon); printf("/"); printf("%d\n", local->tm_mday); } void ShowTime()//显示当前时间 { struct tm *local; time_t t; t = time(NULL); local = localtime(&t);//local->tm_hour, local->tm_min, local->tm_sec printf("%d:", local->tm_hour); printf("%d:", local->tm_min); printf("%d\n", local->tm_sec); } void ShowDataTime()//显示日期时间 { struct tm *local; time_t t; t = time(NULL); local = localtime(&t); printf("%d:", local->tm_hour); printf("%d:", local->tm_min); printf("%d\n", local->tm_sec); printf("%d", 1900 + local->tm_year); printf("/"); printf("%d", 1 + local->tm_mon); printf("/"); printf("%d\n", local->tm_mday); } void ShowDynamicTime()//动态显示时间 { while (1) { time_t t; struct tm *local; time(&t); local = localtime(&t); printf("%d/%d/%d %d:%d:%d\n", 1900 + local->tm_year, 1 + local->tm_mon, local->tm_mday, local->tm_hour, local->tm_min, local->tm_sec); Sleep(1000); } } void ShowMonth()//显示本月日历表 { time_t t; struct tm *local; time(&t); local = localtime(&t); int ThisYear = 1900+local->tm_year; printf("%d\n", ThisYear); int ThisMonth = 1 + local->tm_mon; if ((ThisYear %4 == 0 && ThisYear %100 != 0)||(ThisYear % 400 == 0))//是闰年 { printf("是闰年\n"); printf("************************\n"); printf("本月日历\n"); if (ThisMonth == 1 || ThisMonth == 3 || ThisMonth == 5 || ThisMonth == 7 || ThisMonth == 8 || ThisMonth == 10 || ThisMonth == 12)//1 3 5 7 8 10 12月的日历 { printf("1 2 3 4 5 6 7\n"); printf("8 9 10 11 12 13 14\n"); printf("15 16 17 18 19 20 21\n"); printf("22 23 24 25 26 27 28\n"); printf("29 30 31\n"); } else if (ThisMonth == 4 || ThisMonth == 6 || ThisMonth == 9 || ThisMonth == 11)//4 6 9 11月的日历 { printf("其他月份\n"); printf("1 2 3 4 5 6 7\n"); printf("8 9 10 11 12 13 14\n"); printf("15 16 17 18 19 20 21\n"); printf("22 23 24 25 26 27 28\n"); printf("29 30\n"); } else//2月的日历 { printf("1 2 3 4 5 6 7\n"); printf("8 9 10 11 12 13 14\n"); printf("15 16 17 18 19 20 21\n"); printf("22 23 24 25 26 27 28\n"); printf("29\n"); } } else { printf("不是闰年\n"); printf("************************\n"); printf("本月日历\n"); if (ThisMonth == 1 || ThisMonth == 3 || ThisMonth == 5 || ThisMonth == 7 || ThisMonth == 8 || ThisMonth == 10 || ThisMonth == 12)//1 3 5 7 8 10 12月的日历 { printf("1 2 3 4 5 6 7\n"); printf("8 9 10 11 12 13 14\n"); printf("15 16 17 18 19 20 21\n"); printf("22 23 24 25 26 27 28\n"); printf("29 30 31\n"); } else if (ThisMonth == 4 || ThisMonth == 6 || ThisMonth == 9 || ThisMonth == 11)//4 6 9 11月的日历 { printf("其他月份\n"); printf("1 2 3 4 5 6 7\n"); printf("8 9 10 11 12 13 14\n"); printf("15 16 17 18 19 20 21\n"); printf("22 23 24 25 26 27 28\n"); printf("29 30\n"); } else//2月的日历 { printf("1 2 3 4 5 6 7\n"); printf("8 9 10 11 12 13 14\n"); printf("15 16 17 18 19 20 21\n"); printf("22 23 24 25 26 27 28\n"); } } } /**************************/ void CheckWeek()//查询***是星期几 { int year; int month; int day; printf("请输入要查询的日期\n"); scanf("%d/%d/%d", &year, &month, &day); time_t t; struct tm *local; time(&t); local = localtime(&t); int ThisYear = 1900 + local->tm_year; int ThisDay = local->tm_mday; int ThisWeek = local->tm_wday; int Next1ThisYear = ThisYear - 1;//现实时间大 int Next2ThisYear = ThisYear + 1;//现实时间小 int ThisMonth = 1 + local->tm_mon; int Next1ThisMonth = ThisMonth - 1; int Next2ThisMonth = ThisMonth+1; int Next1Month = month + 1; int Next2Month = month - 1; int TotalGapDay = 0; int TotalGapLeapYear = 0; int TotalGapYear = 0; int BigMonth = 0; int LittleMonth = 0; int SecondMonth = 0; int WeekResult = 0; int RetMonth = 0; int InputDay = 0; int InputThisDay = 0; int LeapSecondMonth = 0; int NotLeapSecondMonth = 0; if (Next1ThisYear >= year) { while (Next1ThisYear > year) { int ret; ret = JudgeLeapYear(Next1ThisYear); if (ret == 1) { TotalGapLeapYear++; } else { TotalGapYear++; } Next1ThisYear--; } } else { while (Next2ThisYear < year) { int ret; ret = JudgeLeapYear(Next2ThisYear); if (ret == 1) { TotalGapLeapYear++; } else { TotalGapYear++; } Next2ThisYear++; } } while (Next1ThisMonth >= 1&&year { while (year < ThisYear&&Next1Month <= 12)//输入不是本年的月份情况 { if (Next1Month == 1 || Next1Month == 3 || Next1Month == 5 || Next1Month == 7 || Next1Month == 8 || Next1Month == 10 || Next1Month == 12) { BigMonth++; } else if (Next1Month == 4 || Next1Month == 6 || Next1Month == 9 || Next1Month == 11) { LittleMonth++; } else { int ret = 0; ret = JudgeLeapYear(year); if (ret == 1) { LeapSecondMonth++; } else { NotLeapSecondMonth++; } } Next1Month++; } if (Next1ThisMonth == 1 || Next1ThisMonth == 3 || Next1ThisMonth == 5 || Next1ThisMonth == 7 || Next1ThisMonth == 8 || Next1ThisMonth == 10 || Next1ThisMonth == 12) { BigMonth++; } else if (Next1ThisMonth == 4 || Next1ThisMonth == 6 || Next1ThisMonth == 9 || Next1ThisMonth == 11) { LittleMonth++; } else { int ret = 0; ret = JudgeLeapYear(ThisYear); if (ret == 1) { LeapSecondMonth++; } else { NotLeapSecondMonth++; } } Next1ThisMonth--; } while (Next2Month >= 1 && year > ThisYear) { while (year >ThisYear&&Next2ThisMonth <=12)//不是本年输入年份的月份情况 { if (Next2ThisMonth == 1 || Next2ThisMonth == 3 || Next2ThisMonth == 5 || Next2ThisMonth == 7 || Next2ThisMonth == 8 || Next2ThisMonth == 10 || Next2ThisMonth == 12) { BigMonth++; } else if (Next2ThisMonth == 4 || Next2ThisMonth == 6 || Next2ThisMonth == 9 || Next2ThisMonth == 11) { LittleMonth++; } else { int ret=0; ret=JudgeLeapYear(ThisYear); if (ret == 1) { LeapSecondMonth++; } else { NotLeapSecondMonth++; } } Next2ThisMonth++; } if (Next2Month == 1 || Next2Month == 3 || Next2Month == 5 || Next2Month == 7 || Next2Month == 8 || Next2Month == 10 || Next2Month == 12) { BigMonth++; } else if (Next2Month == 4 || Next2Month == 6 || Next2Month == 9 || Next2Month == 11) { LittleMonth++; } else { int ret = 0; ret = JudgeLeapYear(year); if (ret == 1) { LeapSecondMonth++; } else { NotLeapSecondMonth++; } } Next2Month--; }
if (year == ThisYear) { if (month > ThisMonth) { while (Next2Month > ThisMonth) { if (Next2Month == 1 || Next2Month == 3 || Next2Month == 5 || Next2Month == 7 || Next2Month == 8 || Next2Month == 10 || Next2Month == 12) { BigMonth++; } else if (Next2Month == 4 || Next2Month == 6 || Next2Month == 9 || Next2Month == 11) { LittleMonth++; } else if (Next2Month==2) { int ret = 0; ret = JudgeLeapYear(year); if (ret == 1) { LeapSecondMonth++; } else { NotLeapSecondMonth++; } } Next2Month--; } } else if (month < ThisMonth) { while (Next1Month < ThisMonth) { if (Next1Month == 1 || Next1Month == 3 || Next1Month == 5 || Next1Month == 7 || Next1Month == 8 || Next1Month == 10 || Next1Month == 12) { BigMonth++; } else if (Next1Month == 4 || Next1Month == 6 || Next1Month == 9 || Next1Month == 11) { LittleMonth++; } else if (Next1Month == 2) { int ret = 0; ret = JudgeLeapYear(year); if (ret == 1) { LeapSecondMonth++; } else { NotLeapSecondMonth++; } } Next1Month++; } } else { if (day >= ThisDay) { printf("同年同一个月,相差%d天\n", day - ThisDay); TotalGapDay = day - ThisDay; if (TotalGapDay % 7 == 0) { WeekResult = ThisWeek; } else { if ((TotalGapDay % 7 + ThisWeek) <= 7) { WeekResult = TotalGapDay % 7 + ThisWeek; } else { WeekResult = TotalGapDay % 7 + ThisWeek - 7; } } printf("今天是星期%d\n", WeekResult); return; } else { printf("同年同一个月,相差%d天\n", ThisDay - day); TotalGapDay = ThisDay - day; if (TotalGapDay % 7 == 0) { WeekResult = ThisWeek; } else { if ((ThisWeek - TotalGapDay % 7) >= 0) { WeekResult = ThisWeek - TotalGapDay % 7; } else { WeekResult = 7 - TotalGapDay % 7 + ThisWeek; } } printf("今天是星期%d\n", WeekResult); return; } } } if (year < ThisYear) { InputThisDay = ThisDay; RetMonth = JudgeMonth(month); if (RetMonth == 1) { InputDay = 31 - day; } else if (RetMonth == 0) { InputDay = 30 - day; } else { int ret = JudgeLeapYear(year); if (ret == 1) { InputDay = 29 - day; } else { InputDay = 28 - day; } } } else if (year > ThisYear) { InputDay = day; RetMonth = JudgeMonth(ThisMonth); if (RetMonth == 1) { InputThisDay = 31 - ThisDay; } else if (RetMonth == 0) { InputThisDay = 30 -ThisDay; } else { int ret = JudgeLeapYear(ThisYear); if (ret == 1) { InputThisDay = 29 - ThisDay; } else { InputThisDay = 28 - ThisDay; } } } else { if (month < ThisMonth) { InputThisDay = ThisDay; RetMonth = JudgeMonth(month); if (RetMonth == 1) { InputDay = 31 - day; } else if (RetMonth == 0) { InputDay = 30 - day; } else { int ret = JudgeLeapYear(year); if (ret == 1) { InputDay = 29 - day; } else { InputDay = 28 - day; } } } else if (month > ThisMonth) { InputDay = day; RetMonth = JudgeMonth(ThisMonth); if (RetMonth == 1) { InputThisDay = 31 - ThisDay; } else if (RetMonth == 0) { InputThisDay = 30 - ThisDay; } else { int ret = JudgeLeapYear(year); if (ret == 1) { InputThisDay = 29 - ThisDay; } else { InputThisDay = 28 - ThisDay; } } } } TotalGapDay = TotalGapYear * 365 + TotalGapLeapYear * 366 + BigMonth * 31 + LittleMonth * 30 + LeapSecondMonth * 29+NotLeapSecondMonth*28 + InputThisDay + InputDay; printf("相差%d天\n", TotalGapDay); if (year < ThisYear) { if (TotalGapDay % 7 == 0) { WeekResult = ThisWeek; } else { if ((ThisWeek - TotalGapDay % 7) >= 0) { WeekResult = ThisWeek - TotalGapDay % 7; } else { WeekResult = 7 - TotalGapDay % 7 + ThisWeek; } } printf("今天是星期%d\n", WeekResult); } else { if (TotalGapDay % 7 == 0) { WeekResult = ThisWeek; } else { if ((TotalGapDay % 7 + ThisWeek) <= 7) { WeekResult = TotalGapDay % 7 + ThisWeek; } else { WeekResult = TotalGapDay % 7 + ThisWeek - 7; } } printf("今天是星期%d\n", WeekResult); } } void CheckWeekLater()//查询***几天之后是星期几 { time_t t; struct tm *local; time(&t); local = localtime(&t); int ThisWeek = local->tm_wday; int LaterTotalGapDay = 0; int WeekResult = 0; printf("输入今天后的天数\n"); scanf("%d", &LaterTotalGapDay); if (LaterTotalGapDay % 7 == 0) { WeekResult = ThisWeek; } else { if ((LaterTotalGapDay % 7 + ThisWeek) <= 7) { WeekResult = LaterTotalGapDay % 7 + ThisWeek; } else { WeekResult = LaterTotalGapDay % 7 + ThisWeek - 7; } } printf("今天是星期%d\n", WeekResult); } void CheckWeekBefore()//查询***几天之前是星期几 { time_t t; struct tm *local; time(&t); local = localtime(&t); int ThisWeek = local->tm_wday; int BeforeTotalGapDay = 0; int WeekResult = 0; printf("输入今天前的天数:\n"); scanf("%d", &BeforeTotalGapDay); if (BeforeTotalGapDay % 7 == 0) { WeekResult = ThisWeek; } else { if ((ThisWeek - BeforeTotalGapDay % 7) >= 0) { WeekResult = ThisWeek - BeforeTotalGapDay % 7; } else { WeekResult = 7 - BeforeTotalGapDay % 7 + ThisWeek; } } printf("今天是星期%d\n", WeekResult); } void CheckMonth()//查询***月的日历表 { int year; int month; int ReturnYear; int ReturnMonth; printf("输入某年份的某月:"); scanf("%d%d",&year,&month); ReturnMonth = JudgeMonth(month); if (ReturnMonth == 1) { printf("1 2 3 4 5 6 7\n"); printf("8 9 10 11 12 13 14\n"); printf("15 16 17 18 19 20 21\n"); printf("22 23 24 25 26 27 28\n"); printf("29 30 31\n"); } else if (ReturnMonth == 0) { printf("1 2 3 4 5 6 7\n"); printf("8 9 10 11 12 13 14\n"); printf("15 16 17 18 19 20 21\n"); printf("22 23 24 25 26 27 28\n"); printf("29 30\n"); } else { ReturnYear = JudgeLeapYear(year); if (ReturnYear == 1) { printf("1 2 3 4 5 6 7\n"); printf("8 9 10 11 12 13 14\n"); printf("15 16 17 18 19 20 21\n"); printf("22 23 24 25 26 27 28\n"); printf("29\n"); } else { printf("1 2 3 4 5 6 7\n"); printf("8 9 10 11 12 13 14\n"); printf("15 16 17 18 19 20 21\n"); printf("22 23 24 25 26 27 28\n"); } } } void CheckYear()//查询***年的日历表 { int year; printf("输入要显示的年份:\n"); scanf("%d",&year); ShowEveryMonth(year); } void CheckDays()//查询***距离现在多少天 { int year; int month; int day; printf("请输入要查询的日期\n"); scanf("%d/%d/%d", &year, &month, &day); CalculateDay(year, month, day); } /****************************/ void LastMonth()//上一个月 { time_t t; struct tm *local; time(&t); local = localtime(&t); int ThisMonth = 1+local->tm_mon; int ThisYear = 1900+local->tm_year; if (ThisMonth > 1) { int NextMonth = ThisMonth - 1; int ReturnMonth = JudgeMonth(NextMonth); if (ReturnMonth == 1) { printf("1 2 3 4 5 6 7\n"); printf("8 9 10 11 12 13 14\n"); printf("15 16 17 18 19 20 21\n"); printf("22 23 24 25 26 27 28\n"); printf("29 30 31\n"); } else if (ReturnMonth == 0) { printf("1 2 3 4 5 6 7\n"); printf("8 9 10 11 12 13 14\n"); printf("15 16 17 18 19 20 21\n"); printf("22 23 24 25 26 27 28\n"); printf("29 30\n"); } else { int ReturnYear = JudgeLeapYear(ThisYear); if (ReturnYear == 1) { printf("1 2 3 4 5 6 7\n"); printf("8 9 10 11 12 13 14\n"); printf("15 16 17 18 19 20 21\n"); printf("22 23 24 25 26 27 28\n"); printf("29\n"); } else { printf("1 2 3 4 5 6 7\n"); printf("8 9 10 11 12 13 14\n"); printf("15 16 17 18 19 20 21\n"); printf("22 23 24 25 26 27 28\n"); } } } else if (ThisMonth == 1) { printf("1 2 3 4 5 6 7\n"); printf("8 9 10 11 12 13 14\n"); printf("15 16 17 18 19 20 21\n"); printf("22 23 24 25 26 27 28\n"); printf("29 30 31\n"); } } void NextMonth()//下一个月 { time_t t; struct tm *local; time(&t); local = localtime(&t); int ThisMonth = 1+local->tm_mon; int ThisYear = 1900+local->tm_year; if (ThisMonth <12) { int NextMonth = ThisMonth+1; int ReturnMonth = JudgeMonth(NextMonth); if (ReturnMonth == 1) { printf("1 2 3 4 5 6 7\n"); printf("8 9 10 11 12 13 14\n"); printf("15 16 17 18 19 20 21\n"); printf("22 23 24 25 26 27 28\n"); printf("29 30 31\n"); } else if (ReturnMonth == 0) { printf("1 2 3 4 5 6 7\n"); printf("8 9 10 11 12 13 14\n"); printf("15 16 17 18 19 20 21\n"); printf("22 23 24 25 26 27 28\n"); printf("29 30\n"); } else { int ReturnYear = JudgeLeapYear(ThisYear); if (ReturnYear == 1) { printf("1 2 3 4 5 6 7\n"); printf("8 9 10 11 12 13 14\n"); printf("15 16 17 18 19 20 21\n"); printf("22 23 24 25 26 27 28\n"); printf("29\n"); } else { printf("1 2 3 4 5 6 7\n"); printf("8 9 10 11 12 13 14\n"); printf("15 16 17 18 19 20 21\n"); printf("22 23 24 25 26 27 28\n"); } } } else if (ThisMonth == 12) { printf("1 2 3 4 5 6 7\n"); printf("8 9 10 11 12 13 14\n"); printf("15 16 17 18 19 20 21\n"); printf("22 23 24 25 26 27 28\n"); printf("29 30 31\n"); } } void LastYear()//上一年 { time_t t; struct tm *local; time(&t); local = localtime(&t); int ThisYear = 1900 + local->tm_year; int NextYear = ThisYear - 1; ShowEveryMonth(NextYear); } void NextYear()//下一年 { time_t t; struct tm *local; time(&t); local = localtime(&t); int ThisYear = 1900 + local->tm_year; int NextYear = ThisYear + 1; ShowEveryMonth(NextMonth); } void SaveCalendar()//保存当前日历 { time_t t; struct tm *local; time(&t); local = localtime(&t); int ThisYear = 1900 + local->tm_year; int ThisMonth = 1 + local->tm_mon; int ThisDay = local->tm_mday; FILE *fOut; char strYear[15] = {'a'}; char strMonth[3]={'a'}; char strDay[3] = {'a'}; int i = 0; int n = 0; _itoa(ThisYear, strYear, 10); _itoa(ThisMonth, strMonth, 10); _itoa(ThisDay, strDay, 10); strcat(strYear, strMonth); strcat(strYear, strDay); n = strlen(strYear); if ((fOut = fopen("rili.txt", "w")) != NULL) { for (i = 0; i < n;i++) { fputc(strYear[i], fOut); } fputc('\0', fOut); printf("日期保存成功\n"); } else { printf("打开文件失败\n"); } fclose(fOut); } /********************************/ void AddMemorandum()//添加备忘录信息 { int count = 0; char message[30]; char data[10]; int i = 0; int k = 0; FILE *fOut=fopen("beiwang.txt","wb"); printf("是否要添加\n"); while (1) { scanf("%d", &i); if (i == 1) { printf("请输入添加备忘录的信息:\n"); scanf("%s", data); scanf("%s", message); int LenData = strlen(data)+1; int LenMessage = strlen(message)+1; int j = 0; if (fOut!= NULL) { for (j = 0; j < LenData; j++) { fputc(data[j], fOut); } fputc('\n',fOut); for (j = 0; j < LenMessage; j++) { fputc(message[j], fOut); } fputc('\n', fOut); } else { printf("打开文件失败\n"); } count++; printf("成功添加一个备忘录\n"); } else { fclose(fOut); printf("不再添加\n"); break; } } } void DelateMemorandum()//删除备忘录信息 { FILE *fIn = fopen("beiwang.txt", "wb"); if (fIn != NULL) { remove("beiwang.txt"); } else { printf("打开文件失败\n"); } fclose(fIn); } void ChangeMemorandum()//更改备忘录信息 { FILE *fOut = fopen("output.txt", "wb"); FILE *fIn = fopen("beiwang.txt", "rb"); char str[10]; printf("输入要修改备忘录的日期:\n"); scanf("%s",str); if (fOut == NULL || fIn == NULL) { printf("打开文件失败\n"); } else { char message[100]; while (fgets(message,100,fIn)) { int ret = 1; ret = strcmp(str, message); if (ret == 0) { int i = 0; printf("修改本天的备忘信息:\n"); char NewStr[100]; scanf("%s", NewStr); fputs(message, fOut); fgets(message, 100, fIn); while (NewStr[i] != '\0') { fputc(NewStr[i],fOut); i++; } fputc('\0', fOut); } else { fputs(message, fOut); fgets(message, 100, fIn); fputs(message, fOut); } } } fclose(fIn); fclose(fOut); } void CheckMemorandum()//查询备忘录信息 { FILE *fIn = fopen("beiwang.txt", "rb"); char str[100]; char CheckStr[10]; scanf("%s", CheckStr); if (fIn != NULL) { while (1) { int ret = 1; fgets(str, 100, fIn); ret = strcmp(CheckStr, str); if (ret == 0) { fgets(str, 100, fIn); printf("本天应该做的:"); printf("%s\n", str); break; } else { if (fgets(str, 100, fIn) == NULL) { printf("本天没有备忘信息\n"); break; } else { } } } } else { printf("打开文件失败\n"); } } void ShowMemorandum()//展示备忘录信息 { FILE *fIn = fopen("beiwang.txt", "rb"); char str[50]; while ((fgets(str, 50, fIn))!=NULL) { printf("%s\n", str); } } /**************************************************************************/ void Memorandum()//日期备忘录 { int k; scanf_s("%d", &k); switch (k) { case 1: printf("添加备忘录信息\n"); AddMemorandum(); break; case 2: printf("删除备忘录信息\n"); DelateMemorandum(); break; case 3: printf("更改备忘录信息\n"); ChangeMemorandum(); break; case 4: printf("查询备忘录信息\n"); CheckMemorandum(); break; case 5: printf("备忘录信息展示\n"); ShowMemorandum(); break; case 0: printf("退出备忘录\n"); ReturnMenu(); break; } } /******************************/ void AlterCalendarTable()//修改日历 { int key1=0; int key2 = 0; key1 = getch(); key2 = getch(); switch (key2) { case 72: printf("上一个月:\n"); LastMonth(); break; case 80: printf("下一个月:\n"); NextMonth(); break; case 75: printf("上一年:\n"); LastYear(); break; case 77: printf("下一年:\n"); NextYear(); break; case 71: printf("保存当前日历\n"); SaveCalendar(); break; case 79: printf("返回主菜单\n"); ReturnMenu(); break; }
} /****************************/ void CheckCalendarTable()//日历查询 { int j; scanf_s("%d",&j); switch (j) { case 1: printf("查询***是星期几\n"); CheckWeek(); break; case 2: printf("查询***几天之后是星期几\n"); CheckWeekLater(); break; case 3: printf("查询***几天之前是星期几\n"); CheckWeekBefore(); break; case 4: printf("查询***月的日历表\n"); CheckMonth(); break; case 5: printf("查询***年的日历表\n"); CheckYear(); break; case 6: printf("查询***距离现在多少天\n"); CheckDays(); break; case 0: printf("返回主菜单\n"); ReturnMenu(); break; } } /***************************/ void ShowCalendarTable()//日历显示 { int m; scanf_s("%d", &m); switch (m) { case 1: printf("显示当前日期\n"); ShowData(); break; case 2: printf("显示当前时间\n"); ShowTime(); break; case 3: printf("显示日期时间\n"); ShowDataTime(); break; case 4: printf("动态显示时间\n"); ShowDynamicTime(); break; case 5: printf("显示本月日历表\n"); ShowMonth(); break; case 0: printf("返回主菜单\n"); ReturnMenu(); break; } } /*********************************/ void HelpMessage()//信息帮助 { char str1[] = "1的功能是显示相应的日历表,里面的不同键又可以实现更详细的功能"; char str2[] = "2的功能是查询相应的日历表,里面的不同键又可以实现更详细的功能"; char str3[] = "3的功能是修改相应的日历表,里面的不同键又可以实现更详细的功能"; char str4[] = "4的功能是日历表的备忘录,里面的不同键又可以实现更详细的功能"; char str5[] = "5的功能是信息帮助"; char str0[] = "0的功能是直接退出日历表"; FILE *fOut = fopen("HelpMessage.txt", "wb"); if (fOut == NULL) { printf("打开文件失败\n"); } else { int i = 0; while (str1[i] != '\0') { fputc(str1[i], fOut); i++; } fputc('\n', fOut); i = 0; while (str2[i] != '\0') { fputc(str2[i], fOut); i++; } fputc('\n', fOut); i = 0; while (str3[i] != '\0') { fputc(str3[i], fOut); i++; } fputc('\n', fOut); i = 0; while (str4[i] != '\0') { fputc(str4[i], fOut); i++; } fputc('\n', fOut); i = 0; while (str5[i] != '\0') { fputc(str5[i], fOut); i++; } fputc('\n', fOut); i = 0; while (str0[i] != '\0') { fputc(str0[i], fOut); i++; } fputc('\n', fOut); fclose(fOut); } } /**************************************************************************/ void CalendarTable() { int n; scanf_s("%d", &n); switch (n) { case 1: printf("日历显示\n"); ShowCalendarTable(); break; case 2: printf("日历查询\n"); CheckCalendarTable(); break; case 3: printf("修改日历\n"); AlterCalendarTable(); break; case 4: printf("日历备忘录\n"); Memorandum(); break; case 5: printf("信息帮助\n"); HelpMessage(); break; case 0: printf("退出系统\n"); exit(0); break; } } 只是实现了软件的各接口功能,要想有更好的用户体验还有改进的地方。