C++_電子萬年歷設(shè)計(jì)—課程設(shè)計(jì)論文.doc
《C++_電子萬年歷設(shè)計(jì)—課程設(shè)計(jì)論文.doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《C++_電子萬年歷設(shè)計(jì)—課程設(shè)計(jì)論文.doc(14頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、xxxx 大 學(xué) 課 程 設(shè) 計(jì) 說 明 書(論 文) 目 錄第1章 課程設(shè)計(jì)目的與要求11.1 設(shè)計(jì)目的11.2實(shí)驗(yàn)環(huán)境11.3預(yù)備知識(shí)11.4設(shè)計(jì)要求1第2章 課程設(shè)計(jì)內(nèi)容22.1 課題描述22.2 系統(tǒng)設(shè)計(jì)22.2.1功能分析22.2.2面向?qū)ο笤O(shè)計(jì)32.2.3 類成員描述42.3程序?qū)崿F(xiàn)42.3.1源碼分析42.3.2運(yùn)行結(jié)果11第3章 課程設(shè)計(jì)總結(jié)12參考文獻(xiàn)13第1章 課程設(shè)計(jì)目的與要求1.1 設(shè)計(jì)目的將理論教學(xué)中涉及到的知識(shí)點(diǎn)貫穿起來,對(duì)不同的數(shù)據(jù)類型、程序控制結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)作一比較和總結(jié),結(jié)合設(shè)計(jì)題目進(jìn)行綜合性應(yīng)用,對(duì)所學(xué)知識(shí)達(dá)到融會(huì)貫通的程度。通過課程設(shè)計(jì),學(xué)生在下述各方面的
2、能力應(yīng)該得到鍛煉:(1)進(jìn)一步鞏固、加深學(xué)生所學(xué)專業(yè)課程C+語言教程的基本理論知識(shí),理論聯(lián)系實(shí)際,進(jìn)一步培養(yǎng)學(xué)生綜合分析問題,解決問題的能力。(2)全面考核學(xué)生所掌握的基本理論知識(shí)及其實(shí)際業(yè)務(wù)能力,從而達(dá)到提高學(xué)生素質(zhì)的最終目的。(3)利用所學(xué)知識(shí),開發(fā)小型應(yīng)用系統(tǒng),掌握運(yùn)用C+語言編寫調(diào)試應(yīng)用系統(tǒng)程序,訓(xùn)練獨(dú)立開發(fā)應(yīng)用系統(tǒng),進(jìn)行數(shù)據(jù)處理的綜合能力。(4)對(duì)于給定的設(shè)計(jì)題目,如何進(jìn)行分析,理清思路,并給出相應(yīng)的數(shù)學(xué)模型。(5)掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的方法。(6)熟練掌握C+語言的基本語法,靈活運(yùn)用各種數(shù)據(jù)類型。(7)進(jìn)一步掌握在集成環(huán)境下如何調(diào)試程序和修改程序。1.2實(shí)驗(yàn)環(huán)境硬件要求能運(yùn)行Win
3、dows 操作系統(tǒng)的微機(jī)系統(tǒng)。C+語言應(yīng)用程序開發(fā)軟件使用:VC+ 系統(tǒng),或其他C+語言應(yīng)用程序開發(fā)軟件。1.3預(yù)備知識(shí)熟悉C+語言程序設(shè)計(jì)的基本知識(shí)及VC+編輯器的使用方法。1.4設(shè)計(jì)要求1.仔細(xì)分析設(shè)計(jì)題目,畫出程序流程圖,編寫程序源代碼。2.積極上機(jī)調(diào)試源程序,增強(qiáng)編程技巧與調(diào)程能力。3.認(rèn)真書寫課程設(shè)計(jì)預(yù)習(xí)報(bào)告,課程設(shè)計(jì)說明書。4.遵守課程設(shè)計(jì)要求和機(jī)房管理制度,服從指導(dǎo)教師的安排,確保課程設(shè)計(jì)的順利完成課程設(shè)計(jì)內(nèi)容。第2章 課程設(shè)計(jì)內(nèi)容2.1 課題描述目前的計(jì)算機(jī)日歷程序,比較典型的是Windows各版本中的日歷程序以及基于該程序所開發(fā)的各種應(yīng)用程序中的日歷程序。然而,這些程序都千篇
4、一律的局限在一個(gè)很短的時(shí)間范圍內(nèi)。但是,很多情況下,特別是在眾多的科學(xué)研究領(lǐng)域中,一個(gè)時(shí)間跨度教大的日歷程序是很有參考價(jià)值的。C+程序設(shè)計(jì)語言充分發(fā)揮了其自身無與倫比的優(yōu)越性,用極短的程序文本就填補(bǔ)了這一領(lǐng)域的空白。2.2 系統(tǒng)設(shè)計(jì)2.2.1功能分析首先判斷某一年是否為閏年,若是,則2月輸出為29天,若不是,2月輸出為28天。再判斷系統(tǒng)當(dāng)前月份是大月還是小月,若為大月,則輸出31天;若為小月,則輸出30天。通過定義一個(gè)struct結(jié)構(gòu)體,用對(duì)對(duì)象指針的訪問來實(shí)現(xiàn)從系統(tǒng)自動(dòng)獲取時(shí)間為程序所用。再利用一個(gè)函數(shù)計(jì)算出每月的第一天是星期幾。根據(jù)所判斷的大月、小月,通過控制符setw控制輸出流格式(設(shè)置
5、字段寬度),把該日期以前的位置用空格補(bǔ)上,并從該日起依次輸出天數(shù)直到月底,該月中的天數(shù)加上該月一日為星期幾的數(shù)字再除以7得0換行,即可完整的輸出該月的日歷。程序中定義了一個(gè)結(jié)構(gòu)體。結(jié)構(gòu)體(struct)是由一系列具有相同類型或不同類型的數(shù)據(jù)構(gòu)成的數(shù)據(jù)集合,也叫結(jié)構(gòu)4。在C語言中,可以定義結(jié)構(gòu)體類型,將多個(gè)相關(guān)的變量包裝成為一個(gè)整體使用。在結(jié)構(gòu)體中的變量,可以是相同、部分相同,或完全不同的數(shù)據(jù)類型。在C語言中,結(jié)構(gòu)體不能包含函數(shù)。在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,對(duì)象具有狀態(tài)(屬性)和行為,狀態(tài)保存在成員變量中,行為通過成員方法(函數(shù))來實(shí)現(xiàn)。C語言中的結(jié)構(gòu)體只能描述一個(gè)對(duì)象的狀態(tài),不能描述一個(gè)對(duì)象的行為
6、。在C+中,考慮到C語言到C+語言過渡的連續(xù)性,對(duì)結(jié)構(gòu)體進(jìn)行了擴(kuò)展,C+的結(jié)構(gòu)體可以包含函數(shù)。C+中一般使用cout和cin時(shí)的默認(rèn)格式.但有時(shí)人們?cè)谳斎胼敵鰰r(shí)有一些特殊的要求,如在輸出實(shí)數(shù)時(shí)規(guī)定字段寬度,只保留兩位小數(shù),數(shù)據(jù)向左或向右對(duì)齊等。C+提供了在輸入輸出流中使用的控制符。需要注意的是:如果使用了控制符,在程序單位的開頭除了要加iostream頭文件外,還要加iomanip頭文件5。本課程設(shè)計(jì)主要是編寫一個(gè)電子萬年歷系統(tǒng)。模仿現(xiàn)實(shí)生活中的掛歷,以系統(tǒng)當(dāng)前日期的月份為準(zhǔn)顯示當(dāng)前月份的每一天(顯示出日期及對(duì)應(yīng)的星期幾),當(dāng)系統(tǒng)日期變到下一個(gè)月時(shí),系統(tǒng)自動(dòng)翻頁到下一月。在課程設(shè)計(jì)中,程序設(shè)計(jì)
7、設(shè)計(jì)語言采用Visual C+6.0,程序運(yùn)行平臺(tái)為Windows XP。為了顯示當(dāng)月的每一天,采取算出當(dāng)月第一天是星期幾的方法,通過判斷大月、小月,依次排出當(dāng)月的每一天。程序通過調(diào)試運(yùn)行,實(shí)現(xiàn)了設(shè)計(jì)目標(biāo)。2.2.2面向?qū)ο笤O(shè)計(jì)從系統(tǒng)獲取時(shí)間判斷該年是否為閏年輸出31天判斷該月是大月還是小月輸出30天輸出29天輸出28天圖2.1 輸出天數(shù)判斷從系統(tǒng)獲取年月日之后,判斷該年是否為閏年,若是閏年,且當(dāng)月為2月,則輸出29天;若不是閏年,則2月輸出28天。判斷該月為大月還是小月,大月輸出31天,小月輸出30天。如圖2.1。2.2.3類成員描述輸入、輸出流類庫函數(shù)的數(shù)量非常多,程序中用到的如表2-2所
8、示表2-2程序中用到的輸入、輸出流類庫函數(shù)函數(shù)聲明功能聲明int leap (int year) ;判斷是否為閏年。int days_month (int year,int month);判斷當(dāng)月有多少天,值以數(shù)值型數(shù)據(jù)返回。Int firstday(int year,int month);判斷每月的第一天是星期幾,值以數(shù)值型數(shù)據(jù)返回。time( &nowtime );獲取時(shí)間函數(shù)。int main();主函數(shù),輸出萬年歷的日期幾對(duì)應(yīng)的星期。2.3程序?qū)崿F(xiàn)2.3.1源碼分析(1)判斷年份是否是閏年的語句:if(year%4=0&year%100!=0|year%400=0)用一個(gè)邏輯表達(dá)式包含
9、所有的閏年條件的if語句。能被4整除,但不能被100整除,為閏年,或能被400整除,為閏年。編寫完整閏年判斷的程序,進(jìn)行調(diào)試,輸出結(jié)果如圖2.3所示。#includeusing namespace std;int main()int year;bool leap;cinyear;if(year%4=0&year%100!=0|year%400=0)leap=true;else leap=false;if (leap)cout是閏年endl;elsecout不是閏年endl;return 0;圖2.3判斷年份是否是閏年(2)輸出系統(tǒng)時(shí)間的程序(如圖2.4):#includeusing names
10、pace std;int main() cout_DATE_tm_year + 1900;month = timeinfo-tm_mon + 1;(4)函數(shù)w=(1+2*month+3*(month+1)/5+year+year/4+year/400-year/100)%7+1計(jì)算出每月第一天是星期幾。(5)輸出格式的實(shí)現(xiàn)如果該月第一天是星期日,輸出日期,每?jī)蓚€(gè)日期間用setw控制符設(shè)置字段寬度為4,當(dāng)排滿7天換行,到輸出本月全部日期為止。如果該月第一天不是星期日,空出前面幾天,輸出日期,每?jī)蓚€(gè)日期間用setw控制符設(shè)置字段寬度為4,排滿第一行后換行,再排滿7天換行,到輸出本月全部日期為止。i
11、f(a=7) for(i=1;i=b;i+) coutsetw(4)i; if(i%7=0) coutendl; if(a!=7) while (j=4*a) cout ; j+; for(i=1;i=b;i+) coutsetw(4)i; if(i=7*k-a) coutendl; k+; / 程序名稱:d.cpp/ 程序功能:從系統(tǒng)自動(dòng)獲取日期,顯示當(dāng)月日歷/ 最后修改日期:2010-12-26#include#includeint fn1(int year,int month,int day);int monthday(int year,int month);void fn2(int y
12、ear,int month);void fn3(int year);void main() int year,month,day,i,x;coutendlendl;cout -endl;cout * *endl;cout 歡迎進(jìn)入萬年歷查詢系統(tǒng) endl;cout * *endl;cout -endl;coutendlendl;cout 程序員: endlendl;cout 遼寧工業(yè)大學(xué)endl;loop:coutendlendl;cout 請(qǐng)您選擇查詢內(nèi)容;endlendl;cout 1.顯示一年的日歷:endl;cout 2.顯示一個(gè)月的日歷:endl;cout 3.顯示某一天是周幾:en
13、dl;cout 0.退出:endl;coutendl;cout請(qǐng)輸入(0-3)中的數(shù)字選擇您要查詢的內(nèi)容i;switch(i)case 0: return;case 1:cout請(qǐng)輸入年份,輸入格式為*year;fn3(year);break;case 2:cout請(qǐng)輸入您要查詢的日期,輸入格式為* *endl如2009 11yearmonth;fn2(year,month); break;case 3:cout請(qǐng)輸入您要查詢的日期,輸入格式為* * *endl如2009 11 23yearmonthday;coutyear年month月day日是星期fn1(year,month,day)en
14、dl;break;default:cout輸入錯(cuò)誤endl;cout繼續(xù)查詢請(qǐng)輸 1 endl退出查詢請(qǐng)輸 0 x;if(x=1)goto loop;int fn1(int year,int month,int day)int yearjs,monthjs,monthday=0;int permonthday12=31,28,31,30,31,30,31,31,30,31,30,31;for(int i=0;i2)monthjs=(monthday+1)%7;elsemonthjs=monthday%7;elseyearjs=1;monthjs=monthday%7;return (year+
15、year/4+year/400-year/100-yearjs+monthjs+day)%7)=0?7:(year+year/4+year/400-year/100-yearjs+monthjs+day)%7);int monthday(int year,int month)int permonthday12=31,28,31,30,31,30,31,31,30,31,30,31;if(month!=2)return permonthdaymonth-1;elseif(year%4=0&year%100=0|year%400=0)return 29;elsereturn 28;void fn2
16、(int year,int month)coutendlendl;coutsetw(6)一setw(6)二setw(6)三setw(6)四setw(6)五setw(6)六setw(6)日endl;for(int i=1;i=monthday(year,month);i+)if(i=1) for(int j=1;jfn1(year,month,1);j+)cout.width(6);coutsetw(6) ;coutsetw(6)i;else if(i+fn1(year,month,1)-2)%7=0)coutendl;coutsetw(6)i;coutendlendl;void fn3(int
17、 year)for(int i=1;i=12;i+)couti 月endl;fn2(year,i);coutendlendl;2.3.2運(yùn)行結(jié)果本程序按照設(shè)計(jì)要求,模仿現(xiàn)實(shí)生活中的日歷的形式,從計(jì)算機(jī)中獲取當(dāng)前系統(tǒng)的日期并輸出,同時(shí),輸出當(dāng)月所有日期及對(duì)應(yīng)的星期幾。該程序?qū)崿F(xiàn)了設(shè)計(jì)目標(biāo)。運(yùn)行結(jié)果如圖2.5所示。圖2.5 運(yùn)行結(jié)果第3章 課程設(shè)計(jì)總結(jié)經(jīng)過一個(gè)學(xué)期對(duì)C+程序設(shè)計(jì)的學(xué)習(xí),我學(xué)習(xí)到了基本的理論知識(shí),了解到了C+語言程序設(shè)計(jì)的思想,這些知識(shí)都為我的課程實(shí)踐和進(jìn)一步的學(xué)習(xí)打下了堅(jiān)實(shí)的基礎(chǔ)。此次對(duì)C+語言編寫電子萬年歷的設(shè)計(jì)進(jìn)一步的鞏固了用C+語言編寫程序,并且有利于更好的掌握C+語言。通過
18、本課程設(shè)計(jì)也培養(yǎng)了我獨(dú)立思考、綜合運(yùn)用所學(xué)有關(guān)相應(yīng)知識(shí)的能力,掌握工程軟件設(shè)計(jì)的基本方法,強(qiáng)化上機(jī)動(dòng)手編程能力,闖過理論與實(shí)際相結(jié)合的難關(guān)。通過C+課程設(shè)計(jì),一方面是為了檢查這一個(gè)學(xué)期來計(jì)算機(jī)語言的學(xué)習(xí)成果,另一方面也是能讓我們進(jìn)一步掌握和熟練地運(yùn)用它,與此同時(shí),也能夠讓我們認(rèn)清自己在C+學(xué)習(xí)方面的不足之處和薄弱環(huán)節(jié),并加以彌補(bǔ)和鞏固。通過對(duì)教學(xué)管理系統(tǒng)的程序設(shè)計(jì),進(jìn)一步的鞏固了用C+語言編寫程序的能力,并且利于更好的掌握C+語言!總之這次課程設(shè)計(jì),使我收獲頗豐,相信會(huì)為自己以后的學(xué)習(xí)和工作帶來很大的好處。最重要的還是激發(fā)了我編程的興趣和熱情,讓我從一個(gè)只懂理論變成了能做一些小型程序。整體地評(píng)
19、價(jià)這次課程設(shè)計(jì),我認(rèn)為收獲很大,正如上面所說的那樣,通過課程設(shè)計(jì),既復(fù)習(xí)了以前的舊知識(shí),又學(xué)到了一些新的知識(shí)。像教學(xué)管理系統(tǒng)這樣的應(yīng)用程序的設(shè)計(jì)和創(chuàng)建,經(jīng)歷了平時(shí)在課堂和考試中不會(huì)出現(xiàn)的難題和考驗(yàn)。而這些問題,又都是課本上很少提到的、更深一層的實(shí)踐與知識(shí)相結(jié)合的問題,這并不是我們平時(shí)只靠課本,就可以輕易解決的。所以,鍛煉了我們面對(duì)難題,學(xué)會(huì)用已掌握的知識(shí)去解決具體問題的能力,進(jìn)一步培養(yǎng)了獨(dú)立思考問題和解決問題的能力。特別是學(xué)會(huì)了在Visual C+中如何調(diào)試程序的方法。當(dāng)然,老師的指導(dǎo)和同學(xué)的幫助也是不可忽視的,他們給了我許多提示和幫助,教會(huì)了我編譯復(fù)雜程序的方法。在這里也要表示對(duì)他們的感謝!參考文獻(xiàn)1.鄭莉、董淵 編著 C+語言程序設(shè)計(jì) 北京:清華大學(xué)出版社2.黃迪明 主編 C+語言程序設(shè)計(jì)基礎(chǔ) 北京:電子工業(yè)出版社3.錢能 主編 C+程序設(shè)計(jì)教程 北京:清華大學(xué)出版社4.徐孝凱 編著 C+語言程序設(shè)計(jì) 北京:清華大學(xué)出版社5.吳訪升 編著 C+程序設(shè)計(jì) 北京: 機(jī)械工業(yè)出版社6.Decoder 主編 C/C+程序設(shè)計(jì) 北京:中國鐵道出版社13
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競(jìng)賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測(cè)試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測(cè)工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識(shí)競(jìng)賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案