中級(jí)軟件設(shè)計(jì)師下午試題117_第1頁(yè)
中級(jí)軟件設(shè)計(jì)師下午試題117_第2頁(yè)
中級(jí)軟件設(shè)計(jì)師下午試題117_第3頁(yè)
中級(jí)軟件設(shè)計(jì)師下午試題117_第4頁(yè)
中級(jí)軟件設(shè)計(jì)師下午試題117_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、中級(jí)軟件設(shè)計(jì)師下午試題 -117( 總分: 89.05 ,做題時(shí)間: 90分鐘 )一、 試題一 ( 總題數(shù): 1,分?jǐn)?shù): 15.00) 說(shuō)明 某房屋租賃公司欲建立一個(gè)房屋租賃服務(wù)系統(tǒng),統(tǒng)一管理房主和租賃者的信息,從而快速地提供租賃服務(wù)。該系統(tǒng)具有以下功能:1登記房主信息。對(duì)于每名房主,系統(tǒng)需登記其姓名、住址和聯(lián)系電話,并將這些信息寫入房主信息文件。2登記房屋信息。所有在系統(tǒng)中登記的房屋都有一個(gè)唯一的識(shí)別號(hào)(對(duì)于新增加的房屋,系統(tǒng)會(huì)自動(dòng)為其分配一個(gè)識(shí)別號(hào) ) 。除此之外,還需登記該房屋的地址、房型( 如平房、帶陽(yáng)臺(tái)的樓房、獨(dú)立式住宅等) 、最多能夠容納的房客數(shù)、租金及房屋狀況( 待租賃、已出租

2、) 。這些信息都保存在房屋信息文件中。一名房主可以在系統(tǒng)中登記多個(gè)待租賃的房屋。3登記租賃者信息。所有想通過(guò)該系統(tǒng)租賃房屋的租賃者,必須首先在系統(tǒng)中登記個(gè)人信息,包括:姓名、住址、電話號(hào)碼、出生年月和性別。這些信息都保存在租賃者信息文件中。4租賃房屋。已經(jīng)登記在系統(tǒng)中的租賃者,可以得到一份系統(tǒng)提供的待租賃房屋列表。一旦租賃者從中找到合適的房屋,就可以提出看房請(qǐng)求。系統(tǒng)會(huì)安排租賃者與房主見(jiàn)面。對(duì)于每次看房,系統(tǒng)會(huì)生成一條看房記錄并將其寫入看房記錄文件中。5收取手續(xù)費(fèi)。房主登記完房屋后,系統(tǒng)會(huì)生成一份費(fèi)用單,房主根據(jù)費(fèi)用單繳納相應(yīng)的費(fèi)用。 :6變更房屋狀態(tài)。當(dāng)租賃者與房主達(dá)成租房或退房協(xié)議后,房主

3、向系統(tǒng)提交變更房屋狀態(tài)的請(qǐng)求。系統(tǒng)將根據(jù)房主的請(qǐng)求,修改房屋信息文件。數(shù)據(jù)流圖 1-1 和圖 1-2 分別給出了該系統(tǒng)的頂層數(shù)據(jù)流圖和 0 層數(shù)據(jù)流圖。(分?jǐn)?shù): 15.00 )(1) .使用說(shuō)明中給出的詞匯,將數(shù)據(jù)流圖1-1中(1)(4)處的數(shù)據(jù)流補(bǔ)充完整。(分?jǐn)?shù):5.00)正確答案: (1) 費(fèi)用單 (2) 待租賃房屋列表(3) 看房請(qǐng)求 (4) 變更房屋狀態(tài)請(qǐng)求)解析:(2) .使用說(shuō)明中給出的詞匯,將數(shù)據(jù)流圖圖1-2中的(5)(8)補(bǔ)充完整。(分?jǐn)?shù):5.00)正確答案: (5) 房主信息文件(6) 租賃者信息文件(7) 房屋信息文件 (8) 看房記錄文件)解析:(3) . 數(shù)據(jù)流程圖圖

4、1-2 中缺失了三條數(shù)據(jù)流,請(qǐng)指出這三條數(shù)據(jù)流的起點(diǎn)、終點(diǎn)和數(shù)據(jù)流名稱。* (分?jǐn)?shù): 5.00 )正確答案: (1) 起點(diǎn):房主終點(diǎn):變更房屋狀態(tài)數(shù)據(jù)流名稱:變更房屋狀態(tài)請(qǐng)求(2) 起點(diǎn):租賃者終點(diǎn):登記租賃者信息數(shù)據(jù)流名稱:租賃者信息(3) 起點(diǎn):租賃者終點(diǎn):安排租賃者看房數(shù)據(jù)流名稱:看房請(qǐng)求)解析: 解析 本題考查的是分層數(shù)據(jù)流圖,該題型每年必考,是需要重點(diǎn)掌握的內(nèi)容。解題的兩大原則:數(shù)據(jù)平衡原則,系統(tǒng)功能描述與數(shù)據(jù)流圖的一致性原則。首先根據(jù)數(shù)據(jù)平衡原則有:在 0 層圖中,與“房主”相關(guān)的數(shù)據(jù)流有5 條。根據(jù)數(shù)據(jù)平衡原則頂層圖應(yīng)有與之對(duì)應(yīng)的數(shù)據(jù)流,但“費(fèi)用單”數(shù)據(jù)流在頂層圖中找不到,所以(

5、1) 應(yīng)是“費(fèi)用單”數(shù)據(jù)流。通過(guò)比較頂層圖和0層圖中與外部實(shí)體“租賃者”相關(guān)的數(shù)據(jù)流,可以發(fā)現(xiàn):出現(xiàn)在 0層圖上的數(shù)據(jù)流“待租賃房屋列 表”是頂層圖上沒(méi)有的,且與(2)處的數(shù)據(jù)流方向一致。由此可以判定,(2)處的數(shù)據(jù)流就是“待租賃房屋列表”。而頂 層圖中的數(shù)據(jù)流“租賃者信息”卻是 0層圖上沒(méi)有的。這樣就找到了 0層圖上缺失的第2條數(shù)據(jù)流:租賃者信息,它的 起點(diǎn)是“租賃者”,終點(diǎn)是加工“登記租賃者信息”。根據(jù)系統(tǒng)功能描述與數(shù)據(jù)流圖的一致性原則有:6 “當(dāng)租賃者與房主達(dá)成租房或(4)處缺失的數(shù)據(jù)流是一條輸入數(shù)據(jù)流,從說(shuō)明中可以看出,只有功能由于房主向系統(tǒng)提 交變更房屋狀態(tài)的請(qǐng)求”所描述的數(shù)據(jù)流沒(méi)有

6、在“房主”與系統(tǒng)之間體現(xiàn)出來(lái)。退房協(xié)議后,層圖中缺失的其0因此可以確定,(4)處缺失的數(shù)據(jù)流就是“變更房屋狀態(tài)請(qǐng)求”。相應(yīng)的,可以確定,在 中一條數(shù)據(jù)流也是它,其起點(diǎn)是“房 主”,終點(diǎn)是“變更房屋狀態(tài)”這個(gè)加工。由于說(shuō)明中有“租賃者”相關(guān)的功能“一旦租賃者從中找到合適的房屋,就 可以提出看房請(qǐng)求”,這一功層圖中也沒(méi)有出現(xiàn)這條數(shù)據(jù)處的數(shù)據(jù)流應(yīng)該是“看房請(qǐng)求” 。而0能未在圖中體現(xiàn)出來(lái)。這 樣就能確定(3)條數(shù)據(jù)流就是“看房請(qǐng)求”,它的起點(diǎn)是“租賃者”,終點(diǎn)是加工“安排層圖中缺失的第3流。所以,0租 賃者看房”。由說(shuō)明的描述可以得知,本系統(tǒng)中的數(shù)據(jù)存儲(chǔ)有:房主信息文件、房屋信息文件、租賃者信息文件

7、、看房 處的是租賃者信(6)記錄文件。下面就可以根據(jù)相應(yīng)的加工對(duì)號(hào)入座了。顯然,(5)處的是房主信息文件;息文件;(7)(8) 處的是看房記錄文件。處的是房屋信息文件;15.00),分?jǐn)?shù):1試題二(總題數(shù):二、說(shuō)明某汽車維修站擬開(kāi)發(fā)一套小型汽車維修管理系統(tǒng),對(duì)車輛的維修情況進(jìn)行管理。個(gè).對(duì)于新客戶及車輛,汽車維修管理系統(tǒng)首先登記客戶信息,包括:客戶編號(hào)、客戶名稱、客戶性質(zhì) (1、折扣率、聯(lián)系人、聯(lián)系電話等信息;還要記 錄客戶的車輛信息,包括:車牌號(hào)、車型、顏色、人、單位 )所示。2-1車輛類別等信息。一個(gè)客戶至少有一臺(tái)車。客 戶及車輛信息如表.(普通、加急)、作業(yè)分類(大、中、小修)2.記錄維

8、修車輛的故障信息。包括:維修類型、結(jié)算方式 (自付、三包、索賠) 等信息。維修廠的員工分為:維修員和業(yè)務(wù)員。車輛維修首先委托給業(yè)務(wù)員。業(yè)務(wù)員對(duì)車輛進(jìn)行檢查和故障分析后,與 客戶磋商,確定故障現(xiàn)象,生成維修委托書(shū)。如表 2-2所示。3 .維修車間根據(jù)維修委托書(shū)和車輛的故障現(xiàn)象,在已有的維修項(xiàng)目中選擇并確定一個(gè)或多個(gè)具體維修項(xiàng)目,安排相關(guān) 的維修工及工時(shí),生成維修派工單。維修派工單如表2-3所示。4 .客戶車輛在車間修理完畢后,根據(jù)維修項(xiàng)目單價(jià)和維修派工單中的工時(shí)計(jì)算車輛此次維修的總費(fèi)用,記錄在委托書(shū) 中。根據(jù)需求階段收集的信息,設(shè)計(jì)的實(shí)體聯(lián)系圖(見(jiàn)圖2-1)和關(guān)系模式(不完整)如下所示。圖2-1

9、中業(yè)務(wù)員和維修工是員 工的子實(shí)體。概念結(jié)構(gòu)設(shè)計(jì).邏輯結(jié)構(gòu)設(shè)計(jì)客戶(5),折扣率,聯(lián)系人,聯(lián)系電話)車輛(車牌號(hào),客戶編號(hào),車型,顏色,車輛類別)委托書(shū)(6),維修類型,作業(yè)分類,結(jié)算方式,進(jìn)廠時(shí)間,預(yù)計(jì)完工時(shí)間,登記日期,故障描述,總費(fèi)用 )維修項(xiàng)目(維修項(xiàng)目編號(hào),維修項(xiàng)目,單價(jià))派工單(7),工時(shí))員工(8),工種,員工類型,級(jí)別)(分?jǐn)?shù):15.00)(1) .根據(jù)問(wèn)題描述,填寫圖2.1中(1)(4)處聯(lián)系的類型。聯(lián)系類型分為一對(duì)一、一對(duì)多和多對(duì)多三種,分別使用1:1、1:n 或 1:*、m:n 或*:* 表示。(分?jǐn)?shù):3.75)正確答案:(1) n 或m或* (2) 1n 或m或* (4)

10、 n 或m或*)解析:),。(分?jǐn)?shù):3.75(2).1中的聯(lián)系并指明其聯(lián)系類型。聯(lián)系名可為:聯(lián)系 1,聯(lián)系(2) 完整的實(shí)體聯(lián)系圖如下圖所示。正確答案:(I)解析:(3) .根據(jù)圖2-1和說(shuō)明,將邏輯結(jié)構(gòu)設(shè)計(jì)階段生成的關(guān)系模式中的空(5)(8)補(bǔ)充完整。(分?jǐn)?shù):3.75)正確答案:(5)客戶編號(hào),客戶名稱,客戶性質(zhì)(6)委托書(shū)編號(hào),客戶編號(hào),車牌號(hào),業(yè)務(wù)員編號(hào)或委托書(shū)編號(hào),車牌號(hào),業(yè)務(wù)員編號(hào)(7)委托書(shū)編號(hào),維修工編號(hào),維修項(xiàng)目編號(hào) (8)員工編號(hào),員工姓名)解析:(4) .根據(jù)問(wèn)題描述,寫出客戶、委托書(shū)和派工單這三個(gè)關(guān)系的主鍵。(分?jǐn)?shù):3.75)正確答案:(客戶:客戶編號(hào)委托書(shū):委托書(shū)編號(hào)派

11、工單:委托書(shū)編號(hào),維修項(xiàng)目編號(hào),維修工編號(hào) )解析:解析本題考查數(shù)據(jù)庫(kù)設(shè)計(jì),設(shè)計(jì)考點(diǎn)有:數(shù)據(jù)庫(kù)的概念結(jié)構(gòu)設(shè)計(jì)和邏輯結(jié)構(gòu)設(shè)計(jì)。問(wèn)題1由維修委托書(shū)的故障描述,維修類型、作業(yè)分類,可知,一臺(tái)車可能有多個(gè)故障,對(duì)應(yīng)多個(gè)維修委托書(shū),所以 (1)空填寫:*;題目中“維修車間根據(jù)維修委托書(shū)和車輛的故障現(xiàn)象,在已有的維修項(xiàng)目中選擇并確定一個(gè)或多個(gè)具體 維修項(xiàng)目,安排相關(guān)的維修工及工時(shí),生成維修派工單”,很明顯,一份委托書(shū)包含了一個(gè)或多個(gè)維修項(xiàng)目,而每個(gè)維 修項(xiàng)目可以由多個(gè)維修工來(lái)完成,每一個(gè)維修工又可以完成多個(gè)維修項(xiàng)目,所以(2)空填寫:1, (3)、(4)填寫:*。問(wèn)題2需要補(bǔ)充車輛和客戶之間以及委托書(shū)和業(yè)

12、務(wù)員之間的關(guān)系。由題目“一個(gè)客戶至少擁有一臺(tái)車”可知,客戶和 車輛之間是“擁有”關(guān)系,且是一對(duì)多的關(guān)系;在由題目中“業(yè)務(wù)員對(duì)車輛進(jìn)行檢查和故障分析后,與客戶磋商,確定 故障現(xiàn)象,生成維修委托書(shū)”可知,業(yè)務(wù)員與委托書(shū)之間是“委托”關(guān)系,且一名業(yè)務(wù)員可以受理多份委托書(shū),而一份 委托書(shū)由一名業(yè)務(wù)員來(lái)生成。問(wèn)題3本題又是補(bǔ)充邏輯結(jié)構(gòu)設(shè)計(jì)題,幾乎每年都考,這類題目只要仔細(xì)看需求分析結(jié)果或者仔細(xì)觀察題目中已知的 表,很容易就能做出,關(guān)鍵是需要細(xì)心,不要漏掉什么屬性。根據(jù)客戶和車輛信息表可知,客戶關(guān)系應(yīng)包括客戶編號(hào)、 客戶名稱、客戶性質(zhì)、折扣率、聯(lián)系人等屬性,主鍵顯然為客戶編號(hào);而車輛關(guān)系應(yīng)包括車牌號(hào)、客戶

13、編號(hào)、車型、顏 色、車輛類別等屬性,主鍵為車牌號(hào)。根據(jù)維修委托書(shū)表可知委托書(shū)應(yīng)包括委托書(shū)編號(hào)、車牌號(hào)、客戶編號(hào)、業(yè)務(wù)員編 號(hào)、維修類型等屬性,其主鍵為委托書(shū)編號(hào)。根據(jù)維修派工單可知,派工單應(yīng)包括委托書(shū)編號(hào)、維修項(xiàng)目編號(hào)、維修工 編號(hào)、工時(shí)等屬性,主鍵是委托書(shū)編號(hào)、維修項(xiàng)目編號(hào)和維修員編號(hào)。根據(jù)實(shí)體聯(lián)系圖知,員工包括業(yè)務(wù)員和維修工, 他們共有的屬性是員工編號(hào)、員工姓名、工種、員工類型、級(jí)別等屬性,主鍵為員工編號(hào)。問(wèn)題4參考問(wèn)題3的分析。三、試題三(總題數(shù):1,分?jǐn)?shù):15.00)說(shuō)明某圖書(shū)管理系統(tǒng)的主要功能如下。1 .圖書(shū)管理系統(tǒng)的資源目錄中記錄著所有可供讀者借閱的資源,每項(xiàng)資源都有一個(gè)唯一的索引

14、號(hào)。系統(tǒng)需登記每項(xiàng)資 源的名稱、出版時(shí)間和資源狀態(tài)(可借閱或已借出)。2 .資源可以分為兩類:圖書(shū)和唱片。對(duì)于圖書(shū),系統(tǒng)還需登記作者和頁(yè)數(shù);對(duì)于唱片,還需登記演唱者和介質(zhì)類型(CD或者磁帶)。3 .讀者信息保存在圖書(shū)管理系統(tǒng)的讀者信息數(shù)據(jù)庫(kù)中,記錄的信息包括:讀者的識(shí)別碼和讀者姓名。系統(tǒng)為每個(gè)讀者 創(chuàng)建了一個(gè)借書(shū)記錄文件,用來(lái)保存讀者所借資源的相關(guān)信息。現(xiàn)采用面向?qū)ο蠓椒ㄩ_(kāi)發(fā)該圖書(shū)管理系統(tǒng)。識(shí)別類是面向?qū)ο蠓治龅牡谝徊?。比較常用的識(shí)別類的方法是尋找問(wèn)題描述給出了說(shuō)明中出現(xiàn)的所有3-1類。表.中的名詞,再根據(jù)相關(guān)規(guī)則從這些名詞中刪除不可能成為類的名詞,最終得到構(gòu)成該系統(tǒng)的名詞3-21。UM展類圖

15、(通過(guò)對(duì)表3-1中的名詞進(jìn)行分析,最終得到了圖3-1所示的類的說(shuō)明見(jiàn)表(分?jǐn)?shù):15.00)(1) .表3-2所給出的類并不完整,根據(jù)說(shuō)明和表 3-1,將圖3-1中的(a)(c)處補(bǔ)充完整。(分?jǐn)?shù):5.00)正確答案:(a)資源目錄;(b)圖書(shū);(c)唱片)解析:(2) .根據(jù)說(shuō)明中的描述,給出圖3-1中的類Catalogitem以及(b)、(c)處所對(duì)應(yīng)的類的關(guān)鍵屬性(使用表3-1中給出 的詞匯),其中,Catalogitem有4個(gè)關(guān)鍵屬性;(b)、(c)處對(duì)應(yīng)的類各有2個(gè)關(guān)鍵屬性。(分?jǐn)?shù):5.00) 正確答案:(Catalogitem的屬性:索引號(hào)、名稱、出版時(shí)間、資源狀態(tài)圖書(shū)的屬性:作者、

16、頁(yè)數(shù)唱片的屬性:演唱者、介質(zhì)類型)解析:(3) .識(shí)別關(guān)聯(lián)的多重度是面向?qū)ο蠼_^(guò)程中的一個(gè)重要步驟。根據(jù)說(shuō)明中給出的描述,完成圖 3-1中的(1)(6)*(分?jǐn)?shù):5.00)正確答案:(1) 1 , (2) 0.*, (3) 1 , (4) 0.*, (5) 1 , (6) 1 或者 0.1)解析:解析本題主要考查UML中的類圖設(shè)計(jì),題目3個(gè)問(wèn)題都是對(duì)類圖的元素進(jìn)行補(bǔ)充。類圖的設(shè)計(jì)是根據(jù)系統(tǒng)的 功能需求而來(lái)的,所以解題的關(guān)鍵在于對(duì)“系統(tǒng)功能說(shuō)明”的理解。下面我們將通過(guò)對(duì)“系統(tǒng)功能說(shuō)明”的分析,來(lái)解 答試題:從系統(tǒng)功能說(shuō)明中的“圖書(shū)管理系統(tǒng)的資源目錄中記錄著所有可供讀者閱讀的資源”和“資源可分為

17、兩類:圖書(shū)和唱片”, 可以彳#知1個(gè)資源目錄中對(duì)應(yīng)著多個(gè)可供讀者借閱的資源,這些資源分為圖書(shū)類與唱片類,所以 (a)為資源目錄,(b)和 (c)分別為圖書(shū)和唱片,同時(shí)(1)應(yīng)填:1, (2)應(yīng)填:0.*。(所有的可供讀者借閱資源數(shù)有可能為 0,即還未錄入任何資 源的狀態(tài))。從“每項(xiàng)資源都有一個(gè)唯一的索引號(hào)。系統(tǒng)需登記每項(xiàng)資源的名稱、出版時(shí)間和資源狀態(tài)”??梢缘弥Y源目錄中的每項(xiàng)資源,即類圖中的Catalogitern ,有索引號(hào)、名稱、出版時(shí)間和資源狀態(tài)這 4個(gè)關(guān)鍵屬性。從“對(duì)于圖書(shū),系統(tǒng)還需登記作者和頁(yè)數(shù);對(duì)于唱片,還需登記演唱者和介質(zhì)類型(CD或者磁帶)可以得知圖書(shū)有作者和頁(yè)數(shù)2個(gè)關(guān)鍵屬

18、性,唱片有演唱者和介質(zhì)類型 2個(gè)關(guān)鍵屬性。Borrower代表讀者,而B(niǎo)orroweritems為借書(shū)記錄文件,同時(shí)系統(tǒng)功能說(shuō)明中有系統(tǒng)為每個(gè)讀者創(chuàng)建了一個(gè)借書(shū)記錄 文件,用來(lái)保存讀者所借資源的相關(guān)信息”,所以它們之間的關(guān)系應(yīng)為1對(duì)1,即第(5)空和第(6)空均填1。四、試題四(總題數(shù):1,分?jǐn)?shù):15.00)說(shuō)明一般的樹(shù)結(jié)構(gòu)常采用孩子-兄弟表示法表示,即用二叉鏈表作樹(shù)的存儲(chǔ)結(jié)構(gòu),鏈表中節(jié)點(diǎn)的兩個(gè)鏈域分別指向該節(jié)點(diǎn)的 第一個(gè)孩予節(jié)點(diǎn)和下一個(gè)兄弟節(jié)點(diǎn)。例如,圖 4-1(a)所示的樹(shù)的孩子-兄弟表示如圖4-1fb)所示。.函數(shù)LevelTraverse()的功能是對(duì)給定樹(shù)進(jìn)行層序遍歷。例如,對(duì)圖4-

19、1所示的樹(shù)進(jìn)行層序遍歷時(shí),節(jié)點(diǎn)的訪問(wèn)次序?yàn)?D B A E F P C。對(duì)樹(shù)進(jìn)行層序遍歷時(shí)使用了隊(duì)列結(jié)構(gòu),實(shí)現(xiàn)隊(duì)列基本操作的函數(shù)原型如下表所示OBool、Status類型定義如下:typedef enum FALSE = 0, TRUE = 1 Bool;typedef enum OVERFLOW = -2, UNDERFLOW = -1, ERROR = 0, OK = 1 Status;樹(shù)的二叉鏈表節(jié)點(diǎn)定義如下:typedef struct Nodechar data ;struct Node *fimrstchiid, *nextbrother;Node, *TreeNode;函數(shù)Sta

20、tus LevelTraverse(TreeNode root)/*層序遍歷樹(shù),樹(shù)采用孩子-兄弟表示法,root是樹(shù)根節(jié)點(diǎn)的指針*/Queue tempQ;TreeNode ptr, brotherptr;if (!root)return ERROR;InitQueue( & tempQ);(1);brotherptr = root - nextbrother;while (brotherptr) EnQueue(&tempQ, brotherptr);;/*end-while*/while()(4);printf( %c t, ptr- data);if( (5) )continue;(6)

21、;brotherptr = ptr-firstchild- nextbrother;while(brotherptr) EnQueue(&tempQ, brotherptr);;/*end-while*/*end-while*/return OK;)/*LevelTraverse*/(分?jǐn)?shù):14.98)填空項(xiàng) 1: (正確答案:EnQueue(&tempQ,root)解析:填空項(xiàng)1: (正確答案: 解析:填空項(xiàng)1: (正確答案: 解析:填空項(xiàng)1: (正確答案:解析:填空項(xiàng)1: (正確答案: 解析:填空項(xiàng)1: (正確答案: 解析:brotherptr=brotherptr- nextbrothe

22、r )!IsEmpty(tempQ)DeQueue(&tempQ,&ptr)!ptr- firstchild )EnQueue(&tempQ,ptr- firstchild) )nextbrother brotherptr=brotherptr-(正確答案:1:填空項(xiàng).解答此題的關(guān)鍵在于理解用隊(duì)列層序遍歷樹(shù)的過(guò)程。算法的流程是這樣的:首先將樹(shù)根節(jié)點(diǎn)解析:解析;完成這一操作以后,便開(kāi)始出入隊(duì),然后將其所有兄弟節(jié)點(diǎn)入隊(duì)(當(dāng)然,由于是根節(jié)點(diǎn),故無(wú)兄弟節(jié)點(diǎn))隊(duì)、打?。辉诖蛴⊥炅酥?,需要進(jìn)行一個(gè)判斷,判斷當(dāng)前節(jié)點(diǎn)有無(wú)孩子節(jié)點(diǎn),若有孩子節(jié)點(diǎn),則將孩子節(jié)點(diǎn)入隊(duì),同時(shí)將孩子節(jié)點(diǎn) 的所有兄弟節(jié)點(diǎn)入隊(duì);完了以后

23、繼續(xù)進(jìn)行出隊(duì)操作,出隊(duì)后再次判斷當(dāng)前節(jié)點(diǎn)是否有孩子節(jié)點(diǎn),并重復(fù)上述過(guò)程,直至所有節(jié)點(diǎn)輸出。入隊(duì),并同時(shí)檢查是否有兄弟節(jié)點(diǎn),對(duì)于兄弟節(jié)點(diǎn)則D接下來(lái)以本題為例來(lái)說(shuō)明此過(guò)程。首先將樹(shù)根節(jié)點(diǎn)。沒(méi)有兄弟節(jié)點(diǎn),所以隊(duì)列此時(shí)應(yīng)是:D一并入隊(duì)。這里的D入隊(duì),同,所以將BD接下來(lái)執(zhí)行出隊(duì)操作。D出隊(duì), 出隊(duì)以后檢查是否有子節(jié)點(diǎn),經(jīng)檢查, D有子節(jié)點(diǎn)B。、時(shí)將B的兄弟節(jié)點(diǎn)A和E按順序入隊(duì)。得到隊(duì)列:BA E出隊(duì), A接下來(lái)再執(zhí)行出隊(duì)操作。B出隊(duì),同時(shí)檢查B是否有子節(jié)點(diǎn),B無(wú)子節(jié)點(diǎn),所以繼續(xù)執(zhí)行出隊(duì)操作。、A有子節(jié)點(diǎn)F,所 以將F入隊(duì),同時(shí)將F的兄弟節(jié)點(diǎn)P入隊(duì)。得到隊(duì)列:E、F同時(shí)檢查A是否有子節(jié)點(diǎn),Po 、C P

24、C,所以C出隊(duì)。得: F、E接下來(lái)再次執(zhí)行出隊(duì)操作。E出隊(duì),有子節(jié)點(diǎn)出隊(duì),整P仍無(wú)子節(jié)點(diǎn),最后CF出隊(duì),F(xiàn)無(wú)子節(jié)點(diǎn),繼續(xù)出隊(duì)操作, P出隊(duì),接下來(lái)再次執(zhí)行出隊(duì)操作。個(gè)過(guò)程結(jié)束。執(zhí)行入隊(duì)操作,即。應(yīng)是對(duì)根節(jié)點(diǎn) root通過(guò)對(duì)算法的詳細(xì)分析,我們可以輕松得到答案。(1),此變量無(wú)語(yǔ)句對(duì)其進(jìn)行更新,所 brotherptr 。 EnQueue(&tempQ,root)(2)在一個(gè)循環(huán)當(dāng)中, 循環(huán)變量是。 應(yīng)填:brotherpu=brotherptr- nextbrotherbrotherptr 以(2)必定是更新。結(jié)合前面的算法分析可知;” 是控制數(shù)據(jù)的輸出,這些數(shù)據(jù)應(yīng)是從隊(duì)列中加上后面的語(yǔ)句 p

25、rintf(%c t,ptr- data)(3)、(4)!IsEmpty(tempQ)填:、 (4)得到,所以此處必有出隊(duì)操作,同時(shí)在出隊(duì)之前應(yīng)判斷隊(duì)列是否為空,所以 (3)實(shí)際上是問(wèn)“在什么情況下,要持續(xù) 進(jìn)行出隊(duì)操作?”,前面的算法分析中。(5)DeQueue(&tempQ,&ptr)和所在的(7) 已指出:若出隊(duì)節(jié)點(diǎn)無(wú)子節(jié)點(diǎn),則繼續(xù) 進(jìn)行出隊(duì)操作,所以(5)填:!ptr-firstchild。(6)和 (6)語(yǔ)句段的功能是將剛出隊(duì)節(jié)點(diǎn)的子節(jié)點(diǎn)及其兄弟節(jié)點(diǎn)入隊(duì),所以填:EnQueue(&tempQ,ptr- firstchild) 。 (7)和。brotherptr- nextbrothe

26、r(2) 相同,填:brotherptr- 15.00) 總題數(shù):1,分?jǐn)?shù):五、試題五(說(shuō)明某游戲公司現(xiàn)欲開(kāi)發(fā)一款面向兒童的模擬游戲,該游戲主要模擬現(xiàn)實(shí)世界中各種鴨子的發(fā)聲特征、飛行特 征和外 觀特征。游戲需要模擬的鴨子種類及其特征如表下表所示。5-1所示。為支持將來(lái)能夠模擬更多種類鴨子的特征,采用策略設(shè)計(jì)模式(strategy)設(shè)計(jì)的類圖如圖.其中,Duck為抽象類,描述了抽象的鴨子,而類 RubberDuck MallardDuck、CottonDuck和RedHeadDuckb另ll描述具體 的鴨子種類,方法fly() 、quack()和display。分別表示不同種類的鴨子都具有飛行特

27、征、發(fā)聲特征和外觀特征;類 FlyBehavior與QuackBehavior為抽象類,分別用于表示抽象白飛行行為與發(fā)聲行為;類FlyNoWay與FlyWithWings分別描述不能飛行的行為和用翅膀飛行的行為;類Quack Squeak與QuackNoWa翁別描述發(fā)出“嘎嘎”聲的行為、發(fā)出橡皮與空氣摩擦聲的行為與不發(fā)聲的行為。請(qǐng)?zhí)钛a(bǔ)以下代碼中的空缺。C+代碼# include using namespace (1); class FlyBehavior public : (2) fly()=01class QuackBehaviorpublic: (3) quack()=0;Class Fl

28、yWithWings :public F1yBehaviorpublic: void fly()cout使用翅膀飛行也 endl;class FlyNoWay :public FlyBehaviorpublic: void fly()cout endl;class Quack :public QuackBehaviorpublic: void quack()cout發(fā)出 嘎嘎聲也 endl;class Squeak :public QuackBehaviorpublic: void quack()cout 發(fā)出空氣與橡皮摩擦聲也 endl; ;class QuackNOWay :public

29、QuackBehaViorpublic: void quack()cout不能發(fā)聲也fly()quackBehaviot- quack()填空項(xiàng) 1: (正確答案: 解析: )1: (正確答 案:FlyNoWay()填空項(xiàng) 解析:)1: (正確答案:Squeak()填空項(xiàng) 本題考查面向?qū)ο蟮某绦蛟O(shè)計(jì) 的抽象類和多態(tài)。程序解釋如下:解析解析:標(biāo)準(zhǔn)程序庫(kù)中的所有 C+namespace是指標(biāo)識(shí)符的各種可見(jiàn)范圍。(1)using namespace (1)std ;/* 所謂 */中。的namespac訴識(shí)符都被定義于一個(gè)名為std為抽象類,分別用于表示抽象的飛行行為與發(fā)聲行為,QuackBehav

30、iorFlyBehavior與(2)由題中信息:類,需要定義虛函數(shù),用以給子類進(jìn) )(即多態(tài)而這兩種行為對(duì)應(yīng)的不止是一種方式,為了表示多種行為方式。所以 voidvoid quack()可知,父類中的對(duì)應(yīng)函數(shù)返回值也應(yīng)為行重載。再由予類 中的函數(shù)voidfly() 及(3)的填空如下: 和class FlyBehavior public: (2) virtual void fly( )=O;class Qutack: Behavior public: (3) virtual void quack( )=0;類中出現(xiàn)的flvBehavior=newlyNoWay();quackBehavior=

31、new 由子類 RubberDuck(3)Duck 類的定義,(5)填空如下:。所以(4)和Squeak();可知這兩個(gè)指針類型對(duì)象為 nyBehavior。和quackBehaviorClass Duck protected: FlyBehavior * (4) fiybehavior; QuackBehavior * (5) quackBehavior; 由FlyBehavior * flyBehavior;QuackBehavior * quackBehavior; 及函數(shù)名可知,該函數(shù)體應(yīng)調(diào)用填空如下:(6)和(7)ny函數(shù)和QuackBehavior類中的quack函數(shù)。所以FlyB

32、ehavior類中的public:fiy(); void fly() (6) fiybehavior- quack(); ; void quack() (7) quackBehavior- virtual void display()=0;;是“發(fā)出空氣與橡皮摩擦聲”并且“不能飛行”的鴨子種類,因此構(gòu)RubberDuck(4)由題中所給信息可知和,所以第(8)對(duì)應(yīng)的類型分別為 FlyNoWay Squeak造函數(shù)中創(chuàng)建的對(duì)象flyBehavior 和quackBehavior (9)空的填空如下:Class RubberDuck: public Duck public:RubberDuck()

33、flyBehavior=new (8) FiyNoWay();quackBehaVior=new (9) Squeak();,分?jǐn)?shù):(總題數(shù):1六、試題六14.00)說(shuō)明某游戲公司現(xiàn)欲開(kāi)發(fā)一款面向兒童的模擬游戲,該游戲主要模擬現(xiàn)實(shí)世界中各種鴨子的發(fā)聲特征、飛行特 征和外 觀特征。游戲需要模擬的鴨子種類及其特征如下表所示。.為支持將來(lái)能夠模擬更多種類鴨子的特征,采用策略設(shè)計(jì)模式(Strategy)設(shè)計(jì)的類圖如圖6-1所示。其中,Duck為抽象類,描述了抽象的鴨子,而類 RubberDuck MallardDuck、CottonDuck和RedHeadDuckb另ll描述具體 的鴨子種類,方法fl

34、y() 、quack()和display。分別表示不同種類的鴨子都具有飛行特征、分別用于表示抽象的飛行行 為與發(fā)聲行為;類 QuackBehavior與FlyBehavior發(fā)聲特征和外觀特征;接口.QuackNoWayj SqueakFlyNoWa內(nèi)FlyWithWings分別描述不能飛行的行為和用翅膀飛行的行為;類Quack分別描述發(fā)出“嘎嘎”聲的行為、發(fā)出橡皮與空氣摩擦聲的行為與不發(fā)聲的行為。請(qǐng)?zhí)钛a(bǔ)以下代碼中的空缺。.Java代碼 (1) FlyBehaVior public void fly(); ); QuackBehavior public void quack(); ; Clas

35、s FlyWithWings implements FlyBehavior土握瘠楣?泯?度源整?唆?軸潼汴?使用翅膀飛行!); ;Class FlyNoWay implements FlyBehaVior 累讓操瘠楣?泯?度源整?唆?軸潼桶?不能飛行!); ;Class Quack implements QuackBehavior pubiic void quack()Systemoutprintln( 發(fā)出嘎嘎聲!); ;class Squeak implements QuackBehavior public void quack()System.out.println(發(fā)出空氣與橡皮摩擦聲!);Class QuackNoWay implements QuackBehavior public void quack()(System.out.println(不能發(fā)聲!);Abst

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論