C++程序設(shè)計(jì)報(bào)告_第1頁(yè)
C++程序設(shè)計(jì)報(bào)告_第2頁(yè)
C++程序設(shè)計(jì)報(bào)告_第3頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、設(shè)計(jì)題目:編寫(xiě)程序提示用戶(hù)輸入一個(gè)班級(jí)中的學(xué)生人數(shù) n, 再依次提示用戶(hù)輸入 n個(gè)人在課程 A中的考試成 績(jī),然后計(jì)算出平均值,顯示出來(lái)。 要求用到第 九章中的數(shù)組類(lèi)模板 Array 定義浮點(diǎn)型數(shù)組存儲(chǔ) 考試成績(jī)。姓名:馬雪峰學(xué)號(hào):20141030106專(zhuān)業(yè)班級(jí):計(jì)科一班完成日期:2016年6月26日1設(shè)計(jì)任務(wù)編寫(xiě)程序提示用戶(hù)輸入一個(gè)班級(jí)中的學(xué)生人數(shù)n,再依次提示用戶(hù)輸入n個(gè)人在課程A中的考試成績(jī),然后計(jì)算出平均值,顯示出來(lái)。要求用到第九章中的數(shù)組類(lèi)模板Array定義浮點(diǎn)型數(shù)組存儲(chǔ)考試成績(jī)。1.1設(shè)計(jì)目的(1)、加強(qiáng)C+課程學(xué)習(xí),將課本上的理論知識(shí)運(yùn)用于實(shí)踐,通過(guò)實(shí)際的程序操作來(lái)提高 自己編寫(xiě)

2、程序的能力,達(dá)到理論與實(shí)踐相結(jié)合的目的。(2) 、培養(yǎng)自己動(dòng)腦思考,動(dòng)手操作的能力,在實(shí)際操作過(guò)程中體會(huì)C+中面向?qū)ο蟮乃?想。(3)、在實(shí)際的操作過(guò)程中去衡量自己理論知識(shí)掌握的程度,通過(guò)設(shè)計(jì)流程,編寫(xiě)程序, 上機(jī)調(diào)試去尋找并發(fā)現(xiàn)知識(shí)的缺陷,并想辦法彌補(bǔ)。(4)、在本程序中主要是要達(dá)到能對(duì)類(lèi)的定義及用法,數(shù)組的定義及用法,數(shù)組類(lèi)模版, 運(yùn)算符重載,多文件結(jié)構(gòu),成員函數(shù)的實(shí)現(xiàn)等的熟練運(yùn)用。1.2設(shè)計(jì)內(nèi)容用數(shù)組類(lèi)模板、析構(gòu)函數(shù)、構(gòu)造函數(shù)、賦值構(gòu)造函數(shù)、運(yùn)算符重載、指針等語(yǔ)法來(lái)完成一個(gè)班級(jí)在某門(mén)課程中考試的平均值的程序。1.3設(shè)計(jì)指標(biāo)或者要求設(shè)計(jì)指標(biāo):用C+完成一個(gè)班級(jí)在某門(mén)課程中的成績(jī)儲(chǔ)存并計(jì)算平

3、均值的程序,要求用 到數(shù)組類(lèi)模板。輸入要求:在程序運(yùn)行的頁(yè)面根據(jù)提示輸入班級(jí)學(xué)生人數(shù)n,再依次輸入每個(gè)人在課程A中的成績(jī)。輸出要求:輸出n個(gè)人在課程A中的平均成績(jī)。2設(shè)計(jì)過(guò)程(1) 、分析程序的功能:使用戶(hù)能根據(jù)程序提示輸入班級(jí)學(xué)生人數(shù)n和n個(gè)人在某門(mén)課中 考試成績(jī),并能儲(chǔ)存成績(jī)?nèi)缓笥?jì)算平均值,顯示出來(lái)。(2)、思考程序要用到的算法原理:使用數(shù)組類(lèi)模板定義浮點(diǎn)型數(shù)組存儲(chǔ)考試成績(jī);利用 班級(jí)總?cè)藬?shù)與其在課程 A中的總分之比的原理求平均值。(3)、設(shè)計(jì)程序流程圖(見(jiàn) 2.3 )。(4)、編寫(xiě)程序(見(jiàn) 2.4 )。2.1程序功能使用戶(hù)能根據(jù)程序提示輸入班級(jí)學(xué)生人數(shù)n和n個(gè)人在某門(mén)課中考試成績(jī),并能儲(chǔ)

4、存成績(jī)?nèi)缓笥?jì)算平均值,顯示出來(lái)。2.2算法原理(1 )、使用數(shù)組類(lèi)模板定義浮點(diǎn)型數(shù)組存儲(chǔ)考試成績(jī);2.3程序流程圖S出 AverScore結(jié)束2.4程序主要模塊或者函數(shù)#ifndef ARRAY_H#defi ne ARRAY_H#in elude <iostream.h>#i nclude <stdlib.h>#ifndef NULLcon st int NULL = 0;#en difenum ErrorType/錯(cuò)誤類(lèi)型集合,共有三種類(lèi)型invalidArraySize, memoryAllocationError, indexOutOfRange;char *e

5、rrorMsg="In valid array size", "Memory allocatio n error","Invalid in dex:"template <class T>class Arrayprivate:T* alist; /T類(lèi)型指針,用于存放動(dòng)態(tài)分配的數(shù)組內(nèi)存首地址int size;void Error(ErrorType error,i nt badI ndex=0) con st;public:Array(i nt sz = 50);Array(c onst Array<T>&

6、; A);Array(void);/重載"="使數(shù)組對(duì)象可以整體賦值A(chǔ)rray<T>& operator= (const Array<T>& rhs);T& operator(i nt i);operator T* (void) con st;int ListSize(void) con st;void Resize(i nt sz);/以下為類(lèi)成員函數(shù)的實(shí)現(xiàn)template <class T>void Array<T>:Error(ErrorType error, i nt bad In dex) c

7、onstcout << errorMsgerror;if (error = in dexOutOfRa nge)cout << badI ndex; /如果是下標(biāo)越界錯(cuò),輸出錯(cuò)誤的下標(biāo)cout << en dl;exit(1);template <class T>Array<T>:Array(i nt sz)if (sz <= 0) /sz為數(shù)組大小(元素個(gè)數(shù)),若小于0,則輸出錯(cuò)誤信息 Error(i nvalidArraySize);size = sz;alist = new Tsize; /動(dòng)態(tài)分配size個(gè)T類(lèi)型的元素空

8、間if (alist = NULL) /如果分配內(nèi)存不成功,輸出錯(cuò)誤信息Error(memoryAllocatio nError);template <class T>Array<T>:Array(void)delete alist;template <class T>Array<T>:Array(c onst Array<T >& X)/從對(duì)象X取得數(shù)組大小,并賦值給當(dāng)前對(duì)象的成員int n = X.size;size = n;alist = new Tn;if (alist = NULL) /如果分配內(nèi)存不成功,輸出錯(cuò)誤信

9、息Error(memoryAllocatio nError)T* srcptr = X.alist;T* destptr = alist;while (n-)*destptr+ = *srcptr+;/重載"="運(yùn)算符,將對(duì)象rhs賦值給本對(duì)象。實(shí)現(xiàn)對(duì)象之間的整體賦值template <class T>Array<T>& Array<T>:operator= (const Array<T>& rhs)int n = rhs.size;if (size != n)delete alist;alist = new

10、Tn; /重新分配n個(gè)元素的內(nèi)存if (alist = NULL)Error(memoryAllocatio nError);size = n; /記錄本對(duì)象的數(shù)組大小/從rhs向本對(duì)象復(fù)制元素T* destptr = alist;T* srcptr = rhs.alist;while (n-)*destptr+ = *srcptr+;return *this;/重載下標(biāo)操作符,實(shí)現(xiàn)與普通數(shù)組一樣通過(guò)下標(biāo)訪(fǎng)問(wèn)元素,并且具有越界檢查功能template <class T>T& Array<T>:operator (i nt n)/檢查下標(biāo)是否越界if (n <

11、; 0 | n > size-1)Error(i ndexOutOfRa nge, n);/返回下標(biāo)為n的數(shù)組元素return alist n;template <class T>Array<T>:operator T* (void) const/返回當(dāng)前對(duì)象中私有數(shù)組的首地址return alist;/取當(dāng)前數(shù)組的大小template <class T>int Array<T>:ListSize(void) constreturn size;/將數(shù)組大小修改為sztemplate <class T>void Array<

12、T>:Resize(i nt sz)if (sz <= 0)Error(i nvalidArraySize);if (sz = size)return;T* n ewlist = new Tsz;if (n ewlist = NULL)Error(memoryAllocatio nError);int n = (sz <= size) ? sz : size;/將原有數(shù)組中前n個(gè)元素復(fù)制到新數(shù)組中T* srcptr = alist;T* destptr = n ewlist;while (n-)*destptr+ = *srcptr+;delete alist;alist =

13、 n ewlist;size = sz;#en difvoid mai n()int n;double AverScore,TotalScore = 0;cout << "請(qǐng)輸入學(xué)生人數(shù):”;cin >> n;Array<float> Score (n);for (in t i=0; i<n; i+)cout << "請(qǐng)輸入第"<< i+1 <<" 個(gè)學(xué)生的課程 A成績(jī)(0100):" cin >> Scorei;TotalScore += Scorei;

14、AverScore = TotalScore/n;cout << " 平均成績(jī)?yōu)?” << AverScore << endl;3軟件運(yùn)行或者測(cè)試結(jié)果若一個(gè)班學(xué)生人數(shù)為 10,他們的在課程 A中的考試成績(jī)分別為 88、78、90、93、69、89、 95、77、79、90,根據(jù)程序提示依次輸入,則程序運(yùn)行結(jié)果如圖所示:I H:DEbuigqq 心貳123456789主冃土冃至冃主冃主冃至冃主冃至口0 0- 0 00 0 0 0 0 -0 0 R- 0 0 0 0 0 1曠 0 0 0 0 0- 0 0 0 0 ( <<<<&

15、lt;<<< 貝 績(jī)績(jī)績(jī)績(jī)績(jī)績(jī)績(jī)績(jī)薯 e- 成成成成成成成成成昉nu AAAAAAAAACf i 口王口王口至口王口王口王口王口王口王t 古4JA 丄 K 亠員ZCA三4ZCA梟 n rnp mrmkmFCmKIL D 0il課isililisilil內(nèi) c T二三 二-一二一二一二 三一二二-些 t f-L.二上3匸一53匸二空些苣8 d 123456789 1 y-. y- 學(xué)第第第第第第第第第第績(jī)斷 入入兀入入兀入入兀入入成S “ j j j . j s88 ?890936989957779904軟件設(shè)計(jì)過(guò)程中遇到的問(wèn)題以及解決辦法在這次設(shè)計(jì)程序的過(guò)程中遇到了許多問(wèn)題:

16、比如對(duì)類(lèi)模板、數(shù)組的內(nèi)存分配、指針、析構(gòu)函數(shù)等知識(shí)掌握不牢固,使得拿到題目無(wú)從下手;不知道重載運(yùn)算符“=”可以對(duì)數(shù)組整體賦值;對(duì)this指針概念模糊;但最后都通過(guò)請(qǐng)教別人和翻課本,上網(wǎng)查找相關(guān)資料等途 徑解決了。參考文獻(xiàn):C+語(yǔ)言程序設(shè)計(jì)(第四版)、C+程序設(shè)計(jì)(第二版)譚浩強(qiáng)著、Visual C+編程之道。5總結(jié)這兩周的C+課程設(shè)計(jì),時(shí)間上說(shuō)長(zhǎng)不長(zhǎng),說(shuō)短也不短,卻讓我學(xué)到了很多:對(duì)很多函數(shù) 有了新的認(rèn)識(shí),對(duì) C+有了更深刻的了解,增強(qiáng)了程序的編寫(xiě)能力,鞏固了專(zhuān)業(yè)知識(shí)。在寫(xiě) 程序的過(guò)程中我學(xué)到了自己曾經(jīng)不知道或一些不會(huì)用的函數(shù),特別是多文件結(jié)構(gòu),類(lèi)模板, 運(yùn)算符的重載等;也讓我明白了學(xué)好 C+是多么重要;在自己基礎(chǔ)知識(shí)掌握不牢固的情況下, 要設(shè)計(jì)一個(gè)程序是多么難。總的來(lái)說(shuō)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論