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