資料結構與演算法課程設計

2023-01-17 03:06:06 字數 2965 閱讀 5384

在程式正確性的前提下,要兼顧介面設計和**可重用性的質量,注重物件導向設計理念的考核。

上交的成果的內容必須由以下四個部分組成,缺一不可

1. 上交源程式:學生按照課程設計的具體要求所開發的所有源程式(應該放到乙個資料夾中);

2. 上交程式的說明檔案:(儲存在.txt中)在說明文件中應該寫明上交程式所在的目錄,上交程式的主程式檔名,如果需要安裝,要有程式的安裝使用說明;

3. 課程設計報告:(儲存在word 文件中,檔名要求按照"姓名-學號-課程設計報告"起名,如檔名為"張三-001-課程設計報告".doc )按照課程設計的具體要求建立的功能模組,每個模組要求按照如下幾個內容認真完成;

其中包括:

a)需求分析

在該部分中敘述每個模組的功能要求

b)概要設計

在此說明每個部分的演算法設計說明(可以是描述演算法的流程圖),每個程式中使用的儲存結構設計說明(如果指定儲存結構請寫出該儲存結構的定義)。

c)詳細設計

即各個演算法實現的源程式,對每個題目要有相應的源程式(可以是一組源程式,每個功能模組採用不同的函式實現)。

源程式要規範編寫:結構要清晰,注釋要清楚。重點函式的重點變數和重點功能部分要加上清楚的程式注釋。

d)除錯分析

測試資料,測試輸出的結果,時間複雜度分析,和每個模組設計和除錯時存在問題的思考(問題是哪些?問題如何解決?),演算法的改進設想。

4. 課設總結: (儲存在word 文件中)總結可以包括 :

課程設計過程的收穫、遇到問題、遇到問題解決問題過程的思考、程式除錯能力的思考、對資料結構這門課程的思考、在課程設計過程中對《資料結構》課程的認識等內容。字數要求及以上。

驗收分兩次進行:第一周的週六和週日,第二週的週六和週日。第一周驗收通過的同學,成績按照實際分數乘以1.2的係數後計算,第二週驗收通過的同學,成績按照實際分數計算。

課程設計過程中遇到問題需要協助時,請聯絡相應的指導老師。

四個系統任選其一。

1. 訂票系統

任務:通過此系統可以實現如下功能:

錄入:可以錄入航班情況(資料可以儲存在乙個資料檔案中,資料結構、具體資料自定)

查詢:可以查詢某個航線的情況(如,輸入航班號,查詢起降時間,起飛抵達城市,航班票價,票價折扣,確定航班是否滿倉);

可以輸入起飛抵達城市,查詢飛機航班情況;

訂票:(訂票情況可以存在乙個資料檔案中,結構自己設定) 可以訂票,如果該航班已經無票,可以提供相關可選擇航班;

退票: 可退票,退票後修改相關資料檔案;

客戶資料有姓名,證件號,訂票數量及航班情況,訂單要有編號。

修改航班資訊: 當航班資訊改變可以修改航班資料檔案

要求:根據以上功能說明,設計航班資訊,訂票資訊的儲存結構,設計程式完成功能;

2. 迷宮遊戲設計與實現

任務:設計乙個小型遊戲,該遊戲主介面為含有10×10個小方塊的正方形,遊戲中含有紅、橙、藍、綠、紫、黃等六種顏色的棋子,每個小方塊中可以放入一粒棋子。遊戲規則為:

系統每次隨機的產生三粒棋子並隨機放入棋盤中空的小方格中,如果棋盤小方格a中存在棋子,棋盤小方格b中為空,並且存在一條從a到b的路徑,該路徑所經過的所有小方格中都沒有棋子,則a中棋子可以移到b中。當同一顏色的棋子有5顆或超過5顆緊鄰並且在同一方向則可以消去,並且玩家得分(前面5顆棋子每消去一顆得2分,後面每消去一顆的得分是前面一顆得分的兩倍,如消去5顆得10分,消去6顆得14分,消去7顆得22分…),遊戲記錄前10名的成績。

介面要求:棋子在小方格a中移到b中要動態顯示移動的全過程。

要求:在上交資料中請寫明:儲存結構、基本演算法(可以使用程式流程圖)、源程式、測試資料和結果、演算法的時間複雜度;

3. 學生成績管理系統

任務:建立乙個簡單的學生資訊管理系統,該系統為註冊學生儲存基本資訊、選課資訊以及課程成績。系統要方便基本資訊、選課資訊、成績的增加、刪除、修改及查詢。

為實現快速查詢,要求對基本資訊、選課資訊和成績建立相應的索引,學生成績採用平衡二叉樹建索引,對學生姓名採用hash建立索引,對學號實現折半查詢。

要求:1) 可以按成績高低輸出所有成績;

2) 可以按區間段查詢成績;

3) 可以按區間段統計成績。

4) 可以按成績、姓名、學號等資訊查詢。

5) 二叉樹的各種操作要求寫出遞迴和非遞迴兩種方式。

4. 封鎖管理子系統模擬實現

封鎖管理子系統通過加鎖來控制使用者對系統資源的併發使用。使用者使用系統資源前必須申請封鎖,即給出申請封鎖的物件資源號、封鎖方式和使用者名稱。其中資源號是取值為1~999 999的正整數,封鎖方式為s(共享)或x(排他)。

兩種封鎖方式的相容矩陣如圖所示:

相容矩陣

子系統受封鎖請求,根據所儲存的封鎖狀態資訊決定請求是否能夠獲得封鎖,進行相應處理,並向使用者反饋處理結果。如果獲得封鎖,則賦給該請求乙個批准號,可以使用該資源;否則需要進入等待佇列(賦給該請求乙個批准號)。

使用者結束對某資源的使用後,應釋放封鎖(給出封鎖物件的資源號和封鎖批准號)。系統受理解鎖請求時必須能迅速找到有關物件的封鎖狀況資訊,以進行相應處理。為滿足此要求,可採用雜湊表加鍊錶的資料結構,如圖所示:

封鎖管理子系統示意圖

其中雜湊表的元素對應為封鎖物件,以物件的資源號為雜湊函式的自變數(即關鍵碼值)。雜湊表中元素僅為乙個指向封鎖物件鍊錶的指標。lo為封鎖物件結點,對應於同一雜湊位址的封鎖物件鏈結到乙個鍊錶中。

lr為封鎖請求結點。每個封鎖物件結點帶兩個封鎖請求佇列:活動佇列中為當前持有對該物件的封鎖請求,等待佇列中為正在等待對該物件進行封鎖的封鎖請求。

lo結點和lr結點均向子系統自己管理的可利用空間表申請。

請設計並實現雜湊表、lo鍊錶、lr活動佇列、lr等待佇列、可利用空間表的結構和基本運算。在此基礎上使封鎖管理子系統能提供以下功能:

(1) 受理使用者從中斷輸入的封鎖請求進行相應處理,並給出反饋資訊;

(2) 受理使用者從終端輸入的解鎖請求,進行相應處理;

(3) 顯示封鎖狀況資訊(使用者從終端輸入資源號名子系統顯示該物件的lr活動佇列和lr等待佇列)。

六、課程設計時間表

七、課程設計指導老師

演算法與資料結構課程設計報告

演算法與資料結構 課程設計實驗報告書 課程設計名稱 最小套圈設計 學生姓名 張延雲 學號 201058501314 學院 計算機學院 班級 計101 3班 日期 2012年7月13日 一 問題分析和任務定義 1 問題分析 本設計的要求是設計乙個最小套圈。規則是 遊戲者將手中的圓環套圈投向場中的玩具,...

演算法與資料結構課程設計指導書2019

資料結構與演算法 課程設計指導書 宣城校區資訊工程系 2014年12月 課程設計是對學生的一種全面綜合訓練,是與課堂聽講 自學和練習相輔相成的 必不可少的乙個教學環節。通常,課程設計中的問題比平時的習題複雜的多,也更接近實際。課程設計著眼於原理與應用的結合點,使學生學會如何把書上學到的知識用於解決實...

資料結構課程設計

指導書山東建築大學 電腦科學與技術學院 二 六年十二月 課程設計基本情況 課程名稱 資料結構課程設計 相關課程 c語言程式設計 visual c 程式設計 資料結構 適合專業 電腦科學與技術 網路工程 軟體工程 設計週數 2周 學分 2學分 開課學期 第4學期 開課單位 電腦科學與技術學院 一 課程...