顯示年歷C++課程設(shè)計(jì)報(bào)告_第1頁(yè)
顯示年歷C++課程設(shè)計(jì)報(bào)告_第2頁(yè)
顯示年歷C++課程設(shè)計(jì)報(bào)告_第3頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余13頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、顯示年歷C+課程設(shè)計(jì)報(bào)告目錄一、設(shè)計(jì)任務(wù),目的與要求 31設(shè)計(jì)內(nèi)容:32設(shè)計(jì)目的:33設(shè)計(jì)要求:4二、概要設(shè)計(jì)41需求分析: 42設(shè)計(jì)流程:51設(shè)計(jì)要求: 52總體設(shè)計(jì): 5三、運(yùn)行結(jié)果及分析 71程序運(yùn)行測(cè)試: 72進(jìn)入程序菜單:73.1號(hào)鍵功能:73.2號(hào)鍵功能:84.3號(hào)鍵功能:95.0號(hào)鍵功能:9四、源代碼第2頁(yè)共16頁(yè)一、設(shè)計(jì)任務(wù),目的與要求1. 設(shè)計(jì)內(nèi)容:年歷顯示功能要求:1輸入一個(gè)年份,輸出是在屏幕上顯示該年 的日歷。假定輸入的年份在 1940-2040 年之間。2輸入年月,輸出該月的日歷。 3輸入年月日,輸出距今天還有多少天,星 期幾,是否是公歷節(jié)日。2. 設(shè)計(jì)目的: 本課程設(shè)

2、計(jì)是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)重要的實(shí) 踐性環(huán)節(jié)之一, 是在學(xué)生學(xué)習(xí)完 程序設(shè)計(jì)語(yǔ)言C+(或C)課程后進(jìn)行的一次全面的綜合練習(xí)。本課程設(shè)計(jì)的目的和任務(wù):1.鞏固和加深學(xué)生對(duì) C+(或C)語(yǔ)言課程的基本知識(shí)的理解和掌握2. 掌握C+(或C)語(yǔ)言編程和程序調(diào)試的基 本技能3. 利用C+(或C)語(yǔ)言進(jìn)行基本的軟件設(shè)計(jì)4. 掌握書寫程序設(shè)計(jì)說(shuō)明文檔的能力5.提高運(yùn)用C+(或C)語(yǔ)言解決實(shí)際問(wèn)題的 能力3. 設(shè)計(jì)要求:1. 分析課程設(shè)計(jì)題目的要求2. 寫出詳細(xì)設(shè)計(jì)說(shuō)明3. 編寫程序代碼,調(diào)試程序使其能正確運(yùn)行4. 設(shè)計(jì)完成的軟件要便于操作和使用5. 設(shè)計(jì)完成后提交課程設(shè)計(jì)報(bào)告及程序代碼二、概要設(shè)計(jì)1. 需求分

3、析:目前的計(jì)算機(jī)日歷程序,比較典型的是 Windows 各版本中的日歷程序以及 基于該程序所開發(fā)的各種應(yīng)用程序中的日歷程序。然而,這些程序都是千遍一 律的局限于一個(gè)很短的時(shí)間內(nèi)。但是,很多情況下,特別是在眾多的科學(xué)領(lǐng)域 中,一個(gè)時(shí)間跨度較大的程序是有參考價(jià)值的。 C+ 程序設(shè)計(jì)語(yǔ)言充分發(fā)揮了其 自身無(wú)與倫比的優(yōu)越性,用極短的程序文本就彌補(bǔ)了這一領(lǐng)域的空白。萬(wàn)年歷作為日常中的一種小工具,它具有多方面的小工能,主要在日期的顯示上給人以直觀的表達(dá)效果,在日期的查詢上方便簡(jiǎn)潔 ,還有就是在某些節(jié)日 的提醒上都給我們帶來(lái)極大的方便 ,是一種比較實(shí)用的小工具。給人的需求性 很大,學(xué)生在做此萬(wàn)年歷課程設(shè)計(jì)的

4、同時(shí),能夠認(rèn)識(shí)到 C+ 編程給人帶來(lái)的便 捷,也能夠清楚萬(wàn)歷年表編程的出入。對(duì)培養(yǎng)學(xué)生的創(chuàng)新能力和動(dòng)手能力具有 很大的作用。2. 設(shè)計(jì)流程:1 設(shè)計(jì)要求:(1)程序運(yùn)行時(shí),首先給 4 出個(gè)菜單選項(xiàng)的內(nèi)容和輸入提示:1 顯示某一年的日歷2 顯示某一月的月歷3 查找某一天0 退出(2)用戶可以通過(guò)主菜單選擇不同的選項(xiàng):若選擇 1,則通過(guò)輸入年份,顯示輸出該年每個(gè)月的日歷;若選擇 2,則通過(guò)輸入年月,顯示輸出該月的日歷;若選擇 3,則通過(guò)輸入年月日,輸出該天所在月的月歷、該天是星期幾、是否陽(yáng) 歷節(jié)日、距今多少天;若選擇 0,則退出。2 總體設(shè)計(jì):進(jìn)入1.顯示一年的年歷據(jù)輸入的l日期打印J退出顯示年歷

5、、月歷或查找結(jié)果(流程圖)依據(jù)課程設(shè)計(jì)的要求,需要設(shè)計(jì)一個(gè)菜單功能,進(jìn)入程序后,有菜單可以 提供選擇,選擇1,進(jìn)入年歷顯示階段,年歷顯示完畢,再次進(jìn)入菜單選擇。選擇2,進(jìn)入月歷顯示階段,月歷顯示完畢,再次進(jìn)入菜單選擇。選擇3,進(jìn)入日期查詢階段,日期查詢完畢,再次進(jìn)入菜單。選擇0,退出程序三、運(yùn)行結(jié)果及分析1.程序運(yùn)行測(cè)試:在電腦中打開C+應(yīng)用程序,首先進(jìn)入VC+6.0,將程序代碼輸入,編譯, 組建,調(diào)試。觀察運(yùn)行結(jié)果,和各個(gè)功能情況。2.進(jìn)入程序菜單:諳選擇:K -K -M某某某找出 退12 3 0年月(圖1:菜單頁(yè)面) 說(shuō)明:該頁(yè)面表示進(jìn)入菜單選項(xiàng),根據(jù)選項(xiàng)進(jìn)入 相應(yīng)的功能。3.1號(hào)鍵功能:

6、輸入1,按enter鍵后:輸入要顯示的年份:2013= "= = = = = = r=' = a: s s s ;=TJier 5JLender oi-Yeaii*=爐2月UuMoTuWeThFrSaSuMoTaUeThFpSaSuNoTuWeThFrSa1234E1212678?1011123弓5678934567891314151&1?181?10111213111516-1011121314151G20212223242526171819202122231718192021222327282939312425262?282425262728293d31萌5月明S

7、uMdTuThFrSaSuHqTuUeThFrSaSuMoTuUeThFrSa12345612341789ia111213567891011234567814151617IB192012131415161?ie910111213141521222324252627lfl20212223242516171819202122262930262728293031232425262?232930明明SuMoTu帕ThFrSaSuMoTu曲ThFrSaSuMoTuUeThFi*Sa1234S61231234S677Q9Id11121345G7&91989191112131414151617181

8、92011121314151617151G1?IS192021空222324252627IB1920212223242223242S262728282?3031252&272S293031293B1月九月M月Su.HoTu畑ThFrSaSuMoTalieThFf張SuNoTuUeThFrSa12345121234567678?10111234567B9s910111213141314151617181?1011121311151&2120212223242526171819202122232223242526272927=28=a 29sasi30書.3

9、1159 1=s a sa ss.h = a.24=s as25IS SI269* .2?=s a =28£5 91293 » 130輕.233Q=s «313 SS I=a j(圖2,顯示2013年年歷查詢結(jié)果)3.2號(hào)鍵功能:輸入2按enter鍵后:睛輸入要查找的年月t格式如泅2 ia> =輸入年月,例如2013 1-:2013年直月Gu.nHonTueVedThuFriSat1234567B91«1112131415161718192021222324252&272S292&21(圖3, 2013年1月月歷查詢 結(jié)果)4.3號(hào)

10、鍵功能:輸入3按enter鍵后:請(qǐng)輸入要查找的日威K格式如2912 12 31>輸入年月曰,如3013 1 12 013 1 1is T ueEdai兀旦(bleu yes 已經(jīng)過(guò)去6天(圖4,2013年1月1查詢結(jié)果) 顯示查詢天所在月月歷,并標(biāo)識(shí)出該天,同時(shí)顯 示是否陽(yáng)歷節(jié)日,距今多少天。5.0號(hào)鍵功能:退出程序。四、源代碼#include <iostream>#include <iomanip>using namespacestd;int dayofmonth13=0,31,28,31,30,31,30,31,31,30,31,30,31;/ 定義全局變量,

11、每月的天數(shù)/函數(shù)IsLeap判斷是否為閏"年bool IsLeap( int year)if (year%400=0|(year%100!=0&&year%4=0)return 1;else return 0;/函數(shù)getdays計(jì)算從1年1月1日起到輸入日一共有多少天int getdays( int year, int month, int day)int i,sum=0;for (i=1;i<year;i+)if (IsLeap(i) sum+=366;else sum+=365;if (IsLeap(year) dayofmonth2=29; / 為閏年時(shí)

12、二月有 29天for (i=1;i<month;i+) sum+=dayofmonthi;sum+=day;return sum;/函數(shù)Initdate 獲得現(xiàn)在的時(shí)間int Initdate( int &y, int &m, int &d, int &h, int &min, int &sec)int sum;time_t t;time( &t );struct tm * local_time = localtime( &t );sec = local_time->tm_sec;min = local_time-&g

13、t;tm_min ;h = local_time->tm_hour ;d = local_time->tm_mday ;m = local_time->tm_mon+1;y = local_time->tm_year+1900;sum=getdays(y,m,d);return sum;/ 打印一年的年歷void printyear() system( "cls" ); int s,year,month; int a10,b10;cout<< "請(qǐng)輸入要查找的年份 cin>>year;cout<< &qu

14、ot;=The Calender of Year <<year<< "=<" <endl;int i=1;for (i=1;i<=12/3;i+) /3 確定每一行顯示三個(gè)月的月歷cout<< ""<<endl;for (int h=1;h<=3;h+)int m=3*(i-1)+h;coutvv" " vvmv<月 “;/打印月份名稱cout<<endl<< "" <<endl;for (int j=

15、0;j<3;j+)cout<<"Su " <<"Mo " <<"Tu " <<"We "<<"Th " <<"Fr " <<"Sa " <<" "cout<<endl;for (int j=0;j<3;j+) month=3*(i-1)+j+1;s=getdays(year,month,1);/計(jì)算從年月日起到所查找年

16、每月第 天一共有多少|(zhì)天s=s%7;for (int m=0;m<s;m+) cout<< " " / 每月第一天之前打印空格if (IsLeap(year) dayofmonth2=29; bj=dayofmonthmonth;for (int k=1;k<8-s;)/ 由1開始打印每月月歷第一行cout<<setw(2)<<setfill( ' ' )<<k<<" " ;k+; aj=k;cout<< " " cout<<

17、;endl;for (int w=1;w<=5;w+) / 打印每月月歷其余行for (int j=0;j<3;j+)int m=1;for (m=1;m<=7;m+,aj+)if (aj>bj) break ; cout<<setw(2)<<setfill( ' ' )<<aj<< " " ; if (m=7) cout<< " " ;for (int n=1;aj>bj,n<=8-m;n+) cout<< " &quo

18、t; ;if (aj>bj&&m!=8) cout<< " " ; cout<<endl;cout<< "= =" <<endl;/ 打印某 3月的月歷void printfmonth( int year, int month , int day)system( "cls" );int i,s;s=getdays(year,month,1); / 計(jì)算從 1年1 月1日起到所查找月第一天一共有多少|(zhì) 天s=s%7;cout«" = = = = =

19、 = = = = = " vvyearvv" 年o" <<month<< 月?" <<"= = = = = = = = = "<<endl;cout << "SuntMontTuetWedtThutFritSatn" /for ( i = 0; i < s; +i )cout << 't'if ( s = 6 )cout.put( 'n' );for ( i = 1; i <= dayofmonthm

20、onth; +i )if (i=day) cout<<""<<i<<"t" ;elsecout << i <<'t'if ( (i+s) % 7 = 0 )cout << 'n' ; cout<<endl;cout«" = = = = = = = = = = = = = = = = = = = = = = = = = =" <<endl;/ 查找某一天void lookday( int year,

21、int month , int day) system( "cls" );int s,y, m, d, h, min, sec,S,sum;s=getdays(year,month,day);II計(jì)算從年月日起到查找日一共有多少天?sum=s%;7printfmonth(year,month,day); II 打印查找日所在月的月歷并標(biāo)識(shí)出該天switch (sum)IIcase0:cout<<case1:cout<<case2:cout<<"Sunday" <<endl; break ; "Mo

22、nday"<<endl; break ; "Tuesday" <<endl; break;case3:cout<<case4:cout<<case5:cout<<case6:cout<<"Wednesday"<<endl; break; "Thursday" <<endl; break ; "Friday" <<endl; break ; "Saturday" <<e

23、ndl; break ;switch (month) II 判斷查找天是否陽(yáng)歷節(jié)日先由月份判斷是否有節(jié)日的月份再由日判斷是否為 節(jié)日case 1: switch (day)case 1:cout<< " 元旦( New year's day)" <<endl; break; default :cout<< "不是陽(yáng)歷節(jié)日 "<<endl; break ;case 3: switch (day)case 8:cout<< "婦女節(jié)(Women's Day)" &

24、lt;<endl; break;case 12:cout<< "植樹節(jié)( Arbor Day)" <<endl; break;default :cout<< "不是陽(yáng)歷節(jié)日 "<<endl; break ;case 5: switch (day)case 1:cout<< "勞動(dòng)節(jié)( Labor Day)" <<endl; break;case 4:cout<< "中國(guó)青年節(jié)( Chinese Youth Day)" <

25、<endl; break; default :cout<< "不是陽(yáng)歷節(jié)日 "<<endl;break;cout<<year<< "-" <<month<<"-" <<day<<" is " 判斷所查找天是星期幾case 6: switch (day)case 1:cout<< " 兒童節(jié)( Children's Day)" <<endl; break ; def

26、ault :cout<< " 不是陽(yáng)歷節(jié)日 " <<endl; break ;case 8: switch (day)case 1:cout<< " 建軍節(jié)( the Army's Day)" <<endl; break ; default :cout<< " 不是陽(yáng)歷節(jié)日 " <<endl; break ;case 9: switch (day)case 10:cout<< "教師| 節(jié)( Teacher's Day)&qu

27、ot; <<endl; break ;default :cout« "不是陽(yáng)歷節(jié)日 "<<endl;break;case 10: switch (day)case 1:cout<< "國(guó)慶節(jié)(National Day)" <<endl; break;default :cout<< "不是陽(yáng)歷節(jié)日 "<<endl;break;default :cout<< "不是陽(yáng)歷節(jié)日"<<endl;S=Initdate(y,

28、m,d,h,min,sec);/計(jì)算從1年1月1日起到現(xiàn)在一共2有多少天?/ 計(jì)算查找日距今有多少天if (S<s)cout«"距今還有"vvs-Svv"天"<<endl;elsecout<<"已經(jīng)過(guò)去"vvS-svv"天"<<endl;/ 主函數(shù)顯示程序菜單int main()int choice,year,month,day;for (;1;) /顯示程序菜單,為永真,每次查找完回到程序菜單iCOUt« "=菜單選項(xiàng)=<=<&q

29、uot;endl;*cout«"請(qǐng)選擇:"<<endl;cout<<"* * * * * * * *1.查找某一年的年歷*" <<endl;coutvv"* * * * * * * *2.查找某一月的月歷* * * * * * *" vvendl;coutvv"* * * * * * * *3.查找某一天* * * * * * *" vvendl;coutvv"* * * * * * * *0.退出* * * * * * *" <<end

30、l;cout<< "= ="<<endl;cin>>choice;if (choice=1) printyear();/ 選擇 1,查找某年年歷else if (choice=2) / 選擇,查找某月月歷 int day=0;coutvv"請(qǐng)輸入要查找的年月(格式如2012 12):"cin>>year>>month;if (month>12) / 判斷輸入的年月是否存在,不存在提示重新輸入 coutvv"輸入的年月不存在,請(qǐng)重新輸入"<<e ndl;else printfmonth

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論