版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 信息科學(xué)與技術(shù)學(xué)院</b></p><p> 程序設(shè)計基礎(chǔ)課程設(shè)計報告</p><p> 題目名稱: 萬年歷系統(tǒng) </p><p> 學(xué)生姓名: </p><p> 學(xué) 號: 201
2、1508020 </p><p> 專業(yè)班級: </p><p> 指導(dǎo)教師: </p><p> 2012年 7 月 1 日</p><p><b> 目 錄</b></p&
3、gt;<p> 1 課程設(shè)計目的及要求1</p><p><b> 1.1設(shè)計題目1</b></p><p><b> 1.2設(shè)計要求1</b></p><p><b> 1.3其他要求1</b></p><p><b> 2課題總體設(shè)
4、計2</b></p><p> 2.1系統(tǒng)功能模塊圖2</p><p> 2.2系統(tǒng)流程圖 ..........................................................................................................2</p><p><b> 3
5、.詳細(xì)設(shè)計3</b></p><p> 3.1 printWNL()3</p><p> 3.2 isRunNian()模塊設(shè)計4</p><p> 3.3 getDays模塊設(shè)計5</p><p> 3.4 主函數(shù)main()模塊設(shè)計6</p><p><b> 4調(diào)試與測試
6、7</b></p><p> 5課程設(shè)計總結(jié)10</p><p><b> 參考文獻(xiàn)11</b></p><p><b> 附 錄12</b></p><p><b> 萬年歷系統(tǒng)的設(shè)計</b></p><p> 1
7、課程設(shè)計目的及要求</p><p><b> 1.1設(shè)計題目</b></p><p><b> 萬年歷系統(tǒng)</b></p><p><b> 1.2設(shè)計要求</b></p><p><b> 模仿現(xiàn)實(shí)中的日歷</b></p><
8、p> 1.、當(dāng)前頁以系統(tǒng)當(dāng)前日期的月份為準(zhǔn),顯示當(dāng)前月的每一天(顯示出日及對應(yīng)的星期幾);</p><p> 2、當(dāng)系統(tǒng)日期變到下一個月時,系統(tǒng)自動翻頁到下一月。</p><p><b> 1.3其他要求</b></p><p> 1、只能使用c/c++語言,源程序要有適當(dāng)?shù)淖⑨專钩绦蛉菀组喿x。</p><p
9、> 2、至少采用文本菜單界面。</p><p> 3、學(xué)生可自動增加新功能模塊。</p><p><b> 2課題總體設(shè)計</b></p><p> 2.1系統(tǒng)功能模塊圖</p><p> 圖1-1 系統(tǒng)功能模塊圖</p><p> 2.2系統(tǒng)流程圖 <
10、/p><p> 圖1-2 系統(tǒng)流程圖</p><p><b> 3.詳細(xì)設(shè)計</b></p><p> 3.1 printWNL()</p><p> 圖1-3 printWNL()模塊設(shè)計圖</p><p> 模塊說明:prinWNL()先后調(diào)用week(),getdays()打印出簡單
11、的日歷。</p><p> 3.2 isRunNian()模塊設(shè)計</p><p> 圖1-4 isRunNian()函數(shù)模塊設(shè)計圖</p><p> 模塊說明: 若該年不是閏年,則輸出0,相反則輸出1;</p><p> 設(shè)年數(shù)為X,先判斷X能否被4整除,若不能則輸出0;</p><p> 若能整除,則判斷
12、X能否被100整除,若不能則輸出1;</p><p> 若能整除,則判斷X能否被400整除,若不能則輸出0,若能則輸出1。</p><p> 3.3 getDays模塊設(shè)計</p><p> 圖1-5 getDays模塊設(shè)計圖 </p><p> 模塊說明:判斷系統(tǒng)月份,以月份為主,三十一天的有一月,三月,五月,七月,八月,十月,十
13、二月;</p><p> 三十天的有四月,六月,九月,十一月。若是閏年,則二月為二十九天,不是,則為二十八天。</p><p> 3.4 主函數(shù)main()模塊設(shè)計</p><p> 圖1-6 主函數(shù)體main()模塊設(shè)計圖</p><p> 模塊說明:主函數(shù)體主要調(diào)用printWNL函數(shù)對由getsystime函數(shù)讀取的主板時間進(jìn)行
14、相應(yīng)的編輯和輸出,并根據(jù)用戶指令“↑↓←→”Esc實(shí)現(xiàn)年份及月份的調(diào)整,并退出程序</p><p><b> 4調(diào)試與測試</b></p><p> 此課程設(shè)計要求如生活中的掛歷,要以當(dāng)前頁以系統(tǒng)當(dāng)前日期的月份為準(zhǔn),顯示當(dāng)前月的每一天,并且當(dāng)系統(tǒng)日期變到下一個月是,系統(tǒng)自動翻頁到下一月。然而在調(diào)試過程中首先自己沒有注意到區(qū)分閏年,沒有考慮到二月有二十八天,與二十九
15、天的區(qū)別,其次沒有做到每一天對應(yīng)的每個星期,再次在調(diào)用函數(shù)時出錯,本代碼無法做到在改變系統(tǒng)年份或月份時,不能立即運(yùn)行,需要重新調(diào)試,所以此代碼還是有不足之處的。經(jīng)過不斷的修改與嘗試,最終將代碼完成。</p><p> 當(dāng)對上面的程序進(jìn)行了調(diào)試后運(yùn)行會出現(xiàn)下面圖2-1所示:</p><p><b> 圖2-1</b></p><p> 滿足
16、當(dāng)前頁以系統(tǒng)當(dāng)前日期的月份為準(zhǔn),顯示當(dāng)前月的每一天。</p><p> 按“↑ ”鍵其下面接著會顯示上一月的萬年歷,如圖2-2</p><p><b> 圖2-2</b></p><p> 按“↓ ”鍵其下面會接著顯示下一月的萬年歷,如圖2-3</p><p><b> 圖2-3</b>&l
17、t;/p><p> 按“→”鍵下面將會接著顯示當(dāng)年上一個月的萬年歷,如題2-4</p><p><b> 圖2-4</b></p><p> 按“← ”鍵將會在下面接著顯示當(dāng)年下一個月的萬年歷,如圖2-5</p><p><b> 圖2-5</b></p><p>
18、以上所顯示按EsC后將會退去該程序。</p><p> 以上運(yùn)行的結(jié)果可知該C語言所設(shè)計的萬年歷滿足設(shè)計要求</p><p><b> 5課程設(shè)計總結(jié)</b></p><p> 課程設(shè)計時一個很好的提高我們專業(yè)編程水平的方法,讓我們充分了解我們自己的水平,自主學(xué)習(xí)一些我們所短缺的知識。主動督促我們?nèi)パa(bǔ)充我們的知識漏洞。在這期間我對于我所不
19、知道的問題,我總是去查考一些資料,從那些書中我了解到了許多,同時我也知道書是多么的重要。與此同時,在這個課設(shè)的過程中,我更了解到團(tuán)隊(duì)合作的重要,同學(xué)們總是給我一些重要的資料,出奇的想法,老師則對我的課設(shè)中的不足的提出寶貴的意見,供我參考、提高,因此,我才能完成這次課程設(shè)計。從這次課設(shè)中我認(rèn)為編寫程序中掌握總體思想是其中的重要部分,清晰的思路能讓我們快速的解決問題。</p><p> 這次課程設(shè)計,我改了好幾次,
20、每次的改動讓我對編程體會更加深刻,相信經(jīng)過多次的訓(xùn)練后,我的編程能力會更上一層樓。總而言之,從這次課設(shè),我得到了很多人的幫助,感謝那些幫助過我的同學(xué)、老師。通過對C語言萬年歷的設(shè)計進(jìn)一步的鞏固了用C語言編寫程序,并且有利于更好的掌握C語言。</p><p> 在C語言程序設(shè)計的過程中也知道了自己在以前的學(xué)習(xí)中有很大的不足導(dǎo)致在設(shè)計過程中出現(xiàn)了很多的問題,有些地方看不懂也不知道怎么去設(shè)計,但是在設(shè)計過程中也學(xué)習(xí)了
21、很多,掌握了自己以前沒有學(xué)好的知識,雖然一時可以掌握完以前沒有學(xué)好的知識,不過也給自己敲響了警鐘,在學(xué)習(xí)中不可以伏于表面,要想學(xué)好每一門課程都要踏踏實(shí)實(shí),做什么都不是給別人看的!都是要更好的掌握該門知識,提高自己的自身的修養(yǎng),提高自己的能力!為以后的工作打下良好的知識基礎(chǔ)和技能基礎(chǔ)!</p><p> 在萬年歷的編寫過程中我也體會到了做事情一頂有耐心呢、細(xì)心,認(rèn)真。也培養(yǎng)了我獨(dú)立思考、 綜合運(yùn)用所學(xué)有關(guān)相應(yīng)知識
22、的能力,掌握 工程軟件設(shè)計的基本方法,強(qiáng)化上機(jī)動手編程能力,闖過理論與實(shí)踐相結(jié)合的難關(guān)!更加知道了要掌握好基礎(chǔ)知識的重要性。在萬年歷的設(shè)計過程中更加體會到了團(tuán)隊(duì)合作的重要性,三個臭皮匠抵上一個諸葛亮。大家在合作中共同努力,共同進(jìn)步!團(tuán)隊(duì)合作才會更好的完成設(shè)計!我也體會到以后在工作中團(tuán)隊(duì)合作的必要性和重要性!</p><p> 通過這次課程設(shè)計讓我在以后的學(xué)習(xí)中更加有信心!</p><p>
23、;<b> 參考文獻(xiàn)</b></p><p> [1] 劉振安,劉燕君.《C程序設(shè)計課程設(shè)計》[M].北京:機(jī)械工業(yè)出版社,2004年9月</p><p> [2] 譚浩強(qiáng).《C程序設(shè)計》(第三版).清華大學(xué)出版社,2005年7月</p><p> [3] 嚴(yán)蔚敏,吳偉民.《數(shù)據(jù)結(jié)構(gòu)》(C語言版).清華大學(xué)出版社,1997年4月<
24、/p><p> [4] 張?jiān)佬?,《Visual C++ 程序設(shè)計》.蘇州大學(xué)出版社,2007年12月</p><p> [5] 徐寶文,《The C Programming Language 》.機(jī)械工業(yè)出版社,2004年1月</p><p> [6] 黃明,梁旭,周紹斌,《Visual C++ 信息系統(tǒng)設(shè)計與開發(fā)實(shí)例》.機(jī)械工業(yè)出版社, 2005年3月</
25、p><p> [7] AL KELLEY等著,麻志毅譯.《C語言解析教程》.北京:機(jī)械工業(yè)出版社,2002年</p><p> [8] 李志球,《實(shí)用C語言程序設(shè)計教程》.北京:電子工業(yè)出版社,1999年</p><p> [9] 王立柱,《C/C++與數(shù)據(jù)結(jié)構(gòu)》.北京:清華大學(xué)出版社,2002年</p><p> [10] 李大友,《C
26、語言程序設(shè)計》.清華大學(xué)出版社,1999年</p><p><b> 附 錄</b></p><p> #include <stdio.h></p><p> #include <time.h></p><p> #include <stdlib.h></p>
27、<p> #include <conio.h></p><p> #include <ctype.h></p><p> #define CURU 72</p><p> #define CURD 80</p><p> #define CURL 75</p><p>
28、 #define CURR 77</p><p> #define ESC 27</p><p> void printWNL(int, int); //簡單格式打印萬年歷</p><p> int Week(int,int,int); //求星期幾</p><p> int getDays(int, int); //計算某個月的天數(shù)
29、</p><p> int isRunNian(int); //判斷是否閏年</p><p><b> /*</b></p><p> *簡單格式打印萬年歷</p><p> *參數(shù): y 整型,接收年份值; m 整型,接收月份值;</p><p><b> *返回值: 無
30、</b></p><p><b> */</b></p><p> void printWNL(int y, int m)</p><p><b> {</b></p><p><b> int i,j;</b></p><p>
31、int day = 1 - Week(y,m,1); //天數(shù)初始值,定位1號的位置</p><p> int days = getDays(y,m);</p><p> printf(" %4d年%2d月\n",y,m);</p><p> printf(" 日 一 二 三 四 五 六\n");</p
32、><p> for(i = 1; i <= 6; i++)</p><p><b> {</b></p><p> for(j = 1; j <= 7; j++)</p><p><b> {</b></p><p> if(day <= 0 || d
33、ay > days)</p><p> printf(" ");</p><p><b> else</b></p><p> printf("%3d",day);</p><p><b> day++;</b></p><
34、;p><b> }</b></p><p> printf("\n");</p><p><b> }</b></p><p> printf(" 提示:【←】減年 【→】加年 【↑】減月 【↓】加月 【ESC】退出\n");</p><p&
35、gt;<b> }</b></p><p><b> /*</b></p><p><b> *求星期幾</b></p><p> *參數(shù): y 整型,接收年份值; m 整型,接收月份值; d 整型,接收天的號數(shù)</p><p> *返回值: 整型, 是0,1-6
36、七個數(shù)之間的一個數(shù),0代表星期日,1-6代表星期一至星期六</p><p><b> */</b></p><p> int Week(int y,int m,int d)</p><p><b> {</b></p><p> int days = 0; //總天數(shù)</p>
37、<p><b> int i;</b></p><p> for(i = 1; i < y; i++) //累計1到y(tǒng)-1年的天數(shù)</p><p> days += isRunNian(i) ? 366 : 365;</p><p> for(i = 1; i < m; i++) //累計y年第1月到第m-1月的天
38、數(shù)</p><p> days += getDays(y,i);</p><p> days += d; //累計當(dāng)月的天數(shù)。</p><p> return days % 7; //返回星期值</p><p><b> }</b></p><p><b> /*</b&
39、gt;</p><p><b> *判斷是否閏年</b></p><p> *參數(shù): y 整型, 接收年份值</p><p> *返回值: 整型, 只為0或1, 0代表假, 1代表真</p><p><b> */</b></p><p> int isRunN
40、ian(int y)</p><p><b> {</b></p><p> return (y % 4 == 0 && y % 100 != 0 || y % 400 == 0) ? 1 : 0;</p><p><b> }</b></p><p><b> /
41、*</b></p><p><b> *計算某個月的天數(shù)</b></p><p> *參數(shù): y 整型,接收年份值; m 整型,接收月份值;</p><p> *返回值: 整型, 是0, 28, 29, 30, 31之間的一個數(shù)</p><p> *注意: 返回值為0,表示你調(diào)用該函數(shù)時傳遞了
42、不正確的年份值或月份值.</p><p><b> */</b></p><p> int getDays(int y, int m)</p><p><b> {</b></p><p> int days = 0;</p><p><b> switc
43、h(m)</b></p><p><b> {</b></p><p><b> case 1:</b></p><p><b> case 3:</b></p><p><b> case 5:</b></p><
44、p><b> case 7:</b></p><p><b> case 8:</b></p><p><b> case 10:</b></p><p><b> case 12:</b></p><p> days = 31; brea
45、k;</p><p><b> case 4:</b></p><p><b> case 6:</b></p><p><b> case 9:</b></p><p><b> case 11:</b></p><p>
46、 days = 30; break;</p><p><b> case 2:</b></p><p> days = isRunNian(y) ? 29 : 28; break;</p><p><b> default:;</b></p><p><b> }</b&g
47、t;</p><p> return days;</p><p><b> }</b></p><p><b> /*</b></p><p> *主函數(shù),應(yīng)用程序入口</p><p><b> */</b></p><p&
48、gt; void main()</p><p><b> {</b></p><p> int year,month;</p><p> struct tm t;</p><p><b> char ch;</b></p><p> _getsystime(&am
49、p;t); //標(biāo)準(zhǔn)函數(shù), 獲得系統(tǒng)當(dāng)前時間</p><p> year = t.tm_year + 1900; //得到當(dāng)前年份</p><p> month = t.tm_mon + 1; //得到當(dāng)前月份</p><p><b> do</b></p><p><b> {</b>&l
50、t;/p><p> system("cls"); //調(diào)用DOS清屏命令</p><p> printWNL(year,month); //自定義函數(shù), 打印萬年歷</p><p> ch = getch(); //獲得無回顯控制臺輸入字符</p><p> if(ch == ESC) //ESC鍵,退出循環(huán),結(jié)束程序
51、</p><p><b> break;</b></p><p> else if(ch == 0) //若值為零,則用戶敲了功能鍵,繼續(xù)獲取后續(xù)代碼。</p><p> ch = getch(); </p><p> switch(ch)</p><p><b> {<
52、/b></p><p> case CURL: year--; break; //左鍵減年</p><p> case CURR: year++; break; //右鍵加年</p><p> case CURU: //上鍵減月</p><p><b> month--; </b&g
53、t;</p><p> if(month == 0)</p><p><b> {</b></p><p> month = 12;</p><p><b> year--;</b></p><p><b> }</b></p>
54、<p><b> break;</b></p><p> case CURD: //下鍵加月</p><p><b> month++;</b></p><p> if(month == 13)</p><p><b> {</b&g
55、t;</p><p> month = 1;</p><p><b> year++;</b></p><p><b> }</b></p><p><b> break;</b></p><p><b> default:;<
溫馨提示
- 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è)計-萬年歷系統(tǒng)
- 萬年歷課程設(shè)計--萬年歷電子時鐘
- 萬年歷課程設(shè)計
- 萬年歷課程設(shè)計
- 萬年歷課程設(shè)計
- 萬年歷課程設(shè)計
- 萬年歷課程設(shè)計
- 萬年歷課程設(shè)計
- 萬年歷課程設(shè)計
- 數(shù)字萬年歷課程設(shè)計報告
- 課程設(shè)計報告--電子萬年歷
- java課程設(shè)計報告-萬年歷
- java萬年歷課程設(shè)計報告
- java課程設(shè)計報告---萬年歷
- 電子萬年歷課程設(shè)計報告
- 編寫萬年歷系統(tǒng)課程設(shè)計
- java萬年歷課程設(shè)計
- c++課程設(shè)計報告---萬年歷系統(tǒng)
評論
0/150
提交評論