版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 綜合性程序設(shè)計報告</b></p><p> 設(shè)計題目:____萬年歷_____</p><p> 指導(dǎo)教師: ____ _______</p><p> 班 級: __________</p><p> 學(xué) 號: ______</p><p>
2、 設(shè) 計 者: __________</p><p> 成 績: _______________</p><p> 設(shè)計時間: 2012年 5 月 1 日</p><p><b> 一、設(shè)計說明簡介:</b></p><p> 用于利用計算機實現(xiàn)萬年歷功能,包括日期對星期的轉(zhuǎn)換,根據(jù)指定日期對N天后是什
3、么日期的計算。和顯示當(dāng)前日期,紀(jì)念日提醒等功能。總體結(jié)構(gòu)采取模塊化方式進(jìn)行程序設(shè)計,要求程序的功能設(shè)計,數(shù)據(jù)結(jié)構(gòu)設(shè)計及整體結(jié)構(gòu)設(shè)計合理。</p><p> 系統(tǒng)以菜單界面方式工作,運行界面友好。</p><p> 主要功能:? 日期推算? &
4、#160; 日期顯示? 紀(jì)念日提醒</p><p> 二、對變量、結(jié)構(gòu)體及函數(shù)的說明:</p><p><b> 1、對變量的說明:</b></p><p> choose(m) 選擇菜單</p><p&g
5、t; month() 月份</p><p> day() 日</p><p> year() 年</p><p> leap() 閏年</p><p> firstday() 每個月開始的第一天</p><p> time()
6、 當(dāng)前時間</p><p> 2、對結(jié)構(gòu)體的說明:</p><p> date {int month;</p><p> int day; 定義一個結(jié)構(gòu)體,專門用來記錄紀(jì)念日日期</p><p> int year;} ;</p><p><b>
7、3、對函數(shù)的說明:</b></p><p> jinianritixing() 定義jinianritixing()函數(shù)用來進(jìn)行紀(jì)念日提醒</p><p> shuchuxianshi()定義shuchuxinshi ()函數(shù)用來顯示輸入的紀(jì)念日的內(nèi)容</p><p> 4、算法設(shè)計的說明:</p><p> 利用tim
8、e.h里的函數(shù)調(diào)用系統(tǒng)函數(shù)。</p><p> 使用switch來進(jìn)行菜單的選擇</p><p> 具體功能通過函數(shù)寫好,在主函數(shù)中調(diào)用即可</p><p> 三、樹形結(jié)構(gòu)模塊圖:</p><p> 四、程序的使用說明:</p><p><b> 系統(tǒng)功能說明:</b></p>
9、;<p> 這是系統(tǒng)主界面,展現(xiàn)在我們眼前的有四個選擇。下面我來詳細(xì)介紹系統(tǒng)的使用和功能。</p><p> 1、功能1:進(jìn)入日期推算功能,系統(tǒng)會讓你輸入想要查詢?nèi)掌诘脑路莺湍攴荩?lt;/p><p> 依次輸入月份和年份,界面顯示如下:</p><p> 根據(jù)顯示出來的月歷,就可以查詢具體日期對應(yīng)的星期了。</p><p>
10、; 功能一使用完畢后,系統(tǒng)將自動回到主界面:</p><p> 2、功能2:選項2進(jìn)入顯示當(dāng)前時間功能。系統(tǒng)會自動輸出現(xiàn)在的時間:</p><p> 功能二顯示完畢后,系統(tǒng)自動回到主界面。</p><p> 3、功能3:進(jìn)入紀(jì)念日的輸入功能。系統(tǒng)會讓你輸入紀(jì)念的內(nèi)容和時間:</p><p> 信息輸入完畢。系統(tǒng)自動回到主界面。<
11、;/p><p> 4、功能四:紀(jì)念日查詢功能。系統(tǒng)會自動輸出紀(jì)念日的內(nèi)容。</p><p><b> 五、程序內(nèi)容:</b></p><p> #include <stdio.h></p><p> #include <time.h> </p><p> int ch
12、oose(m) //選擇菜單</p><p><b> {</b></p><p><b> int i;</b></p><p> printf("\t\t\t\t萬年歷\n");</p><p> for(i=0;i<80;i++) printf(&quo
13、t;*");</p><p> printf("\t\t1日期推算\t\t\t\n\t\t2顯示當(dāng)前時間\t\t\t\n\t\t3輸入紀(jì)念日內(nèi)容\n\t\t4紀(jì)念日內(nèi)容顯示\n");</p><p> for(i=0;i<80;i++) printf("*");</p><p> printf("
14、;歡迎進(jìn)入萬年歷系統(tǒng),請選擇您所要的操作(選擇(0)退出):\n");</p><p> scanf("%d",&m);</p><p> return (m);</p><p><b> }</b></p><p> struct date {int month;</
15、p><p> int day; //定義一個結(jié)構(gòu)體,專門用來記錄紀(jì)念日日期</p><p> int year;} me;</p><p> char string[20]; //聲明全局適用的字符串?dāng)?shù)組用來存放要紀(jì)念的事件,大小不超過十個字節(jié)</p><p> int jinianritixin
16、g()</p><p><b> { </b></p><p><b> int i;</b></p><p> for(i=0;i<30;i++) printf("-");</p><p> printf("\n\n\t\t請輸入紀(jì)念日的內(nèi)容!\n&qu
17、ot;); //定義jinianritixing()函數(shù)用來進(jìn)行紀(jì)念日提醒</p><p> scanf("%s",string);</p><p> printf("\n\n\t\t請輸入紀(jì)念日的時間,年****、月**、日**!\n");</p><p> scanf("%d%d%d",&
18、amp;me.year,&me.month,&me.day);</p><p><b> }</b></p><p> int shuchuxianshi()</p><p> { int i; //定義shuchuxinshi()函數(shù)用來顯示輸入的紀(jì)念日的內(nèi)容</p&
19、gt;<p> for(i=0;i<30;i++) printf("-");</p><p> printf("\n\n\t\t你的紀(jì)念日的內(nèi)容為:\n");</p><p> printf("\t%s\n",string);</p><p> printf("%d%d
20、%d",me.year,me.month,me.day);</p><p> for(i=0;i<30;i++) printf("-");</p><p><b> }</b></p><p> int leap (int year) </p><p> {if(year%4=
21、=0&&year%100!=0||year%400==0) //判斷是否是閏年 </p><p> return 1; </p><p> else return 0; } </p><p> int days_month (int month,int year) //判斷大月和小月</p><p> { if(mon
22、th==1||month==3||month==5||month==7||month==8||month==10||month==12) //找出大月 </p><p> return 31; </p><p> if(month==4||month==6||month==9||month==11) //找出小月 </p><p> return 30; &l
23、t;/p><p> if(month==2&&leap(year)==1) </p><p> return 29; //判斷二月是29天還是29天 </p><p> else return 28; } </p><p> int firstday(int month,int year) </p><
24、p><b> {int w; </b></p><p> w=(1+2*month+3*(month+1)/5+year+year/4+year/400-year/100)%7+1; //判斷每個月開始的第一天是星期幾 </p><p> return w; } </p><p><b> main()</b>
25、;</p><p> { int i,j=1,k=1,a,b,month,year;</p><p><b> int m;</b></p><p> printf("\t\t\t\t萬年歷系統(tǒng)\n\t\t\t\n\t-------東北大學(xué)秦皇島分校計算機與通信工程學(xué)院羅丹(4101630)\n"); </p&g
26、t;<p><b> while(1)</b></p><p><b> {</b></p><p> m=choose(m);</p><p> switch(m) // 利用switch來選取主菜單</p><p><b> { </b>
27、</p><p><b> case 1:</b></p><p> printf("\n 請輸入月**和年****:\n");</p><p> scanf("%d%d",&month,&year);</p><p> //leap(year);</
28、p><p> b=days_month(month,year);</p><p> a=firstday (month,year); </p><p> printf(" Sun Mon Tue Wed Thu Fri Sat \n"); //輸出對應(yīng)當(dāng)月的日歷</p><p> if(a==7) {for(i=1;
29、i<=b;i++) </p><p> { printf("%4d",i); </p><p> if(i%7==0) {printf("\n"); } </p><p><b> } </b></p><p><b> } </b></
30、p><p><b> if(a!=7)</b></p><p> {while (j<=4*a) </p><p> {printf(" "); j++; } </p><p> for(i=1;i<=b;i++) </p><p> {printf(&quo
31、t;%4d",i); </p><p> if(i==7*k-a) </p><p> {printf("\n"); k++; } } }</p><p><b> break;</b></p><p> case 3:jinianritixing(); //調(diào)用函數(shù)</p&g
32、t;<p><b> break;</b></p><p> case 2:{time_t lt; </p><p> lt = time(NULL); </p><p> printf("現(xiàn)在的時間是:%s\n", ctime(& lt)); //完成顯示當(dāng)前日期功能</p>
33、<p><b> }</b></p><p><b> break;</b></p><p> case 4: shuchuxianshi(); //調(diào)用函數(shù)</p><p><b> break;</b></p><p> default:return
34、 0;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> 六、設(shè)計體會:</b></p><p> 在C語言結(jié)課的這次綜合性設(shè)計實驗
35、中,我拿到的題目是設(shè)計一個編程題萬年歷,閱讀系列要求,感覺肯定要用文件操作的一些知識來做這個系統(tǒng),所以自己先在網(wǎng)上補習(xí)增加了一些文件操作的應(yīng)用知識,其中包括一些常用函數(shù)的用法和文件操作的應(yīng)用程序。然后就是將近一天的系統(tǒng)基本框架的構(gòu)建,寫在一張紙上,為寫代碼做好基本的鋪墊。</p><p> 在系統(tǒng)代碼的構(gòu)建中,自己遇到了很多的問題,但在網(wǎng)上看一些提問,也都被解決了,自己也收獲了很多東西。例如文件操作中feof(
36、)函數(shù)標(biāo)志文件結(jié)束返回1值并不是在文件讀到末尾處就返回的,而是還要再往后讀一個字節(jié),這個就像’\0’那樣,程序默認(rèn)添加的;還有在.txt文本文件中,一般通過窗口輸入一個數(shù)字,它所占的空間為1個字節(jié),是一個char型數(shù)值(這個可困擾了我好半天才知道的),并不是一個int型;還有那些關(guān)于文件操作的打開方式(a+,r,w+等等)、文件操作函數(shù)(fread、fwrite、fprint、fscanf、fputc、fgets等等)在應(yīng)用中的從生疏到
37、熟練的變化。自己在面對這些問題的時候開始確實有很多的難點,自己只有硬著頭皮在網(wǎng)上看一些人們的問題,但每解決一個問題,自己對這些代碼的看法也就有了新的認(rèn)識,尤其是在調(diào)程序的時候,發(fā)現(xiàn)程序中的錯誤地方的速度也越來越快,這對我來說真的是一個最大最大的收獲。</p><p> 總的來說,在這次課程設(shè)計的完成過程中,自己對總認(rèn)為C語言中很生疏的文件操作那塊知識做了很好的學(xué)習(xí)與實踐操作,現(xiàn)在基本上算是熟練掌握了,嘿嘿,真是
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 萬年歷課程設(shè)計
- 萬年歷課程設(shè)計
- 萬年歷課程設(shè)計
- 萬年歷課程設(shè)計
- 萬年歷課程設(shè)計
- 萬年歷課程設(shè)計
- 萬年歷課程設(shè)計
- java萬年歷課程設(shè)計
- 萬年歷課程設(shè)計報告
- 數(shù)字萬年歷課程設(shè)計
- java課程設(shè)計--萬年歷
- 萬年歷課程設(shè)計論文
- 課程設(shè)計-萬年歷系統(tǒng)
- 萬年歷課程設(shè)計報告
- 數(shù)碼萬年歷課程設(shè)計
- 萬年歷課程設(shè)計.doc
- java課程設(shè)計--萬年歷設(shè)計
- dsp課程設(shè)計-萬年歷設(shè)計
- 編寫萬年歷系統(tǒng)課程設(shè)計
- c++萬年歷課程設(shè)計
評論
0/150
提交評論