萬年歷C語言課程設(shè)計報告_第1頁
萬年歷C語言課程設(shè)計報告_第2頁
萬年歷C語言課程設(shè)計報告_第3頁
萬年歷C語言課程設(shè)計報告_第4頁
萬年歷C語言課程設(shè)計報告_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

程序?qū)嵺`報告任務(wù)分配:1、頭文件,定義常量,全局變量,自定義函數(shù)和打印輸出模塊。即1~50和140~2902、功能控制模塊和一部分日歷顯示模塊,即50~140和290~4003、一部分日歷顯示模塊和鍵值獲取模塊,即400~1、基本思路功能模塊圖本系統(tǒng)包括4個模塊,分別是功能控制模塊、打印輸出模塊、日歷顯示模塊和鍵值獲取模塊。(1) 功能控制模塊。該模塊用于實現(xiàn)日期有效性檢查、判斷是否是閏年和返回指定日期對應(yīng)的星期。(2) 打印輸出模塊。該模塊主要是進(jìn)行輸出顯示,包括打印指定個數(shù)的空格、打印分隔線、打印用戶使用手冊、打印當(dāng)前日期對應(yīng)的星期以及打印給定的星期。(3) 日歷顯示模塊。該模塊是系統(tǒng)的核心模塊,是用來顯示指定日期所在月份的月歷。(4) 鍵值獲取模塊。該模塊接受鍵盤操作,獲取鍵值,來進(jìn)行日期調(diào)整,并調(diào)用日歷顯示模塊中的函數(shù)來顯示調(diào)整后的日歷。日歷顯示模塊日歷顯示是系統(tǒng)的核心模塊,它控制著日歷的生成和顯示。其實現(xiàn)流程如圖所示。程序輸入的是包含年月日(year,month和day)的日期,輸出month所在月份的月歷,并突出顯示day所在的日期和year是否是閏年的標(biāo)識。程序首先根據(jù)year判斷其是否是閏年,如果是則需要將該年2月份的天數(shù)設(shè)置為29天,接著判斷day是否超過month所在月份的最大天數(shù),如果超過則顯示系統(tǒng)日期所在的月歷。然后進(jìn)行星期輸出的判斷,如果輸出的是該月的第一個星期,則判斷該星期中還有幾天在本月(如,該月1號是星期五,則表示該月第一個星期中只有兩天在本月,星期一到星期四在上月,則星期一到星期四在本月就不輸出,僅有空格表示),輸出空格。輸出完第一周后,接著輸出第二到第五(或者六)周,每周7天。在輸出過程中,如果遇到了day所在的日期,則突出顯示。鍵值獲取流程圖鍵值獲取實現(xiàn)的是從鍵盤調(diào)整日期并顯示調(diào)整后的月歷。其實現(xiàn)流程如圖所示。系統(tǒng)首先判斷從鍵盤輸入的值,如果是右移鍵,表示增加月份。此時,如果當(dāng)前月份是12月,則增加月份后就進(jìn)入下一年的一月;如果是左移鍵,表示減少月份。此時,如果當(dāng)前月份是1月,則減少月份后就進(jìn)入上一年的12月;如果是上移鍵表示增加年份,直接年份加1即可;如果是下移鍵表示減少奶奶分,直接年份減1即可;如果是向上翻頁鍵表示減小日期。如果是1月1號,則減少日期后進(jìn)入上一年的12月31號,如果是某一個月的1號,則減小日期后進(jìn)入上一月的最后一天;如果是向下翻頁鍵表示增加日期。如果是12月31號,則增加日期后進(jìn)入到下一年的1月1號,如果是某一個月的最后一天,則增加日期后進(jìn)入到下一個月的第一天;如果是Q/q鍵表示查詢?nèi)掌?,此時將輸出提示信息,提示用戶輸入查詢?nèi)掌?。在用戶輸入查詢?nèi)掌诤螅到y(tǒng)就愛那個調(diào)用日期檢查函數(shù)對輸入日期的合法性進(jìn)行檢測,如果輸入日期不合格,則提示錯誤信息并顯示當(dāng)前系統(tǒng)日期所在月的月歷;如果是空格鍵表示重置,顯示當(dāng)前系統(tǒng)日期所在月的月歷;如果是Esc鍵表示退出系統(tǒng),按此鍵后,系統(tǒng)將詢問用戶是否確定退出,在得到確定回答(用戶輸入Y/y)后將退出系統(tǒng)。2、函數(shù)功能描述checkDate()函數(shù)原型:voidcheckDate()checkDate()函數(shù)用于檢查輸入日期的合法性,包括檢查輸入日期中的年、月、日部分。對于年,檢查其是否是負(fù)數(shù)或者是0;對于月,檢查其是否是范圍在1~12中的值;對于日,檢查其是否是范圍在1~31中的值。如果有一個部分不合法,則程序提示用戶。isLeapyear()函數(shù)原型:intisLeapyear(intyear)isLeapyear()函數(shù)用于判斷制定月份是否是閏年。參數(shù)year為待判斷的年份。getWeek()函數(shù)原型:intgetWeek(intyear,intmonth,intday)getWeek()函數(shù)用于計算并返回給定日期對應(yīng)的星期。其中參數(shù)year、month和day都為整型,分別表示輸入的年、月和日。printSpace()函數(shù)原型:voidprintSpace(intn)printSpace()函數(shù)用于輸出制定個數(shù)的空格。其中整型參數(shù)n表示需要輸出的空格的個數(shù)。printSepatator()函數(shù)原型:voidprintSeparator()printSeparator()函數(shù)用于在制定位置輸出用戶使用手冊。輸出位置在函數(shù)中已經(jīng)設(shè)定。printWeek()函數(shù)原型:voidprintWeek()printWeek()函數(shù)用于輸出當(dāng)前日期對應(yīng)的星期,即由currentYear,currentMonth和currentDay確定的日期對應(yīng)的星期。該函數(shù)首先調(diào)用getWeek()函數(shù)返回當(dāng)前日期對應(yīng)的星期。printWeek2()函數(shù)原型:voidprintWeek2(intweek)printWeek2()函數(shù)用于根據(jù)制定值輸出星期。參數(shù)week是一個整型變量,其值可取0到6,分別表示星期一到星期日。8)showCalendar()函數(shù)原型:voidshowCalendar(intyear,intmonth,intday)showCalendar()函數(shù)用于顯示日歷。參數(shù)year,month和day分別表示年、月和日。該函數(shù)顯示year所在年是否是閏年,顯示month所在月的月歷,突出顯示day所在日的日期。10)getKeyValue()函數(shù)原型:voidgetKeyValue()getKeyValue()函數(shù)用于獲取鍵盤的輸入。根據(jù)鍵盤的輸入(上下移鍵、左右移鍵、上下翻頁鍵、Q/q鍵)調(diào)整當(dāng)前日期,并顯示當(dāng)前日期所在月的月歷等。4、遇到的問題和相應(yīng)的解決措施dos.h頭文件不能在常用的VisualC++里使用。若使用TurboC,則鍵入的漢字無法顯示,且無法復(fù)制粘貼。解決措施:經(jīng)過上網(wǎng)查詢和詢問同學(xué),知道了導(dǎo)致問題的原因,但若把dos.h在visualc++中換成time.h,過程太復(fù)雜,很難實現(xiàn)。最后,我們跟同學(xué)借了一個win-TC,是C語言程序,且可以使用中文和進(jìn)行復(fù)制粘貼;鍵入程序代碼的時候顯示“非法字符?(0xa3)在showCalender函數(shù)中”解決措施:把showCalender函數(shù)全部檢查一遍也沒有找出問題所在,然后咨詢老師,經(jīng)驗豐富的老師一眼看出函數(shù)中的一個左括號是用拼音輸出的,不是英文;程序可以運(yùn)行,但應(yīng)該只顯示一個向下箭頭的地方顯示了三行,且覆蓋了其他的字符。解決措施:認(rèn)真的又檢查了一遍,發(fā)現(xiàn)“指定輸出字符為向下的箭頭”的函數(shù)中,_CX=01,寫成了_CH=01;4.萬年歷需要獲取系統(tǒng)時間,不知從何下手。解決措施:經(jīng)查閱資料,得知應(yīng)用:currentYear=sysTime.da_year;currentMnth=sysTime.da_mon;currentDay=sysTime.da_day;5、心得體會經(jīng)歷了這次課程設(shè)計的設(shè)計和制作的整個過程,我們才發(fā)現(xiàn)我們知識的貧乏和知識面的狹窄,原本以為不就是一個小小的課程設(shè)計,小case,很容易就可以搞定,可是到了后來實際的操作的時候可是花費(fèi)了我們九牛二虎之力,不說其他的,只說時間上面,我們就花費(fèi)了大把的時間,當(dāng)然我們也從中體會了很多平時不能收獲的東西。經(jīng)過一個多月的自主上機(jī)和三個多星期的大作業(yè)編寫,我們一隊三人的齊心努力,查閱書籍,上網(wǎng)查詢等各種途徑,完成了這次的大作業(yè)編寫。其中遇到了很多問題,一一解決的過程讓我們學(xué)會了很多,當(dāng)然有很多最初的構(gòu)想沒有實現(xiàn),這也是我們的遺憾之處。這次作課程設(shè)計我們也是收獲很大,我們更深入的體會到團(tuán)隊的重要性,通過自學(xué)學(xué)到了更多C語言的編譯,如插入顏色,讀取系統(tǒng)時間等,這會是我們終身的財富。首先,我們對C語言有了更深的了解,使用起來也更加的熟練,原來有一些不知道和不熟悉的函數(shù),我們學(xué)會用了。其次,我們這一次找了不少的資料,找專業(yè)的書籍、上網(wǎng)找各方面的資料,也使我們學(xué)到了一些書本中學(xué)不到的知識,讓我們長了見識。同時我們同學(xué)之間也互相的探討,也增進(jìn)了我們同學(xué)之間的感情。這次的萬年歷設(shè)計,雖然我們自己覺的很有的成就感,但是這必竟是我們第一次C語言的課程設(shè)計,必然會有很多的不足之處有待改進(jìn),相信以后我們一定會做的更好。同時也感謝老師們的耐心講解與指導(dǎo),我們期待下一次可以做的更好!【程序代碼】/*加載頭文件*/#include<stdio.h>#include<bios.h>#include<dos.h>#include<conio.h>#include<graphics.h>#include<string.h>#include<stdlib.h>/*定義常量*//*左移鍵*/#defineLEFT0x4b00/*右移鍵*/#defineRIGHT0x4d00/*下移鍵*/#defineDOWN0x5000/*上移鍵*/#defineUP0x4800/*向上翻頁鍵*/#definePAGEUP0x4900/*向下翻頁鍵*/#definePAGEDOWN0x5100/*小寫字母q*/#defineQLOWER0x1071/*大寫字母Q*/#defineQUPPER0x1051/*空格鍵*/#defineSPACE0x3920/*Esc鍵*/#defineESC0x011b/*定義全局變量*/structdatesysTime;intcurrentYear;intcurrentMonth;intcurrentDay;intn_currentMon;intn_lastMon;/* 自定義函數(shù) */voidcheckDate();intisLeapyear(intyear);intgetWeek(intyear,intmonth,intday);voidprintSpace(intn);voidprintSaparator();voidprintUsage();voidprintWeek();voidprintWeek2(intweek);voidshowCalendar(intyear,intmonth,intday);voidgetKeyValue();welcome(){inti,graphdriver,graphmode,size,page;chars[30];graphdriver=DETECT;initgraph(&graphdriver,&graphmode,"");cleardevice();setbkcolor(BLUE);setviewport(40,40,600,440,1);setfillstyle(1,2);setcolor(YELLOW);rectangle(1,1,560,400);floodfill(50,50,14);rectangle(20,20,540,380);setfillstyle(1,13);/*開圖視口*//*用綠色填畫出的矩形框*/floodfill(2l,300,14);setcolor(BLACK);settextstyle(1,0,6);/*用淡洋紅色填畫出的矩形框*//* 設(shè)要顯示字符串的字形方向,尺寸 */outtextxy(100,60,"Welcomyou");setviewport(100,150,540,380,0);/*又開一窗口*/setcolor(14);setfillstyle(1,10);rectangle(20,20,420,120);settextstyle(2,0,9);floodfill(21,100,14);/*用深藍(lán)色填充*/sprintf(s,"Heygirl!!Doyouwanttoknow?"); /*將字符串存到s字符數(shù)組*/setcolor(1);settextstyle(10,0,10);/* 設(shè)選用字形4,放大3倍,水平設(shè)置 */outtextxy(110,80,s);/*顯示s字符串*/getch();closegraph();}/*功能控制模塊*//*檢查日期有效性函數(shù)*/voidcheckDate(){/*如果給定的日期中年份部分為負(fù)數(shù)或者0*/if(currentYear<=0){gotoxy(1,27);printf("Theyearshouldbeapositivenumber!\n");gotoxy(1,28);printf("Pressanykeytocomtinue ");getchar();getchar();/*以當(dāng)前系統(tǒng)時間重新賦值*/currentYear=sysTime.da_year;currentMonth=sysTime.da_mon;currentDay=sysTime.da_day;}/*如果給定的日期中月份部分為負(fù)數(shù),為0或者大于12*/if(currentMonth>12||currentMonth<1){gotoxy(1,27);printf("Themonthshouldbeanumberbetween1and12!\n");gotoxy(1,28);printf("Pressanykeytocontinue ");getchar();getchar();/*以當(dāng)前系統(tǒng)時間重新賦值*/currentYear=sysTime.da_year;currentMonth=sysTime.da_mon;currentDay=sysTime.da_day;}/*如果給定的日期中天數(shù)部分為負(fù)數(shù),為0或者大于31*/if(currentDay>31||currentDay<1){gotoxy(1,27);printf("Thedayshouldbeanumberbetween1and31!\n");gotoxy(1,28);printf("Pressanykeytocontinue ");getchar();getchar();/*以當(dāng)前系統(tǒng)時間重新賦值*/currentYear=sysTime.da_year;currentMonth=sysTime.da_mon;currentDay=sysTime.da_day;}}/*判斷是否是閏年函數(shù)*/intisLeapyear(intyear){/*閏年的判斷:(1)year被4整除,并且year不被100整除或(2)year被4整除,并且被400整除*/if(year%4==0&&year%100||year%400==0)return1;elsereturn0;}/*根據(jù)給定日期計算星期函數(shù)*/intgetWeek(intyear,intmonth,intday){intleapFlag;intweek;inti;/*該數(shù)組用于保存每個月的天數(shù)*/inta[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};intcount=0;/*判斷給定年份是否是閏年*/leapFlag=isLeapyear(year);/*如果是閏年則2月份的日期應(yīng)該為29天*/if(leapFlag==1)a[2]++;/*計算從給定年份的1月1日到給定月份的1號之間的天數(shù)*/for(i=1;i<month;i++){count+=a[i];}/*計算從給定年份的1月1日到給定日期之間的天數(shù)*/count+=day;/*計算星期*/week=(year+1+(year-1)/4+(year-1)/100+(year-1)/400+count)%7;returnweek;}/*打印輸出模塊*//*輸出指定個數(shù)空格函數(shù)*/voidprintSpace(intn){inti;for(i=0;i<n;i++)printf("");}/*輸出分割線函數(shù)*/voidprintSeparator(){inti;for(i=0;i<38;i++){printf("=");}printf("\n");}/*輸出使用方法函數(shù)*/voidprintUsage(){gotoxy(45,3);/*設(shè)定字體顏色*/textcolor(YELLOW);/*送格式化輸出至屏幕*/cprintf(" Usage ");gotoxy(45,5);textcolor(YELLOW);cprintf("YEAR");gotoxy(50,5);printf("Upkey()toincrease;\n");gotoxy(50,7);printf("Downkey( )todecrease.\n");gotoxy(45,9);textcolor(YELLOW);cprintf("MONTH:");gotoxy(50,9);printf("Rightkey( )toincrease;\n");gotoxy(50,11);printf("Leftkey( )todecrease.\n");gotoxy(45,13);textcolor(YELLOW);cprintf("DAY");gotoxy(50,13);printf("PageDownkeytoincrease;\n");gotoxy(50,15);printf("PageUpkeytodecrease.\n");gotoxy(45,17);textcolor(YELLOW);cprintf("QUERY");gotoxy(50,17);printf("Q/qkey\n");textcolor(YELLOW);gotoxy(45,19);cprintf("RESET");gotoxy(50,19);printf("SPACEkey.\n");gotoxy(45,21);textcolor(YELLOW);cprintf("EXIT");gotoxy(50,21);printf("Esckey\n");gotoxy(59,5);/*設(shè)置寄存器,表示在指定位置輸出一次指定的字符*/_CX=01;_AH=0xa;/*指定輸出字符為向上的箭頭*/_AL=24;/*產(chǎn)生一次中斷,輸出向上的箭頭*/geninterrupt(0x10);gotoxy(61,7);_CX=01;_AH=0xa;/*指定輸出字符為向下的箭頭*/_AL=25;geninterrupt(0x10);gotoxy(62,9);_CX=01;_AH=0xa;_AL=26;/*指定輸出字符為向右的箭頭*/geninterrupt(0x10);gotoxy(61,11);_CX=01;_AH=0xa;/*指定輸出字符為向左的箭頭*/_AL=27;geninterrupt(0x10);/*還原字體顏色*/textcolor(7);}/*根據(jù)系統(tǒng)日期輸出星期函數(shù)*/voidprintWeek(){intday;/*根據(jù)日期獲得星期*/day=getWeek(currentYear,currentMonth,currentDay);textcolor(11);/*輸出星期,0表示星期天,1表示星期一……6表示星期六*/if(day==0)cprintf("%d-%d-%d,Sunday!",currentYear,currentMonth,currentDay);if(day==1)cprintf("%d-%d-%d,Monday!",currentYear,currentMonth,currentDay);if(day==2)cprintf("%d-%d-%d,Tuesday!",currentYear,currentMonth,currentDay);if(day==3)cprintf("%d-%d-%d,Wednesday!",currentYear,currentMonth,currentDay);if(day==4)cprintf("%d-%d-%d,Thursday!",currentYear,currentMonth,currentDay);if(day==5)cprintf("%d-%d-%d,Friday!",currentYear,currentMonth,currentDay);if(day==6)cprintf("%d-%d-%d,Saterday!",currentYear,currentMonth,currentDay);textcolor(7);}/*輸出指定星期函數(shù)*/voidprintWeek2(intweek){if(week==0)cprintf(",Sunday");if(week==1)cprintf(",Monday");if(week==2)cprintf(",Tuesday");if(week==3)cprintf(",Wendesday");if(week==4)cprintf(",Thursday");if(week==5)cprintf(",Friday");if(week==6)cprintf(",Staturday");}/*日歷顯示模塊*//*顯示日歷函數(shù)*/voidshowCalendar(intyear,intmonth,intday){inti;intj;/*輸出的日期*/intoutDay;intleapFlag;/*本月第一個星期中,在上月的天數(shù)*/intdayLastMon;intweek;/*該數(shù)組用于保存每個月的天數(shù)*/inta[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};outDay=0;dayLastMon=0;week=0;/*判斷給定年份是否是閏年*/leapFlag=isLeapyear(year);/*如果是閏年則2月應(yīng)該是29天*/if(leapFlag==1){a[2]++;}/*如果給定的日期中,天數(shù)大于該月的最大天數(shù)*/if(day>a[month]){printf("Thenumberofthismonth'sdayis%datmost!\n",a[month]);printf("pressanykeytocontinue \n");getchar();getchar();/*以當(dāng)前系統(tǒng)時間重新賦值*/year=sysTime.da_year;month=sysTime.da_mon;day=sysTime.da_day;currentYear=sysTime.da_year;currentMonth=sysTime.da_mon;currentDay=sysTime.da_day;}/*當(dāng)前月的天數(shù)*/n_currentMon=a[month];/*上一月的天數(shù)*/n_lastMon=a[month-1];/*根據(jù)給定日期,獲取給定月份1號的星期*/week=dayLastMon=getWeek(year,month,1);/*清除文本模式窗口*/clrscr();printf("\nThecalendarof%d:",year);textcolor(10);/*顯示給定是否是閏年*/if(leapFlag==1)cprintf("[leapyear]",year);if(leapFlag==0)cprintf("[notleapyear]",year);printf("\n");textcolor(7);printSeparator();textcolor(YELLOW);/*輸出月份提示,1~12分別表示1月到12月*/switch(month){case1:cprintf("January1");break;case2:cprintf("Fabruary2");break;case3:cprintf("March3");break;case4:cprintf("April4");break;case5:cprintf("May5");break;case6:cprintf("June6");break;case7:cprintf("July7");break;case8:cprintf("August8");break;case9:cprintf("September9");break;case10:cprintf("October10");break;case11:cprintf("November11");break;case12:cprintf("December12");break;}textcolor(7);printf("\n\n");textcolor(13);cprintf("SunMonTueWedThuFriSat");textcolor(7);printf("\n\n");/*因為一個月中最多跨度6個星期,所以循環(huán)從0到5*/for(i=0;i<6;i++){/*如果是該月的第一星期*/if(i==0){/*第一個星期中還要7-daylastmon天本月,有daylastmon天在上個月,所以輸出daylastmon*4個空格符,每個日期在日歷中占用4個空格*/printSpace(dayLastMon*4);/*剩余在本月的第一個星期中的天數(shù)為7-dayLastmon*/for(j=0;j<7-dayLastMon;j++){/*到達(dá)day的前一天時,輸出++outDay*/if(outDay==day-1){/*黃色字體突出顯示*/textcolor(YELLOW);cprintf("[%d]",++outDay);textcolor(7);/*到達(dá)day當(dāng)天時,并且不是星期天*/elseif(outDay==day&&week!=0){printf("%3d",++outDay);}/*到達(dá)day當(dāng)天時,并且是星期天*/else{printf("%4d",++outDay);}/*計算當(dāng)天的星期,如果前一天時星期六(6),當(dāng)天時星期天(0),其他情況則直接星期加1*/week=(week<6)?week+1:0;}printf("\n\n");}/*如果不是該月的第一個星期*/else{/*則輸出該星期中的7天*/for(j=0;j<7;j++){/*輸出的天數(shù)小于該月的最大天數(shù)*/if(outDay<a[month]){/*到達(dá)day的前一天時,輸出++outDay*/if(outDay==day-1){/*輸出一位數(shù)字*/if(outDay<9){textcolor(YELLOW);cprintf("[%d]",++outDay);textcolor(7);}/*輸出兩位數(shù)字*/else{textcolor(YELLOW);cprintf("[%2d]",++outDay);textcolor(7);}/*到達(dá)day當(dāng)天時,并且不是星期天*/elseif(outDay==day&&week!=0){printf("%3d",++outDay);}/*到達(dá)day當(dāng)天時,并且是星期天*/else{printf("%4d",++outDay);}}/*計算當(dāng)天星期*/week=(week<6)?week+1:0;}printf("\n\n");if(outDay==a[month])break;}}/*輸出分割線*/printSeparator();/*輸出當(dāng)前選擇的日期和星期*/printf("Thedayyouchooseis:\n\n");printWeek();gotoxy(1,22);textcolor(10);cprintf(" \n");textcolor(7);/*輸出系統(tǒng)日期和星期*/printf("\nTodayis:%d-%d-%d",sysTime.da_year,sysTime.da_mon,sysTime.da_day);printWeek2(getWeek(sysTime.da_year,sysTime.da_mon,sysTime.da_day));printf("\n\n");/*顯示按鍵操作*/printUsage();gotoxy(1,25);}/*鍵值獲取模塊*//*通過鍵盤調(diào)整日期函數(shù)*/voidgetKeyValue()intkey;charch;/*默認(rèn)顯示當(dāng)前系統(tǒng)日期和星期*/currentYear=sysTime.da_year;currentMonth=sysTime.da_mon;currentDay=sysTime.da_day;showCalendar(currentYear,currentMonth,currentDay);while(1){/*獲取鍵值,根據(jù)鍵值調(diào)整日歷輸出*/key=bioskey(0);/*右移鍵,增加月份*/if(key==RIGHT){/*月份值在1~12之間,則直接加1*/if(currentMonth<12&¤tMonth>=1){currentMonth++;}/*如果月份為12,則加1后進(jìn)位,即年份加1,月份變?yōu)?*/else{currentYear++;currentMonth=1;}}/*左移鍵,減少月份*/if(key==LEFT){/*月份值在1~12之間,則直接減1*/if(currentMonth<=12&¤tMonth>1){currentMonth--;}/*如果月份為1,則減1后,到上一年,月份變?yōu)?2*/else{currentYear--;currentMonth=12;}}/*上移鍵,增加年份*/if(key==UP){currentYear++;}/*下移鍵,減少年份*/if(key==DOWN){currentYear--;}/*上移鍵,減少天數(shù)*/if(key==PAGEUP){/*當(dāng)前日不是該月的第一天,則天數(shù)直接減1*/if(currentDay!=1){currentDay--;}/*當(dāng)前日是該月的第一天,并且是該年的第一個月(即1月1日),則天數(shù)減1后,變?yōu)樯弦荒甑淖詈笠粋€月的最后一天(即12月31日)*/elseif(currentDay==1&¤tMonth==1){currentYear--;currentMonth=12;currentDay=31;}/*當(dāng)前日是該年中某一個月的第一天,則天數(shù)減一后,變?yōu)樯蟼€月的最后一天*/else{currentMonth--;currentDay=n_lastMon;}}/*下移鍵,增加天數(shù)*/if(key==PAGEDOWN){/*當(dāng)前日不是該月的最后一天,則天數(shù)直接加1*/if(n_currentMon!=currentDay){currentDay++;}/*當(dāng)前日是該年的最后一天(即12月31日),則天數(shù)加1后,變?yōu)橄乱荒甑牡谝粋€月的第一天(即1月1日)*/elseif(n_currentMon==currentDay&¤tMonth==12){currentYear++;currentMonth=1;currentDay=1;}/*當(dāng)前日是該年中某一個月的最后一天,則天數(shù)加1后,變?yōu)橄聜€月的第一天*/else{currentMonth++;currentDay=1;}}/*Q或者q鍵,表示查詢指定日期的星期*/if(key==QLOWER||key==QUPPER){{printf("Inputdate(eg,%d-%d-%d):",sysTime.da_year,sysTime.da_mon,sysTime.da_day);scanf("%d-%d-%d",¤tYear,¤tMonth,¤tDay);checkDate();}}/*空格鍵,重置到系統(tǒng)日期*/if(key==SPAC

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論