資料結構實訓內容
《資料結構》課程設計題目及要求
課程設計課時:2周
一、課程設計目的
“資料結構”課程設計題目比平時的習題複雜得多,也更接近於實際。設計著眼於原理與應用的結合點。使讀者學會如何把書本上學到的知識用於解決實際問題,培養軟體工作所需要的動手能力;另一方面,能使書本知識變“活”,起到深化理解和靈活掌握教學內容的目的。課程設計是軟體設計的綜合訓練。通過設計使學生靈活掌握所學各種資料結構並能綜合運用,從而提高解決實際問題的能力。包括問題分析、總體結構設計、使用者介面設計、程式設計基本技能和技巧,以至一整套軟體工作規範的訓練和科學作風的培養。
二、課程設計的內容
1、
2、方案論證、資料結構設計;
3、編寫程式碼並除錯;
4、演示執行情況並回答老師提問;
5、課程設計報告提交。
三、課程設計題目
題目1:統計成績
[問題描述]
給出n個學生的m門考試的成績表,每個學生的資訊由學號、姓名以及各科成績組成。對學生的考試成績進行有關統計,並列印統計表。
[基本要求]
(1) 按總分數高低次序,打印出名次表,分數相同的為同一名次;
(2) 按名次打印出每個學生的學號、姓名、總分以及各科成績。
[測試資料]
由學生依據軟體工程的測試技術自己確定。注意測試邊界資料。
[選作內容]
對各科成績設定不同的權值。
題目2:員工管理系統
[問題描述]
每個員工的資訊包括:編號、姓名、性別、出生年月、學歷、職務、電話、住址等。系統能夠完成員工資訊的查詢、更新、插入、刪除、排序等功能。
[基本要求]
(1) 排序:按不同關鍵字,對所有員工的資訊進行排序。
(2) 查詢:按特定條件查詢員工。
(3) 更新:按編號對某個員工的某項資訊進行修改。
(4) 插入:加入新員工的資訊。
(5) 刪除:按編號刪除已離職的員工的資訊。
[選作內容]
實現圖形使用者介面。
題目3:雜湊表設計
[問題描述]
針對某個集體中人名設計一個雜湊表,使得平均查詢長度不超過2,並完成相應的建表和查表程式。
[基本要求]
假設人名為中國人姓名的漢語拼音形式。待填入雜湊表的人名共有30個,取平均查詢長度的上限為2。雜湊函式用除留餘數法構造,用線性探測再雜湊法或鏈地址法處理衝突。
[測試資料]
取自己周圍較熟悉的30個人名。
[選作內容]
(1) 從教科書上介紹的集中雜湊函式構造方法中選出適用者並設計幾個不同的雜湊函式,比較他們的地址衝突率(可以用更大的名字集合作實驗)。
(2) 研究這30個人名的特點,努力找一個雜湊函式,使得對於不同的拼音名一定不發生地址衝突。
(3) 在雜湊函式確定的前提下嘗試各種不同處理衝突的方法,考察平均查詢長度的變化和造好的雜湊表中關鍵字的聚集性。
題目4:校園導遊系統
[基本要求]
1、 設計你的學校的校園平面圖,所含景點10-15個。以圖中頂點表示校園內各景點,存放景點名稱、代號、簡介等資訊;以邊表示路徑,存放路徑長度等相關資訊。
2、 為來訪客人提供圖中任意景點相關資訊的查詢。
3、 為來訪客人提供圖中任意景點的問路查詢,即查詢任意兩個景點之間的一條最短的簡單路徑。
4、 提供圖中任意景點問路查詢,即求任意兩個景點之間的所有路徑。
5、 提供校園圖中多個景點的最佳訪問路線查詢,即求途經這多個景點的最佳路徑。
6、 區分汽車線路與步行線路。
7、 設計一實用的查詢介面和功能選單。
[測試資料]
由讀者根據實際情況設定。
[選做內容]
1、 擴充道路資訊,如道路類別(車道、人行道等)、沿途景色等級,以至可按客人所需分別查詢人行路徑和車行路徑或觀察路徑。
2、 擴充每個景點的鄰接景點的方向等資訊,使得路徑查詢結果能提供詳盡的導向資訊。
3、 實現校園導遊圖的模擬介面。
題目5: 哈夫曼編/譯碼器
[問題描述]
利用哈夫曼編碼進行通訊可以大大提高通道利用率,縮簡訊息傳輸時間,降低傳輸成本。但是,這要求在傳送端通過一個編碼系統對待傳資料預先編碼,在接收端將傳來的資料進行譯碼(復原)。對於雙工通道(即可以雙向傳輸資訊的通道),每端都需要一個完整的編/譯碼系統。試為這樣的資訊收發站寫一個哈夫曼碼的編/譯碼系統。
[基本要求]
一個完整的系統應具有以下功能:
1、I:初始化(Initialization)。從終端讀入字符集大小n,以及n個字元和n個權值,建立哈夫曼樹,並將它存於檔案hfmTree中。
2、 E:編碼(Encoding)。利用以建好的哈夫曼樹(如不在記憶體,則從檔案hfmTree中讀入),
對檔案ToBeTran中的正文進行編碼,然後將結果存入檔案CodeFile中。
3、D:譯碼(Decoding)。利用已建好的哈夫曼樹將檔案CodeFile中的程式碼進行譯碼,結果存入檔案TextFile中。
4、 P:列印程式碼檔案(Print)。將檔案CodeFile以緊湊格式顯示在終端上,每行50個程式碼。
同時將此字元形式的編碼檔案寫入檔案CodePrin中。
5、 T:列印哈夫曼樹(Tree Printing)。將已在記憶體中的哈夫曼樹以直觀的方式(樹或凹入
表形式)顯示在終端上,同時將此字元形式的哈夫曼樹寫入檔案TreePrint中。
[測試資料]
用下表給出的字符集和頻度的實際統計資料建立哈夫曼樹,並實現以下報文的編碼和譯碼:“THIS PROGRAM IS MY FAVORITE”。
字元 |
空格 |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
頻度 |
186 |
64 |
13 |
22 |
32 |
103 |
21 |
15 |
47 |
57 |
1 |
5 |
32 |
20 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
字元 |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
|
頻度 |
57 |
63 |
15 |
1 |
48 |
51 |
80 |
23 |
8 |
18 |
1 |
16 |
1 |
|
測試資料要求:
要求使用1、全部合法資料;2、整體非法資料;3、區域性非法資料。進行程式測試,以保證程式的穩定
題目6: 多視窗銀行業務模擬系統
[問題描述]假設銀行有3個視窗對外營業,從早晨開門起不斷有客戶進入銀行。由於每個視窗在某個時刻只能接待一個客戶,因此在客戶人數眾多時需要在每個視窗前依次排隊。客戶按存款金額的不同分為普通客戶(存款20萬以下)和VIP客戶(存款20萬以上),VIP客戶又分為Ⅰ級,Ⅱ級,Ⅲ級3個級別(20萬-50萬為Ⅰ級客戶,51萬-100萬為Ⅱ級客戶,101萬以上為Ⅲ級客戶),優先順序按Ⅰ級,Ⅱ級,Ⅲ級遞增。顧客到銀行辦理業務,首先要刷卡取一個順序號,然後到人數最少的佇列排隊等待叫號,被叫到號的顧客到櫃檯接受服務,服務完畢後離開。到了下班時間不再接收新來的顧客。VIP顧客有優先權,即可以先得到服務。
[基本要求]
設計一銀行業務處理模擬系統,要求:
1、建立VIP顧客檔案,包括:顧客姓名,銀行卡號(設計4位即可),存款金額,優先順序。
2、一天共有多少顧客接受了服務,其中有多少個VIP顧客,並輸出VIP顧客的姓名和卡號。
3、統計每天顧客的平均逗留時間。
[測試資料]
由隨機數產生器生成
四、授課方式及授課學時分配
本課程在實驗室進行,計劃課時2周,全部為實驗,共60學時。
教學課時分配表
章 次 |
課時分配(學時) |
||||
授課 |
實驗 |
課外 |
討論 |
備註 |
|
題目1 |
|
12 |
|
|
|
題目2 |
|
12 |
|
|
|
題目3 |
|
12 |
|
|
|
題目4,5,6任選一 |
|
24 |
|
|
|
合計 |
|
60 |
|
|
|
總學時數 |
60 |
五、考核方式及成績評定
考核內容 |
考核方式 |
成績比例(%) |
備註 |
實訓期間表現 |
打分 |
25 |
|
設計能力 |
打分 |
50 |
|
實訓報告 |
論文 |
25 |
|
課程設計報告需要根據《課程設計報告模版》的格式要求進行撰寫。