萬年曆軟件各個接口功能的實現

萬年曆軟件可以實現日曆顯示,日曆查詢,日曆修改,日期備忘錄,信息幫助這些功能:


#include<stdio.h>

#include"CalendarTable.h"

#include<stdlib.h>

int main()

{

CalendarTable();

system("pause");

return 0;

}

/****************************************************************************************/

#pragma once

#include<stdio.h>

#include<stdlib.h>

#include<windows.h>

#include"time.h"

#include<assert.h>

#include<stdlib.h>

#include<string.h>

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<ThisYear)

{

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<ThisYear)

{

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;

}

}

只是實現了軟件的各接口功能,要想有更好的用戶體驗還有改進的地方。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章