版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 《面向?qū)ο蟪绦蛟O(shè)計(jì)》課程設(shè)計(jì)報(bào)告</p><p><b> 萬年歷</b></p><p> 完 成 時(shí) 間: </p><p> 指 導(dǎo) 老 師 : </p><p> 目
2、 錄</p><p><b> 一、需求分析3</b></p><p> 二、系統(tǒng)總框架圖3</p><p> 三、每個(gè)模塊的設(shè)計(jì)分析4</p><p> 四、所定義的函數(shù)及其說明4</p><p> 五、例舉特色算法5</p><p> 六、存在問題
3、與不足及對(duì)策6</p><p><b> 七、使用說明6</b></p><p> 八、程序運(yùn)行結(jié)果6</p><p><b> 九、程序源代碼9</b></p><p><b> 需求分析</b></p><p> 現(xiàn)代化社會(huì)中,人們
4、的日期和時(shí)間觀念日益加強(qiáng);制作一個(gè)小巧而精確的萬年歷,有助于幫助人們對(duì)于日程管理的安排。這個(gè)萬年歷系統(tǒng)就是為此而為各類人群而誕生的。</p><p><b> 系統(tǒng)總框架圖</b></p><p><b> 圖1</b></p><p><b> 每個(gè)模塊的設(shè)計(jì)分析</b></p>
5、<p> 輸入年并查看該年的每個(gè)月份的日歷</p><p> 系統(tǒng)提示用戶進(jìn)行數(shù)字功能選擇和輸入所要查看的年份,并顯示該年份12個(gè)月的日歷,且是否是閏年。</p><p> 輸入年月并查看該月份的日歷</p><p> 系統(tǒng)提示用戶進(jìn)行數(shù)字功能選擇和輸入所要查看的年份中的月份,并顯示該月的日歷,且2月有無29日。</p><p
6、> 輸入年月日并查看該日是星期幾</p><p> 系統(tǒng)提示用戶進(jìn)行數(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(); //打印日期對(duì)應(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(); //計(jì)算從0年以來有多少天</p><p> }//end main</p><p> //類
11、PerpetualCalendar的成員函數(shù)</p><p> void PerpetualCalendar::setDate() //改變?nèi)掌?lt;/p><p> int PerpetualCalendar::getWeek() //用于計(jì)算所輸入的年月日的星期數(shù),返回0到6中的一個(gè)數(shù)字</p><p> else
12、 leapYear="(非閏年)";</p><p> cout<<endl<<" "<<"公元"<<year<<"年"<<month<<"月"<<leapYear<<endl; //輸出標(biāo)
13、題</p><p> PerpetualCalendar::PerpetualCalendar()//默認(rèn)構(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() //用于計(jì)算所輸入的年月日從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(); //計(jì)算從0年以來有多少天</p><p><b> };</b></p&
20、gt;<p> int PerpetualCalendar::getWeek() //用于計(jì)算所輸入的年月日的星期數(shù),返回0到6中的一個(gè)數(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() //用于計(jì)算所輸入的年月日從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> 六、存在問題與不足及對(duì)策</p><p> 由于設(shè)計(jì)者水平有限及時(shí)間等方面的原因,該系統(tǒng)的功能比較簡單,查錯(cuò)能力也不強(qiáng),對(duì)于一些不正確的輸入可能會(huì)造成一些難以預(yù)料的結(jié)果,因此,請(qǐng)不要故意輸入錯(cuò)誤信息。這些不足請(qǐng)老師多多諒解。今后設(shè)計(jì)者會(huì)更多的學(xué)習(xí)編程技巧,不斷的提高程序設(shè)計(jì)水平。</p><p> 而且大家都是中國人,在編寫萬年歷的
24、同時(shí)本應(yīng)該也將傳統(tǒng)的農(nóng)歷信息和節(jié)氣節(jié)日編寫進(jìn)去,可由于對(duì)于傳統(tǒng)文化了解不深,以至無法編寫,今后設(shè)計(jì)者會(huì)更多了解此方面內(nèi)容,以彌補(bǔ)此次編程所造成的遺憾。</p><p><b> 七、使用說明</b></p><p> 在c++的vc 6.0編譯環(huán)境中進(jìn)行</p><p><b> 程序運(yùn)行結(jié)果</b></p&g
25、t;<p><b> 運(yùn)行操作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> 運(yùn)行操作2</b></p><p><b> 圖7</b></p><p><b> 圖8</b></p><p><b> 運(yùn)行操作3</b&g
27、t;</p><p><b> 圖9</b></p><p><b> 圖10</b></p><p><b> 運(yùn)行操作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、 //打印日期對(duì)應(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(); //計(jì)算從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() //用于計(jì)算所輸入的年月日的星期數(shù),返回0到6中的一個(gè)數(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; //輸出標(biāo)題</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.輸入年月日,查詢?cè)撊諡樾瞧趲?quot;<<endl</p><p> <<"4.退出"<<endl;</p><p>
84、; cout<<endl<<"請(qǐng)輸入數(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<<"錯(cuò)誤!"<<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()//默認(rèn)構(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() //用于計(jì)算所輸入的年月日從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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 萬年歷課程設(shè)計(jì)
- 萬年歷課程設(shè)計(jì)
- 萬年歷課程設(shè)計(jì)
- 萬年歷課程設(shè)計(jì)
- 萬年歷課程設(shè)計(jì)
- 萬年歷課程設(shè)計(jì)
- 萬年歷課程設(shè)計(jì)
- java萬年歷課程設(shè)計(jì)
- 萬年歷課程設(shè)計(jì)報(bào)告
- 數(shù)字萬年歷課程設(shè)計(jì)
- java課程設(shè)計(jì)--萬年歷
- 萬年歷課程設(shè)計(jì)論文
- 課程設(shè)計(jì)-萬年歷系統(tǒng)
- 萬年歷課程設(shè)計(jì)報(bào)告
- 數(shù)碼萬年歷課程設(shè)計(jì)
- 萬年歷課程設(shè)計(jì).doc
- java課程設(shè)計(jì)--萬年歷設(shè)計(jì)
- dsp課程設(shè)計(jì)-萬年歷設(shè)計(jì)
- 編寫萬年歷系統(tǒng)課程設(shè)計(jì)
- c++萬年歷課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論