C語言程序設(shè)計(jì)課程設(shè)計(jì)-萬年歷.doc_第1頁
C語言程序設(shè)計(jì)課程設(shè)計(jì)-萬年歷.doc_第2頁
C語言程序設(shè)計(jì)課程設(shè)計(jì)-萬年歷.doc_第3頁
C語言程序設(shè)計(jì)課程設(shè)計(jì)-萬年歷.doc_第4頁
C語言程序設(shè)計(jì)課程設(shè)計(jì)-萬年歷.doc_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

課 程 設(shè) 計(jì) 課程名稱_C語言程序設(shè)計(jì)_題目名稱 萬年歷 學(xué)生學(xué)院 專業(yè)班級(jí) 學(xué) 號(hào) 學(xué)生姓名 指導(dǎo)教師_ _2011 年 6 月 24 日一、題目及已完成的功能描述課程設(shè)計(jì)題目:萬年歷通過萬年歷程序的設(shè)計(jì),培養(yǎng)學(xué)生綜合利用C語言進(jìn)行程序設(shè)計(jì)的能力,要求學(xué)生利用系統(tǒng)提供的標(biāo)準(zhǔn)函數(shù)及典型算法進(jìn)行設(shè)計(jì),加強(qiáng)函數(shù)的運(yùn)用及學(xué)生對(duì)軟件工程思想的初步認(rèn)識(shí),提高軟件系統(tǒng)分析能力和程序文檔建立、歸納總結(jié)的能力?;竟δ芤螅?、輸入一個(gè)年份,在屏幕上輸出該年的年歷(包括每月的天數(shù)和所對(duì)應(yīng)的星期幾),并且在每月的左上角或右上角打印出相應(yīng)的年份和月份,要求輸出界面盡可能整齊、美觀,符合年歷顯示規(guī)范。假定輸入的年份在1-9999年之間。2、輸入年月,輸出該月的月歷。3、輸入年月日,輸出距今天還有多少天,是星期幾,是否是公歷節(jié)日。擴(kuò)充功能要求:4、指定鍵盤的某些鍵,用于控制變換不同年、月、日的顯示。即:當(dāng)前若正在顯示2011年的年歷,按下鍵盤“”方向鍵后,年歷變?yōu)?010年的。5、同時(shí)顯示農(nóng)歷。已完成的功能:1、輸入一個(gè)年份,在屏幕上輸出該年的1月的月歷(包括每月的天數(shù)和所對(duì)應(yīng)的星期幾),并且在每月的左上角打印出相應(yīng)的年份和月份,日歷下面輸出這一年是否為閏年,輸出界面盡可能整齊、美觀,符合年歷顯示規(guī)范。按下鍵盤“”方向鍵后,顯示2月的月歷;再按下鍵盤“”方向鍵后,顯示3月的月歷如此類推。2、輸入年月,輸出該月的月歷。按下鍵盤“”方向鍵后,顯示上一個(gè)月的月歷;按下鍵盤“”方向鍵后,顯示下一個(gè)月的月歷;按下鍵盤“Page Up”方向鍵后,顯示上一年的這個(gè)月的月歷;按下鍵盤“Page Down”方向鍵后,顯示下一年的這個(gè)月的月歷。3、輸入年月日,輸出距今天還有多少天;如果這一天是公歷節(jié)日,就輸出是什么節(jié)日,如果這一天不是公歷節(jié),就輸出不是公歷節(jié);接著輸出這一天所在的月的月歷,這樣自然就看到這一天是星期幾了;再在月歷右上角輸出這一天是(xxxx-xx-xx)。二、使用的所有變量的說明Year(int x)函數(shù)里面用了int型,變量有x,leap。用來判斷x年是否為閏年;如果是閏年,leap=1;如果不是閏年,leap=0;最后返回leap的值供別的函數(shù)用。Wily(int x) 函數(shù)里面用了int型,變量有x,輸出x年是否為閏年。numofMonth(int y,int m) 函數(shù)里面用了int型,變量有y,m,day,t。判斷y年m月這個(gè)月共有幾天,返回day的值即天數(shù)供別的函數(shù)用。numofYear(int y) 函數(shù)里面用了int型,變量有y、t。判斷y年這一年共有幾天,返回t的值即天數(shù)供別的函數(shù)用。juli(int y1,int m1,int d1) 函數(shù)里面用了int型,變量有y1,m1,d1,i; long型,變量有sum。用于計(jì)算某日距離公元1年1月1日多少天,返回sum的值即天數(shù)供別的函數(shù)用。當(dāng)兩個(gè)日期返回的值相減得到的數(shù)就是這兩日相距的天數(shù)。jieri(int m,int d) 函數(shù)里面用了int型,變量有m,d。用于判斷m月d日是否為公歷節(jié)日;如果是,就輸出相應(yīng)的節(jié)日,如果不是,就輸出不是節(jié)日。isDay(int y,int m),empty(int n),OutPutCalender(int y,int m,int d),OutPutCalender1(int y,int m,int d),這幾個(gè)函數(shù)是計(jì)算日歷某天對(duì)應(yīng)的星期,且輸出日歷的作用。Select_mean() 函數(shù)里面用了int型,變量有sm。程序運(yùn)行后輸出的一些幫助,且sm有返回值,供別的函數(shù)用。chuxs() 開始時(shí)顯示函數(shù)。Inputyear() 輸入年的函數(shù),用了int型,變量有yy,yy有返回值。main() 主函數(shù),用了int 型,變量有year,month,day,y,y0,y2,m,m0,m2,d,d2,a,用來計(jì)算,輸出日歷;long型,變量有sum1,sum2,j,用以計(jì)算兩天之間相隔幾天;int型,變量有inkeySCAN,inkey,用以輸入鍵盤操作信息。三、程序清單及其說明/*本程序是在Win-TC上運(yùn)行的*/#includestdio.h#includeconio.hint Year(int x) int leap; leap=(x%4=0&x%100!=0)|(x%400=0)?1:0;/*判斷閏年*/ return leap;void Wily(int x)/*輸出是否為閏年*/ if(Year(x)=1) printf(%d is,x); else printf(%d is not,x); printf( a leap year.n);int numofMonth(int y,int m)/*一個(gè)月有幾天*/ int day,t; t=28; if(m=1|m=3|m=5|m=7|m=8|m=10|m=12) day=31; /*定義以上月份為31天*/ else if(m=4|m=6|m=9|m=11) day=30; /*定義以上月份為30天*/ else t+=Year(y); day=t; /*閏年二月29天,平年28天*/ return day;int numofYear(int y)/*一年有幾天*/ int t=365; /*平年365天*/ t+=Year(y);/*閏年366天*/ return t;long juli(int y1,int m1,int d1)/*一以1/1/1為基準(zhǔn)*/ long sum; int i; sum=0; for(i=1;iy1;i+) sum+=numofYear(i); for(i=1;im1;i+) sum+=numofMonth(y1,i); sum+=d1; return sum;void jieri(int m,int d) /*判斷是否為公歷節(jié)日*/ printf(%02d/%02d,m,d); if(m=1&d=1) printf( is yuan dan jie.n); if(m=3&d=8) printf( is fu nv jie.n); if(m=5&d=1) printf( is lao dong jie.n); if(m=6&d=1) printf( is er tong jie.n); if(m=10&d=1) printf( is guo qing jie.n); if(m=1&d=1)|(m=3&d=8)|(m=5&d=1)|(m=6&d=1)|(m=10&d=1)!=1) printf( is not a festiva.n);int isDay(int y,int m)/*求星期*/ int year0=1900,month,week=1,i; /*初值*/ long sum=0; for(i=year0;iy;i+) sum+=numofYear(i); for(i=1;im;i+) sum+=numofMonth(y,i); i=sum%7; week=(week+i)%7; return week;void empty(int n) int i; for(i=0;in;i+) printf(%*c,6, );void OutPutCalender(int y,int m,int d)/*計(jì)算x年x月x日是星期幾*/ /*在左上角輸出年月*/ int week,i,num,t; week=isDay(y,m); printf(n); printf(%6d/%02dn,y,m); printf(n); printf(%6s%6s%6s%6s%6s%6s%6sn,Sun,Mon,Tue,Wed,Thu,Fri,Sat); printf(n); empty(week); num=numofMonth(y,m); for(i=1;i=num;i+) printf(%6d,i); t=(week+i)%7; if(t=0) printf(n); /*光標(biāo)移到下一行*/ printf(n); printf(n);void OutPutCalender1(int y,int m,int d)/*計(jì)算x年x月x日是星期幾*/ /*在右上角輸出日期*/ int week,i,num,t; week=isDay(y,m); printf(n); printf(%6d-%02d-%02dn,y,m,d); printf(n); printf(%6s%6s%6s%6s%6s%6s%6sn,Sun,Mon,Tue,Wed,Thu,Fri,Sat); printf(n); empty(week); num=numofMonth(y,m); for(i=1;i : next monthn); /*上一月*/ printf( - : Up monthn);/*下一月*/ printf(Please enter choose(0-3):); /*從0-3中選擇*/ do scanf(%d,&sm); /*輸入sm*/ if(sm3) printf(Enter ERROR!n); printf(Enter Again:); while(sm3); return sm;void chuxs()/*開始時(shí)顯示*/ printf(n); printf(*n); printf( Welcome to use this calendarn); printf(*n); printf(n);int Inputyear() /*輸入年*/ int yy; printf(Please input year:); scanf(%d,&yy); OutPutCalender(yy,1,1); Wily(yy); return yy;void main() int year,month,day,y,y0,y2,m,m0,m2,d,d2,a; long sum1,sum2,j; int inkeySCAN,inkey; /*輸入鍵盤操作信息*/ chuxs(); printf(Please input today(xxxx xx xx):); scanf(%d%d%d,&y,&m,&d); printf(Today is:%6d/%2d/%2dn,y,m,d); sum1=juli(y,m,d); a=Select_mean(); while(1) switch(a) case 1: year=Inputyear();month=1;day=1; while(1) inkey=bioskey(0); inkeySCAN=(inkey&0xFF00)8; if(inkeySCAN=77) if(month=12) month=1;year+; if(year9999) year=1; OutPutCalender(year,month,day);/*輸出日歷*/ else month+; OutPutCalender(year,month,day); if(inkeySCAN=75) if(month=1) month=12;year-; if(year8; if(inkeySCAN=77) if(month=12) month=1;year+; if(year9999) year=1; OutPutCalender(year,month,day);/*輸出日歷*/ else month+; OutPutCalender(year,month,day); if(inkeySCAN=75) if(month=1) month=12;year-; if(year1) year=9999; OutPutCalender(year,month,day); else month-;OutPutCalender(year,month,day); if(inkeySCAN=73) if(year=1) year=10000; else year-;OutPutCalender(year,month,day); if(inkeySCAN=81) if(year=9999) year=0; year+;OutPutCalender(year,month,day); if(inkeySCAN=28)break; break; case 3: printf(Please input year month day(xxxx xx xx):); scanf(%d%d%d,&y2,&m2,&d2); sum2=juli(y2,m2,d2); j=sum2-sum1; printf(%6d/%02d/%02d,y2,m2,d2); printf( is after today ); printf(%ld days.n,j); jieri(m2,d2); OutPutCalender1(y2,m2,d2); break; case 0: exit(0);break; default: printf(Enter ERROR!n); 四、運(yùn)行結(jié)果清單運(yùn)行后的界面。輸入今天的日歷后的界面輸入一個(gè)年份后的界面按一下“”鍵后的界面再按一下“”鍵后的界面輸入一個(gè)年月后的界面按一下“”鍵后的界面再按一下“”鍵后的界面按下“Page Up”鍵后的界面在按下“Page Down”鍵后的

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論