"); //-->
一、課程設計目的
通過設計、實現媒體庫管理系統,熟悉面向對象的設計思想;進一步熟悉、掌握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),且至多涉及該類別物品的兩個屬性;對于年份(出版年份、出品年份),書籍頁數,視頻時長和作品長度、寬度可以進行範圍查詢。查詢結果的排序依據可以是被查詢的某類物品的任何屬性,但用戶最多只能按照重要性的不同指定兩個排序依據;每個排序依據都有升序、降序之分。因為查詢和排序的條件較多,因此同學們需要仔細考慮用戶介面的設計以方便用戶的使用。過於拙劣的介面設計將會扣分,設計良好、便於使用但又不過分花哨的介面會有加分!提示:假如對數據進行索引的話需考慮到數據將要存儲回硬盤文件這個事實。如何存儲索引信息不在本門課程的包括範圍之內,但利用所學本門課和其他課(譬如數據庫)的知識也不是不可以實現的,譬如可以將索引信息存儲在單獨的文件中,有興趣的同學可以嘗試,若能完成會有加分。
注意:在顯示物品信息時必須比較實用,譬如適時地清空整個屏幕;假如信息超出一屏則顯示必須暫停,待用戶指示繼續後再繼續顯示;輸出的信息中應加上適當的空白以方便閱讀。
退出:當選擇“退出”時,整個媒體庫,包括已作的修改,必須寫回到數據文件案中。
輸入說明:
在程序一開始提示用戶輸入數據文件的名字。輸入的具體格式參見提供的示例文件。但教師在測試時會用一個很大的數據文件進行測試,因此不要對文件的大小做任何假定。
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
WCDMA联盟狂赌专利费 分析称该计划主要针对中国
飞思卡尔微处理器和传感器的创新产品和解决方案
全球经济减缓——半导体产业的机会在哪里?
最高精度达10米 手机成了随身地图
面向 RF 应用的低相位噪声频率合成器
大范围的定时开关电路
高速PCB设计指南第5篇-DSP系统的降噪技术
高速单片机硬件关键参数设计概述
高性能数据采集系统芯片LM12H458及其应用
追赶通信新技术
欧盟汽车/移动出行公司越来越多地采用AI和机器人技术
华立“打劫”高通领域 CDMA告别打压年代
Quadric和Denso联手推进2025年汽车AI半导体
高速数据采集系统中高速缓存与海量缓存的实现
台积电退出后英飞凌加快GaN推进 今年四季度将提供300毫米晶圆样品
一种KV保护电路
中国国际国防电子展览会
摩托罗拉USB个人电脑外围设备(PCP)解决方案
华为任命何廷波为高级人才薪酬事业部负责人
高性能FLASH存储器在DSP电机智能保护中的应用
低压灯定时闪烁电路
TTL电路构成的时钟信号电路
三相四线制的缺相保护电路
全球晶圆代工产能排名:中国超越韩国,跃居第二
电视面板7月价格 全面小跌
如何在2025年开展半导体制造业务:工厂设置成本
芯片制造商成为“Big Beautiful Bill”的大赢家
Realbotix人形机器人能流利地同时说 15 种语言
用于多网络车辆连接的紧凑型18合1Patriot 天线
现代嵌入式CPU的发展和演变