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