版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 《高級(jí)語言程序設(shè)計(jì)》</p><p><b> 課程設(shè)計(jì)說明書</b></p><p> 設(shè)計(jì)題目:萬年歷程序設(shè)計(jì)</p><p><b> 班 級(jí): </b></p><p> 學(xué) 號(hào): </p><p> 姓 名:
2、 </p><p><b> 完成日期: </b></p><p><b> 一:課程設(shè)計(jì)目的</b></p><p> 《高級(jí)語言程序設(shè)計(jì)》課程設(shè)計(jì)是電子信息、光信息專業(yè)以及物理學(xué)專業(yè)集中實(shí)踐性環(huán)節(jié)之一,是學(xué)習(xí)完《高級(jí)語言程序設(shè)計(jì)》課程后進(jìn)行的一次全面的綜合練習(xí),其目的在于加深對(duì)程序設(shè)計(jì)基本知識(shí)的理
3、解,掌握使用C語言進(jìn)行模塊化軟件設(shè)計(jì)的基本方法,提高通過編寫程序解決實(shí)際問題的能力,為今后從事設(shè)計(jì)工作和后續(xù)各種編程課程的學(xué)習(xí)打好基礎(chǔ)。</p><p><b> 二:需求分析</b></p><p><b> 題目:</b></p><p> 要求:輸入年份和月份,自動(dòng)輸出該月的日歷,清楚的顯示每一天是星期幾,輸入
4、年份,月份和具體日期能確定某天是星期幾。</p><p> 萬年歷是采用數(shù)字電路實(shí)現(xiàn)對(duì).時(shí),分,秒.數(shù)字顯示的計(jì)時(shí)裝置,廣泛用于個(gè)人家庭,車站, 碼頭辦公室等公共場(chǎng)所,成為人們常生活中不可少的必需品,由于數(shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛應(yīng)用,使得數(shù)字鐘的精度,遠(yuǎn)遠(yuǎn)超過老式鐘表, 鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大的方便,而且大大地?cái)U(kuò)展了鐘表原先的報(bào)時(shí)功能。</p><p>
5、諸如定時(shí)自動(dòng)報(bào)警、按時(shí)自動(dòng)打鈴、時(shí)間程序自動(dòng)控制、定時(shí)廣播、自動(dòng)起閉路燈、定時(shí)開關(guān)烘箱、通斷動(dòng)力設(shè)備、甚至各種定時(shí)電氣的自動(dòng)啟用等,但是所有這些,都是以鐘表數(shù)字化為基礎(chǔ)的。因此,研究萬年歷及擴(kuò)大其應(yīng)用,有著非?,F(xiàn)實(shí)的意義。它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),對(duì)于數(shù)字電子萬年歷采用直觀的數(shù)字顯示,可以同時(shí)顯示年、月、日、周日、時(shí)、分、秒等信息,還具有時(shí)間校準(zhǔn)等功能。</p><p> 綜上所述此萬年歷具
6、有讀取方便、顯示直觀、功能多樣、電路簡(jiǎn)潔、成本低廉等諸多優(yōu)點(diǎn),符合電子儀器儀表的發(fā)展趨勢(shì),具有廣闊的市場(chǎng)前景。</p><p><b> 三:概要設(shè)計(jì)</b></p><p><b> 1-判斷是否為閏年</b></p><p> 計(jì)算所輸入的年份是否可被4整除,若不能被整除,為平年。若可被4整除,計(jì)算此年份能否被1
7、00整除,不能被100整除則為閏年。既能被4整除,也能被100整除的年份,若也能被400整除,則為閏年,否則為平年。閏年366天,平年365天</p><p><b> 2-主要設(shè)計(jì)思路</b></p><p><b> 四:詳細(xì)設(shè)計(jì)</b></p><p> 源程序:#include <stdio.h>
8、</p><p> #include <stdlib.h></p><p> void DayOfWeek() </p><p><b> { </b></p><p> int rtnDay;</p><p> int y,m,d;</p><p
9、><b> char ch;</b></p><p><b> while (1)</b></p><p><b> {</b></p><p> printf("請(qǐng)輸入年月日(xxxx,xx,xx): ");</p><p> scanf(
10、"%d,%d,%d", &y, &m, &d);</p><p> fflush(stdin);</p><p> rtnDay = (3*y-(7*(y+(m+9)/12))/4+(23*m)/9+d+17-((y+(m<3?-1:0))/100+1)*3/4) % 7;</p><p> printf(&q
11、uot;%04d年%02d月%02d日 是 星期%d\n", y, m, d, rtnDay?rtnDay:7);</p><p> printf("繼續(xù)查詢(y/n)");</p><p> ch = getchar();</p><p> if(ch != 'y' && ch != 'Y
12、')</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> void GetMonth(int D, int md, int n)</p><p>&
13、lt;b> {</b></p><p> int N ,m,d,y,c,Wd;</p><p> int i,maxday,i1; </p><p> if(md>=13||md<=0) </p><p> printf("HAVE WRONG!"); </p><
14、;p><b> else</b></p><p><b> {</b></p><p> for(i1=0;;md++,i1++) </p><p><b> {</b></p><p> if(md==0) </p><p><b
15、> { </b></p><p><b> md=12; </b></p><p><b> D-=1; </b></p><p><b> } </b></p><p><b> else </b></p>&l
16、t;p> if(md==13) </p><p><b> {</b></p><p><b> md=1; </b></p><p><b> D+=1; </b></p><p><b> } </b></p><p
17、><b> m=md; </b></p><p> printf("\n============%d,%2d============\n",D,md); </p><p> if(0<m&&m<=12) </p><p><b> { </b></p>
18、;<p> switch(m) </p><p><b> { </b></p><p> case 1:maxday=31;break; </p><p> case 2:if(D%4==0&&D%100!=0||D%400==0) </p><p> maxday=29; &l
19、t;/p><p><b> else </b></p><p> maxday=28; </p><p><b> break; </b></p><p> case 3:maxday=31;break; </p><p> case 4:maxday=30;break
20、; </p><p> case 5:maxday=31;break; </p><p> case 6:maxday=30;break; </p><p> case 7:maxday=31;break; </p><p> case 8:maxday=31;break; </p><p> case 9:
21、maxday=30;break; </p><p> case 10:maxday=31;break; </p><p> case 11:maxday=30;break; </p><p> case 12:maxday=31;break; </p><p> default:printf("HAVE WRONG"
22、;); </p><p><b> } </b></p><p> if(0<m&&m<=2) </p><p><b> { </b></p><p><b> N=D-1; </b></p><p><b&g
23、t; m=m+10; </b></p><p><b> } </b></p><p><b> else </b></p><p><b> { </b></p><p><b> N=D; </b></p><
24、p><b> m=m-2; </b></p><p><b> } </b></p><p><b> c=N/100; </b></p><p><b> y=N%100; </b></p><p> Wd=((1+(13*m-1)/5+
25、y+y/4+c/4-2*c)%7+7)%7; </p><p> printf(" SUN MOU TUE WED TUR FRI SAT\n"); </p><p> for(i=0;i<Wd;i++) </p><p> printf("%4c",' '); </p><p&
26、gt; for(d=1;d<=maxday;d++) </p><p><b> { </b></p><p> printf("%4d",d); </p><p> Wd=(Wd+1)%7; </p><p> if(Wd==0) </p><p> pri
27、ntf("\n"); </p><p><b> } </b></p><p><b> } </b></p><p><b> else </b></p><p> printf("HAVE WRONG!"); </p&g
28、t;<p> if(i1==n) </p><p><b> break; </b></p><p><b> } </b></p><p><b> } </b></p><p><b> }</b></p><
29、;p> void MonthOfYear()</p><p><b> {</b></p><p><b> char ch;</b></p><p><b> int y, m;</b></p><p><b> while (1)</b>
30、;</p><p><b> {</b></p><p> printf("請(qǐng)輸入年月(xxxx,xx): ");</p><p> scanf("%d,%d", &y, &m);</p><p> fflush(stdin);</p><
31、;p> GetMonth(y, m, 0);</p><p> printf("\n繼續(xù)查詢(y/n)");</p><p> ch = getchar();</p><p> if(ch != 'y' && ch != 'Y')</p><p><b&g
32、t; break;</b></p><p><b> }</b></p><p><b> }</b></p><p> void GetYear()</p><p><b> {</b></p><p><b> ch
33、ar ch;</b></p><p><b> int y;</b></p><p><b> while (1)</b></p><p><b> {</b></p><p> printf("請(qǐng)輸入年: ");</p>
34、<p> scanf("%d", &y);</p><p> fflush(stdin);</p><p> GetMonth(y, 1, 11);</p><p> printf("\n繼續(xù)查詢(y/n)");</p><p> ch = getchar();</p&
35、gt;<p> if(ch != 'y' && ch != 'Y')</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p>
36、; int main() </p><p><b> {</b></p><p><b> char ch;</b></p><p><b> while(1)</b></p><p><b> {</b></p><p>
37、; system("cls");</p><p> printf("1.查詢星期\n");</p><p> printf("2.查詢?cè)路輁n");</p><p> printf("3.顯示一年\n");</p><p> printf("4
38、.退出程序\n");</p><p> ch = getchar();</p><p> fflush(stdin);</p><p> switch(ch)</p><p><b> {</b></p><p><b> case '1':</
39、b></p><p> DayOfWeek();</p><p><b> break;</b></p><p><b> case '2':</b></p><p> MonthOfYear();</p><p><b> brea
40、k;</b></p><p><b> case '3':</b></p><p> GetYear();</p><p><b> break;</b></p><p><b> case '4':</b></p>
41、;<p> printf("是否退出(y/n)");</p><p> ch = getchar();</p><p> fflush(stdin);</p><p> if(ch == 'y' || ch == 'Y')</p><p><b> exit
42、(0);</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b>
43、; 五:運(yùn)行效果及分析</b></p><p><b> 1 登錄界面</b></p><p> 輸入3,通過輸入年份可顯示一年每個(gè)月份的日歷;輸入2,通過輸入年份和月份(中間以空格分開)可顯示該月的日歷;若輸入1,通過輸入年份月份和日期(中間以逗號(hào)分開)可顯示該日的星期;輸入4,則退出查詢系統(tǒng)</p><p><b&g
44、t; 2查詢星期</b></p><p> 輸入1后回車,然后輸入具體的年月日可查出該天為星期幾</p><p><b> 3查詢?cè)職v</b></p><p> 輸入2回車,然后輸入年月可顯示該月月歷</p><p><b> 4顯示一年</b></p><
45、p> 輸入3后回車,輸入一個(gè)有效年份可顯示該年的十二個(gè)月的月歷。</p><p><b> 六:課程設(shè)計(jì)心得</b></p><p> 通過本次課程設(shè)計(jì)我第一次通過自己的實(shí)踐對(duì)書本上的知識(shí)進(jìn)行了與生活相關(guān)的運(yùn)用。在這個(gè)程序中,主要應(yīng)用了這學(xué)期所學(xué)習(xí)的循環(huán),條件語句,數(shù)組以及調(diào)用函數(shù)。這些知識(shí)的應(yīng)用使我對(duì)課本內(nèi)容的認(rèn)識(shí)得到了加深。</p>&l
46、t;p> 在編寫程序的過程中,也出現(xiàn)了很多錯(cuò)誤。比如程序語句錯(cuò)誤導(dǎo)致檢測(cè)時(shí)連續(xù)報(bào)錯(cuò);函數(shù)語句編寫錯(cuò)誤導(dǎo)致輸出結(jié)果與實(shí)際不符等。出現(xiàn)這些情況后,通過對(duì)一些新知識(shí)的學(xué)習(xí)和對(duì)網(wǎng)上相關(guān)資料的閱覽,我發(fā)現(xiàn)了自己的程序的問題所在并進(jìn)行了改正。最后得到了正確的結(jié)果。</p><p> 在程序的編寫完成后,我按照要求對(duì)程序進(jìn)行了拓展。在輸出年歷的基礎(chǔ)上增加了月歷及確定日期的輸出。經(jīng)過這一次的課程設(shè)計(jì)我再一次清楚地認(rèn)識(shí)到
47、了編譯的重要性,雖然課程結(jié)業(yè)了,但我們?nèi)匀灰粩嗟膶W(xué)習(xí)這一方面的知識(shí),只有這樣我們才能夠成為一個(gè)出色的大學(xué)生!</p><p> 參考文獻(xiàn):《c語言程序設(shè)計(jì)教程》第三版 譚浩強(qiáng)</p><p> 《C語言程序設(shè)計(jì)》.北京:清華大學(xué)出版社. 李澤中孫紅艷主編.</p><p> 《.C語言程序設(shè)計(jì)教程[M]》清華大學(xué)出
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于fpga的萬年歷程序設(shè)計(jì)
- 萬年歷課程設(shè)計(jì)
- 萬年歷課程設(shè)計(jì)
- 萬年歷課程設(shè)計(jì)
- 萬年歷課程設(shè)計(jì)
- 萬年歷課程設(shè)計(jì)
- 萬年歷課程設(shè)計(jì)
- 萬年歷課程設(shè)計(jì)
- 萬年歷java課程設(shè)計(jì)說明書
- 萬年歷課程設(shè)計(jì)--萬年歷電子時(shí)鐘
- 數(shù)字萬年歷課程設(shè)計(jì)
- java課程設(shè)計(jì)--萬年歷
- java萬年歷課程設(shè)計(jì)
- 萬年歷課程設(shè)計(jì)報(bào)告
- 萬年歷課程設(shè)計(jì)論文
- 課程設(shè)計(jì)-萬年歷系統(tǒng)
- 萬年歷課程設(shè)計(jì)報(bào)告
- 面向?qū)ο蟪绦蛘n程設(shè)計(jì)---萬年歷系統(tǒng)
- 數(shù)碼萬年歷課程設(shè)計(jì)
- 萬年歷課程設(shè)計(jì).doc
評(píng)論
0/150
提交評(píng)論