試題一:閱讀以下說明和C++代碼。將應(yīng)填入 (n) 處的字句寫在答題紙的對應(yīng)欄內(nèi)。
【說明】
傳輸門是傳輸系統(tǒng)中的重要裝置。傳輸門具有Open(打開)、Closed(關(guān)閉)、Opening (正在打開)、StayOpen(保持打開)和Closing(正在關(guān)閉)五種狀態(tài)。觸發(fā)傳輸門狀態(tài)轉(zhuǎn)換的事件有click、complete和timeout三種。事件與其相應(yīng)的狀態(tài)轉(zhuǎn)換如下圖所示。
下面的C++代碼1與C++代碼2分別用兩種不同的設(shè)計(jì)思路對傳輸門進(jìn)行狀態(tài)模擬,請?zhí)钛a(bǔ)代碼中的空缺。
【C++代碼1】
const int CLOSED=1; const int OPENING=2;
const int OPEN=3; const int CLOSING=4;
const int STAYOPEN=5; //定義狀態(tài)變量,用不同整數(shù)表示不同狀態(tài)
class Door {
Private:
int state; //傳輸門當(dāng)前狀態(tài)
void setState(int state){ this->state=state;} //設(shè)置當(dāng)前狀態(tài)
public:
Door():state(CLOSED.{};
void getState(){ //根據(jù)當(dāng)前狀態(tài)輸出相應(yīng)的字符串
switch(state){
case OPENING: cout<<"OPENING"<<endl; break;
case CLOSED: cout<<"CLOSED"<<endl; break;
case OPEN: cout<<"OPEN"<<endl; break;
case CLOSING: cout<<"CLOSING"<<endl; break;
case STAYOPEN:cout<<"STAYOPEN"<<endl; break;
}
};
void click() { //發(fā)生click事件時(shí)進(jìn)行狀態(tài)轉(zhuǎn)換
if ( (1) ) setState(OPENING.;
else if ( (2) ) setState(CLOSING.;
else if ( (3) ) setState(STAYOPEN);
}
void timeout(){ //發(fā)生timeout事件時(shí)進(jìn)行狀態(tài)轉(zhuǎn)換
if (state == OPEN) setState(CLOSING.;
}
void complete(){ //發(fā)生complete事件時(shí)進(jìn)行狀態(tài)轉(zhuǎn)換
if (state == OPENING. setState(OPEN);
else if (state == CLOSING. setState(CLOSED.;
}
};
int main(){
Door aDoor;
aDoor.getState();aDoor.click(); aDoor.getState();
aDoor.complete();aDoor.getState(); aDoor.click();
aDoor.getState();aDoor.click(); aDoor.getState(); return 0;
}
【C++代碼2】
class Door {
public:
DoorState *CLOSED,*OPENING,*OPEN,*CLOSING,*STAYOPEN,*state;
Door();
virtual~Door(){……//釋放申請的內(nèi)存,此處代碼省略);
void setState(DoorState *state) { this->state = state;}
void getState(){
//此處代碼省略,本方法輸出狀態(tài)字符串,
//例如,當(dāng)前狀態(tài)為CLOSED時(shí),輸出字符串為“CLOSED”
};
void click();
void timeout();
void complete();
};
Door::Door(){
CLOSED = new DoorClosed(this); OPENING = new DoorOpening(this);
OPEN = new DoorOpen(this); CLOSING = new DoorClosing(this);
STAYOPEN = new DoorStayOpen(this);state = CLOSED;
}
void Door :: click() { (4) ;)
void Door :: timeout() { (5) ;)
void Door :: complete() { (6) ;}
class DoorState//定義一個抽象的狀態(tài),它是所有狀態(tài)類的基類
{
protected:Door *door;
public:
DoorState(Door *door) {this->door = door;}
virtual~DoorState(void);
virtual void click() {}
virtual void complete() {}
virtual void timeout() {}
};
class DoorClosed :public DoorState{//定義一個基本的Closed狀態(tài)
public:
DoorClosed(Door *door) :DoorState(door) {}
virtual ~ DoorClosed(){}
void click();
};
void DoorClosed :: click() { (7) ;}
//其他狀態(tài)類的定義與實(shí)現(xiàn)代碼省略
int main() {
Door aDoor;
aDoor.getState();aDoor.click();aDoor.getState();aDoor.complete();
aDoor.getState();aDoor.timeout();aDoor.getState();return 0;
}
查看答案
參考答案:
試題二:閱讀下列說明,回答問題1至問題3,將解答填入答題紙的對應(yīng)欄內(nèi)。
【說明】
某海外代購公司為擴(kuò)展公司業(yè)務(wù),需要開發(fā)一個信息化管理系統(tǒng)。請根據(jù)公司現(xiàn)有業(yè)務(wù)及需求完成該系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)。
【需求描述】
(1)記錄公司員工信息。員工信息包括工號、身份證號、姓名、性別和一個手機(jī)號,工號唯一標(biāo)識每位員工,員工分為代購員和配送員。
(2)記錄采購的商品信息。商品信息包括商品名稱、所在超市名稱、采購價(jià)格、銷
售價(jià)格和商品介紹,系統(tǒng)內(nèi)部用商品條碼唯一標(biāo)識每種商品。一種商品只在一家超市代購。
(3)記錄顧客信息。顧客信息包括顧客真實(shí)姓名、身份證號(清關(guān)繳稅用)、一個手機(jī)號和一個收貨地址,系統(tǒng)自動生成唯一的顧客編號。
(4)記錄托運(yùn)公司信息。托運(yùn)公司信息包括托運(yùn)公司名稱、電話和和地址,系統(tǒng)自動生成唯一的托運(yùn)公司編號。
(5)顧客登錄系統(tǒng)之后,可以下訂單購買商品。訂單支付成功后,系統(tǒng)記錄唯一的支付憑證編號,顧客需要在訂單里指定運(yùn)送方式:空運(yùn)或海運(yùn)。
(6)代購員根據(jù)顧客的訂單在超市采購對應(yīng)商品,一份訂單所含的多個商品可能由多名代購員從不同超市采購。
(7)采購?fù)甑纳唐方挥膳渌蛦T根據(jù)顧客訂單組合裝箱,然后交給托運(yùn)公司運(yùn)送。托運(yùn)公司按顧客訂單核對商品名稱和數(shù)量,然后按顧客的地址進(jìn)行運(yùn)送。
【概念模型設(shè)計(jì)】
根據(jù)需求階段收集的信息,設(shè)計(jì)的實(shí)體聯(lián)系圖(不完整)如圖2-1所示。
【邏輯結(jié)構(gòu)設(shè)計(jì)】
據(jù)概念模型設(shè)計(jì)階段完成的實(shí)體聯(lián)系圖,得出如下關(guān)系模式(不完整):
員工(工號,身份證號,姓名,性別,手機(jī)號)
商品(條碼,商品名稱,所在超市名稱,采購價(jià)格,銷售價(jià)格,商品介紹)
顧客(編號,姓名,身份證號,手機(jī)號,收貨地址)
托運(yùn)公司司(托運(yùn)公司編號,托運(yùn)公司名稱,電話,地址)
訂單(訂單ID,(a),商品數(shù)量,運(yùn)送方式,支付憑證編號)
代購(代購ID,代購員工號,(b))
運(yùn)送(運(yùn)送D,配送員工號,托運(yùn)公司編,訂單D,發(fā)運(yùn)時(shí)間)
【問題1】(3分)
根據(jù)問題描述,補(bǔ)充圖2-1的實(shí)體聯(lián)系圖。
【問題2】(6分)
補(bǔ)充邏輯結(jié)構(gòu)設(shè)計(jì)結(jié)果中的(a)、(b)兩處空缺。
【問題3】(6分)
為方便顧客,允許顧客在系統(tǒng)中保存多組收貨地址。請根據(jù)此需求,增加“顧客地址”弱實(shí)體,對圖2-1進(jìn)行補(bǔ)充,并修改“運(yùn)送”關(guān)系模式。
查看答案
參考答案:
溫馨提示:因考試政策、內(nèi)容不斷變化與調(diào)整,信管網(wǎng)網(wǎng)站提供的以上信息僅供參考,如有異議,請以權(quán)威部門公布的內(nèi)容為準(zhǔn)!
信管網(wǎng)致力于為廣大信管從業(yè)人員、愛好者、大學(xué)生提供專業(yè)、高質(zhì)量的課程和服務(wù),解決其考試證書、技能提升和就業(yè)的需求。
信管網(wǎng)軟考課程由信管網(wǎng)依托10年專業(yè)軟考教研傾力打造,官方教材參編作者和資深講師坐鎮(zhèn),通過深研歷年考試出題規(guī)律與考試大綱,深挖核心知識與高頻考點(diǎn),為學(xué)員考試保駕護(hù)航。面授、直播&錄播,多種班型靈活學(xué)習(xí),滿足不同學(xué)員考證需求,降低課程學(xué)習(xí)難度,使學(xué)習(xí)效果事半功倍。
發(fā)表評論 查看完整評論 | |