版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> 課程設(shè)計(jì)題目:年歷顯示</p><p><b> 學(xué)生姓名: </b></p><p> 專 業(yè):計(jì)算機(jī)科學(xué)與技術(shù)</p><p> 班 級(jí):10204101</p><p><b
2、> 指導(dǎo)教師: </b></p><p> 2011年 5月 4 日</p><p><b> 課程設(shè)計(jì)目的</b></p><p> 1、設(shè)計(jì)年歷顯示程序,方便查詢?nèi)諝v。</p><p> 2、培養(yǎng)學(xué)生用程序解決實(shí)際問(wèn)題的能力和興趣。</p><p> 3、加深對(duì)C
3、程序設(shè)計(jì)的理解,掌握程序設(shè)計(jì)的一般方法。</p><p><b> 課程設(shè)計(jì)的要求 </b></p><p> 利用學(xué)到的編程知識(shí)和編程技巧,要求學(xué)生:</p><p> 1、對(duì)系統(tǒng)進(jìn)行功能模塊分析、控制模塊分析正確</p><p> 2、系統(tǒng)設(shè)計(jì)要能完成題目所要求的功能。</p><p>
4、; 3、編程簡(jiǎn)練,可用,盡可能的使系統(tǒng)的功能更加完善和全面</p><p> 4、說(shuō)明書、流程圖要清楚。</p><p> 5、特別要求自己獨(dú)立完成。</p><p><b> 三、課程設(shè)計(jì)內(nèi)容</b></p><p> 1、課程設(shè)計(jì)的題目及簡(jiǎn)介</p><p><b> 年
5、歷顯示的程序</b></p><p> 要求:設(shè)計(jì)年歷顯示的程序可以為我們提供下列各項(xiàng)服務(wù):</p><p> 1、輸入一個(gè)年份,輸出是在屏幕上顯示該年的日歷。假定輸入的年份在1940-2040年之間。</p><p> 2、輸入年月,輸出該月的日歷。</p><p> 3、輸入年月日,輸出距今天還有多少天,星期幾,是否是
6、公歷節(jié)日。</p><p><b> 2、設(shè)計(jì)說(shuō)明</b></p><p> 根據(jù)c課程的要求,在盡量滿足題目的功能的前提下,采取結(jié)構(gòu)化程序設(shè)計(jì)思路,把問(wèn)題要求1、2和3分開(kāi)用函數(shù)實(shí)現(xiàn),用for語(yǔ)句和switch,print_其函數(shù)具體方法,把問(wèn)題一一解決,功能逐步實(shí)現(xiàn)。在輸入輸出方面控制的比較嚴(yán)格,盡量做到界面友好。</p><p>&l
7、t;b> 具體說(shuō)明如下:</b></p><p> 編寫年歷顯示的程序,首先定義如下變量,描述如下:</p><p><b> 數(shù)據(jù):</b></p><p> int monthdays; // 定義平年的每個(gè)月最后一天是幾號(hào)</p><p> int leapyearmonthdays;
8、 // 定義閏年的每個(gè)月最后一天是幾號(hào)</p><p> int year; // 編程序是哪年</p><p> int month; // 編程序是哪月</p><p> int day; // 編程序是哪天</p><p> int isweekday; // 定義日期</p><p>
9、;<b> 運(yùn)算:</b></p><p> void print_month(int y,int m); // 查詢?cè)路莸暮瘮?shù)</p><p> void print_year(int y); // 查詢年份的函數(shù)</p><p> int counterdays(int y,int m,int d); // 查詢距離今天的函
10、數(shù)</p><p> void setday(int y,int m,int d); // 設(shè)置日期的函數(shù)</p><p> 在主函數(shù)中,首先輸出提示用戶輸入本站所有航班信息,系統(tǒng)開(kāi)始記錄輸.在switch體中提示用戶進(jìn)行4種操作:1:查詢年歷,2查詢?cè)職v,3計(jì)算日期,4設(shè)置當(dāng)前日期(%d/%d/%d).特別說(shuō)明1,2,3,4每次運(yùn)行后,利用break語(yǔ)句返回到. switch體中繼續(xù)
11、提示用戶進(jìn)行4種操作,直到用戶輸入"任意鍵退出"以結(jié)束.</p><p> 進(jìn)過(guò)多次檢驗(yàn)與測(cè)試,并逐步完善,程序運(yùn)行正確。</p><p><b> 3、程序流程圖</b></p><p><b> 1程序總體流程</b></p><p> 程序總體流程說(shuō)明如下:<
12、/p><p> 1.程序開(kāi)始,用戶輸入命令進(jìn)行操作::請(qǐng)輸入要查詢的方式(1.查詢年歷2.查詢?cè)職v3.計(jì)算日期4.設(shè)置當(dāng)前日期(%d/%d/%d) 特別說(shuō)明1,2,3,4每次運(yùn)行后,利用break語(yǔ)句返回到. switch體中繼續(xù)提示用戶進(jìn)行4種操作,直到用戶輸入"Y鍵繼續(xù),任意鍵退出"以結(jié)束.</p><p><b> 見(jiàn)圖一:</b></
13、p><p> 按Y繼續(xù) 按Y繼續(xù)</p><p> temp=1 temp=2</p><p> temp= 3 temp=4</p><p> 任意鍵退出
14、 任意鍵退出</p><p> 圖一 (程序總體流程圖) </p><p> 2顯示查詢年歷信息流程</p><p> 當(dāng)用戶輸入命令為1時(shí),顯示本年所有月份的信息。當(dāng)查詢結(jié)束時(shí),返回用戶輸入命令進(jìn)行繼續(xù)操作。本流程圖與查詢年歷流程圖算法基本一致,所以就略去查詢?cè)職v具體流
15、程圖。</p><p><b> 按Y繼續(xù)</b></p><p><b> 任意鍵退出</b></p><p> 圖二(顯示本年所有的信息)</p><p> 3計(jì)算日期信息查詢流程</p><p> 當(dāng)用戶輸入命令為3時(shí),輸入要計(jì)算的日期信息。計(jì)算結(jié)束時(shí)返回用戶
16、輸入命令進(jìn)行繼續(xù)操作。本流程圖與設(shè)置當(dāng)前日期流程圖算法基本一致,所以就略去設(shè)置當(dāng)前日期具體流程圖。</p><p><b> 見(jiàn)圖三</b></p><p><b> 按Y繼續(xù)</b></p><p><b> 任意鍵退出</b></p><p> 圖三(計(jì)算日期信息查
17、詢)</p><p><b> 4、程序清單</b></p><p> #include <stdio.h></p><p> int monthdays[12]={31,28,31,30,31,30,31,31,30,31,30,31};</p><p> int leapyearmonthdays
18、[12]={31,29,31,30,31,30,31,31,30,31,30,31};</p><p> int year=2011;</p><p> int month=4;</p><p> int day=26;</p><p> int isweekday(int y,int m,int d)</p><
19、p><b> {</b></p><p> int weekday;</p><p><b> if(m<3) </b></p><p><b> { </b></p><p><b> m+=12; </b></p>
20、<p><b> y--;</b></p><p><b> }</b></p><p> return weekday=(2+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;</p><p><b> }</b></p><p> i
21、nt isleapyear(int y)</p><p><b> {</b></p><p> if (y%400==0 || y%100!=0 && y%4==0)</p><p><b> return 1;</b></p><p><b> return 0
22、;</b></p><p><b> }</b></p><p> void print_month(int y,int m)</p><p><b> {</b></p><p><b> int A;</b></p><p>&l
23、t;b> int i=0;</b></p><p> int startday=isweekday(y,m,1);</p><p> printf("\n┏==========%4d.%02d===========┓\n",y,m);</p><p> printf("┇SUN MON TUE WED THU
24、FRI SAT ┇\n┇");</p><p> for(i=0;i<startday;i++)</p><p><b> {</b></p><p> printf(" ");</p><p><b> }</b></p><p
25、> if(isleapyear(y))</p><p><b> {</b></p><p> for(i=1;i<=leapyearmonthdays[m-1];i++)</p><p><b> { </b></p><p> printf("%3d "
26、,i); </p><p> if((startday+i)%7==0)</p><p> printf("┇\n┇"); </p><p><b> }</b></p><p> for(i=1;i<=leapyearmonthdays[m-1];i++)</p>
27、<p> A=27-((startday+i)%7*4);</p><p><b> {</b></p><p> for(i=0;i<=A;i++)</p><p> printf(" ");</p><p><b> }</b></p>
28、<p> printf("┇");</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> for(i=1;i<=monthdays[m-1];i+
29、+)</p><p><b> {</b></p><p> printf("%3d ",i); </p><p> if((startday+i)%7==0)</p><p> printf("┇\n┇");</p><p><b>
30、}</b></p><p> for(i=1;i<=monthdays[m-1];i++)</p><p> A=27-((startday+i)%7*4);</p><p><b> {</b></p><p> for(i=0;i<=A;i++)</p><p>
31、; printf(" ");</p><p><b> }</b></p><p> printf("┇");</p><p><b> }</b></p><p> printf("\n┗-------------------------
32、---┛\n");</p><p><b> }</b></p><p> void print_year(int y)</p><p><b> {</b></p><p><b> int i;</b></p><p> for(
33、i=1;i<=12;i++)</p><p><b> { </b></p><p> print_month(y,i);</p><p><b> }</b></p><p><b> }</b></p><p> int counte
34、rdays(int y,int m,int d)</p><p><b> {</b></p><p> int temp=0;</p><p> int days=0;</p><p><b> int i;</b></p><p> for(i=year+1;i
35、<y;i++)</p><p><b> {</b></p><p> if(isleapyear(i))</p><p><b> temp++;</b></p><p><b> }</b></p><p> if(y-year>
36、;=1)</p><p><b> {</b></p><p> if(isleapyear(year) && month<=2)</p><p><b> temp++;</b></p><p> if(isleapyear(y) && m>2
37、||(m==2 && d==29))</p><p><b> temp++;</b></p><p> for(i=month+1;i<=12;i++)</p><p><b> {</b></p><p> days+=monthdays[i-1];</p&g
38、t;<p><b> }</b></p><p> for(i=1;i<m;i++)</p><p><b> {</b></p><p> days+=monthdays[i-1];</p><p><b> }</b></p>&
39、lt;p> days+=(y-year-1)*365;</p><p><b> }</b></p><p> if(!(year==y && month==m))</p><p><b> {</b></p><p> days+=monthdays[month-1
40、]-day+d;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> days+=d-day;</p><p><b> }</b>&l
41、t;/p><p> days+=temp;</p><p> printf("\n今天距%d/%d/%d還有%d天\n",y,m,d,days);</p><p> return days;</p><p><b> }</b></p><p> void setday(
42、int y,int m,int d)</p><p><b> {</b></p><p><b> year=y;</b></p><p><b> month=m;</b></p><p><b> day=d;</b></p>
43、<p><b> }</b></p><p> void main()</p><p><b> {</b></p><p><b> int temp;</b></p><p> int y,m,d;</p><p><b&g
44、t; char ch;</b></p><p><b> do{</b></p><p> printf("請(qǐng)輸入要查詢的方式(1.查詢年歷2.查詢?cè)職v3.計(jì)算日期4.設(shè)置當(dāng)前日期(%d/%d/%d)):",year,month,day);</p><p> scanf("%d",&a
45、mp;temp);</p><p> switch(temp)</p><p><b> {</b></p><p><b> case 1:</b></p><p> printf("請(qǐng)輸入年份(ep:2011):");</p><p> sc
46、anf("%d",&y);</p><p> print_year(y);</p><p><b> break;</b></p><p><b> case 2:</b></p><p> printf("請(qǐng)輸入年月(ep:2011/4):"
47、);</p><p> scanf("%d/%d",&y,&m);</p><p> print_month(y,m);</p><p><b> break;</b></p><p><b> case 3:</b></p><p&g
48、t; printf("請(qǐng)輸入日期(ep:2011/4/26):");</p><p> scanf("%d/%d/%d",&y,&m,&d);</p><p> counterdays(y,m,d);</p><p><b> break;</b></p>&
49、lt;p><b> case 4:</b></p><p> printf("請(qǐng)輸入當(dāng)天日期(ep:2011/4/26):");</p><p> scanf("%d/%d/%d",&y,&m,&d);</p><p> setday(y,m,d);</p>
50、;<p><b> break;</b></p><p><b> default:</b></p><p><b> break;</b></p><p><b> }</b></p><p> printf("\n\n
51、是否繼續(xù)?(Y鍵繼續(xù),任意鍵退出)");</p><p> getchar();</p><p> scanf("%c",&ch);</p><p> }while(ch=='y' || ch=='Y');</p><p><b> }</b>
52、</p><p><b> 程序運(yùn)行結(jié)果</b></p><p><b> 1、查詢年歷:</b></p><p><b> 2、查詢?cè)職v:</b></p><p><b> 3、計(jì)算日期:</b></p><p><
53、b> 4、設(shè)置當(dāng)前:</b></p><p> 出現(xiàn)的問(wèn)題及解決方法</p><p> 不能輸出界面中的框的倒數(shù)二行的最后一個(gè)“┇”,經(jīng)過(guò)仔細(xì)的討論采用算術(shù)算出空出多少空格,再用for語(yǔ)句輸出多少空格,再在后面加上“┇”就可以了。</p><p><b> 四、課程設(shè)計(jì)總結(jié)</b></p><p&g
54、t; 經(jīng)過(guò)這幾天的C課程設(shè)計(jì),讓我知道了做課程設(shè)計(jì)的一般方法,通過(guò)各種努力終于完成了設(shè)計(jì)要求.這次課程設(shè)計(jì)基本上含蓋了大學(xué)一年級(jí)學(xué)習(xí)到的C語(yǔ)言知識(shí)點(diǎn),課設(shè)題目要求不僅要求對(duì)課本知識(shí)有較深刻的了解,同時(shí)要求程序設(shè)計(jì)者有較強(qiáng)的思維和動(dòng)手能力。這次課設(shè)使我了解我編程思想和編程技巧,也認(rèn)識(shí)了軟件生命周期的各個(gè)環(huán)境,包括構(gòu)思、設(shè)計(jì)、編寫、調(diào)試、修訂。</p><p> 獨(dú)立做課程設(shè)計(jì)不僅讓我修補(bǔ)了以前學(xué)習(xí)的漏洞,也讓我
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 計(jì)算機(jī)科學(xué)與技術(shù)課程設(shè)計(jì)
- 醫(yī)院住院管理系統(tǒng)-計(jì)算機(jī)科學(xué)與技術(shù)課程設(shè)計(jì)報(bào)告
- 住院病人呼喊器-計(jì)算機(jī)科學(xué)與技術(shù)課程設(shè)計(jì)報(bào)告
- 計(jì)算機(jī)控制技術(shù)課程設(shè)計(jì)
- 計(jì)算機(jī)控制技術(shù)課程設(shè)計(jì)
- 計(jì)算機(jī)控制技術(shù)課程設(shè)計(jì)
- 計(jì)算機(jī)控制技術(shù)課程設(shè)計(jì)
- 計(jì)算機(jī)網(wǎng)絡(luò)管理技術(shù)課程設(shè)計(jì)報(bào)告
- 計(jì)算機(jī)控制技術(shù)課程設(shè)計(jì) (2)
- 控制儀表與計(jì)算機(jī)控制技術(shù)課程設(shè)計(jì)
- 計(jì)算機(jī)控制與接口技術(shù)課程設(shè)計(jì)
- 計(jì)算機(jī)控制技術(shù)課程設(shè)計(jì)--油庫(kù)計(jì)算機(jī)監(jiān)控系統(tǒng)硬件設(shè)計(jì)
- 計(jì)算機(jī)控制技術(shù)課程設(shè)計(jì)--流速自動(dòng)采集及顯示器設(shè)計(jì)
- 計(jì)算機(jī)控制技術(shù)課程設(shè)計(jì)-溫度采集
- 2011級(jí)計(jì)算機(jī)控制技術(shù)課程設(shè)計(jì)報(bào)告書
- 2011級(jí)計(jì)算機(jī)控制技術(shù)課程設(shè)計(jì)報(bào)告書
- 課程設(shè)計(jì)-年歷顯示
- 計(jì)算機(jī)控制技術(shù)課程設(shè)計(jì)---交通燈
- java課程設(shè)計(jì)-模擬科學(xué)計(jì)算機(jī)
- 計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)畢課程設(shè)計(jì)報(bào)告-物流公司管理系統(tǒng)
評(píng)論
0/150
提交評(píng)論