版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 課程設(shè)計(jì)名稱:C++萬年歷設(shè)計(jì)</p><p> 使用工具軟件:Microsoft visual C++</p><p><b> 課程設(shè)計(jì)內(nèi)容簡介</b></p><p> 1、以開關(guān)語句進(jìn)行執(zhí)行功能的選擇,這些功能分別是:</p><p><b> 判斷閏年;</b>
2、;</p><p><b> 判斷某天是星期幾;</b></p><p> 判斷某年的隸屬生肖;</p><p><b> 輸出某年的日歷; </b></p><p><b> 輸出某月的日期;</b></p><p><b> 退出
3、系統(tǒng);</b></p><p> 2、 建立類wnl,定義類的成員函數(shù);</p><p> void isleapyear(); //判斷閏年,用于輸出判斷結(jié)果,以流的形式</p><p> bool isleap(int year); //判斷閏年,返回判斷結(jié)果,用于計(jì)算天數(shù)
4、 </p><p> int getdays(int year,int month,int day); //獲取據(jù)第一天天數(shù)</p><p> void weekdays(int year,int month,int day); //獲取星期幾 </p><p
5、> void printyear(int year);//輸出年的日歷</p><p> void printyearmonth(int year,int month); //輸出某年某月的日歷</p><p> void animal(int year); //判斷某年的生肖</p><p> int getyear
6、(){return Year;} //返回私有成員的值</p><p> int getmonth(){return Month;}</p><p> int getday(){return Day;}</p><p> 3、定義私有成員:int Year,Month,Day;</p><p> 4、定義類的對象:_
7、wnl;</p><p> 5、為類的成員函數(shù)填寫代碼,滿足功能實(shí)現(xiàn);</p><p> 6、運(yùn)行環(huán)境:控制臺應(yīng)用程序的源程序;</p><p><b> 得意之處:</b></p><p> 可以滿足多功能實(shí)現(xiàn),可以循環(huán)執(zhí)行功能;</p><p> 可以選擇每行輸出的月份數(shù);</
8、p><p><b> 有歡迎界面;</b></p><p> 客戶輸入錯(cuò)誤會有提示;</p><p> 使用了C語言的流的形式,判斷閏年,提高執(zhí)行速度;</p><p> 使用I/O流控制頭文件iomanip.h控制月份日歷的輸出,更加整齊;</p><p><b> 創(chuàng)意的技術(shù)實(shí)
9、現(xiàn)</b></p><p><b> 主函數(shù)流程</b></p><p><b> 判斷閏年</b></p><p><b> 獲取天數(shù)</b></p><p><b> 輸出年份</b></p><p> 課
10、程設(shè)計(jì)中目前存在的問題:</p><p> 無法在歡迎頁面插入字符畫;</p><p> 設(shè)計(jì)實(shí)踐過程中的自我感受</p><p> 這是我第一次編寫如此長的代碼,從網(wǎng)上如同大海撈針?biāo)频膶ふ揖帉懛椒ǎ翠佁焐w地的長代碼,還有的程序是錯(cuò)的。輸入的時(shí)候,沒有小工具。在看著自己熬通宵打出的代碼,一大串的錯(cuò)誤,真的有些泄氣。改對了執(zhí)行輸出結(jié)果還是錯(cuò)的,只好重新思考算法
11、。不過通過這次編程我真的學(xué)會了好多,比如其他的頭文件的功能;setfil(‘’)設(shè)置填充字符;setw()定義字段長度……也讓我真正體會到了編程的作用,愛上了編程。</p><p><b> 參考文獻(xiàn):</b></p><p> [1]呂鳳翥,《C++語言程序設(shè)計(jì)》,清華大學(xué)出版社。</p><p><b> 實(shí)驗(yàn)代碼:<
12、/b></p><p><b> //萬年歷</b></p><p> #include<iostream.h></p><p> #include<stdio.h></p><p> #include<iomanip.h>
13、 </p><p> int dayofmonth[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; //整形數(shù)組用于儲存每月的天數(shù)</p><p> char monthname[13][5]={"","Jan","Feb","Mar",&qu
14、ot;Apr","May","June","July","Aug","Seb","Oct","Nov","Dec"}; //字符型數(shù)組用于儲存月份名 第一個(gè)數(shù)字用于表示字符串?dāng)?shù)(相當(dāng)于行) 第二個(gè)用于表示字符串長度(相當(dāng)于列)</p><p>
15、<b> class wnl</b></p><p><b> {</b></p><p><b> public:</b></p><p> void isleapyear(int year);
16、//判斷閏年,用于輸出判斷結(jié)果,以流的形式</p><p> bool isleap(int year); //判斷閏年,返回判斷結(jié)果,用于計(jì)算天數(shù) </p><p> int getdays(int year,int month,
17、int day); //獲取據(jù)第一天天數(shù)</p><p> void weekdays(int year,int month,int day); //獲取星期幾 </p><p> void printyear(int year); //輸出年的日歷</p><p>
18、; void printyearmonth(int year,int month); //輸出某年某月的日歷</p><p> void animal(int year); //判斷某年的生肖</p><p> int getyear(){return Year;}
19、 //返回私有成員的值</p><p> int getmonth(){return Month;}</p><p> int getday(){return Day;}</p><p><b> private:</b></p><p> int Year,Month,Day;</p><p
20、><b> }_wnl;</b></p><p> void main()</p><p><b> {</b></p><p> int choice,year,month,day;</p><p> cout<<" ~~歡迎來到萬年歷查詢系統(tǒng)~~&quo
21、t;<<endl<<endl;</p><p> cout<<"設(shè)計(jì)人:"<<endl;</p><p> cout<<" 天津職業(yè)技術(shù)師范大學(xué)\n\t\t\t設(shè)計(jì)人:張錦琪\n\n";</p><p><b> loop:&
22、lt;/b></p><p> cout<<" ╱請按序號輸入您要做的工作:╲"<<endl;</p><p> cout<<" ▏ 判斷閏年請按1; ▕"<<endl;</p><p> cout<<" ▏ 判斷某天是星
23、期幾請按2; ▕"<<endl;</p><p> cout<<" ▏判斷某年的隸屬生肖請按3; ▕"<<endl;</p><p> cout<<" ▏ 輸出某年的日歷請按4; ▕"<<endl;</p><p> cout<<
24、;" ▏ 輸出某月的日期請按5; ▕"<<endl;</p><p> cout<<" ╲ 如果您要退出系統(tǒng)請按0; ╱"<<endl;</p><p> cin>>choice;</p><p> switch(choice)</p><p
25、><b> {</b></p><p> case 0:return;</p><p><b> case 1:</b></p><p> cout<<"輸入一個(gè)年份格式如:xxxx"; </p><p
26、> cin>>year;</p><p> _wnl.isleapyear(year);break;</p><p><b> case 2:</b></p><p><b> {</b></p><p> cout<<"請輸入您要查詢的天數(shù) 格式如
27、xxxx xx xx";</p><p> cin>>year>>month>>day;</p><p> _wnl.weekdays(year,month,day);</p><p><b> }break;</b></p><p><b> case 3
28、:</b></p><p><b> {</b></p><p> cout<<"請輸入您要查詢的年份 格式如xxxx:";</p><p> cin>>year;</p><p> _wnl.animal (year);</p><p&
29、gt;<b> }break;</b></p><p><b> case 4:</b></p><p><b> {</b></p><p> cout<<"請輸入你要輸出的年份xxxx:";</p><p> cin>>
30、year;</p><p> _wnl.printyear(year);</p><p><b> }break;</b></p><p><b> case 5:</b></p><p><b> {</b></p><p> cout<
31、;<"請輸入您要輸出的年月,形如xxxx xx:";</p><p> cin>>year>>month;</p><p> _wnl.printyearmonth(year,month);</p><p><b> }break;</b></p><p> de
32、fault:cout<<"輸入錯(cuò)誤"<<endl;</p><p><b> }</b></p><p> cout<<"繼續(xù)查詢請輸 1 "<<endl<<"退出查詢請輸入字符"<<endl;</p><p>
33、;<b> int x;</b></p><p><b> cin>>x;</b></p><p><b> if(x==1)</b></p><p> goto loop;</p><p><b> }</b></p>
34、<p> void wnl::isleapyear(int year)</p><p><b> {</b></p><p> if(year>=1000&&year<=9999)</p><p> printf("%s\n",year%(year%100?4:400)?&qu
35、ot;no":"yes"); //以C語言流的形式判斷會更快一些,節(jié)省內(nèi)存</p><p><b> else </b></p><p> printf("%s\n","沒有按格式輸入");</p><p><b&g
36、t; }</b></p><p> bool wnl::isleap(int year)</p><p><b> {</b></p><p> if(year%400==0||(year%100!=0&&year%4==0))</p><p><b> return 1;
37、</b></p><p><b> else </b></p><p> return 0;</p><p><b> }</b></p><p> void wnl::weekdays(int year,int month,int day)</p><p
38、><b> {</b></p><p> if(year>=1000&&year<=9999)</p><p><b> {</b></p><p> if(month<=12&&month>=1)</p><p><b&g
39、t; {</b></p><p> int max=dayofmonth[month];</p><p> if(day>0&&day<max)</p><p><b> {</b></p><p> int s=getdays(year,month,day)%7;<
40、;/p><p><b> switch(s)</b></p><p><b> {</b></p><p> case 0:cout<<"Sunday"<<endl;break;</p><p> case 1:cout<<"Mo
41、nday"<<endl;break;</p><p> case 2:cout<<"Tuesday"<<endl;break;</p><p> case 3:cout<<"Wednesday"<<endl;break;</p><p> case 4
42、:cout<<"Thursday"<<endl;break;</p><p> case 5:cout<<"Friday"<<endl;break;</p><p> case 6:cout<<"Saturday"<<endl;</p>&l
43、t;p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><
44、p> cout<<"沒有按格式輸入"<<endl;</p><p><b> }</b></p><p> int wnl::getdays(int year,int month,int day)</p><p><b> {</b></p><
45、p> int i,sum=0;</p><p> for(i=1;i<year;i++)</p><p><b> {</b></p><p> if(isleap(i)) sum+=366;</p><p> else sum+=365;</p><p><b&g
46、t; }</b></p><p> if(isleap(year)) dayofmonth[2]=29;</p><p> for(i=1;i<month;i++) sum+=dayofmonth[i];</p><p><b> sum+=day;</b></p><p> return
47、 sum;</p><p><b> }</b></p><p> void wnl::animal(int year)</p><p><b> {</b></p><p> if(year>=1000&&year<=9999)</p><p
48、><b> {</b></p><p> int n=year%12;</p><p><b> switch(n)</b></p><p><b> {</b></p><p> case 0: cout<<"該年是猴年"<
49、;<endl; break;</p><p> case 1: cout<<"該年是雞年"<<endl; break;</p><p> case 2: cout<<"該年是狗年"<<endl; break;</p><p> case 3: cout<<
50、"該年是豬年"<<endl; break;</p><p> case 4: cout<<"該年是鼠年"<<endl; break;</p><p> case 5: cout<<"該年是牛年"<<endl; break;</p><p>
51、case 6: cout<<"該年是虎年"<<endl; break;</p><p> case 7: cout<<"該年是兔年"<<endl; break;</p><p> case 8: cout<<"該年是龍年"<<endl; break;<
52、;/p><p> case 9: cout<<"該年是蛇年"<<endl; break;</p><p> case 10: cout<<"該年是馬年"<<endl; break;</p><p> case 11: cout<<"該年是羊年"&
53、lt;<endl; break;</p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p> cout<<"沒有按格式輸入"<<endl;&l
54、t;/p><p><b> }</b></p><p> void wnl::printyear(int year)</p><p><b> {</b></p><p> if(year>=1000&&year<=9999)</p><p>
55、<b> {</b></p><p> cout<<"輸入一行輸出的月份數(shù):";</p><p> int choice;</p><p> cin>>choice;</p><p><b> int s;</b></p><
56、p> int a[3],b[3]; //b數(shù)組用來儲存每月的天數(shù) a數(shù)組用來臨時(shí)儲存那一月輸出到的日期</p><p> cout<<" year: "<<year<<endl;</p>
57、<p><b> int i=1;</b></p><p> for(i=1;i<=12/choice;i++) //計(jì)算縱向輸出幾個(gè)月</p><p><b> {</b></p><p> for(
58、int h=1;h<=choice;h++) //該循環(huán)用于輸出橫向月份名</p><p><b> {</b></p><p> int m=choice*(i-1)+h; //計(jì)
59、算月份</p><p> cout<<" "<<monthname[m]<<" ";</p><p><b> }</b></p><p> cout<<endl;</p><p> fo
60、r(h=1;h<=choice;h++)</p><p> cout<<"--------------------- ";</p><p> cout<<endl;</p><p> for(int j=0;j<choice;j++)</p><p><b> {&
61、lt;/b></p><p> cout<<"Su "<<"Mo "<<"Tu "<<"We "<<"Th "<<"Fr "<<"Sa "<<" "
62、;</p><p><b> }</b></p><p> cout<<endl;</p><p> for(j=0;j<choice;j++) //這個(gè)循環(huán)是為了輸出第一行,第一行都是單數(shù),所以提出來輸</p>
63、<p><b> {</b></p><p> int month;</p><p> month=choice*(i-1)+j+1; //計(jì)算月份</p><p> s=getdays(year,month,1);</p>&
64、lt;p> s=s%7; //獲取每月第一天</p><p> for(int m=0;m<s;m++)</p><p> cout<<" ";
65、 //輸出月前的空</p><p> if(isleap(year)) dayofmonth[2]=29;</p><p> b[j]=dayofmonth[month]; //月份天數(shù) b數(shù)組儲存一個(gè)月的天數(shù)</p><p> for(int i=
66、1;i<8-s;i++) //從一號開始輸出</p><p> cout<<setw(2)<<i<<" "; //最后那個(gè)空是為了讓一位數(shù)和兩位數(shù)對齊</p><p&g
67、t; a[j]=i; //a數(shù)組用來儲存每一行的日期素材</p><p> cout<<" "; //兩個(gè)月份之間的空隙</p><p
68、><b> } </b></p><p> cout<<endl;</p><p> for(int w=1;w<=5;w++) //一個(gè)月最多會在五個(gè)星期出現(xiàn)</p><p><b> {</b>
69、;</p><p> for(j=0;j<choice;j++) //輸出要求個(gè)數(shù)的月份</p><p><b> {</b></p><p><b> int w=1;</b></p><p>
70、for(w=1;w<=7;w++,a[j]++) //依次輸出日期</p><p><b> {</b></p><p> if(a[j]>b[j]) //如果那一行的日期數(shù)大于該月最大日期則
71、跳出</p><p><b> break;</b></p><p> cout<<setw(2)<<a[j]<<" ";</p><p><b> if(w==7)</b></p><p> cout<<"
72、"; //輸出每兩個(gè)月之間日期間的空隙</p><p><b> }</b></p><p> for(int n=1;a[j]>b[j],n<=8-w;n++) //月份</p><p
73、> cout<<" ";</p><p> if(a[j]>b[j]&&w!=8) //輸出月份結(jié)束后的空</p><p> cout<<" ";</p><p><b&g
74、t; }</b></p><p> cout<<endl; //為了美觀 空一行</p><p><b> }</b></p><p><b> }</b></p>&l
75、t;p><b> }</b></p><p><b> }</b></p><p> void wnl::printyearmonth(int year,int month)</p><p><b> {</b></p><p> if(year>=100
76、0&&year<=9999)</p><p><b> {</b></p><p> if(month<=12&&month>=1)</p><p><b> {</b></p><p> cout<<"
77、 "<<monthname[month]<<endl;</p><p> cout<<" ----------------------------------------"<<endl;</p><p> cout<<setw(6)<<"Sun&qu
78、ot;<<setw(6)<<"Mon"<<setw(6)<<"Two"<<setw(6)</p><p> <<"Wed"<<setw(6)<<"Thur"<<setw(6)<<"Fri"<
79、;<setw(6)<<"Sat"<<endl; //我覺得輸出這個(gè)可以定義一個(gè)數(shù)組,用循環(huán)來做,但這樣可能會使執(zhí)行速度變慢 </p><p> int number=getdays(year,month,1)%7; //第一天就一就相當(dāng)于有一天了</p><p> for(int k=0;k<number;k
80、++)</p><p> {cout<<setw(6)<<" ";}</p><p> int max=dayofmonth[month];</p><p> for(int j=1;j<=max;j++)</p><p><b> {</b></p>
81、<p> cout<<setw(6)<<j;</p><p> if((number+j)%7==0) //周六換行</p><p> cout<<endl;</p><p><b> }</b></p><p> cout<<
82、;endl<<endl<<endl;</p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p> cout<<"沒有按格式輸入"<
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c++課程設(shè)計(jì)--萬年歷
- 萬年歷c++課程設(shè)計(jì)
- 《c++課程設(shè)計(jì)》萬年歷
- 萬年歷c++課程設(shè)計(jì)
- c++課程設(shè)計(jì)報(bào)告---萬年歷系統(tǒng)
- c語言課程設(shè)計(jì)--萬年歷
- c語言課程設(shè)計(jì)--萬年歷
- 萬年歷c語言課程設(shè)計(jì)
- c語言課程設(shè)計(jì)--萬年歷
- 萬年歷課程設(shè)計(jì)--萬年歷電子時(shí)鐘
- 萬年歷課程設(shè)計(jì)
- 萬年歷課程設(shè)計(jì)
- 萬年歷課程設(shè)計(jì)
- 萬年歷課程設(shè)計(jì)
- 萬年歷課程設(shè)計(jì)
- 萬年歷課程設(shè)計(jì)
- 萬年歷課程設(shè)計(jì)
- c語言課程設(shè)計(jì)萬年歷系統(tǒng)
- C語言課程設(shè)計(jì)--萬年歷.doc
- c語音電子萬年歷課程設(shè)計(jì)
評論
0/150
提交評論