c語(yǔ)言課程設(shè)計(jì)實(shí)習(xí)報(bào)告1_第1頁(yè)
c語(yǔ)言課程設(shè)計(jì)實(shí)習(xí)報(bào)告1_第2頁(yè)
c語(yǔ)言課程設(shè)計(jì)實(shí)習(xí)報(bào)告1_第3頁(yè)
c語(yǔ)言課程設(shè)計(jì)實(shí)習(xí)報(bào)告1_第4頁(yè)
c語(yǔ)言課程設(shè)計(jì)實(shí)習(xí)報(bào)告1_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、c語(yǔ)言課程設(shè)計(jì)實(shí)習(xí)報(bào)告班 級(jí):地信11001班學(xué)生姓名:國(guó)產(chǎn)毛毛蟲(chóng)學(xué) 號(hào):201001098指導(dǎo)老師: 朱小龍、王慶日 期: 目 錄一、程序分析與設(shè)計(jì)1二、流程圖1三、源程序清單1四、調(diào)試過(guò)程1五、程序有待改進(jìn)的地方2六、本次實(shí)習(xí)的收獲和建議2附錄2一、程序分析與設(shè)計(jì)1、要求提取到系統(tǒng)中的日期;2、判斷日期是星期幾;3、程序會(huì)根據(jù)系統(tǒng)日期,自動(dòng)判斷月份;4、要求以程序以日歷的方式顯示程序界面;5、制作萬(wàn)年歷的過(guò)程中要考慮平年和閏年的區(qū)別,系統(tǒng)要求判斷平年還是閏年;6、制作萬(wàn)年歷,然后根據(jù)提取到得系統(tǒng)時(shí)間判斷月份,自動(dòng)顯示當(dāng)月的月歷;7、要求程序有自動(dòng)隨系統(tǒng)日期而自動(dòng)更新的功能;8、程序可以實(shí)現(xiàn)

2、一些查詢的功能。二、流程圖開(kāi)始提取系統(tǒng)時(shí)間_strdate(date);判斷天數(shù)monthnum函數(shù)日歷格式化顯示函數(shù) print主界面選擇 print-1判斷星期幾顯示某月日歷顯示某年日歷判斷評(píng)年閏年星期判斷函數(shù)week判斷平年閏年leap-yearwhile(1)循環(huán)檢測(cè),作為時(shí)間自動(dòng)更新次選擇菜單print-2退出選擇項(xiàng)目三、源程序清單#include #include #include #includevoid main ()int print_1();void slect(int n);int leap_year(int year);int monthnum(int leap,int

3、 month);void print(int century,int year,int month,int day);int century,year,month,day,newyear,newmonth,newday;int leap,n;int day;/用于記錄每個(gè)月有多少天char date9,newdate9;_strdate(date);/調(diào)用函數(shù)取得系統(tǒng)時(shí)間/printf(今天是 %sn, date);輸出系統(tǒng)日期/*for(i=0;i9;i+)printf(%dn,datei-48);用作查看日期在數(shù)組中的存儲(chǔ)方式*/century=20;year=(date6-48)*10+

4、(date7-48);/將字符串轉(zhuǎn)換成其應(yīng)該表示的數(shù)值month=(date0-48)*10+(date1-48);day=(date3-48)*10+(date4-48);system(color 27);/調(diào)整程序窗口背景和字體顏色 printf(歡迎使用萬(wàn)年歷nn);printf(今天是%d%d年%d月%d日n,century,year,month,day);leap=leap_year(century*100+year);/判斷該年是平年還是閏年day=monthnum(leap,month);/得到該月有多少天print(century,year,month,day); loop:

5、n= print_1();switch(n) case 1:printf(恭喜!恭喜!n你已經(jīng)進(jìn)入日期自動(dòng)更新功能n);while(1)_strdate(newdate);/調(diào)用函數(shù)取得系統(tǒng)時(shí)間 newyear=(newdate6-48)*10+(newdate7-48);/將字符串轉(zhuǎn)換成其應(yīng)該表示的數(shù)值newmonth=(newdate0-48)*10+(newdate1-48);if(newyear!=year|newmonth!=month) system(cls);print(century,newyear,newmonth,day);year=newyear;month=newmon

6、th;day=newday;sleep(100);break;case 2:printf(|=請(qǐng)按數(shù)字選擇相應(yīng)的功能=|n);printf(| 1查詢某年某月某日是星期幾 |n);printf(| 2打印某月的日歷 |n);printf(| 3打印某年的全年日歷 |n);printf(| 4查詢某一年是否為閏年 |n);printf( = n);scanf(%d,&n);slect(n);break;case 3:printf(您確定要退出嗎? 按y退出,按n繼續(xù)n);getchar();if( (getc(stdin) = y)|(getc(stdin) = y)break;elsegoto

7、 loop; ;void print(int century,int year,int month,int day) /用于格式控制輸出 int week(int century,int year,int month,int day);int i=1;printf(n_%d%d年%d月_n,century,year,month);printf( sun mon tue wen thu fri satn); switch(week(century,year,month,i) /switch語(yǔ)句用于控制日歷開(kāi)頭的格式 case 0:;break;case 1:printf( );break;cas

8、e 2:printf( );break;case 3:printf( );break;case 4:printf( );break;case 5:printf( );break;case 6:printf( );break;for(i=1;i1&year1&month1&day1&day1&day1&day=31)if(month=3)week=(int)(century/4)-2*century+year+(int)(year/4)+(int)(13*(month+1)/5)+day-1;while(week0) week+=7;xinqi=week%7;return xinqi;void

9、slect(int n) int leap_year(int year);int monthnum(int leap,int month);int week(int century,int year,int month,int day);void print(int century,int year,int month,int day);int xinqi,century,year,month,day,day,leap;switch(n)case 1:while(1)printf(請(qǐng)輸入要查詢的日期(格式y(tǒng)y,yy,mm,dd)n);scanf(%d,%d,%d,%d,¢ury,&ye

10、ar,&month,&day); xinqi=week(century,year,month,day);if(xinqi=0)printf(%d%d年%d月%d日是星期天n,century,year,month,day);elseprintf(%d%d年%d月%d日是星期%dn,century,year,month,day,xinqi);printf(是否繼續(xù)查詢? 按y繼續(xù),按n退出n);getchar();if( (getc(stdin) = n)|(getc(stdin) = n) system(cls);break;else continue;break;case 2:while(1)

11、 printf(請(qǐng)輸入要查詢的年月(格式y(tǒng)y,yy,mm)n);scanf(%d,%d,%d,%d,¢ury,&year,&month);day=monthnum(leap_year(year),month);print(century,year,month,day);printf(是否繼續(xù)查詢? 按y繼續(xù),按n退出n);getchar();if( (getc(stdin) = n)|(getc(stdin) = n) system(cls);break;else continue;break;case 3:while(1) system(cls);printf(請(qǐng)輸入要查詢的年月(格

12、式y(tǒng)y,yy)n);scanf(%d,%d,¢ury,&year);for(month=1;month=12;month+)print(century,year,month,monthnum(leap_year(year),month);printf(是否繼續(xù)查詢? 按y繼續(xù),按n退出n);getchar();if( (getc(stdin) = n)|(getc(stdin) = n) system(cls);break;else continue;break;case 4:while(1) printf(請(qǐng)輸入要查詢的年月(格式y(tǒng)y,yy)n);scanf(%d,%d,¢u

13、ry,&year);leap=leap_year(century*100+year);if(leap=1) printf(%d%d是閏年n,century,year);elseprintf(%d%d是平年n,century,year);printf(是否繼續(xù)查詢? 按y繼續(xù),按n退出n);getchar();if( (getc(stdin) = n)|(getc(stdin) = n) system(cls);break;else continue;break;int print_1()int n; printf(|=請(qǐng)按數(shù)字選擇相應(yīng)的功能=|n);printf(| 1進(jìn)入日歷自動(dòng)更新功能 |

14、n);printf(| 2進(jìn)入查詢功能 |n);printf(| 3退出 |n);printf(=n);scanf(%d,&n);return n;四、調(diào)試過(guò)程在程序調(diào)試過(guò)程中,由于變量設(shè)置過(guò)多,導(dǎo)致變量用錯(cuò),使得程序調(diào)試得不到理想的結(jié)果,碰到了一個(gè)異常糾結(jié)的問(wèn)題,幾乎話費(fèi)了我大半下午來(lái)調(diào)試,在使用百度百科中提供的蔡勒公式時(shí),輸入2012,05,05的時(shí)候程序的格式控制就又出現(xiàn)了問(wèn)題,第一天不是按照我的目的輸出的,多次調(diào)試發(fā)現(xiàn)程序沒(méi)有錯(cuò)誤,但是單獨(dú)把計(jì)算星期幾的函數(shù)拿出來(lái)運(yùn)行的時(shí)候卻發(fā)現(xiàn)2012,05,05輸入后計(jì)算的返回值卻是-1,而根據(jù)我們的設(shè)想,計(jì)算結(jié)果應(yīng)該是在06之間(0代表星期天),

15、后來(lái)經(jīng)過(guò)仔細(xì)思考發(fā)現(xiàn),-1+7=6而2012,05,05正好是星期六,于是在返回值之前加了一句if判斷if(xingqi0)xingqi+=7,但是多測(cè)試幾個(gè)月后還是發(fā)現(xiàn)有的月份計(jì)算值任然是出現(xiàn)格式不對(duì)的情況,自己再仔細(xì)調(diào)試的時(shí)候發(fā)現(xiàn),程序計(jì)算的返回值還是負(fù)值,所以考慮到用循環(huán)解決問(wèn)題,將上面的if語(yǔ)句修改為while(xingqi0)xingqi+=7,通過(guò)多次測(cè)試沒(méi)有發(fā)現(xiàn)問(wèn)題,成功解決了返回值的問(wèn)題,再看程序的輸出顯示也沒(méi)有任何問(wèn)題。五、程序有待改進(jìn)的地方1、程序由于是使用系統(tǒng)的庫(kù)函數(shù)_strdate();獲取系統(tǒng)的日期,但是獲取的格式卻是dd/mm/yy這就使得計(jì)算星期幾的時(shí)候不知道是多

16、少世紀(jì),所以我在程序中直接將變量century的值直接固定為20,這就是的我的萬(wàn)年歷自動(dòng)顯示的功能受到限制,只能顯示20012099年的日歷。2、在主界面選擇菜單的退出選項(xiàng)上使用了goto語(yǔ)句,詢問(wèn)用戶是否確認(rèn)退出,但是這使得程序的結(jié)構(gòu)變得混亂,違背了結(jié)構(gòu)化程序設(shè)計(jì)的原則。3、在日歷隨系統(tǒng)自動(dòng)更新時(shí)間模塊中使用了while(1)這個(gè)死循環(huán),這使得程序不能同時(shí)執(zhí)行后面的其他查詢功能模塊,因?yàn)槌绦蛞恢痹趙hile這個(gè)死循環(huán)里面打轉(zhuǎn),循環(huán)沒(méi)有執(zhí)行完畢,程序不會(huì)執(zhí)行后面的查詢功能。4、程序沒(méi)有全部使用返回上一層菜單的功能。例如在自動(dòng)更新模塊中,如果想返回上一級(jí)選擇菜單的時(shí)候,這是程序目前無(wú)法實(shí)現(xiàn)的。六、本次實(shí)習(xí)的收獲和建議通過(guò)本次實(shí)習(xí),我了解了做事要一鼓作氣,因?yàn)樵谛瞧谝贿x完題的時(shí)候,我就開(kāi)始構(gòu)思自己的程序該怎么寫(xiě),通過(guò)什么樣的算法來(lái)達(dá)到自己的目的。從星期一到星期三。包括我睡覺(jué)的時(shí)候做夢(mèng)都在考慮我的程序該如何寫(xiě),怎么樣才能達(dá)到我想要的功能,幾天的空余時(shí)間在自習(xí)室期末復(fù)習(xí)的時(shí)候同樣是沒(méi)有心思的,腦袋里面一直還是想著自己的程序,哪些地方有待改進(jìn),還應(yīng)該添加哪些功能的。很慶幸這個(gè)程序完全是靠自己的想法寫(xiě)出來(lái)的,沒(méi)有參考任何萬(wàn)年歷的實(shí)例,中間自動(dòng)更新時(shí)間模塊的功能只知道用一個(gè)死循環(huán)可以實(shí)現(xiàn),但是自己還是沒(méi)有想到怎么解決,這是通過(guò)

溫馨提示

  • 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ù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論