C語言知識學習萬年歷教學規劃_第1頁
C語言知識學習萬年歷教學規劃_第2頁
C語言知識學習萬年歷教學規劃_第3頁
C語言知識學習萬年歷教學規劃_第4頁
C語言知識學習萬年歷教學規劃_第5頁
已閱讀5頁,還剩20頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、萬年歷課程設計第1章需求分析.3第2章概要設計.3第3章詳細設計.8第四章運行結果及分析.81.登陸界面.192.顯示某年全年日歷 .203.顯示某月曰歷.20第5章課程設計心得.22參考文獻.23第1章需求分析(1)程序運行時,首先給出四個菜單選項和輸入提示:*飲迎進入萬年歷查詢系統* JCUXltNJtjCJKNiJMjM! KjUKliKjgXH Mil JM Jt覽覽 賓賓X JI M K貝貝X K JH K JU俺俺 賈亢賈亢K負負1氧氧:JI !M 1匱貝厲匱貝厲Jt買買Jt負負譎翟鳥窪器埜確定圖 i-i(2)用戶可以通過主菜單選擇不同選項。輸入 1 1,通過輸入年份可顯示 一年每

2、個月份的日歷;輸入 2 2,通過輸入年份和月份(中間以空格分開) 可顯示該月的日歷;若輸入 3 3,通過輸入年份月份和日期(中間以空格分 開)可顯示該日的星期;輸入 0 0,則退出查詢系統。第2章概要設計判斷是 否為閏 年1年歷2月歷3日歷通過 whilewhile 語句與 swichswichcasecase 以及 ifif 條件語句實現菜單的循環功能和不 同選項的功能實現。閏年與平年的判斷: 代碼如下:void mai n()int year,m on th,day,a,b;while(1)4退輸入質妾査詢的鄉_Xu_扌雯下回車鍵,扌參倉上面判斷結果 輸出I閏年或者 匸個月的日 歷輸入需要

3、查詢刖 年.月輸入需裝査詢的 年,月,日按下回車鍵,按 颶上面列斷紡果 輸出這個月的日歷1 .菜單選擇界面可通過下面所示函數時現;按下回車祿,按愿上 面判斷黠果計算并 輸出遠一天的星期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:prin tf(n請輸入您要查的年和月,年月之間用空格隔開:”);scan f(%d%d, &y

4、ear, &mon th);a=x3(year,m on th,1);if(a=0)printf(錯誤!請您重新輸入。n”);break;printf(nnnn);prin tf(*nn);printf(”n);printf(”歡迎進入萬年歷查詢系統n);printf(”nn);printf(”*nnn);printf(”1 年歷 2 月歷 3 日歷 4 退出n);printf(”請輸入您的選擇,按回車鍵確定:”);yueli(year,m on th);break;case 3:prin tf(n請輸入您要查的年月日年月日之間用空格隔開:”);scan f(%d%d%d, &

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

6、%2s%2sn,星期日,”星期一,”星期二,星期三,星期四,”星期五,”星期六”);3 3 閏年的判斷:計算所輸入的年份是否可被 4 4 整除,若不能被整除,為平年。若可被 4 4 整除,計算此年份能否被 100100 整除,不能被 100100 整除則為閏年。既能 被 4 4 整除,也能被100100 整除的年份,若也能被 400400 整除,則為閏年, 否則為平年。閏年 366366 天,平年 365365 天開始詁昇結束圖 2-1代碼:int runnian (i nt year)if(year%4=0& year%100!=0|year%400=0) return 1;else

7、return 0;4 .判斷某月的天數;通過函數:int day1(i nt year,i nt month)int a12=31,28,31,30,31,30,31,31,30,31,30,31;若為閏,則二月為 2929 天。圖 2-2代碼:if(runnian( year)a1=29;第3章詳細設計#in clude#in clude #in cludeusing n amespace std;int runnian(int year)函數:判斷是否閏年if(year%4=0&year%100!=0|year%400=0)/* 利用函數判斷輸入年份是閏年還是平年*/return

8、1;/ 是則返回 1 值elsereturn 0;/ 否則返回 0 值int a13=0,31,28,31,30,31,30,31,31,30,31,30,31;/*定義數組確定 12 個月每個月的天數*/if(ru nn ia n(year)/調用閏年判斷函數a2=29; 如果為閏年,則二月份天數為29,否則默認為 28return am on th;/返回該月份的天數值int day1(i nt year,i nt month)/函數:int day2(i nt year,i nt mon th,i nt day)函數:計算從該年第天到該期數int i,sum=0;for(i=1;imo

9、nth;i+)sum+=day1(year,i);計算今年這個月前的總天數sum+=day;計算今年今天距一月一號的天數return sum;/返回從該年的第一天到該天的天數int week1(i nt year,i nt mon th,i ntday)/函數:intnumber=(year-1)+(year-1)/4-(year-1)/100+(year-1)/400+day2(year,month,day);蔡勒公式nu mber%=7;/蔡勒公式return number;/返回該天的星期數,可用作日歷顯示需要char *Week2(i nt number)函數:用語文的方式輸出顯示星期

10、數switch(number)/*分類一周七天 */case 0:return 星期日;case 1:return 星期一;case 2:return 星期二;case 3:return 星期三;case 4:return 星期四;Week2(number);/*按年 月 日輸出結果*/case 5:return 星期五;case 6:return 星期六;default:return錯誤!請int nu mber=week1(year,m on th,day);該天的星期數賦if(runnian( year)cout閏年;/*年份為閏年則輸出”閏年*/elsecout平年;coutyear

11、年month月day 日void x2(int year,int month)函數:圖表(body )顯示您重新輸入。;/*不符和上面七種情況的報錯提示 */void x1(i nt year,i nt mon th,i nt day)函數:頭顯示:輸出顯示年月日if(i%7=6)int max,nu mber,i,j=1;max=day1(year,mo nth);/該月的天數的賦值number=week1(year,mo nth,1);該月第一天的星期數的賦值coutsetw(8)SUNsetw(8)MONsetw(8)TUEsetw(8)WEDsetw(8)THUsetw(8)FRIse

12、tw(8)SATe ndl;for(i=0;i nu mber;i+)cout;/找出該月一號所在的位置while( j=max)coutsetw(8)j;prin tf(n ”);for(i=1;i=12;i+)prin tf(n);判斷輸出是否要換行i+;j+;coute ndle ndl;int x3(i nt year,i nt mon th,i nt day)函數:判斷輸入值的正誤if(year0|mo nth12|dayday1(y當輸入植出現這些情況時*/return 0;/* 返回 0*/elsereturn 1;/* 返回 1*/void n ia nli (i nt yea

13、r)/函數:年歷int i;ear,m onth)/*void rili(i nt year,i nt mon th,i nt day)/函數:日歷if(runn ia n(year)coutsetw(10) 閏年”;elseprintf(平年);printf(” %d年 %d 月 nn,year,i);x2(year,i);void yueli(int year,int month)函數:月歷if(runnian( year)coutsetw(10) 閏年;elseprintf(平年);printf( %d 年d 月 nn,year,month);x2(year,m on th);print

14、f(*nnn ”);prin tf(n);x1(year,m on th,day); void mai n()int year,m on th,day,a,b;while(1)prin tf(nnnn ”);printf(”*printf(*n);printf(萬年歷查詢系統n);printf(*nn);*nn);歡迎進入printf(”1 年歷 2 月歷 3 日歷prin tf(n請輸入您要查的年和月,年月sea nf(%d,&b);switch(b)case 1:/* 選擇 1 時 */printf(n請輸入您要查的年份:);/*給出輸scanf(%d,&year);/*輸

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

16、輸入。n); break;yueli(year,m on th);break;case 3:/* 選擇 3 時 */prin tf(n請輸入您要查的年月日,年月日之間用空格隔開:);/*給出輸入提示*/scanf(%d%d%d,&year,&month,&day);/*輸入年 月 日 */a=x3(year,m on th,day);if(a=0)printf(錯誤!請您重新輸入。n);/*輸入植異常時報錯*/break; rili(year,m on th,day);break;case 4:exit(0);default:printf(錯誤!請您重新輸 入。nn);

17、第四章運行結果及分析1登陸界面歡述遊入萬年厲查詢系紡NX JlKlKXK It 沌JIWJIICXWX X JI KU.! XK JJ負負MH Jt漓遙諾轟;舄?農薛備確定:圖 4-1登陸界面提供了四個選項進行選擇,并提示輸入后的操作方法;2.顯示某年全年日歷平年2011年1月星期日星期一星期二星期三 星期四 星期五 星期六23J-45679916111213141516171S192&2122232425262728293031半牛2R11年衛月星期日星期一星期二星期三星期四星期五星期六12345S910111213141516171S19202122232425262726平年20

18、11年3月星期日星期一星期二星期三 星期四 星期五 星期六123456789101112131415161718192021222324252627292?3031平年2011年4月星期日星期一星期二星期三星期四星期五星期六i934a5t789圖 4-2輸入指令后,依次打印出每個月份的日歷。并顯示平年或者閏年;3.顯示某月曰歷圖 4-3第5章 課程設計心得通過本次課程設計我第一次通過自己的實踐對書本上的知識進行了與生活相關的運用。在這個程序中,主要應用了這學期所學習的循環,條件語句, 數組以及調用函數。這些知識的應用使我對課本內容的認識得到了加深。在編寫程序的過程中,也出現了很多錯誤。比如程序語句錯誤導致檢測時連續報錯;函數語句編寫錯誤導致輸出結果與實際不符等。 出現這些情 況后,通過對一些新知識的學習和對網上相關資料的閱覽, 我發現了自己的 程序的問題所在并進行了改正。最后得到了正確的結果。在程序的編寫完成后,我按照要求對程序進行了拓展。在輸出年

溫馨提示

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

評論

0/150

提交評論