第
2題: 閱讀下列說明,回答問題1至問題3,將解答填入答題紙的對應(yīng)欄內(nèi)。
【說明】
某房屋租賃公司擬開發(fā)一個管理系統(tǒng)用于管理其持有的房屋、租客及員工信息。請根據(jù)下述需求描述完成系統(tǒng)的數(shù)據(jù)庫設(shè)計。
【需求描述】
1.公司擁有多幢公寓樓,每幢公寓樓有唯一的樓編號和地址。每幢公寓樓中有多套公寓,每套公寓在樓內(nèi)有唯一的編號(不同公寓樓內(nèi)的公寓號可相同〉。系統(tǒng)需記錄每套公寓的臥室數(shù)和衛(wèi)生間數(shù)。
2.員工和租客在系統(tǒng)中有唯一的編號(員工編號和租客編號)。
3.對于每個租客,系統(tǒng)需記錄姓名、多個聯(lián)系電話、一個銀行賬號(方便自動扣房租)、一個緊急聯(lián)系人的姓名及聯(lián)系電話。
4.系統(tǒng)需記錄每個員工的姓名、一個聯(lián)系電話和月工資。員工類別可以是經(jīng)理或維修工,也可兼任。每個經(jīng)理可以管理多幢公寓樓。每幢公寓樓必須由一個經(jīng)理管理。系統(tǒng)需記錄每個維修工的業(yè)務(wù)技能,如:水暖維修、電工、木工等。
5. 租客租賃公寓必須和公司簽訂租賃合同。一份租賃合同通常由一個或多個租客(合租)與該公寓樓的經(jīng)理簽訂,一個租客也可租賃多套公寓。合同內(nèi)容應(yīng)包含簽訂日期、開始時間、租期、押金和月租金。
【概念模型設(shè)計】
根據(jù)需求階段收集的信息,設(shè)計的實體聯(lián)系圖(不完整)如圖2-1所示。
【邏輯結(jié)構(gòu)設(shè)計】
根據(jù)概念摸型設(shè)計階段完成的實體聯(lián)系圖,得出如下關(guān)系模式(不完整):
聯(lián)系電話(電話號碼,租客編號)
租客(租客編號,姓名,銀行賬號,聯(lián)系人姓名,聯(lián)系人電話)
員工(員工編號,姓名,聯(lián)系電話,類別,月工資, (a) )
公寓樓( (b) ,地址,經(jīng)理編號)
公寓(樓編號,公寓號,臥室數(shù),衛(wèi)生間數(shù)〉
合同(合同編號,租客編號,樓編號,公寓號,經(jīng)理編號,簽訂日期,起始日期,租期, (c) ,押金)
【問題1】(4.5分)
補充圖2-1中的“簽約”聯(lián)系所關(guān)聯(lián)的實體及聯(lián)系類型。
【問題2】(4.5分)
補充邏輯結(jié)構(gòu)設(shè)計中的(a)、(b)、(c)三處空缺。
【問題3】(6分)
在租期內(nèi),公寓內(nèi)設(shè)施如出現(xiàn)問題,租客可在系統(tǒng)中進行故障登記,填寫故障描述,每項故障由系統(tǒng)自動生成唯一的故障編號,由公司派維修工進行故障維修,系統(tǒng)需記錄每次維修的維修日期和維修內(nèi)容。請根據(jù)此需求,對圖2-1進行補充,并將所補充的ER圖內(nèi)容轉(zhuǎn)換為一個關(guān)系模式,請給出該關(guān)系模式。
答案解析與討論:
m.xiexiliangjiufa.com/st/3842022576.html第
3題: 閱讀下列系統(tǒng)設(shè)計說明,回答問題1至問題3,將解答填入答題紙的對應(yīng)欄內(nèi)。
【說明】
某玩具公司正在開發(fā)一套電動玩具在線銷售系統(tǒng),用于向注冊會員提供端對端的玩具 定制和銷售服務(wù)。在系統(tǒng)設(shè)計階段,"創(chuàng)建新訂單 (New Order)" 的設(shè)計用例詳細描述如表 3-1 所示,候選設(shè)計類分類如表 3-2 所示,并根據(jù)該用例設(shè)計出部分類圖如圖3-1所示。
表 3-1 創(chuàng)建新訂單 (NewOrder) 設(shè)計用例


表3-2 候選設(shè)計類分類

在訂單處理的過程中,會員可以點擊“取消訂單"取消該訂單。如果支付失敗,該訂單將被標記為掛起狀態(tài),可后續(xù)重新支付,如果掛起超時30分鐘未支付,系統(tǒng)將自動取消該訂單。訂單支付成功后,系統(tǒng)判斷訂單類型: (1)對于常規(guī)訂單,標記為備貨狀態(tài),訂單信息發(fā)送到貨運部,完成打包后交付快遞發(fā)貨; (2)對于定制訂單,會自動進入定制狀態(tài),定制完成后交付快遞發(fā)貨。會員在系統(tǒng)中點擊”收貨"按鈕變?yōu)槭肇洜顟B(tài),結(jié)束整個訂單的處理流程。根據(jù)訂單處理過程所設(shè)計的狀態(tài)圖如圖3-2所示。
圖3-2 訂單狀態(tài)圖
【問題1】(6分)
根據(jù)表3-1中所標記的候選設(shè)計類,請按照其類別將編號 C1~C12 分別填入表 3-2 中的(a)、(b)和(c)處。
【問題2】 (4 分)
根據(jù)創(chuàng)建新訂單的用例描述,請給出圖3-1中X1~X4處對應(yīng)類的名稱。
【問題3】 (5分)
根據(jù)訂單處理過程的描述,在圖 3-2 中S1~S5處分別填入對應(yīng)的狀態(tài)名稱。
答案解析與討論:
m.xiexiliangjiufa.com/st/3842121292.html第
4題: 閱讀下列說明和C代碼,回答問題 1 至問題 3,將解答寫在答題紙的對應(yīng)欄內(nèi)。
【說明】
假幣問題:有n枚硬幣,其中有一枚是假幣,己知假幣的重量較輕?,F(xiàn)只有一個天平,要求用盡量少的比較次數(shù)找出這枚假幣。
【分析問題】
將n枚硬幣分成相等的兩部分:
(1)當n為偶數(shù)時,將前后兩部分,即 1...n/2和n/2+1...0,放在天平的兩端,較輕的一端里有假幣,繼續(xù)在較輕的這部分硬幣中用同樣的方法找出假幣:
(2)當n為奇數(shù)時,將前后兩部分,即1..(n -1)/2和(n+1)/2+1...0,放在天平的兩端,較輕的一端里有假幣,繼續(xù)在較輕的這部分硬幣中用同樣的方法找出假幣;若兩端重量相等,則中間的硬幣,即第 (n+1)/2枚硬幣是假幣。
【C代碼】
下面是算法的C語言實現(xiàn),其中:
coins[]: 硬幣數(shù)組
first,last:當前考慮的硬幣數(shù)組中的第一個和最后一個下標
#include
int getCounterfeitCoin(int coins[], int first,int last)
{
int firstSum = 0,lastSum = 0;
int ì;
If(first==last-1){ /*只剩兩枚硬幣*/
if(coins[first]< coins[last])
return first;
return last;
}
if((last - first + 1) % 2 ==0){ /*偶數(shù)枚硬幣*/
for(i = first;i<( 1 );i++){
firstSum+= coins[i];
}
for(i=first + (last-first) / 2 + 1;i< last +1;i++){
lastSum += coins[i];
}
if( 2 ){
Return getCounterfeitCoin(coins,first,first+(last-first)/2;)
}else{
Return getCounterfeitCoin(coins,first+(last-first)/2+1,last;)
}
}
else{ /*奇數(shù)枚硬幣*/
For(i=first;i<="" p="">
firstSum+=coins[i];
}
For(i=first+(last-first)/2+1;i
lastSum+=coins[i];
}
If(firstSum
return getCounterfeitCoin(coins,first,first+(last-first)/2-1);
}else if(firstSum>lastSum){
return getCounterfeitCoin(coins,first+(last-first)/2-1,last);
}else{
Return( 3 )
}
}
}
【問題一】
根據(jù)題干說明,填充C代碼中的空(1)-(3)
【問題二】
根據(jù)題干說明和C代碼,算法采用了( )設(shè)計策略。
函數(shù)getCounterfeitCoin的時間復(fù)雜度為( )(用O表示)。
【問題三】
若輸入的硬幣數(shù)為30,則最少的比較次數(shù)為( ),最多的比較次數(shù)為( )。
答案解析與討論:
m.xiexiliangjiufa.com/st/3842215171.html第
6題: 閱讀下列說明和 Java代碼,將應(yīng)填入 (n) 處的字句寫在答題紙的對應(yīng)欄內(nèi)。
【說明】
某快餐廳主要制作并出售兒童套餐,一般包括主餐(各類比薩)、飲料和玩具,其餐品種類可能不同,但其制作過程相同。前臺服務(wù)員 (Waiter) 調(diào)度廚師制作套餐?,F(xiàn)采用生成器 (Builder) 模式實現(xiàn)制作過程,得到如圖 6-1 所示的類圖。
【Java代碼】
class Pizza {
private String parts;
public void setParts(String parts) { this.parts = parts; }
public String toString() { return this.parts; }
}
abstract class PizzaBuilder {
protected Pizza pizza;
public Pizza getPizza() { return pizza; }
public void createNewPizza() { pizza = new Pizza(); }
public (1) ;
}
class HawaiianPizzaBuilder extends PizzaBuilder {
public void buildParts() { pizza.setParts("cross + mild + ham&pineapp1e”};
}
class SpicyPizzaBuilder extends PizzaBuilder {
public void buildParts() { pizza.setParts("pan baked + hot + pepperoni&salami"); }
}
class Waiter {
private PizzaBuilder pizzaBuilder;
public void setPizzaBuilder(PizzaBuilder pizzaBuilder) { /*設(shè)置構(gòu)建器*/
( 2 ) ;
}
public Pizza getPizza(){ return pizzaBuilder.getPizza(); }
public void construct() { /*構(gòu)建*/
pizzaBuilder.createNewPizza();
( 3 ) ;
}
}
Class FastFoodOrdering {
public static viod mainSting[]args) {
Waiter waiter = new Waiter();
PizzaBuilder hawaiian_pizzabuilder = new HawaiianPizzaBuilder();
( 4 ) ;
( 5 ) ;
System.out.println("pizza: " + waiter.getPizza());
}
}
程序的輸出結(jié)果為:
Pizza:cross + mild + ham&pineapple
答案解析與討論:
m.xiexiliangjiufa.com/st/3842420151.html