一、課程設計目的
《vc++物件導向程式設計》是計算機相關專業的一門重要專業基礎課。其實踐性、應用性很強。實踐教學環節是必不可少的乙個重要環節。
vc++程式設計的設計目的是加深對理論教學內容的理解和掌握,使學生較系統地掌握程式設計及廣泛應用,基本方法及技巧,為學生綜合運用所學知識,利用軟體工程為基礎進行軟體開發、並在實踐應用方面打下一定基礎。通過課程設計,可以使學生更進一步地理解和熟練掌握所學內容,並能夠用其分析、設計和解答類似問題,從而達到鍛鍊學生理論與實踐相結合的能力。
本課程設計以設計綜合性實驗為主,培養學生靈活利用所學綜合知識,提高程式設計的能力;同時,也培養學生利用c++語言進行程式設計和除錯程式的能力,使學生能夠具有編寫較複雜程式的能力。通過此次課程設計,主要達到以下目的:
(1)鞏固和加深對vc++物件導向程式設計基本知識的理解,提高綜合運用vc++理論的能力。
(2)使學生掌握軟體設計的基本內容和設計方法,並培養學生進行規範化軟體設計的能力。
(3)使學生掌握使用各種計算機資料和有關參考資料,提高學生進行程式設計的基本能力。
二、vc++課程設計要求
(一)基本要求
1、每組2人完成課程設計。(可以選擇前10題中任意2題(每人1題)或者2人共同完成10-20題中任意1題)。其中,設計報告中要能體現明確分工,並每人完成不同的功能模組,對於關鍵**或者關鍵模組不允許出現重複內容。
2、獨立思考,獨立完成課程設計。課程設計中各任務的設計和除錯要求獨立完成,遇到問題可以相互討論,但不可以拷貝。
3、做好上機準備。每次上機實驗之前,要事先編制好準備除錯的程式,認真想好除錯步驟和相關環境的設定方法,準備好有關文件。
4.按照課程設計的具體要求建立功能模組。對於具體模組要求按照如下幾個方面內容認真完成:
需求分析:
在該部分描述清楚模組的具體功能。如果存在多個模組,則需要描述清楚每個模組的具體功能及相互之間的關聯關係。
概要設計:
在此部分對模組的演算法設計進行說明(可以採用演算法流程圖進行描述,並附上該圖的相關文字說明),每個程式中使用的儲存結構設計說明(如果指定儲存結構,請描述清楚該儲存結構的定義)。
詳細設計:
該部分要求給出各個演算法具體實現的源程式,對每個題目要有相應的源程式(可以是一組源程式,每個功能模組採用不同的函式實現)說明。源程式要按照程式編寫規則編寫。其中,針對變數、函式名稱定義及關鍵**需要有詳細的注釋說明,對於重點功能模組要附加上清晰的功能描述及具體注釋說明。
除錯分析
採用物件導向程式設計思想進行**實現與除錯。能夠熟練掌握除錯工具的各種功能,設計測試資料確定疑點,通過修改程式來證實它或繞過它。除錯正確後,認真整理源程式及其注釋,形成格式和風格良好的源程式清單和結果。
測試資料及實驗結果,並對實驗結果的正確性進行說明。在此基礎上,需對演算法的時間複雜度和空間複雜的進行簡要分析,並對每個模組設計和除錯時存在的問題進行思考,並提出解決方法或者改進設想。
⑤課程設計總結
在完成vc++課程設計之後,需要提交課程設計總結。該總結報告除了包含上述-的設計內容之外,還需要包括以下內容:課程設計過程中遇到的問題說明,解決問題過程中的思考內容,程式除錯能力的思考情況,最後對vc++物件導向程式設計這門課程的思考和認識等內容。
針對每個學生需要進行實驗結果檢查。對於程式源**和程課程設計總結檔案必須上交,作為考核內容的一部分。(上交時每人交乙份資料夾,資料夾具體命名規則為:
「學號_姓名_課程設計名稱」)。
(二)技術要求
1、用c++語言實現設計任務;
2、程式可讀性好,執行效率高;
3、具有良好的操作介面和使用者體驗;
4、課程設計總結能夠很好地反映設計內容。
三、設計任務
要求完成的主要設計任務包括以下幾個方面:
1、系統應緊扣題目,實現具體功能及相關操作(例如查詢、刪除、排序等操作);
2、資料結構等相關設計;
3、主要演算法設計;
4、程式設計及上機實現;
5、撰寫課程設計報告,主要包括: 設計題目;正文,包括引言、需求分析、模組設計(演算法設計)、程式實現及測試、設計總結等;結束語;參考文獻。
四、時間安排
五、課程設計題目及內容(均採用物件導向程式設計方法)
題目1:設計一元多項式計算
【任務要求】
(1)能夠按照指數降序排列建立並輸出多項式;
(2)能夠完成兩個多項式的相加、相減,並將結果輸入;
實現提示:可選擇帶頭結點的單向迴圈鍊錶或單鏈表儲存多項式,頭結點可存放多項式的引數,如項數等。
要求:在上交資料中請寫明:儲存結構、多項式相加的基本過程的演算法(可以使用程式流程圖) 、源程式、測試資料和結果、演算法的時間複雜度、另外可以提出演算法的改進方法;
【測試資料】
自行選擇
題目2:鍊錶應用1
【任務要求】
實現兩個鍊錶的合併。
基本功能要求:
(1)建立兩個鍊錶a和b,鍊錶元素個數分別為m和n個。
(2)假設元素分別為(x1,x2,…xm),和(y1,y2, …yn)。把它們合併成乙個線形表c,使得:
當m>=n時,c=x1,y1,x2,y2,…xn,yn,…,xm
當n>m時,c=y1,x1,y2,x2,…ym,xm,…,yn
輸出線性表c
(3) 用直接插入排序法對c進行公升序排序,生成鍊錶d,並輸出鍊錶d。
【測試資料】
1) a表(30,41,15,12,56,80)
b表(23,56,78,23,12,33,79,90,55)
2) a表(30,41,15,12,56,80,23,12,34)
b表(23,56,78,23,12)
題目3:鍊錶應用2
【問題描述】
已知非空線性鍊錶第乙個鏈結點的指標為list,寫出下列各項操作的演算法程式。
(1)逆轉該線性鍊錶;
(2)刪除線性鍊錶中從左往右第乙個資料為data的鏈結點;
(3)刪除從第i個鏈結點開始的連續k個結點。
【任務要求】
設計一組輸入資料並編寫完整的程式。除錯程式並對相應的輸出作出分析;修改輸入資料,預期輸出並驗證輸出的結果。
【提示】
1)逆轉乙個鍊錶是指在不增加新結點的前提下,依次改變鍊錶中結點的連線方向。
2)刪除資料結點時,首先判斷鍊錶是否為空,若非空,先判斷第乙個結點是否滿足條件,若是則刪除;否則從第二個結點開始順序查詢,直到找到為止,然後刪除;對任何不滿足條件的情況都報告相應提示資訊。
3)從第i個結點開始連續刪除k個結點時,考慮以下兩種情況:當i=1時,從第乙個開始刪除即可;當i>1時,先找到前乙個結點然後再連續刪除k個結點。最後釋放各個結點空間。
【測試資料】
自行設定
題目4:二叉樹的基本操作(建立、求二叉樹樹深度、遍歷)
【任務要求】
要求輸入二樹的各個結點,求二叉樹的樹深度,並能夠輸出指定遍歷方式(層序、先序、中序、後序)的遍歷序列;分別建立;建立二叉樹儲存結構的的輸入函式、求二叉樹的樹深度的函式、遍歷序列的函式
層序遍歷(用佇列的方法實現)
中序遍歷( 用遞迴和非遞迴的方法一起都實現)
先序遍歷( 用遞迴和非遞迴的方法一起都實現)
後序遍歷( 用遞迴和非遞迴的方法一起都實現)
題目5:算術表示式求值
【問題描述】
在計算機中,算術表示式由常量、變數、運算子和括號組成。由於不同的運算子具有不同的優先順序,又要考慮括號,因此,算術表示式的求值不可能嚴格地從左到右進行。因而在程式設計時,借助棧實現。
【任務要求】
演算法輸入:乙個算術表示式,由常量、變數、運算子和括號組成(以字串形式輸入)。為簡化,規定運算元只能為正整數,操作符為+、-*、/,用#表示結束。
演算法輸出:表示式運算結果。
演算法要點:設定運算子棧和運算數棧輔助分析算符優先關係。在讀入表示式的字串行的同時,完成運算子和運算數的識別處理,以及相應運算。
題目6:內部排序演算法比較
【問題描述】
編制乙個演示內部排序演算法比較的程式。利用隨機函式產生30000個隨機整數,利用氣泡排序、直接插入排序、簡單選擇排序、快速排序、希爾排序、歸併排序和堆排序等排序方法進行排序,並統計每一種排序上機所花費的時間。
【任務要求】
演算法輸入:以選單的形式選擇排序方法
演算法輸出:不同情況下關鍵字參加的比較次數和關鍵字的移動次數,每一種排序上機所花費的時間。
演算法要點:
(1)利用隨機函式產生30000個隨機整數。
(2)利用不同排序方法排序並統計兩類次數,列表顯示
(3)程式以對話方式執行。
題目7:構造可以使n個城市連線的最小生成樹
【問題描述】
給定乙個地區的n個城市間的距離網,用prim演算法和kruskal演算法建立最小生成樹,並計算得到的最小生成樹的代價。
【任務要求】
輸入:表示城市間距離網的鄰接矩陣(要求至少6個城市,10條邊)城市間的距離網採用鄰接矩陣表示,鄰接矩陣的儲存結構定義採用課本中給出的定義,若兩個城市之間不存在道路,則將相應邊的權值設為自己定義的無窮大值。要求在螢幕上顯示得到的最小生成樹中包括了哪些城市間的道路,並顯示得到的最小生成樹的代價。
輸出:最小生成樹中包括的邊及其權值,並顯示得到的最小生成樹的代價。
題目8:交通諮詢系統中的最短路徑
【問題描述】
建立交通圖的儲存結構、解決單源最短路徑問題、再實現兩個地點最短路徑問題,也就是實現迪傑斯特拉和弗洛伊德方法
【測試資料】
自行設定交通圖,交通站點不少於6個
題目9:集合的交、並、差運算
【問題描述】
編制乙個能演示執行集合的交、並和差運算的程式。
【任務要求】
基本要求:集合元素用小寫英文本母,執行各種操作應以對話方式執行。
演算法要點:利用單鏈表表示集合;理解好三種運算的含義
題目10:雜湊表應用
【問題描述】
利用雜湊表進行儲存。
【任務要求】
任務要求:針對一組資料進行初始化雜湊表,可以進行顯示雜湊表,查詢元素,插入元素,刪除元素,退出程式操作。
程式設計基礎課程設計任務書
一 課程設計的目的 為了進一步鞏固 程式設計基礎 課程所學到的知識,深刻把握程式語言的重要概念及基本語法,鍛鍊學生熟練的運用c 語言設計程式解決實際問題的能力,開設了一周的課程設計。通過此次課程設計,鞏固所學c 語言基本知識,掌握visual studio c 開發工具的運用,把所學課程相關知識加以...
課程設計任務書
天津職業技術師範大學 電子工程學院應電1114 班學生盧敏苑海雲黨宇飛 課程設計課題 溫度數字顯示監控裝置 簡易電容測試電路 一 課程設計工作日自 2013年 11月 1225日至 2013年 12月 13 日 二 同組學生 盧敏苑海雲黨宇飛 三 課程設計任務要求 第1周題目 3選1,允許學生自主選...
課程設計任務書
一 設計課題 110kv鋼廠總降變電所供配電設計 二 設計資料 1 工程概況 本工程為使用者終端變電所,從系統a變電站5公里110kv架空進線2回作為主供電源,10kv電纜出線16 回 不包括電容補償及保安電源進線 電纜第乙個中間接頭處250公尺。該廠近10年內不考慮負荷增加擴容。正常執行方式為開環...