版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 課程設(shè)計報告</b></p><p> 課程設(shè)計題目:年歷顯示</p><p><b> 學(xué)生姓名: </b></p><p> 專 業(yè):計算機(jī)科學(xué)與技術(shù)</p><p> 班 級:10204101</p><p><b
2、> 指導(dǎo)教師: </b></p><p> 2011年 5月 4 日</p><p><b> 課程設(shè)計目的</b></p><p> 1、設(shè)計年歷顯示程序,方便查詢?nèi)諝v。</p><p> 2、培養(yǎng)學(xué)生用程序解決實(shí)際問題的能力和興趣。</p><p> 3、加深對C
3、程序設(shè)計的理解,掌握程序設(shè)計的一般方法。</p><p><b> 課程設(shè)計的要求 </b></p><p> 利用學(xué)到的編程知識和編程技巧,要求學(xué)生:</p><p> 1、對系統(tǒng)進(jìn)行功能模塊分析、控制模塊分析正確</p><p> 2、系統(tǒng)設(shè)計要能完成題目所要求的功能。</p><p>
4、; 3、編程簡練,可用,盡可能的使系統(tǒng)的功能更加完善和全面</p><p> 4、說明書、流程圖要清楚。</p><p> 5、特別要求自己獨(dú)立完成。</p><p><b> 三、課程設(shè)計內(nèi)容</b></p><p> 1、課程設(shè)計的題目及簡介</p><p><b> 年
5、歷顯示的程序</b></p><p> 要求:設(shè)計年歷顯示的程序可以為我們提供下列各項服務(wù):</p><p> 1、輸入一個年份,輸出是在屏幕上顯示該年的日歷。假定輸入的年份在1940-2040年之間。</p><p> 2、輸入年月,輸出該月的日歷。</p><p> 3、輸入年月日,輸出距今天還有多少天,星期幾,是否是
6、公歷節(jié)日。</p><p><b> 2、設(shè)計說明</b></p><p> 根據(jù)c課程的要求,在盡量滿足題目的功能的前提下,采取結(jié)構(gòu)化程序設(shè)計思路,把問題要求1、2和3分開用函數(shù)實(shí)現(xiàn),用for語句和switch,print_其函數(shù)具體方法,把問題一一解決,功能逐步實(shí)現(xiàn)。在輸入輸出方面控制的比較嚴(yán)格,盡量做到界面友好。</p><p>&l
7、t;b> 具體說明如下:</b></p><p> 編寫年歷顯示的程序,首先定義如下變量,描述如下:</p><p><b> 數(shù)據(jù):</b></p><p> int monthdays; // 定義平年的每個月最后一天是幾號</p><p> int leapyearmonthdays;
8、 // 定義閏年的每個月最后一天是幾號</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); // 查詢月份的函數(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)開始記錄輸.在switch體中提示用戶進(jìn)行4種操作:1:查詢年歷,2查詢月歷,3計算日期,4設(shè)置當(dāng)前日期(%d/%d/%d).特別說明1,2,3,4每次運(yùn)行后,利用break語句返回到. switch體中繼續(xù)
11、提示用戶進(jìn)行4種操作,直到用戶輸入"任意鍵退出"以結(jié)束.</p><p> 進(jìn)過多次檢驗(yàn)與測試,并逐步完善,程序運(yùn)行正確。</p><p><b> 3、程序流程圖</b></p><p><b> 1程序總體流程</b></p><p> 程序總體流程說明如下:<
12、/p><p> 1.程序開始,用戶輸入命令進(jìn)行操作::請輸入要查詢的方式(1.查詢年歷2.查詢月歷3.計算日期4.設(shè)置當(dāng)前日期(%d/%d/%d) 特別說明1,2,3,4每次運(yùn)行后,利用break語句返回到. switch體中繼續(xù)提示用戶進(jìn)行4種操作,直到用戶輸入"Y鍵繼續(xù),任意鍵退出"以結(jié)束.</p><p><b> 見圖一:</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時,顯示本年所有月份的信息。當(dāng)查詢結(jié)束時,返回用戶輸入命令進(jìn)行繼續(xù)操作。本流程圖與查詢年歷流程圖算法基本一致,所以就略去查詢月歷具體流
15、程圖。</p><p><b> 按Y繼續(xù)</b></p><p><b> 任意鍵退出</b></p><p> 圖二(顯示本年所有的信息)</p><p> 3計算日期信息查詢流程</p><p> 當(dāng)用戶輸入命令為3時,輸入要計算的日期信息。計算結(jié)束時返回用戶
16、輸入命令進(jìn)行繼續(xù)操作。本流程圖與設(shè)置當(dāng)前日期流程圖算法基本一致,所以就略去設(shè)置當(dāng)前日期具體流程圖。</p><p><b> 見圖三</b></p><p><b> 按Y繼續(xù)</b></p><p><b> 任意鍵退出</b></p><p> 圖三(計算日期信息查
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("請輸入要查詢的方式(1.查詢年歷2.查詢月歷3.計算日期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("請輸入年份(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("請輸入年月(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("請輸入日期(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("請輸入當(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、查詢月歷:</b></p><p><b> 3、計算日期:</b></p><p><
53、b> 4、設(shè)置當(dāng)前:</b></p><p> 出現(xiàn)的問題及解決方法</p><p> 不能輸出界面中的框的倒數(shù)二行的最后一個“┇”,經(jīng)過仔細(xì)的討論采用算術(shù)算出空出多少空格,再用for語句輸出多少空格,再在后面加上“┇”就可以了。</p><p><b> 四、課程設(shè)計總結(jié)</b></p><p&g
54、t; 經(jīng)過這幾天的C課程設(shè)計,讓我知道了做課程設(shè)計的一般方法,通過各種努力終于完成了設(shè)計要求.這次課程設(shè)計基本上含蓋了大學(xué)一年級學(xué)習(xí)到的C語言知識點(diǎn),課設(shè)題目要求不僅要求對課本知識有較深刻的了解,同時要求程序設(shè)計者有較強(qiáng)的思維和動手能力。這次課設(shè)使我了解我編程思想和編程技巧,也認(rèn)識了軟件生命周期的各個環(huán)境,包括構(gòu)思、設(shè)計、編寫、調(diào)試、修訂。</p><p> 獨(dú)立做課程設(shè)計不僅讓我修補(bǔ)了以前學(xué)習(xí)的漏洞,也讓我
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 計算機(jī)科學(xué)與技術(shù)課程設(shè)計
- 醫(yī)院住院管理系統(tǒng)-計算機(jī)科學(xué)與技術(shù)課程設(shè)計報告
- 住院病人呼喊器-計算機(jī)科學(xué)與技術(shù)課程設(shè)計報告
- 計算機(jī)控制技術(shù)課程設(shè)計
- 計算機(jī)控制技術(shù)課程設(shè)計
- 計算機(jī)控制技術(shù)課程設(shè)計
- 計算機(jī)控制技術(shù)課程設(shè)計
- 計算機(jī)網(wǎng)絡(luò)管理技術(shù)課程設(shè)計報告
- 計算機(jī)控制技術(shù)課程設(shè)計 (2)
- 控制儀表與計算機(jī)控制技術(shù)課程設(shè)計
- 計算機(jī)控制與接口技術(shù)課程設(shè)計
- 計算機(jī)控制技術(shù)課程設(shè)計--油庫計算機(jī)監(jiān)控系統(tǒng)硬件設(shè)計
- 計算機(jī)控制技術(shù)課程設(shè)計--流速自動采集及顯示器設(shè)計
- 計算機(jī)控制技術(shù)課程設(shè)計-溫度采集
- 2011級計算機(jī)控制技術(shù)課程設(shè)計報告書
- 2011級計算機(jī)控制技術(shù)課程設(shè)計報告書
- 課程設(shè)計-年歷顯示
- 計算機(jī)控制技術(shù)課程設(shè)計---交通燈
- java課程設(shè)計-模擬科學(xué)計算機(jī)
- 計算機(jī)科學(xué)與技術(shù)專業(yè)畢課程設(shè)計報告-物流公司管理系統(tǒng)
評論
0/150
提交評論