顯示年歷C++課程設計報告_第1頁
顯示年歷C++課程設計報告_第2頁
顯示年歷C++課程設計報告_第3頁
顯示年歷C++課程設計報告_第4頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、目錄一、設計任務,目的與要求 .11.設計內(nèi)容: .12.設計目的: .23.設計要求: .2二、概要設計 .21.需求分析: .22.設計流程: .31 設計要求: .32 總體設計: .4三、運行結(jié)果及分析 .51.程序運行測試: .52.進入程序菜單: .53.1號鍵功能: .53.2號鍵功能: .54.3號鍵功能: .55.0號鍵功能: .5四、源代碼.6一、設計任務,目的與要求1.設計內(nèi)容:年歷顯示功能要求:1輸入一個年份,輸出是在屏幕上顯示該年的日歷。假定輸入的年份在1940-2040 年之間。2輸入年月,輸出該月的日歷。3輸入年月日,輸出距今天還有多少天,星期幾,是否是公歷節(jié)日。

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

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

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

5、歷3. 查找一天0. 退出據(jù) 輸 入據(jù) 輸 入據(jù)輸入的日期打印退出的 年 份的 年 月該天所在月的月歷打 印 該打 印 該并判斷是否陽歷節(jié)顯示年歷、月歷或查找結(jié)果(流程圖)依據(jù)課程設計的要求,需要設計一個菜單功能,進入程序后,有菜單可以提供選擇,選擇 1,進入年歷顯示階段,年歷顯示完畢,再次進入菜單選擇。選擇 2,進入月歷顯示階段,月歷顯示完畢,再次進入菜單選擇。選擇 3,進入日期查詢階段,日期查詢完畢,再次進入菜單。選擇 0,退出程序。三、運行結(jié)果及分析1.程序運行測試:在電腦中打開 C+應用程序 , 首先進入 VC+6.0,將程序代碼輸入,編譯,組建,調(diào)試。觀察運行結(jié)果,和各個功能情況。2

6、.進入程序菜單:(圖 1:菜單頁面)說明:該頁面表示進入菜單選項,根據(jù)選項進入相應的功能。3.1 號鍵功能:輸入 1,按 enter 鍵后:輸入要顯示的年份: 2013(圖 2,顯示 2013 年年歷查詢結(jié)果)3.2 號鍵功能:輸入 2 按 enter 鍵后:輸入年月,例如2013 1(圖 3,2013 年 1 月月歷查詢結(jié)果)4.3 號鍵功能:輸入 3 按 enter 鍵后:輸入年月日,如3013 1 1(圖 4,2013 年 1 月 1 查詢結(jié)果)顯示查詢天所在月月歷,并標識出該天,同時顯示是否陽歷節(jié)日,距今多少天。5.0 號鍵功能:退出程序。四、源代碼#include<iostre

7、am>#include<iomanip>using namespacestd;int dayofmonth13=0,31,28,31,30,31,30,31,31,30,31,30,31; /定義全 ¨局變量,每月的天數(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 mont

8、h,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; /為閏年時二月有29天for(i=1;i<month;i+)sum+=dayofmonthi;sum+=day;return sum;/函數(shù) Initdate獲得現(xiàn)在的時間intInitdate(int &y, int &m, int &d, int &h, int &min, int &sec)int sum;time

9、_t t;time( &t );struct tm * local_time = localtime( &t );sec = local_time->tm_sec;min = local_time->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()syste

10、m("cls" );int s,year,month;int a10,b10;cout<<"請輸入要查找的年份;cin>>year;cout<<"=The Calender of Year"<<year<<"="<<endl;int i=1;for(i=1;i<=12/3;i+)/3確定每一行顯示三個月的月歷cout<<"-"for(int h=1;h<=3;h+)<<endl;int m=3*(i

11、-1)+h;cout<<"" <<m<< "月" ; /打印月份名稱cout<<endl<< "-"<<endl;for(int j=0;j<3;j+)cout<<"Su " <<"Mo " <<"Tu " <<"We " <<"Th " <<"Fr " <<

12、;"Sa "<<""cout<<endl;for(int j=0;j<3;j+)month=3*(i-1)+j+1;s=getdays(year,month,1); /計算從年月日起到所查找¨年每月第 ì天一共有多少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開始

13、打印每月月歷第一行cout<<setw(2)<<setfill( ' ')<<k<< " " ;k+;aj=k;cout<<"" ;cout<<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( ' ')<

14、<aj<< " " ;if (m=7)cout<<"" ;for(int n=1;aj>bj,n<=8-m;n+)cout<<""if (aj>bj&&m!=8)cout<<""cout<<endl;cout<<"="<<endl;/打印某 3月的月歷void printfmonth( int year,int month ,int day)system("cls

15、" );int i,s;s=getdays(year,month,1); /計算從 1年1月 1日起到所查找月第一天一共有多少|(zhì)天s=s%7;cout<<" "<<year<<" 年¨o"<<month<< " 月?"<<" " <<endl; cout << "SuntMontTuetWedtThutFritSatn" ;/for ( i = 0; i < s; +i )c

16、out << 't'if ( s = 6 )cout.put( 'n' );for ( i = 1; i <= dayofmonthmonth; +i )if (i=day) cout<< "" <<i<< "t" ;elsecout << i << 't'if ( (i+s) % 7 = 0 )cout << 'n'cout<<endl;cout<<""&l

17、t;<endl;/查找某一天void lookday(int year,int month ,int day)system("cls" );int s,y, m, d, h, min, sec,S,sum;s=getdays(year,month,day); /計算從年月日起到查找日一共有多少天?sum=s%7;printfmonth(year,month,day); /打印查找日所在月的月歷并標識出該天cout<<year<<"-" <<month<< "-" <<d

18、ay<<"is"switch(sum)/判斷所查找天是星期幾case 0:cout<<"Sunday"<<endl;break;case 1:cout<<"Monday" <<endl;break;case 2:cout<<"Tuesday"<<endl;break;case 3:cout<<"Wednesday"<<endl; break;case 4:cout<<"

19、;Thursday"<<endl; break;case 5:cout<<"Friday" <<endl;break;case 6:cout<<"Saturday"<<endl;break;switch(month)/判斷查找天是否陽歷節(jié)日先由月份判斷是否有節(jié)日的月份再由日判斷是否為節(jié)日case 1:switch(day)case 1:cout<<" 元旦( New year's day)"<<endl;break;default:c

20、out<<"不是陽歷節(jié)日 " <<endl; break;case 3:switch(day)case 8:cout<<"婦女節(jié) ¨(Women's Day)"<<endl; break;case 12:cout<<"植樹節(jié)( Arbor Day)" <<endl;break;default:cout<<"不是陽歷節(jié)日 "<<endl; break;case 5:switch(day)case 1:co

21、ut<<"勞動節(jié)( Labor Day)" <<endl; break;case 4:cout<<" 中國青年節(jié)( Chinese Youth Day)"<<endl;break;default:cout<<"不是陽歷節(jié)日 "<<endl; break;case 6:switch(day)case 1:cout<<" 兒童節(jié)( Children's Day)" <<endl;break;default:cout&

22、lt;<"不是陽歷節(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)"<<endl; break;defaul

23、t: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,m,d,h,min,sec);/計算從

24、1年1月1日起到現(xiàn)在一共 2有多少天 ?¨?/計算查找日距今有多少天if (S<s)cout<<" 距今還有 "<<s-S<<"天" <<endl;elsecout<<" 已經(jīng)過去 "<<S-s<<"天" <<endl;/主函數(shù)顯示程序菜單int main()int choice,year,month,day;for(;1;)/顯示程序菜單,為永真,每次查找完回到程序菜單ìcout<<

25、;"=菜單選項=" <<endl;cout<<"請選擇 :" <<endl;cout<<"* * * * * * * *1.查找某一年的年歷*"<<endl;cout<<"* * * * * * * *2.查找某一月的月歷*"<<endl;cout<<"* * * * * * * *3.查找某一天*"<<endl;cout<<"* * * * * * * *0.退出*

26、"<<endl;cout<<"=" <<endl;cin>>choice;if (choice=1)printyear();/選擇 1,查找 ¨某年年歷else if(choice=2)/選擇,查找某月月歷int day=0;cout<<"請輸入要查找的年月(格式如 ¨2012 12):"cin>>year>>month;if (month>12) /判斷輸入的年月是否存在,不存在提示重新輸入cout<<"輸入的年月不存在,請重新輸入"<<endl;else printfmonth(year,month,day); /輸入的年月存在,查找某月月歷¤¨2else if(choice=3)/選擇,查找某天cout<<"請輸入要查找的日期(格式如2012 12 31):"<<endl;cin>>

溫馨提示

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

評論

0/150

提交評論