C語言知識學(xué)習(xí)萬年歷教學(xué)規(guī)劃_第1頁
C語言知識學(xué)習(xí)萬年歷教學(xué)規(guī)劃_第2頁
C語言知識學(xué)習(xí)萬年歷教學(xué)規(guī)劃_第3頁
C語言知識學(xué)習(xí)萬年歷教學(xué)規(guī)劃_第4頁
C語言知識學(xué)習(xí)萬年歷教學(xué)規(guī)劃_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、萬年歷課程設(shè)計第1章需求分析第2章概要設(shè)計第3章詳細(xì)設(shè)計第四章運行結(jié)果及分析1.登陸界面2.顯示某年全年日歷3.顯示某月曰歷第5章課程設(shè)計心得參考文獻(xiàn)1920202223第1章需求分析(1)程序運行時,首先給出四個菜單選項和輸入提示:圖1-1(2)用戶可以通過主菜單選擇不同選項。輸入 1,通過輸入年份可顯示 一年每個月份的日歷;輸入2,通過輸入年份和月份(中間以空格分開) 可顯示該月的日歷;若輸入3,通過輸入年份月份和日期(中間以空格分 開)可顯示該日的星期;輸入 0,則退出查詢系統(tǒng)。第2章概要設(shè)計開始判斷是 否為閏 年2月歷3日歷4退出輸入需要查詢ffl 年.月按下回車鍵,按 H果上

2、4;列斷紡果 輸出這個月的日 歷按下回車霹,按照上 面和斷結(jié)果計算并 輸出這一天的星期蝦回車鍵,2肛爲(wèi)果 輸出國年或看謗 12個月的日 萬鄉(xiāng)I1 .菜單選擇界面可通過下面所示函數(shù)時現(xiàn);主要思路: 通過while語句與swichcase以及if條件語句實現(xiàn)菜單的循環(huán)功能和不 同選項的功能實現(xiàn)。閏年與平年的判斷: 代碼如下:void mai n() int year,m on th,day,a,b;while(1)prin tf("nnnn");printf(” *nn");printf(” n");printf(”歡迎進(jìn)入萬年歷查詢系統(tǒng)n");p

3、rintf(”nn");printf(”*nnn");1年歷2月歷3日歷printf(”printf(”請輸入您的選擇<14>,4退出n”);按回車鍵確定:”);scan f("%d", &b);switch(b) case 1:prin tf("n請輸入您要查的年份:”);scan f("%d", &year);a=x3(year,1,1);if(a=0)printf("錯誤!請您重新輸入。n");break;nian li(year);break;case 2:"

4、);prin tf("n請輸入您要查的年和月,年月之間用空格隔開scan f("%d%d", &year, &mon th);a=x3(year,m on th,1);if(a=0) printf("錯誤!請您重新輸入。n");break; yueli(year,m on th);break;case 3:prin tf("n請輸入您要查的年月日年月日之間用空格隔開:”);scan f("%d%d%d", &year,&mon th, &day);a=x3(year,m on

5、 th,day);if(a=0)printf("錯誤!請您重新輸入。n");break; rili(year,m on th,day);break;case 4: exit(0);default: printf("錯誤!請您重新輸入。nn");2 .顯示一年的日歷,可通過函數(shù)void x1 ()實現(xiàn),思路如下:先判斷輸入年份是否為閏年,若為閏年,則定義二月為29 天,通過調(diào)用函數(shù)判斷是否為閏年及每個月的天數(shù)依次打印12個月的月份打印每個月的日歷,顯示個每個月的日歷:Printf("%2s%2s%2s%2s%2s%2s%2sn",&qu

6、ot;星期日星期一星期二","星期三","星期四星期五星期六");3.閏年的判斷:計算所輸入的年份是否可被4整除,若不能被整除,為平年。若可被 4整除,計算此年份能否被100整除,不能被100整除則為閏年。既能 被4整除,也能被100整除的年份,若也能被400整除,則為閏年, 否則為平年。閏年366天,平年365天代碼:圖2-1int runnian (i nt year)if(year%4=0&& year%100!=0|year%400=0)return 1;elsereturn 0;4 .判斷某月的天數(shù);通過函數(shù):int

7、day1(i nt year,i nt month)int a12=31,28,31,30,31,30,31,31,30,31,30,31;若為閏,則二月為29天。圖2-2代碼:if(runnian( year)a1=29;第3章詳細(xì)設(shè)計#in clude<cstdlib>#in clude<iostream> #in clude<ioma nip> using n ames pace std;/*利int runnian(int year)/ 函數(shù):判斷是否閏年if(year%4=0&& year%100!=0|year%400=0)用函數(shù)

8、判斷輸入年份是閏年還是平年*/return 1;/是則返回elsereturn 0;/ 否則返回int day1(i nt year,i nt mon th)/函數(shù):計算輸入該月份的天數(shù)int a13=0,31,28,31,30,31,30,31,31,30,31,30,31;/*義數(shù)組確定12個月每個月的天數(shù)*/if(runn ia n(year) /調(diào)用閏年判斷函數(shù)a2=29;/如果為閏年,則二月份天數(shù)為29,否則默認(rèn)為28return am on th;/返回該月份的天數(shù)值函數(shù):計算從該年第一int day2(i nt year,i nt mon th,i nt day)/天到該天的天數(shù)

9、期數(shù)函數(shù):判斷該天的星intnumber=(year-1)+(year-1)/4-(year-1)/100+(year-1)/400+day2(year,mo nth,day);/蔡勒公式int i,sum=0;for(i=1;i<m on th;i+)sum+=day1(year,i);/計算今年這個月前的總天數(shù)sum+=day;/計算今年今天距一月一號的天數(shù)return sum;/返回從該年的第一天到該天的天數(shù)int week1(i nt year,i nt mon th,i nt day)/nu mber%=7;/蔡勒公式return number;/返回該天的星期數(shù),可用作日歷顯

10、示需char *Week2(i nt number)/函數(shù):用語文的方式輸出顯示星期數(shù)switch(number)/*分類一周七天 */case 0:return "星期日"case 1:return "星期一"case 2:return "星期二"case 3:return "星期三"case 4:return "星期四"case 5:return "星期五”;case 6:return "星期六"default:return "錯誤!請"&l

11、t;<Week2(number);/*按年 月 日輸出結(jié)果*/您重新輸入。"/*不符和上面七種情況的報錯提示 */函數(shù):頭顯示:輸出顯void x1(i nt year,i nt mon th,i nt day)/示年月日該天的星期數(shù)賦int nu mber=week1(year,m on th,day);/ if(runnian( year)cout<<"閏年"/*年份為閏年則輸出”閏年"*/ elsecout<<"平年"cout<<year<<" 年"<

12、;<month<<" 月"<<day<<" 日void x2(i nt year,i nt mon th)/函數(shù):圖表(body )顯示if(i%7=6)int max,nu mber,i,j=1;該月的天數(shù)的賦值max=day1(year,m on th);/該月第一天的星期數(shù)nu mber=week1(year,m on th,1);/的賦值cout<<setw(8)<<"SUN"<<setw(8)<<"MON"<<se

13、tw(8)<<"TUE"<<setw(8)<<"WED"<<setw(8)<<"THU"<<setw(8)<<"FRI"<<set w(8)<<"SAT"<<e ndl;H.for(i=0;i <nu mber;i+)cout<<"/找出該月一號所在的位置 while( j<=max)cout<<setw(8)<<j;p

14、rin tf("n");判斷輸出是否要換行i+; j+;函數(shù):判斷輸入值的正誤cout<<e ndl<<e ndl;int x3(i nt year,i nt mon th,i nt day)/if(year<O|m on th<1|mo nth>12|day<1|day>day1(year,mo nth)/* 當(dāng)輸入植出現(xiàn)這些情況時 */return 0;/* 返回 0*/elsereturn 1;/* 返回 1*/void n ia nii (i nt year)/ 函數(shù):年歷int i;prin tf("

15、n");if(runnian( year)cout<<setw(10)<<" 閏年"elseprintf("平年");void rili(i nt year,i nt mon th,i nt day)/函數(shù):日歷printf(” %d年 %d月 nn",year,i);x2(year,i);函數(shù):月歷void yueli(i nt year,i nt mon th)/if(runnian( year)cout<<setw(10)<<"閏年"elseprintf(&qu

16、ot;平年");printf(” %d年 %d 月 nn",year,month);x2(year,m on th);printf(”1年歷2月歷3日歷prin tf("n");x1(year,m on th,day);void mai n()int year,m on th,day,a,b;while(1)prin tf(”nnn'n");printf(”*nn");printf("n");歡迎進(jìn)入n");printf("萬年歷查詢系統(tǒng)printf("nn");pr

17、intf("*nnn ")4退出n");printf(”請輸入您的選擇<14>,按回車鍵確定:”);sea nf("%d",&b);switch(b)case 1:/* 選擇 1 時 */printf("n請輸入您要查的年份:");/*給出輸prin tf("n請輸入您要查的年和月,年月入提示*/scanf("%d",&year);/*輸入查詢的年份 */ a=x3(year,1,1);if(a=0)printf("錯誤!請您重新輸入。n");/*

18、輸入植異常時報錯*/break;nian li(year);break;case 2:/* 選擇二時 */之間用空格隔開:");/*給出輸入提示*/scan f("%d%d", &year,&mo nth);/*入需要查詢的年月*/a=x3(year,m on th,1);if(a=0)printf("錯誤!請您重新輸入。n");break;yueli(year,m on th);break;case 3:/* 選擇 3 時 */prin tf("n請輸入您要查的年月日,年月日之間用空格隔開:");/*給出輸

19、入提示*/輸入年 月曰*/n");/*輸入植異常時報錯*/break;scan f("%d%d%d", &year,&mo nth, &day);/* a=x3(year,m on th,day);if(a=0)printf("錯誤!請您重新輸入。rili(year,m on th,day);break;case 4:exit(0);default:printf("錯誤!請您重新輸入。nn");第四章 運行結(jié)果及分析1.登陸界面圖4-1登陸界面提供了四個選項進(jìn)行選擇,并提示輸入后的操作方法;2.顯示某年全年日歷

20、平年2011年1月星期日星期一星期二星期三星期四星期五星期六23456789Ifi111213141516171S192&2122232425262728293031平年2011年2月星期0星期1星期二星期三星期四星期五星期六12345£7S9191112131415161718192021222324252G27酣平年2011年3月星期日星期一星期二星期三星期四星期五星期六12345678?10111192021222324252G272»293031平年2311年4月星期日星朗一星朗二星期三星期四星期五星期六1 2345&7e9圖4-2輸入指令后,依次打印出每個月份的日歷。并顯示平年或者閏年;3.顯示某月日歷輕讐澤弓窮片年月之間用空格隔開

溫馨提示

  • 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

提交評論