課程設(shè)計報告通用排序_第1頁
已閱讀1頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  《通用排序程序》</b></p><p>  程序設(shè)計基礎(chǔ)課程設(shè)計報告</p><p>  專 業(yè): 計算機科學(xué)與技術(shù)系 </p><p>  班 級: 2011級2班 </p><p>  姓 名: 吳靜雯 <

2、;/p><p>  學(xué) 號: 2011508028 </p><p>  指導(dǎo)教師: 高攀 </p><p>  完成日期:2012-7-3 </p><p><b>  目錄</b></p><p>  1. 課程設(shè)計目的- 3 -&

3、lt;/p><p>  1.1課程設(shè)計目的:- 3 -</p><p>  1.2課程設(shè)計題目:- 3 -</p><p>  1.3題目要求:- 3 -</p><p>  2.總體設(shè)計- 6 -</p><p>  2.1總體組成框圖:- 6 -</p><p>  2.2總體流程圖:

4、- 7 -</p><p>  3.詳細設(shè)計- 8 -</p><p>  3.1數(shù)據(jù)錄入模塊- 8 -</p><p>  3.1.1函數(shù)功能:- 8 -</p><p>  3.1.2函數(shù)入口:- 8 -</p><p>  3.1.3函數(shù)流程圖:- 8 -</p><p>  

5、3.2輸出排序后的有序數(shù)據(jù)模塊- 9 -</p><p>  3.2.1函數(shù)功能:- 9 -</p><p>  3.2.2函數(shù)介紹:- 9 -</p><p>  3.2.3函數(shù)流程圖:- 9 -</p><p>  3.3數(shù)據(jù)排序主要函數(shù)模塊- 9 -</p><p>  3.3.1函數(shù)功能:- 9 -

6、</p><p>  3.3.2函數(shù)介紹- 10 -</p><p>  3.3.3函數(shù)流程圖- 10 -</p><p>  4、運行結(jié)果- 11 -</p><p>  4.1主界面- 11 -</p><p>  4.2int型數(shù)據(jù)排序- 11 -</p><p>  4.3do

7、uble型數(shù)據(jù)排序- 12 -</p><p>  4.4char型數(shù)據(jù)排序- 12 -</p><p>  4.5string型數(shù)據(jù)排序- 13 -</p><p>  5、課程設(shè)計總結(jié)- 14 -</p><p>  6、參考文獻- 15 -</p><p>  1. 課程設(shè)計目的 </p>

8、<p>  1.1課程設(shè)計目的:</p><p>  《C++程序設(shè)計》是計算機科學(xué)與技術(shù)專業(yè)的必修課。自己做一個課程設(shè)計是學(xué)習(xí)完本書后進行的一次全面的綜合性練習(xí)。根據(jù)課堂講授內(nèi)容,學(xué)生做相應(yīng)的自主練習(xí),消化課堂所講解的內(nèi)容;通過調(diào)試典型例題或習(xí)題積累調(diào)試C程序的經(jīng)驗;通過完成輔導(dǎo)教材中的編程題,逐漸培養(yǎng)學(xué)生的編程能力、用計算機解決實際問題的能力。</p><p>  1.2

9、課程設(shè)計題目:</p><p>  題目: 通用排序程序</p><p><b>  1.3題目要求: </b></p><p>  程序可以對任意類型的數(shù)值常數(shù)或字符串構(gòu)成的行進行排序,通過人機對話選擇程序是按數(shù)值進行排序還是按字符順序進行排序。排序是針對數(shù)據(jù)文件的。例如</p><p>  初識數(shù)據(jù)為:12,24,9

10、,128,3,76,345</p><p>  按數(shù)值大小排序應(yīng)為:3,9,12,24,76,128,345</p><p>  按字符串大小排序應(yīng)為:12,128,24,3,345,76,9</p><p>  1.問題描述(功能要求):</p><p>  程序可以對任意類型的數(shù)值常數(shù)或字符串構(gòu)成的行進行排序,通過人機對話選擇程序是按數(shù)值

11、進行排序還是按字符順序進行排序。排序是針對數(shù)據(jù)文件的。例如</p><p>  初識數(shù)據(jù)為:12,24,9,128,3,76,345</p><p>  按數(shù)值大小排序應(yīng)為:3,9,12,24,76,128,345</p><p>  按字符串大小排序應(yīng)為:12,128,24,3,345,76,9</p><p>  2.問題的解決方案:&l

12、t;/p><p>  在c++ Template中很多地方都用到了typename 與class這兩個關(guān)鍵字,而且好像可以替換,是不是這兩個關(guān)鍵字完全一樣呢?相信學(xué)習(xí)C++的人對class這個關(guān)鍵字都非常明白,class用于定義類,在模板引入c++后,最初定義模板的方法為: template<class T>。在這里class關(guān)鍵字表明T是一個類型,后來為了避免class在這兩個地方的使用可能給人帶來混

13、淆,所以引入了typename這個關(guān)鍵字,它的作用同class一樣表明后面的符號為一個類型,這樣在定義模板的時候就可以使用下面的方式了: template<typename T>。在模板定義語法中關(guān)鍵字class與typename的作用完全一樣。typename難道僅僅在模板定義中起作用嗎?其實不是這樣,typename另外一個作用為:使用嵌套依賴類型(nested depended name),如下所示:</p>

14、;<p>  class MyArray </p><p><b>  { </b></p><p>  public:typedef int LengthType;....</p><p><b>  }</b></p><p>  template<class T> v

15、oid MyMethod( T myarr ) </p><p><b>  { </b></p><p>  typedef typename T::LengthType LengthType; </p><p>  LengthType length = myarr.GetLength; </p><p><b

16、>  }</b></p><p>  這個時候typename的作用就是告訴c++編譯器,typename后面的字符串為一個類型名稱,而不是成員函數(shù)或者成員變量,這個時候如果前面沒有typename,編譯器沒有任何辦法知道T::LengthType是一個類型還是一個成員名稱(靜態(tài)數(shù)據(jù)成員或者靜態(tài)函數(shù)),所以編譯不能夠通過。所以我們使用typename進行函數(shù)模版的使用。</p>

17、<p>  根據(jù)題目功能要求,可以將問題分為以下步驟:</p><p>  (1)分析題目中出現(xiàn)的細微的要求和相互間的關(guān)系;</p><p>  (2)根據(jù)問題描述,理清在int和string類型之間的相互間的聯(lián)系;</p><p>  (3)確定數(shù)據(jù)結(jié)構(gòu),使用模版函數(shù)進行處理;</p><p>  (4)完成模版函數(shù)中的通用的函數(shù)

18、模型;</p><p>  (5)完成系統(tǒng)總結(jié)報告以及系統(tǒng)使用說明書。</p><p><b>  3.其它要求:</b></p><p> ?。?)只能使用C/C++語言,源程序要有適當(dāng)?shù)淖⑨?,使程序容易閱讀</p><p> ?。?)至少采用文本菜單界面(如果能采用圖形菜單界面更好)</p><p

19、>  (3)學(xué)生可自動增加新功能模塊</p><p><b>  2.總體設(shè)計 </b></p><p>  2.1總體組成框圖:</p><p><b>  圖2-1 總體框圖</b></p><p><b>  2.2總體流程圖:</b></p><

20、;p>  圖2-2 總體流程圖</p><p><b>  3.詳細設(shè)計</b></p><p>  使用template<typename T> void print(T *array,const int size){}的形式來定義函數(shù),在使用的時候進行模版的替換。因為我發(fā)現(xiàn),在幾種類型的比較中大體的思想是一樣的,所以這是我選擇使用模版函數(shù)的一個主

21、要的原因。</p><p><b>  3.1數(shù)據(jù)錄入模塊</b></p><p>  3.1.1函數(shù)功能:</p><p>  對指定的數(shù)據(jù)類型數(shù)據(jù)進行輸入,并存入數(shù)組中,以便后續(xù)使用。</p><p>  3.1.2函數(shù)入口:</p><p>  template<typename T&

22、gt;</p><p>  void Input(T *array, int Num){}</p><p>  3.1.3函數(shù)流程圖:</p><p>  圖3-1 Input(T *array, int Num)數(shù)據(jù)錄入函數(shù)流程圖</p><p>  3.2輸出排序后的有序數(shù)據(jù)模塊</p><p>  3.2.1函數(shù)

23、功能:</p><p>  輸出排序完成后的有序的數(shù)據(jù)。</p><p>  3.2.2函數(shù)介紹: </p><p>  template<typename T></p><p>  void print(T *array,const int size){}將已經(jīng)排好序的函數(shù)進行輸出。實現(xiàn)有序的存儲。</p><

24、;p>  3.2.3函數(shù)流程圖:</p><p>  圖3-2 print(T *array,const int size)有序數(shù)據(jù)輸出流程圖</p><p>  3.3數(shù)據(jù)排序主要函數(shù)模塊</p><p>  3.3.1函數(shù)功能:</p><p>  作為一個通用排序的主要的排序函數(shù),使用的不同的數(shù)據(jù)類型的不同,有數(shù)的形參進行傳遞,在

25、內(nèi)部的排序是相同的。對各種類型的參數(shù)的傳遞都能實現(xiàn)排序。</p><p><b>  3.3.2函數(shù)介紹</b></p><p>  template<typename T></p><p>  void bubble_sort(T *array,const int size){}內(nèi)部對數(shù)據(jù)的處理時不需要類型的,在類型進行傳遞時,自

26、動進行比較排序。排序的方式使用冒泡排序方式。</p><p>  3.3.3函數(shù)流程圖</p><p>  圖3-3 bubble_sort(T *array,const int size)數(shù)據(jù)排序函數(shù)流程圖</p><p><b>  4、運行結(jié)果</b></p><p><b>  4.1主界面</b

27、></p><p>  圖4-1—程序主界面</p><p>  4.2int型數(shù)據(jù)排序</p><p>  圖4-2—int型數(shù)據(jù)排序</p><p>  4.3double型數(shù)據(jù)排序</p><p>  圖4-3—double型數(shù)據(jù)排序</p><p>  4.4char型數(shù)據(jù)排序&l

28、t;/p><p>  圖4-4—char型數(shù)據(jù)排序</p><p>  4.5string型數(shù)據(jù)排序</p><p>  圖4-5—string型數(shù)據(jù)排序</p><p><b>  5、課程設(shè)計總結(jié)</b></p><p>  回顧起此次課程設(shè)計,至今我仍感慨頗多,從理論到實踐,在整整半個月的日子里

29、,我學(xué)到很多很多的東西,不僅鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的內(nèi)容。通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才是真正的知識,才能提高自己的實際動手能力和獨立思考的能力。在設(shè)計的過程遇到了各種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,通過這次課程設(shè)計,把以前所

30、學(xué)過的知識重新溫故,鞏固了所學(xué)的知識。</p><p><b>  6、參考文獻</b></p><p>  1.《C++程序設(shè)計》 作者:譚浩強 清華大學(xué)出版社</p><p>  2.《VC++深入詳解》作者:孫鑫、余安萍 電子工業(yè)出版社 2006</p><p>  3.《Visual C++項目開發(fā)實用案例》

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論