


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、顯示年歷C+課程設(shè)計報告目錄一、設(shè)計任務(wù),目的與要求 31設(shè)計內(nèi)容:32設(shè)計目的:33設(shè)計要求:4二、概要設(shè)計41需求分析: 42設(shè)計流程:51設(shè)計要求: 52總體設(shè)計: 5三、運行結(jié)果及分析 71程序運行測試: 72進入程序菜單:73.1號鍵功能:73.2號鍵功能:84.3號鍵功能:95.0號鍵功能:9四、源代碼第2頁共16頁一、設(shè)計任務(wù),目的與要求1. 設(shè)計內(nèi)容:年歷顯示功能要求:1輸入一個年份,輸出是在屏幕上顯示該年 的日歷。假定輸入的年份在 1940-2040 年之間。2輸入年月,輸出該月的日歷。 3輸入年月日,輸出距今天還有多少天,星 期幾,是否是公歷節(jié)日。2. 設(shè)計目的: 本課程設(shè)
2、計是計算機科學(xué)與技術(shù)專業(yè)重要的實 踐性環(huán)節(jié)之一, 是在學(xué)生學(xué)習(xí)完 程序設(shè)計語言C+(或C)課程后進行的一次全面的綜合練習(xí)。本課程設(shè)計的目的和任務(wù):1.鞏固和加深學(xué)生對 C+(或C)語言課程的基本知識的理解和掌握2. 掌握C+(或C)語言編程和程序調(diào)試的基 本技能3. 利用C+(或C)語言進行基本的軟件設(shè)計4. 掌握書寫程序設(shè)計說明文檔的能力5.提高運用C+(或C)語言解決實際問題的 能力3. 設(shè)計要求:1. 分析課程設(shè)計題目的要求2. 寫出詳細(xì)設(shè)計說明3. 編寫程序代碼,調(diào)試程序使其能正確運行4. 設(shè)計完成的軟件要便于操作和使用5. 設(shè)計完成后提交課程設(shè)計報告及程序代碼二、概要設(shè)計1. 需求分
3、析:目前的計算機日歷程序,比較典型的是 Windows 各版本中的日歷程序以及 基于該程序所開發(fā)的各種應(yīng)用程序中的日歷程序。然而,這些程序都是千遍一 律的局限于一個很短的時間內(nèi)。但是,很多情況下,特別是在眾多的科學(xué)領(lǐng)域 中,一個時間跨度較大的程序是有參考價值的。 C+ 程序設(shè)計語言充分發(fā)揮了其 自身無與倫比的優(yōu)越性,用極短的程序文本就彌補了這一領(lǐng)域的空白。萬年歷作為日常中的一種小工具,它具有多方面的小工能,主要在日期的顯示上給人以直觀的表達效果,在日期的查詢上方便簡潔 ,還有就是在某些節(jié)日 的提醒上都給我們帶來極大的方便 ,是一種比較實用的小工具。給人的需求性 很大,學(xué)生在做此萬年歷課程設(shè)計的
4、同時,能夠認(rèn)識到 C+ 編程給人帶來的便 捷,也能夠清楚萬歷年表編程的出入。對培養(yǎng)學(xué)生的創(chuàng)新能力和動手能力具有 很大的作用。2. 設(shè)計流程:1 設(shè)計要求:(1)程序運行時,首先給 4 出個菜單選項的內(nèi)容和輸入提示:1 顯示某一年的日歷2 顯示某一月的月歷3 查找某一天0 退出(2)用戶可以通過主菜單選擇不同的選項:若選擇 1,則通過輸入年份,顯示輸出該年每個月的日歷;若選擇 2,則通過輸入年月,顯示輸出該月的日歷;若選擇 3,則通過輸入年月日,輸出該天所在月的月歷、該天是星期幾、是否陽 歷節(jié)日、距今多少天;若選擇 0,則退出。2 總體設(shè)計:進入1.顯示一年的年歷據(jù)輸入的l日期打印J退出顯示年歷
5、、月歷或查找結(jié)果(流程圖)依據(jù)課程設(shè)計的要求,需要設(shè)計一個菜單功能,進入程序后,有菜單可以 提供選擇,選擇1,進入年歷顯示階段,年歷顯示完畢,再次進入菜單選擇。選擇2,進入月歷顯示階段,月歷顯示完畢,再次進入菜單選擇。選擇3,進入日期查詢階段,日期查詢完畢,再次進入菜單。選擇0,退出程序三、運行結(jié)果及分析1.程序運行測試:在電腦中打開C+應(yīng)用程序,首先進入VC+6.0,將程序代碼輸入,編譯, 組建,調(diào)試。觀察運行結(jié)果,和各個功能情況。2.進入程序菜單:諳選擇:K -K -M某某某找出 退12 3 0年月(圖1:菜單頁面) 說明:該頁面表示進入菜單選項,根據(jù)選項進入 相應(yīng)的功能。3.1號鍵功能:
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號鍵功能:輸入2按enter鍵后:睛輸入要查找的年月t格式如泅2 ia> =輸入年月,例如2013 1-:2013年直月Gu.nHonTueVedThuFriSat1234567B91«1112131415161718192021222324252&272S292&21(圖3, 2013年1月月歷查詢 結(jié)果)4.3號
10、鍵功能:輸入3按enter鍵后:請輸入要查找的日威K格式如2912 12 31>輸入年月曰,如3013 1 12 013 1 1is T ueEdai兀旦(bleu yes 已經(jīng)過去6天(圖4,2013年1月1查詢結(jié)果) 顯示查詢天所在月月歷,并標(biāo)識出該天,同時顯 示是否陽歷節(jié)日,距今多少天。5.0號鍵功能:退出程序。四、源代碼#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計算從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; / 為閏年時
12、二月有 29天for (i=1;i<month;i+) sum+=dayofmonthi;sum+=day;return sum;/函數(shù)Initdate 獲得現(xiàn)在的時間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<< "請輸入要查找的年份 cin>>year;cout<< &qu
14、ot;=The Calender of Year <<year<< "=<" <endl;int i=1;for (i=1;i<=12/3;i+) /3 確定每一行顯示三個月的月歷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);/計算從年月日起到所查找年
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); / 計算從 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計算從年月日起到查找日一共有多少天?sum=s%;7printfmonth(year,month,day); II 打印查找日所在月的月歷并標(biāo)識出該天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 判斷查找天是否陽歷節(jié)日先由月份判斷是否有節(jié)日的月份再由日判斷是否為 節(jié)日case 1: switch (day)case 1:cout<< " 元旦( New year's day)" <<endl; break; default :cout<< "不是陽歷節(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<< "不是陽歷節(jié)日 "<<endl; break ;case 5: switch (day)case 1:cout<< "勞動節(jié)( Labor Day)" <<endl; break;case 4:cout<< "中國青年節(jié)( Chinese Youth Day)" <
25、<endl; break; default :cout<< "不是陽歷節(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<< " 不是陽歷節(jié)日 " <<endl; break ;case 8: switch (day)case 1:cout<< " 建軍節(jié)( the Army's Day)" <<endl; break ; default :cout<< " 不是陽歷節(jié)日 " <<endl; break ;case 9: switch (day)case 10:cout<< "教師| 節(jié)( Teacher's Day)&qu
27、ot; <<endl; break ;default :cout« "不是陽歷節(jié)日 "<<endl;break;case 10: switch (day)case 1:cout<< "國慶節(jié)(National Day)" <<endl; break;default :cout<< "不是陽歷節(jié)日 "<<endl;break;default :cout<< "不是陽歷節(jié)日"<<endl;S=Initdate(y,
28、m,d,h,min,sec);/計算從1年1月1日起到現(xiàn)在一共2有多少天?/ 計算查找日距今有多少天if (S<s)cout«"距今還有"vvs-Svv"天"<<endl;elsecout<<"已經(jīng)過去"vvS-svv"天"<<endl;/ 主函數(shù)顯示程序菜單int main()int choice,year,month,day;for (;1;) /顯示程序菜單,為永真,每次查找完回到程序菜單iCOUt« "=菜單選項=<=<&q
29、uot;endl;*cout«"請選擇:"<<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"請輸入要查找的年月(格式如2012 12):"cin>>year>>month;if (month>12) / 判斷輸入的年月是否存在,不存在提示重新輸入 coutvv"輸入的年月不存在,請重新輸入"<<e ndl;else printfmonth
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年陜西省咸陽市永壽縣蒿店中學(xué)中考一模地理試題(原卷版+解析版)
- 2.3 聲的利用 說課稿2025年初中 人教版物理八年級上冊
- 新能源項目經(jīng)理應(yīng)聘簡歷
- 思想?yún)R報心得體會
- 醫(yī)院項目需求回復(fù)函
- 2025年廣東省佛山市南海區(qū)中考一模英語試題(原卷版+解析版)
- 項目執(zhí)行階段成果匯報及后期規(guī)劃
- 住宅銷售代理合同
- 目前光伏發(fā)電產(chǎn)品主要用于哪些方面
- 基于大數(shù)據(jù)的農(nóng)業(yè)現(xiàn)代化種植模式優(yōu)化方案
- 幼兒園課件:《黑夜我不怕》
- 2024年-急診氣道管理共識課件
- 2024年江蘇食品藥品職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫及答案解析
- 活動招商合同
- 標(biāo)準(zhǔn)化法及相關(guān)知識課件
- 新視野大學(xué)英語(第四版)讀寫教程1(思政智慧版)課件 Unit 6 Winning is not everything Section B
- 意識障礙診療規(guī)范2023版
- 儀表檢修規(guī)程
- 2023年10月自考03706思想道德修養(yǎng)與法律基礎(chǔ)試題及答案含評分標(biāo)準(zhǔn)
- 工廠組織架構(gòu)圖
- 全國IP地址段中國IP地址段各省IP段IP段最全
評論
0/150
提交評論