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

2021-03-03 20:57:25 字數 3293 閱讀 3604

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

宣城校區資訊工程系

2023年12月

課程設計是對學生的一種全面綜合訓練,是與課堂聽講、自學和練習相輔相成的、必不可少的乙個教學環節。通常,課程設計中的問題比平時的習題複雜的多,也更接近實際。課程設計著眼於原理與應用的結合點,使學生學會如何把書上學到的知識用於解決實際問題,培養軟體工作所需要的動手能力;另一方面,能使書上的知識變「活」,起到深化理解和靈活掌握教學內容的目的。

平時的習題較偏重於如何編寫功能單一的「小」演算法,侷限於乙個或兩個知識點,而課程設計題是軟體設計的綜合訓練,包括問題分析,總體結構設計,使用者介面設計、程式設計基本技能和技巧,多人合作,以至一整套軟體工作規範的訓練和科學作風的培養。此外,還有很重要的一點是:計算機是比任何教師更嚴厲的檢查者。

為達到上述目的,使學生更好地掌握程式設計的基本方法和c++語言的應用,本課程安排了課程設計環節,提供了各類題目供學生選擇。每個設計題採取了統一的格式,由問題描述、基本要求、測試資料、實現提示和選做內容等五個部分組成。問題描述旨在為學生建立問題提出的背景,指明問題「是什麼」。

基本要求則對問題進一步求精,劃出問題的邊界,指出具體的參量或前提條件,並規定該題的最低限度要求。測試資料部分旨在為檢查學生上機作業提供方便。在實現提示部分,對實現中的難點及其解法思路等問題作了簡要提示,提示的實現方法未必是最好的,學生不應拘泥與此,而應努力設計和開發更好的方法和結構。

選做部分向那些尚有餘力的讀者提出了更高的要求,同時也能開拓其它讀者的思路,在完成基本要求時就力求避免就事論事的不良思想方法,盡可能尋求具有普遍意義的解法,使得程式結構合理,容易修改、擴充和重用。

「分析就是在採取行動之前,對問題的研究」(demarco,1978)。系統分析在軟體開發過程中是非常重要的,其任務就是通過對問題本身的研究,產生乙個系統需要做什麼的規範的、一致的和可行的需求說明。在此基礎上,確定系統中所需考慮的類(物件)、類之間的關係、本系統中各個類所涉及的屬性及針對這些屬性的操作。

類及類之間的關係可用類圖來表示,物件之間的訊息傳遞可用箭頭表示,另外一些重要的操作應給出規格說明。

對類中的屬性和操作從實現的角度(如可擴充、在派生類中能否直接使用或只需少量修改、訪問的效率和方便性等)進一步考察;對類中的操作(即方法)進一步求精:用if、while、for和賦值語句加上自然語言寫出演算法框架;同時考慮能否使用已有類庫(包括直接使用或通過派生)以減少程式設計的工作量和提高程式的可靠性。

編碼,即程式設計,是對詳細設計的結果的進一步求精,用物件導向語言(如c++)表達出來。在充分理解和把握語言執行機制的基礎上,編寫出正確的、清晰的、易讀易改和高效率的程式。另外,在識別符號的命名、**的長度(乙個方法長度一般不超過40行,否則應劃分為兩個或多個方法)、程式書寫的風格(如縮排格式、空格(空行)的應用、注釋等)方面也應注意,遵循統一的規範。

上機時要帶一本物件導向語言的教材,若有開發環境的使用者指南(手冊)及類庫(庫函式)手冊則更好。應仔細閱讀程式編譯和連線時的錯誤資訊(通常是英文的),弄清其確切含義,提高除錯效率。要學習並掌握開發環境所提供的除錯工具。

經過除錯,能夠執行的的程式並非就是乙個正確的程式。實際上,在上機之前,就應根據系統的需求設計相應的測試資料集,特別是一些異常情況的處理(如使用者輸入資料未按指定格式、資料極大或極小時程式如何處理等一些極端的情況)。

課題設計實現完成後,按規範要求撰寫課程設計報告,報告一般要求闡述的內容如下:

1. 需求和規格說明

描述問題,簡述題目要解決的問題是什麼?規定軟體做什麼。原題條件不足時補全

2. 設計

(1) 設計思想:程式結構(如類圖),重要的資料結構。主要演算法思想(文字描述,不要畫框圖)

(2) 設計表示:類名及其作用,類中資料成員名稱及作用,類中成員函式原型及其功能,可以用**形式表達。

(3) 實現注釋:各項要求的實現程度、在完成基本要求的基礎上還實現了什麼功能?

(4) 詳細設計表示:主要演算法的框架及實現此演算法的成員函式介面。

3. 使用者手冊

即使用說明(包括資料輸入時的格式要求)。

4. 除錯及測試

除錯過程中遇到的主要問題是如何解決的;對設計和編碼的回顧討論和分析;程式執行的時空效率分析;測試資料集;執行例項;改進設想;經驗和體會等。

5. 附錄

(1) 源程式清單:列印文字和磁碟檔案,磁碟檔案是必須的。源程式要加注釋,除原有注釋外再用鋼筆加一些必要的注釋和斷言。

(2) 測試資料:即列出測試資料集

(3) 執行結果:上面測試資料輸入後程式執行的結果

可以根據設計課題的實際情況對以上內容進行增減。

以下報告樣例僅供撰寫設計報告時參考,學生可根據選題的實際情況進行增減。

(報告封面)

「資料結構與演算法」

課程設計報告

(一) 需求和規格說明

某小型公司,主要有四類人員:經理、技術人員、銷售經理和推銷員。要求儲存這些人員的姓名、編號、級別、當月薪水,計算月薪總額並顯示全部資訊。

人員編號基數為1000,每輸入乙個人員的資訊,編號順序加1。

程式要對所有人員有提公升級別的功能。為簡單起見,所有人員的初始級別均為1級,然後進行公升級,經理公升為4級,技術人員和銷售經理公升為3級,推銷員仍為1級。

月薪計算辦法是:經理拿固定月薪8000元;技術人員按每小時100元領取月薪;推銷員的月薪按該推銷員當月銷售額的4%提成;銷售經理既拿固定月薪也領取銷售提成,固定月薪為5000元,銷售提成為所管轄部門當月銷售總額的5‰。

(二) 設計

根據上述需求,設計乙個基類employee,然後派生出technician(技術人員)類、manager(經理)類和sale**an(推銷員)類。由於銷售經理(sale**anager)既是經理又是銷售人員,兼具兩類人員的特點,因此同時繼承manager和sale**an兩個類。

在基類中,除了定義建構函式和析構函式以外,還應統一定義對各類人員資訊都應有的操作,這樣可以規範各派生類的基本行為。但是各類人員的月薪計算方法不同,不能在基類employee中統一定義計算方法。各類人員資訊的顯示內容也不同,同樣不能在基類中統一定義顯示方法。

因此,在employee類中用純虛函式的方式定義了計算月薪函式pay()和顯示資訊函式displaystatus(),然後在派生類中再根據各自的同名函式實現具體的功能。

由於sale**anager的兩個基類又有公共基類employee,為避免二義性,這裡將employee類設計為虛基類。

系統類圖

屬性和方法定義

(三) 使用者手冊

程式執行時,首先提示輸入雇員姓名。

對於經理直接輸出其工資及其它資訊;

對於技術人員,程式提示輸入其本月工作時數,然後輸出其工資及其它資訊;

對於推銷員,程式提示輸入其本月銷售額,然後輸出其工資及其它資訊;

對於銷售經理,程式提示輸入其管轄部門本月銷售總額,然後輸出其工資及其它資訊。

資料結構課程設計指導書

2011 8 16 一 課程設計目的 3 二 課程設計步驟 3 三 課程設計報告 4 四 課程設計內容 6 五 提交材料 6 六 考核方式與評分標準 7 七 關於編寫 的說明 7 八 參考文獻 8 附錄1 武漢工業學院課程設計說明書 報告 撰寫規範 9 附錄2 visual c 6.0簡介 11 培...

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

在程式正確性的前提下,要兼顧介面設計和 可重用性的質量,注重物件導向設計理念的考核。上交的成果的內容必須由以下四個部分組成,缺一不可 1 上交源程式 學生按照課程設計的具體要求所開發的所有源程式 應該放到乙個資料夾中 2 上交程式的說明檔案 儲存在.txt中 在說明文件中應該寫明上交程式所在的目錄,...

資料結構實驗與課程設計指導書

資料結構 實驗指導書 資料結構課程組 廣東工業大學計算機學院 2014年4月 第1章概述 1.1 課程 教材和實驗 資料結構是電腦科學的演算法理論基礎和軟體設計的技術基礎,主要研究資訊的邏輯結構及其基本操作在計算機中的表示和實現。資料結構不僅是計算機專業的核心課程,而且已成為其他理工專業的熱門選修課...