版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 《面向?qū)ο蟪绦蛟O(shè)計》課程設(shè)計報告</p><p><b> 萬年歷</b></p><p> 完 成 時 間: </p><p> 指 導(dǎo) 老 師 : </p><p> 目
2、 錄</p><p><b> 一、需求分析3</b></p><p> 二、系統(tǒng)總框架圖3</p><p> 三、每個模塊的設(shè)計分析4</p><p> 四、所定義的函數(shù)及其說明4</p><p> 五、例舉特色算法5</p><p> 六、存在問題
3、與不足及對策6</p><p><b> 七、使用說明6</b></p><p> 八、程序運行結(jié)果6</p><p><b> 九、程序源代碼9</b></p><p><b> 需求分析</b></p><p> 現(xiàn)代化社會中,人們
4、的日期和時間觀念日益加強;制作一個小巧而精確的萬年歷,有助于幫助人們對于日程管理的安排。這個萬年歷系統(tǒng)就是為此而為各類人群而誕生的。</p><p><b> 系統(tǒng)總框架圖</b></p><p><b> 圖1</b></p><p><b> 每個模塊的設(shè)計分析</b></p>
5、<p> 輸入年并查看該年的每個月份的日歷</p><p> 系統(tǒng)提示用戶進行數(shù)字功能選擇和輸入所要查看的年份,并顯示該年份12個月的日歷,且是否是閏年。</p><p> 輸入年月并查看該月份的日歷</p><p> 系統(tǒng)提示用戶進行數(shù)字功能選擇和輸入所要查看的年份中的月份,并顯示該月的日歷,且2月有無29日。</p><p
6、> 輸入年月日并查看該日是星期幾</p><p> 系統(tǒng)提示用戶進行數(shù)字功能選擇和輸入所要查看的年份中的具體日期,并顯示該日期是星期幾。</p><p><b> 所定義的函數(shù)及說明</b></p><p> using namespace std;</p><p> int daysOfMonth[13
7、]={0,31,28,31,30,31,30,31,31,30,31,30,31}; //定義全局變量</p><p> //類PerpetualCalendar開始</p><p> class PerpetualCalendar</p><p><b> {</b></p><p> void printM
8、onth(); //按月打印萬年歷</p><p> void printYear(); //按年打印萬年歷</p><p> void printDay(); //打印日期對應(yīng)的星期</p><p> void operate(); //執(zhí)行各種操作的演示</p><p> PerpetualCalend
9、ar();//構(gòu)造函數(shù)</p><p> PerpetualCalendar(int y,int m,int d); //構(gòu)造函數(shù)重載</p><p><b> private:</b></p><p><b> int year;</b></p><p> int month;</p
10、><p><b> int day;</b></p><p> bool isLeap(int y); //判斷是否為閏年</p><p> int getDays(); //計算從0年以來有多少天</p><p> }//end main</p><p> //類
11、PerpetualCalendar的成員函數(shù)</p><p> void PerpetualCalendar::setDate() //改變?nèi)掌?lt;/p><p> int PerpetualCalendar::getWeek() //用于計算所輸入的年月日的星期數(shù),返回0到6中的一個數(shù)字</p><p> else
12、 leapYear="(非閏年)";</p><p> cout<<endl<<" "<<"公元"<<year<<"年"<<month<<"月"<<leapYear<<endl; //輸出標
13、題</p><p> PerpetualCalendar::PerpetualCalendar()//默認構(gòu)造函數(shù)</p><p><b> {</b></p><p><b> year=0;</b></p><p><b> month=1;</b></p&g
14、t;<p><b> day=1;</b></p><p><b> }</b></p><p> PerpetualCalendar::PerpetualCalendar(int y,int m,int d)//重載構(gòu)造函數(shù)</p><p><b> {</b></p&g
15、t;<p><b> year=y;</b></p><p><b> month=m;</b></p><p><b> day=d;</b></p><p><b> }</b></p><p> bool PerpetualC
16、alendar::isLeap(int y) //判斷是否為閏年的成員函數(shù)</p><p><b> {</b></p><p> if((y%4==0&&y%100!=0)||(y%400==0)) return true;</p><p> else ret
17、urn false;</p><p><b> }</b></p><p> int PerpetualCalendar::getDays() //用于計算所輸入的年月日從0年以來的總天數(shù)</p><p><b> 五、舉例特色算法</b></p><p> Perpet
18、ualCalendar();//構(gòu)造函數(shù)</p><p> PerpetualCalendar(int y,int m,int d); //構(gòu)造函數(shù)重載</p><p><b> private:</b></p><p><b> int year;</b></p><p> int mon
19、th;</p><p><b> int day;</b></p><p> bool isLeap(int y); //判斷是否為閏年</p><p> int getDays(); //計算從0年以來有多少天</p><p><b> };</b></p&
20、gt;<p> int PerpetualCalendar::getWeek() //用于計算所輸入的年月日的星期數(shù),返回0到6中的一個數(shù)字</p><p><b> {</b></p><p> int week=getDays()%7;</p><p><b> week+=5;</b&g
21、t;</p><p><b> week%=7;</b></p><p> return week</p><p> int PerpetualCalendar::getDays() //用于計算所輸入的年月日從0年以來的總天數(shù)</p><p><b> {</b><
22、;/p><p> int i,sumDays=0;</p><p> for(i=0;i<year;i++)</p><p><b> {</b></p><p> if(isLeap(i)) sumDays+=366;</p><p> else sumDays+=
23、365;</p><p> 六、存在問題與不足及對策</p><p> 由于設(shè)計者水平有限及時間等方面的原因,該系統(tǒng)的功能比較簡單,查錯能力也不強,對于一些不正確的輸入可能會造成一些難以預(yù)料的結(jié)果,因此,請不要故意輸入錯誤信息。這些不足請老師多多諒解。今后設(shè)計者會更多的學(xué)習編程技巧,不斷的提高程序設(shè)計水平。</p><p> 而且大家都是中國人,在編寫萬年歷的
24、同時本應(yīng)該也將傳統(tǒng)的農(nóng)歷信息和節(jié)氣節(jié)日編寫進去,可由于對于傳統(tǒng)文化了解不深,以至無法編寫,今后設(shè)計者會更多了解此方面內(nèi)容,以彌補此次編程所造成的遺憾。</p><p><b> 七、使用說明</b></p><p> 在c++的vc 6.0編譯環(huán)境中進行</p><p><b> 程序運行結(jié)果</b></p&g
25、t;<p><b> 運行操作1:</b></p><p><b> 圖2</b></p><p><b> 圖3</b></p><p><b> 圖4</b></p><p><b> 圖5</b><
26、/p><p><b> 圖6</b></p><p><b> 運行操作2</b></p><p><b> 圖7</b></p><p><b> 圖8</b></p><p><b> 運行操作3</b&g
27、t;</p><p><b> 圖9</b></p><p><b> 圖10</b></p><p><b> 運行操作4</b></p><p><b> 圖11</b></p><p><b> 九、程序源
28、代碼</b></p><p> #include<iostream></p><p> #include<iomanip></p><p> #include<string></p><p> using namespace std;</p><p> int
29、daysOfMonth[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; //定義全局變量</p><p> //類PerpetualCalendar開始</p><p> class PerpetualCalendar</p><p><b> {</b></p><p>
30、;<b> public:</b></p><p> int getYear();</p><p> int getMonth();</p><p> int getDay();</p><p> void setYear();</p><p> void setMonth();<
31、;/p><p> void setDate();</p><p> int getWeek();</p><p> void printMonth(); //按月打印萬年歷</p><p> void printYear(); //按年打印萬年歷</p><p> void printDay();
32、 //打印日期對應(yīng)的星期</p><p> void operate(); //執(zhí)行各種操作的演示</p><p> PerpetualCalendar();//構(gòu)造函數(shù)</p><p> PerpetualCalendar(int y,int m,int d); //構(gòu)造函數(shù)重載</p><p><b> pr
33、ivate:</b></p><p><b> int year;</b></p><p> int month;</p><p><b> int day;</b></p><p> bool isLeap(int y); //判斷是否為閏年</p>&l
34、t;p> int getDays(); //計算從0年以來有多少天</p><p><b> };</b></p><p> int main()</p><p><b> {</b></p><p> PerpetualCalendar test;</p&g
35、t;<p> test.operate();</p><p><b> return 0;</b></p><p> }//end main</p><p> //類PerpetualCalendar的成員函數(shù)</p><p> int PerpetualCalendar::getYear()&l
36、t;/p><p><b> {</b></p><p> return year;</p><p><b> }</b></p><p> int PerpetualCalendar::getMonth()</p><p><b> {</b>&l
37、t;/p><p> return month;</p><p><b> }</b></p><p> int PerpetualCalendar::getDay()</p><p><b> {</b></p><p> return day;</p>
38、<p><b> }</b></p><p> void PerpetualCalendar::setYear()</p><p><b> {</b></p><p><b> do</b></p><p><b> {</b><
39、;/p><p> cout<<"Input year:";</p><p> cin>>year;</p><p> if(year<0||year>9999) cout<<"Input Error!"<<endl;</p><p> }w
40、hile(year<0||year>9999);</p><p><b> month=1;</b></p><p><b> day=1;</b></p><p><b> }</b></p><p> void PerpetualCalendar::se
41、tMonth()</p><p><b> {</b></p><p><b> do</b></p><p><b> {</b></p><p> cout<<"Input year,month:";</p><p
42、> cin>>year>>month;</p><p> if(year<0||year>9999||month<=0||month>12) cout<<"Input Error!"<<endl;</p><p> }while(year<0||year>9999||mont
43、h<=0||month>12);</p><p><b> day=1;</b></p><p><b> }</b></p><p> void PerpetualCalendar::setDate() //改變?nèi)掌?lt;/p><p><b> {</b&
44、gt;</p><p><b> do</b></p><p><b> {</b></p><p> cout<<"Input year,month,day:";</p><p> cin>>year>>month>>da
45、y;</p><p> if(year<0||year>9999||month<=0||month>12||day<=0||day>31)</p><p> cout<<"Input Error!"<<endl;</p><p> }while(year<0||year>
46、;9999||month<=0||month>12||day<=0||day>31);</p><p><b> }</b></p><p> int PerpetualCalendar::getWeek() //用于計算所輸入的年月日的星期數(shù),返回0到6中的一個數(shù)字</p><p><b>
47、 {</b></p><p> int week=getDays()%7;</p><p><b> week+=5;</b></p><p><b> week%=7;</b></p><p> return week;</p><p><b&g
48、t; }</b></p><p> void PerpetualCalendar::printMonth()</p><p><b> {</b></p><p><b> int i;</b></p><p><b> int xx;</b></p
49、><p> int tempDay=day;</p><p><b> day=1;</b></p><p> int week=getWeek();</p><p> day=tempDay;</p><p> int setLine=week;</p><p>
50、 string leapYear;</p><p> if(isLeap(year)) leapYear="(閏年)";</p><p> else leapYear="(非閏年)";</p><p> cout<<endl<<" "<
51、;<"公元"<<year<<"年"<<month<<"月"<<leapYear<<endl; //輸出標題</p><p><b> //XX年XX月</b></p><p> cout<<" SU
52、N MON TUE WED THU FRI SAT"<<endl;</p><p> switch(week)</p><p><b> {</b></p><p><b> case 0:</b></p><p> for(i=1;i<=daysOfMonth[
53、month];i++,setLine++)</p><p><b> {</b></p><p> if(setLine%7==0&&setLine!=0) cout<<endl<<" ";</p><p> if(i==1) cout<<" &
54、quot;<<setw(4)<<setiosflags(ios::left)<<i;</p><p> else cout<<setw(4)<<setiosflags(ios::left)<<i;</p><p><b> }</b></p><p> cout<
55、;<endl;</p><p><b> break;</b></p><p><b> case 1:</b></p><p> for(i=1;i<=daysOfMonth[month];i++,setLine++)</p><p><b> {</b>
56、</p><p> if(setLine%7==0) cout<<endl<<" ";</p><p> if(i==1) cout<<" "<<setw(4)<<setiosflags(ios::left)<<i;</p><p>
57、; else cout<<setw(4)<<setiosflags(ios::left)<<i;</p><p><b> }</b></p><p> cout<<endl;</p><p><b> break;</b></p><p>&
58、lt;b> case 2:</b></p><p> for(i=1;i<=daysOfMonth[month];i++,setLine++)</p><p><b> {</b></p><p> if(setLine%7==0) cout<<endl<<" "
59、;</p><p> if(i==1) cout<<" "<<setw(4)<<setiosflags(ios::left)<<i;</p><p> else cout<<setw(4)<<setiosflags(ios::left)<<i;</p>
60、;<p><b> }</b></p><p> cout<<endl;</p><p><b> break;</b></p><p><b> case 3:</b></p><p> for(i=1;i<=daysOfMonth[
61、month];i++,setLine++)</p><p><b> {</b></p><p> if(setLine%7==0) cout<<endl<<" ";</p><p> if(i==1) cout<<" "<
62、;<setw(4)<<setiosflags(ios::left)</p><p><b> <<i;</b></p><p> else cout<<setw(4)<<setiosflags(ios::left)<<i;</p><p><b> }</b
63、></p><p> cout<<endl;</p><p><b> break;</b></p><p><b> case 4:</b></p><p> for(i=1;i<=daysOfMonth[month];i++,setLine++)</p>
64、;<p><b> {</b></p><p> if(setLine%7==0) cout<<endl<<" ";</p><p> if(i==1) cout<<" "<<setw(4)<<setios
65、flags</p><p> (ios::left)<<i;</p><p> else cout<<setw(4)<<setiosflags(ios::left)<<i;</p><p><b> }</b></p><p> cout<<endl;&
66、lt;/p><p><b> break;</b></p><p><b> case 5:</b></p><p> for(i=1;i<=daysOfMonth[month];i++,setLine++)</p><p><b> {</b></p>
67、<p> if(setLine%7==0) cout<<endl<<" ";</p><p> if(i==1) cout<<" "<<setw(4)<<setiosflags</p><p> (ios::left)&l
68、t;<i;</p><p> else cout<<setw(4)<<setiosflags(ios::left)<<i;</p><p><b> }</b></p><p> cout<<endl;</p><p><b> break;<
69、/b></p><p><b> case 6:</b></p><p> for(i=1;i<=daysOfMonth[month];i++,setLine++)</p><p><b> {</b></p><p> if(setLine%7==0) cout<<
70、endl<<" ";</p><p> if(i==1) cout<<" "<<setw(4)<<setiosflags</p><p> (ios::left)<<i;</p><p> else c
71、out<<setw(4)<<setiosflags(ios::left)<<i;</p><p><b> }</b></p><p> cout<<endl;</p><p><b> break;</b></p><p> default:
72、cout<<"ERROR!"<<endl;</p><p><b> }</b></p><p><b> }</b></p><p> void PerpetualCalendar::printYear()</p><p><b> {
73、</b></p><p> int tempMonth=month;</p><p> for(int i=1;i<=12;i++)</p><p><b> {</b></p><p><b> month=i;</b></p><p> pri
74、ntMonth();</p><p><b> }</b></p><p> month=tempMonth;</p><p><b> }</b></p><p> void PerpetualCalendar::printDay()</p><p><b&g
75、t; {</b></p><p> switch(getWeek())</p><p><b> {</b></p><p> case 0: cout<<year<<"年"<<month<<"月"<<day<<&
76、quot;日 星期日"<<endl; break;</p><p> case 1: cout<<year<<"年"<<month<<"月"<<day<<"日 星期一"<<endl; break;</p><p> c
77、ase 2: cout<<year<<"年"<<month<<"月"<<day<<"日 星期二"<<endl; break;</p><p> case 3: cout<<year<<"年"<<month<
78、<"月"<<day<<"日 星期三"<<endl; break;</p><p> case 4: cout<<year<<"年"<<month<<"月"<<day<<"日 星期四"<<
79、;endl; break;</p><p> case 5: cout<<year<<"年"<<month<<"月"<<day<<"日 星期五"<<endl; break;</p><p> case 6: cout<<year&
80、lt;<"年"<<month<<"月"<<day<<"日 星期六"<<endl; break;</p><p><b> }</b></p><p><b> }</b></p><p>
81、void PerpetualCalendar::operate()</p><p><b> {</b></p><p> int i,choose;</p><p> bool chooseFlag=false;</p><p> while(1)//while開始</p><p>&l
82、t;b> {</b></p><p> while(!chooseFlag)</p><p> {cout<<"……………………歡迎使用萬年歷……………………\n"<<endl;</p><p> cout<<"1.輸入年,顯示該年萬年歷"<<endl&
83、lt;/p><p> <<"2.輸入年,月,顯示該月萬年歷"<<endl</p><p> <<"3.輸入年月日,查詢該日為星期幾"<<endl</p><p> <<"4.退出"<<endl;</p><p>
84、; cout<<endl<<"請輸入數(shù)字選擇你要的操作:";</p><p> cin>>choose;</p><p> for(i=1;i<=4;i++)</p><p><b> {</b></p><p> if(choose==i) { c
85、hooseFlag=true; break;}</p><p> else chooseFlag=false;</p><p><b> }</b></p><p> if(!chooseFlag) cout<<"Error Input!"<<endl;</p><p>
86、 } //end while(!chooseFlag)</p><p> if(choose==1) //if 開始</p><p><b> {</b></p><p> setYear();</p><p> printYear();</p><p><b> }<
87、;/b></p><p> else if(choose==2)</p><p><b> {</b></p><p> setMonth();</p><p> printMonth();</p><p><b> }</b></p><
88、p> else if(choose==3)</p><p><b> {</b></p><p> setDate();</p><p> printDay();</p><p><b> }</b></p><p> else if(choose==4)&
89、lt;/p><p><b> {</b></p><p> cout<<"程序結(jié)束"<<endl;</p><p><b> break;</b></p><p><b> }</b></p><p>&l
90、t;b> else</b></p><p><b> {</b></p><p> cout<<"錯誤!"<<endl;</p><p><b> }//end if</b></p><p> chooseFlag=0;<
91、/p><p> }//end while(1)</p><p><b> }</b></p><p> PerpetualCalendar::PerpetualCalendar()//默認構(gòu)造函數(shù)</p><p><b> {</b></p><p><b>
92、 year=0;</b></p><p><b> month=1;</b></p><p><b> day=1;</b></p><p><b> }</b></p><p> PerpetualCalendar::PerpetualCalendar(i
93、nt y,int m,int d)//重載構(gòu)造函數(shù)</p><p><b> {</b></p><p><b> year=y;</b></p><p><b> month=m;</b></p><p><b> day=d;</b></
94、p><p><b> }</b></p><p> bool PerpetualCalendar::isLeap(int y) //判斷是否為閏年的成員函數(shù)</p><p><b> {</b></p><p> if((y%4==0&&y%100!=0)||(y%400==0
95、)) return true;</p><p> else return false;</p><p><b> }</b></p><p> int PerpetualCalendar::getDays() //用于計算所輸入的年月日從0年以來的總天數(shù)<
96、;/p><p><b> {</b></p><p> int i,sumDays=0;</p><p> for(i=0;i<year;i++)</p><p><b> {</b></p><p> if(isLeap(i)) sumDays+=366;<
97、;/p><p> else sumDays+=365;</p><p><b> }</b></p><p> if(isLeap(year)) daysOfMonth[2]=29;</p><p> for(i=1;i<month;i++)</p><p> sum
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 萬年歷課程設(shè)計
- 萬年歷課程設(shè)計
- 萬年歷課程設(shè)計
- 萬年歷課程設(shè)計
- 萬年歷課程設(shè)計
- 萬年歷課程設(shè)計
- 萬年歷課程設(shè)計
- java萬年歷課程設(shè)計
- 萬年歷課程設(shè)計報告
- 數(shù)字萬年歷課程設(shè)計
- java課程設(shè)計--萬年歷
- 萬年歷課程設(shè)計論文
- 課程設(shè)計-萬年歷系統(tǒng)
- 萬年歷課程設(shè)計報告
- 數(shù)碼萬年歷課程設(shè)計
- 萬年歷課程設(shè)計.doc
- java課程設(shè)計--萬年歷設(shè)計
- dsp課程設(shè)計-萬年歷設(shè)計
- 編寫萬年歷系統(tǒng)課程設(shè)計
- c++萬年歷課程設(shè)計
評論
0/150
提交評論