版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 綜合性程序設計報告</b></p><p> 設計題目:____萬年歷_____</p><p> 指導教師: ____ _______</p><p> 班 級: __________</p><p> 學 號: ______</p><p>
2、 設 計 者: __________</p><p> 成 績: _______________</p><p> 設計時間: 2012年 5 月 1 日</p><p><b> 一、設計說明簡介:</b></p><p> 用于利用計算機實現(xiàn)萬年歷功能,包括日期對星期的轉換,根據指定日期對N天后是什
3、么日期的計算。和顯示當前日期,紀念日提醒等功能??傮w結構采取模塊化方式進行程序設計,要求程序的功能設計,數據結構設計及整體結構設計合理。</p><p> 系統(tǒng)以菜單界面方式工作,運行界面友好。</p><p> 主要功能:? 日期推算? &
4、#160; 日期顯示? 紀念日提醒</p><p> 二、對變量、結構體及函數的說明:</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、 當前時間</p><p> 2、對結構體的說明:</p><p> date {int month;</p><p> int day; 定義一個結構體,專門用來記錄紀念日日期</p><p> int year;} ;</p><p><b>
7、3、對函數的說明:</b></p><p> jinianritixing() 定義jinianritixing()函數用來進行紀念日提醒</p><p> shuchuxianshi()定義shuchuxinshi ()函數用來顯示輸入的紀念日的內容</p><p> 4、算法設計的說明:</p><p> 利用tim
8、e.h里的函數調用系統(tǒng)函數。</p><p> 使用switch來進行菜單的選擇</p><p> 具體功能通過函數寫好,在主函數中調用即可</p><p> 三、樹形結構模塊圖:</p><p> 四、程序的使用說明:</p><p><b> 系統(tǒng)功能說明:</b></p>
9、;<p> 這是系統(tǒng)主界面,展現(xiàn)在我們眼前的有四個選擇。下面我來詳細介紹系統(tǒng)的使用和功能。</p><p> 1、功能1:進入日期推算功能,系統(tǒng)會讓你輸入想要查詢日期的月份和年份:</p><p> 依次輸入月份和年份,界面顯示如下:</p><p> 根據顯示出來的月歷,就可以查詢具體日期對應的星期了。</p><p>
10、; 功能一使用完畢后,系統(tǒng)將自動回到主界面:</p><p> 2、功能2:選項2進入顯示當前時間功能。系統(tǒng)會自動輸出現(xiàn)在的時間:</p><p> 功能二顯示完畢后,系統(tǒng)自動回到主界面。</p><p> 3、功能3:進入紀念日的輸入功能。系統(tǒng)會讓你輸入紀念的內容和時間:</p><p> 信息輸入完畢。系統(tǒng)自動回到主界面。<
11、;/p><p> 4、功能四:紀念日查詢功能。系統(tǒng)會自動輸出紀念日的內容。</p><p><b> 五、程序內容:</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顯示當前時間\t\t\t\n\t\t3輸入紀念日內容\n\t\t4紀念日內容顯示\n");</p><p> for(i=0;i<80;i++) printf("*");</p><p> printf("
14、;歡迎進入萬年歷系統(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; //定義一個結構體,專門用來記錄紀念日日期</p><p> int year;} me;</p><p> char string[20]; //聲明全局適用的字符串數組用來存放要紀念的事件,大小不超過十個字節(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請輸入紀念日的內容!\n&qu
17、ot;); //定義jinianritixing()函數用來進行紀念日提醒</p><p> scanf("%s",string);</p><p> printf("\n\n\t\t請輸入紀念日的時間,年****、月**、日**!\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()函數用來顯示輸入的紀念日的內容</p&
19、gt;<p> for(i=0;i<30;i++) printf("-");</p><p> printf("\n\n\t\t你的紀念日的內容為:\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-------東北大學秦皇島分校計算機與通信工程學院羅丹(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"); //輸出對應當月的日歷</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(); //調用函數</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)); //完成顯示當前日期功能</p>
33、<p><b> }</b></p><p><b> break;</b></p><p> case 4: shuchuxianshi(); //調用函數</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> 六、設計體會:</b></p><p> 在C語言結課的這次綜合性設計實驗
35、中,我拿到的題目是設計一個編程題萬年歷,閱讀系列要求,感覺肯定要用文件操作的一些知識來做這個系統(tǒng),所以自己先在網上補習增加了一些文件操作的應用知識,其中包括一些常用函數的用法和文件操作的應用程序。然后就是將近一天的系統(tǒng)基本框架的構建,寫在一張紙上,為寫代碼做好基本的鋪墊。</p><p> 在系統(tǒng)代碼的構建中,自己遇到了很多的問題,但在網上看一些提問,也都被解決了,自己也收獲了很多東西。例如文件操作中feof(
36、)函數標志文件結束返回1值并不是在文件讀到末尾處就返回的,而是還要再往后讀一個字節(jié),這個就像’\0’那樣,程序默認添加的;還有在.txt文本文件中,一般通過窗口輸入一個數字,它所占的空間為1個字節(jié),是一個char型數值(這個可困擾了我好半天才知道的),并不是一個int型;還有那些關于文件操作的打開方式(a+,r,w+等等)、文件操作函數(fread、fwrite、fprint、fscanf、fputc、fgets等等)在應用中的從生疏到
37、熟練的變化。自己在面對這些問題的時候開始確實有很多的難點,自己只有硬著頭皮在網上看一些人們的問題,但每解決一個問題,自己對這些代碼的看法也就有了新的認識,尤其是在調程序的時候,發(fā)現(xiàn)程序中的錯誤地方的速度也越來越快,這對我來說真的是一個最大最大的收獲。</p><p> 總的來說,在這次課程設計的完成過程中,自己對總認為C語言中很生疏的文件操作那塊知識做了很好的學習與實踐操作,現(xiàn)在基本上算是熟練掌握了,嘿嘿,真是
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論