第
1題: 閱讀下列說明和圖,回答問題1至問題3,將解答填入答題紙的對應欄內。
【說明】
某大型披薩加工和銷售商為了有效管理生產和銷售情況,欲開發(fā)一披薩信息系統(tǒng), 其主要功能如下:
(1)銷售。處理客戶的訂單信息,生成銷售訂單,并將其記錄在銷售訂單表中。銷售訂單記錄了訂購者、所訂購的披薩、期望的交付日期等信息。
(2)生產控制。根據銷售訂單以及庫存的披薩數量,制定披薩生產計劃(包括生產哪些披薩、生產順序和生產量等),并將其保存在生產計劃表中。
(3)生產。根據生產計劃和配方表中的披薩配方,向庫存發(fā)出原材料申領單,將制作好的披薩的信息存入庫存表中,以便及時進行交付。
(4)采購。根據所需原材料及庫存量,確定采購數量,向供應商發(fā)送采購訂單,并將其記錄在采購訂單表中;得到供應商的供應量,將原材料數量記錄在庫存表中,在采購訂單表中標記已完成采購的訂單。
(5)運送。根據銷售訂單將披薩交付給客戶,并記錄在交付記錄表中。
(6)財務管理。在披薩交付后,為客戶開具費用清單,收款并出具收據;依據完成的采購訂單給供應商支付原材料費用并出具支付細節(jié);將收款和支付記錄存入收支記錄表中。
(7)存儲。檢查庫存的原材料、拔薩和未完成訂單,確定所需原材料。
現采用結構化方法對披薩信息系統(tǒng)進行分析與設計,獲得如圖1-1所示的上下文數據流圖和圖1-2所示的0層數據流圖。
【問題1】(4分)
根據說明中的詞語,給出圖1-1中的實體E1~E2的名稱。
【問題2】(5分)
根據說明中的詞語,給出圖1-2中的數據存儲D1~D5的名稱。
【問題3】(6分)
根據說明和圖中詞語,補充圖1-2中缺失的數據流及其起點和終點。
答案解析與討論:
www.ichunya.com/st/381459990.html第
3題: 閱讀下列說明和圖,回答問題1至問題3,將解答填入答題紙的對應欄內。
【說明】
某公司欲開發(fā)一個管理選民信息的軟件系統(tǒng)。系統(tǒng)的基本需求描述如下:
(1)每個人(Person)可以是一個合法選民(Eligible)或者無效的選民(Ineligible)。
(2)每個合法選民必須通過該系統(tǒng)對其投票所在區(qū)域(即選區(qū),Riding)進行注冊( Registration)。每個合法選民僅能注冊一個選區(qū)。
(3)選民所屬選區(qū)由其居住地址(Address)決定。假設每個人只有一個地址,地址可以是鎮(zhèn)(Town)或者城市(City)。
(4)某些選區(qū)可能包含多個鎮(zhèn);而某些較大的城市也可能包含多個選區(qū)。
現采用面向對象方法對該系統(tǒng)進行分析與設計,得到如圖1-1所示的初始類圖。

【問題1】 (8分)
根據說明中的描述,給出圖1-1中C1~C4所對應的類名(類名使用說明中給出的英文詞匯)。
【問題2】(3分)
根據說明中的描述,給出圖1-1中M1~M6處的多重度。
【問題3】(4分)
現對該系統(tǒng)提出了以下新需求:
(1)某些人擁有在多個選區(qū)投票的權利,因此需要注冊多個選區(qū);
(2)對手滿足(1)的選民,需要劃定其“主要居住地”,以確定他們應該在哪個選區(qū)進行投票。
為了滿足上述需求,需要對圖1-1所示的類圖進行哪些修改?請用100字以內文字說明。
答案解析與討論:
www.ichunya.com/st/3814720120.html第
4題: 閱讀下列說明和C代碼,回答問題1至問題3,將解答寫在答題紙的對應欄內。
【說明】
計算一個整數數組a的最長遞增子序列長度的方法描述如下:
假設數組a的長度為n,用數組b的元素b[i]記錄以a[i](0≤i
;其中b[i]滿足最優(yōu)子結構,可遞歸定義為:

【C代碼】
下面是算法的C語言實現。
(1)常量和變量說明
a:長度為n的整數數組,待求其最長遞增子序列
b:長度為n的數組,b[i]記錄以a[i](0≤i
度,其中0≤i
len:最長遞增子序列的長度
i,j:循環(huán)變量
temp:臨時變量
(2)C程序
#include
int maxL(int*b, int n) {
int i, temp=0;
for(i=0; i if(b[i]>temp)
temp=b[i];
}
return temp;
}
int main() {
int n, a[100], b[100], i, j, len;
scanf("%d", &n);
for(i=0; i scanf("%d", &a[i]);
}
(1) ;
for(i=1; i for(j=0, len=0; (2) ; j++) {
if( (3) && len len=b[j];
}
(4) ;
}
Printf("len:%d\n", maxL(b,n));
printf("\n");
}
【問題1】(8分)
根據說明和C代碼,填充C代碼中的空(1)~(4)。
【問題2】(4分)
根據說明和C代碼,算法采用了 (5) 設計策略,時間復雜度為 (6) (用O符號表示)。
【問題3】(3分)
已知數組a={3,10,5,15,6,8},根據說明和C代碼,給出數組b的元素值。
答案解析與討論:
www.ichunya.com/st/3814829334.html第
5題: 閱讀下列說明和C++代碼,將應填入 (n) 處的字句寫在答題紙的對應欄內。
【說明】
某燈具廠商欲生產一個燈具遙控器,該遙控器具有7個可編程的插槽,每個插槽都有開關按鈕,對應著一個不同的燈。利用該遙控器能夠統(tǒng)一控制房間中該廠商所有品牌燈具的開關,現采用Command(命令)模式實現該遙控器的軟件部分。Command模式的類圖如圖1-1所示。

【C++代碼】
class Light {
public:
Light(string name) { /* 代碼省略 */ }
void on() { /* 代碼省略 */ } // 開燈
void off() { /* 代碼省略 */ } // 關燈
};
class Command {
public:
(1) ;
};
class LightOnCommand:public Command { // 開燈命令
private:
Light* light;
public:
LightOnCommand(Light* light) { this->light=light; }
void execute() { (2) ; }
};
class LightOffCommand:public Command { // 關燈命令
private:
Light *light;
public:
LightOffCommand(Light* light) { this->light=light; }
void execute() { (3) ; }
};
class RemoteControl{ // 遙控器
private:
Command* onCommands[7];
Command* offCommands[7];
public:
RemoteControl() { /* 代碼省略 */ }
void setCommand(int slot, Command* onCommand, Command* offCommand) {
(4) =onCommand;
(5) =offCommand;
}
void onButtonWasPushed(int slot) { (6) ; }
void offButtonWasPushed(int slot) { (7) ; }
};
int main() {
RemoteControl* remoteControl=new RemoteControl();
Light* livingRoomLight=new Light("Living Room");
Light* kitchenLight=new Light("kitchen");
LightOnCommand* livingRoomLightOn=new LightOnCommand(livingRoomLight);
LightOffCommand* livingRoomLightOff=newLightOffCommand(livingRoomLight);
LightOnCommand* kitchenLightOn=new LightOnCommand(kitchenLight);
LightOffCommand* kitchenLightOff=new LightOffCommand(kitchenLight);
remoteControl->setCommand(0, livingRoomLightOn, livingRoomLightOff);
remoteControl->setCommand(1, kitchenLightOn, kitchenLightOff);
remoteControl->onButtonWasPushed(0);
remoteControl->offButtonWasPushed(0);
remoteControl->onButtonWasPushed(1);
remoteControl->offButtonWasPushed(1);
/* 其余代碼省略 */
return 0;
}
答案解析與討論:
www.ichunya.com/st/3814921042.html