資源簡介
數據結構綜合課程作業,可以查詢日歷以及針對任意一天添加日常并對日常進行管理
代碼片段和文件信息
#include“stdio.h“
#include“conio.h“
#include“string.h“
#include“stdlib.h“
#include?“time.h“
#include?“windows.h“
typedef?struct?e{
int?yearmonthdayhour;?????//記錄事件發生的具體時間?
char?address[10]remark[20];?//記錄事件的地點和備注?
int?len;??//記錄日程個數
struct?e?*next;?//指向下一個事件?
}Event;
//標記是否保存了
int?save=0;?
int?g_MonthDays?[13]={0312831303130313130313031};
//判斷年是否是閏年,是返回1,不是返回0
int?LeapYear(int?n);
//計算從1年到year-1年的總天數 ?
int?CountYearDays(int?year); ?
//計算1月到month-1月的天數?
int?CountMonthDays(int?month);
//計算year年month月的天數
int?MonthDays(int?year?int?month);
//?計算year年month月day天是星期幾并打印?
void?PrintDay(Event?*event?int?year?int?month?int?day);
//查找在event中是否有時間為year年month月day天的日程
void?Find(Event?*event?int?year?int?month?int?day);?
//計算year年month月的日歷情況并打印
void?PrintMonth(int?year?int?month);
//計算year年全年的日歷情況并全部打印? ?
void?PrintYear(int?year);
//顯示提示信息
void?Show(); ?
//判斷輸入的信息是否合理
void?Check(Event?*event?int?c);?
//添加日程安排?
void?AddEvent(Event?*event);?
//添加日程安排的時間?(修改時間是調用這個函數以及CheckTime函數)?
Event?*AddTime(Event?*event);
//對添加的日程時間判斷是否合理及是否重復
int?CheckTime(Event?*eventEvent?*qint?hour);?
//添加日程安排的地址(修改地址時也調用這個函數)
Event?*AddAddress();
//添加日程安排的備注?(修改備注是也調用這個函數) ?
Event?*AddRemark();?
//打印全部日程安排? ?
void?PrintEvent(Event?*event);?
//修改某一日程?
void?Modify(Event?*event);
//刪除某一日程?
void?Delete(Event?*event);
//獲取當前時間并查詢當前是否有日程,并輸出提示
void?GetTime(Event?*event);?
int?LeapYear(int?n){
if((n%4==0&&n%100!=0)||n%400==0)
???return?(1);?????????
????else??return?(0);?????
}
int?CountYearDays(int?year){
int?iflagdays=0;
for(i=1;i ?? flag=LeapYear(i);????????????
?? if(flag)??days=days+366;?????
?? else??????days=days+365;?????
?? }
?? return?(days);???????????????????
}
int?CountMonthDays(int?month){
int?idays=0;
for(i=0;i ???days=days+g_MonthDays?[i];
????return?(days);
}
int?MonthDays(int?year?int?month){
int?daysflag;
days=g_MonthDays[month];
flag=LeapYear(year);????????????????
if(flag&&month>2)
?????days++;
return?days;??
}
void?PrintDay(Event?*eventint?Year?int?Month?int?Day){
Event?*Ev;?Ev=event;
int?tyear=Yearmonth=Monthday=Dayflagydaysmdaysalldaysmondays;
ydays=CountYearDays(year);??????????
mdays=CountMonthDays(month);????????
flag=LeapYear(year);????????????????
if(flag&&month>2)
mdays++;?????
??? alldays=ydays+mdays+day;?????????????
??? t=alldays%7;???????????????????????
??? printf(“\n%d年%d月%d日是:“yearmonthday);
??? switch?(t){
??? case?0:printf(“星期日\n“);?break;
??? case?1:printf(“星期一\n“);?break;
???? case?2:printf(“星期二\n“);?break;
???? case?3:printf(“星期三\n“);?break;
???? case?4:printf(“星期四\n“);?break;
???? case?5:printf(“星期五\n“);?break;
???? case?6:printf(“星期六\n“);?break;
??? };?
??? Find(Evyearmonthday);
}??
void?Find(Event?*event?int?year?int?month?int?day){
Event?*pre;?pre=event->next;
int?flag=0;
for(pre;?pre!=NULL;?pre=pre->next){
if(pre->year==year?&
評論
共有 條評論