原创
C++課程設計指導書之二——媒體庫管理系統
2009-6-18 14:59
2370
6
8
分类:
软件与OS
一、課程設計目的
通過設計、實現媒體庫管理系統,熟悉面向對象的設計思想;進一步熟悉、掌握STL中有關類型及其使用方法,泛型編程的風格。
二、設計目標
題目:媒體庫管理系統
在這個課程設計中,你需要設計並實現一個繼承體系以管理圖書館中流通的物品:圖書、視頻光碟以及圖畫。你需要設計一個名為 Medium 的基類以表示所有流通物品所公有的屬性。接著,你需要從 Medium 類派生出 Book, Video, Painting 三個派生類。這個課程設計的目的是實現一個具有多態行為的設計。
階段一:
基類的描述:在這個應用中,每一個物品都有:標題,作者,評級(具體分為:未評級、一般、成人和兒童四種類型),借出狀態(可用,已借出)四個屬性。因此,基類 Medium 應具有這四個數據成員,其訪問許可權為受保護;此外,基類Medium還具有如下成員函數:從標準輸入流中讀取數據的函數;從文件中讀取單個物品信息的函數;輸出信息到標準輸出流的函數。
注:標題和作者都可能包含空格。
Book類的描述:相比基類,Book類增加了出版社的名字,ISBN號(可簡單認為是一個由 0-9,‘-’,A-Z 構成的字符串),出版年份和書的頁數這四個數據成員。
Video類的描述:相比基類,Video類增加了出品者的名字,出品年份和視頻時長(以分鐘計,整數)這三個數據成員。
Painting類的描述:相比基類,Painting類增加了出品國籍,作品的長與寬(以釐米計,整數)這三個數據成員。
在階段一中,寫一個簡單的測試程序以檢驗這些類的所有性質。每一個類都必須可以從文件或標準輸入流中讀入一個該類對象的信息,並且可以將一個該類對象的信息輸出到文件或者標準輸出流中。提示:基類中相關的成員函數應該聲明為虛函數。
這個簡單的測試程序也需要提交。
階段二:
設計一個名為 MediaLib 的類,在其構造函數中從一個數據文件中讀入信息,此數據文件的名字應該由用戶提供而不是由程序員自己假設。此類應具有如下方法:增加新物品,刪除物品,顯示整個媒體庫中的物品,顯示媒體庫中的部分物品。換言之,媒體庫中所有物品的信息存在於硬盤中的某個文件中,當一個 MediaLib 對象被創建時將該媒體庫中的所有物品信息讀入內存。在內存中,物品信息有可能被修改,在程序退出時所有物品信息又被寫回至硬盤(這裏所有物品信息被寫回至硬盤只是功能上的描述;從效率著眼,僅僅寫回發生了改變的信息的實現策略更好,但是需要考慮新增紀錄、刪除紀錄的處理,比較複雜,有興趣的同學可以嘗試這種策略)。因為具有插入、刪除功能,實現 MediaLib 類的時候應該使用STL中的 list 類作為底層容器。MediaLib 類還具有一個名為menu的成員函數以顯示如下功能表:
1.新增一個物品;
2.刪除物品;
3.顯示滿足搜索條件的物品;
4.退出。
說明:之所以不在程序中顯式提供物品信息修改功能,是因為此功能可以用先刪除物品,再新增物品的操作序列替代。
功能的詳細描述:
新增物品:提示用戶輸入物品的相關信息,除標題外其餘信息都有默認值。
刪除物品:利用下述搜索功能列出待刪除的物品后將這些物品從媒體庫中刪除。
顯示滿足搜索條件的物品:譬如,顯示所有的Book,按照作者名排序。實現此功能時需要提供進一步的子功能菜單以便用戶指定查詢條件和排序依據。查詢時只針對一類物品(Book,Video,Painting),且至多涉及該類別物品的兩個屬性;對于年份(出版年份、出品年份),書籍頁數,視頻時長和作品長度、寬度可以進行範圍查詢。查詢結果的排序依據可以是被查詢的某類物品的任何屬性,但用戶最多只能按照重要性的不同指定兩個排序依據;每個排序依據都有升序、降序之分。因為查詢和排序的條件較多,因此同學們需要仔細考慮用戶介面的設計以方便用戶的使用。過於拙劣的介面設計將會扣分,設計良好、便於使用但又不過分花哨的介面會有加分!提示:假如對數據進行索引的話需考慮到數據將要存儲回硬盤文件這個事實。如何存儲索引信息不在本門課程的包括範圍之內,但利用所學本門課和其他課(譬如數據庫)的知識也不是不可以實現的,譬如可以將索引信息存儲在單獨的文件中,有興趣的同學可以嘗試,若能完成會有加分。
注意:在顯示物品信息時必須比較實用,譬如適時地清空整個屏幕;假如信息超出一屏則顯示必須暫停,待用戶指示繼續後再繼續顯示;輸出的信息中應加上適當的空白以方便閱讀。
退出:當選擇“退出”時,整個媒體庫,包括已作的修改,必須寫回到數據文件案中。
輸入說明:
在程序一開始提示用戶輸入數據文件的名字。輸入的具體格式參見提供的示例文件。但教師在測試時會用一個很大的數據文件進行測試,因此不要對文件的大小做任何假定。
三、課程設計報告
內容包括:程序設計目的、系統設計要求、系統功能模組圖、程序實現思路、設計說明、課程設計心得和關鍵程序代碼(關鍵代碼篇幅不得超過整個報告的10%,否則以灌水論處,酌情扣分)。
另外,所提交的程序完整源代碼中一定要有適當的注釋,並具有良好的編程風格,這些都是評分的標準之一。
四、其他事項
1)課程設計源代碼提交時間2009-7-5日24:00前,設計報告在期末考試的時候提交。
2)提交源代碼時將所有原始文件案(包括頭文件)打包成一個rar或者zip文件發送到zhoumi.teacher@qq.com, 郵件的標題為 C++課程設計之二源代碼_姓名_學號,嚴格按照這個標題進行提交,否則不會有自動回復的信息。
3)千萬不要圖省事將 .exe, .opt, .ncb, .dsw 等非源程序文件打包入所提交的壓縮文件中,否則文件將變得很大,影響下載。
4)成績考核:程序編程測試、設計報告分別占60%、40%。
用户201423 2009-6-22 20:03
yannzi 2009-6-21 02:03