第
1題: 閱讀以下說明和圖,回答問題1至問題3,將解答填入答題紙的對(duì)應(yīng)欄內(nèi)。
【說明】
某時(shí)裝郵購提供商擬開發(fā)訂單處理系統(tǒng),用于處理客戶通過電話、傳真、郵件或Web站點(diǎn)所下訂單。其主要功能如下:
(1)增加客戶記錄。將新客戶信息添加到客戶文件,并分配一個(gè)客戶號(hào)以備后續(xù)使用。
(2)查詢商品信息。接收客戶提交商品信息請(qǐng)求,從商品文件中查詢商品的價(jià)格和可訂購數(shù)量等商品信息,返回給客戶。
(3)增加訂單記錄。根據(jù)客戶的訂購請(qǐng)求及該客戶記錄的相關(guān)信息,產(chǎn)生訂單并添加到訂單文件中。
(4)產(chǎn)生配貨單。根據(jù)訂單記錄產(chǎn)生配貨單,并將配貨單發(fā)送給倉庫進(jìn)行備貨;備好貨后,發(fā)送備貨就緒通知。如果現(xiàn)貨不足,則需向供應(yīng)商訂貨。
(5)準(zhǔn)備發(fā)貨單。從訂單文件中獲取訂單記錄,從客戶文件中獲取客戶記錄,并產(chǎn)生發(fā)貨單。
(6)發(fā)貨。當(dāng)收到倉庫發(fā)送的備貨就緒通知后,根據(jù)發(fā)貨單給客戶發(fā)貨;產(chǎn)生裝運(yùn)單并發(fā)送給客戶。
(7)創(chuàng)建客戶賬單。根據(jù)訂單文件中的訂單記錄和客戶文件中的客戶記錄,產(chǎn)生并發(fā)送客戶賬單,同時(shí)更新商品文件中的商品數(shù)量和訂單文件中的訂單狀態(tài)。
(8)產(chǎn)生應(yīng)收賬戶。根據(jù)客戶記錄和訂單文件中的訂單信息,產(chǎn)生并發(fā)送給財(cái)務(wù)部門應(yīng)收賬戶報(bào)表。
現(xiàn)采用結(jié)構(gòu)化方法對(duì)訂單處理系統(tǒng)進(jìn)行分析與設(shè)計(jì),獲得如圖1-1所示的頂層數(shù)據(jù)流圖和圖1-2所示0層數(shù)據(jù)流圖。

?【問題1】(3分)
使用說明中的詞語,給出圖1-1中的實(shí)體E1~E3的名稱。
?【問題2】(3分)
使用說明中的詞語,給出圖1-2中的數(shù)據(jù)存儲(chǔ)D1~D3的名稱。
?【問題3】(9分)
(1)給出圖1-2中處理(加工)P1和P2的名稱及其相應(yīng)的輸入、輸出流。
(2)除加工P1和P2的輸入輸出流外,圖1-2還缺失了1條數(shù)據(jù)流,請(qǐng)給出其起點(diǎn)和終點(diǎn)。

答案解析與討論:
m.xiexiliangjiufa.com/st/380978710.html第
2題: 閱讀以下說明,回答問題1至問題3,將解答填入答題紙的對(duì)應(yīng)欄內(nèi)。
【說明】
某公司擬開發(fā)一套小區(qū)物業(yè)收費(fèi)管理系統(tǒng)。初步的需求分析結(jié)果如下:
(1)業(yè)主信息主要包括:業(yè)主編號(hào),姓名,房號(hào),房屋面積,工作單位,聯(lián)系電話等。房號(hào)可唯一標(biāo)識(shí)一條業(yè)主信息,且一個(gè)房號(hào)僅對(duì)應(yīng)一套房屋;一個(gè)業(yè)主可以有一套或多套的房屋。
(2)部門信息主要包括:部門號(hào),部門名稱,部門負(fù)責(zé)人,部門電話等;一個(gè)員工只能屬于一個(gè)部門,一個(gè)部門只有一位負(fù)責(zé)人。
(3)員工信息主要包括:員工號(hào),姓名,出生年月,性別,住址,聯(lián)系電話,所在部門號(hào),職務(wù)和密碼等。根據(jù)職務(wù)不同員工可以有不同的權(quán)限,職務(wù)為“經(jīng)理”的員工具有更改(添加、刪除和修改)員工表中本部門員工信息的操作權(quán)限;職務(wù)為“收費(fèi)”的員工只具有收費(fèi)的操作權(quán)限。
(4)收費(fèi)信息包括:房號(hào),業(yè)主編號(hào),收費(fèi)日期,收費(fèi)類型,數(shù)量,收費(fèi)金額,員工號(hào)等。收費(fèi)類型包括物業(yè)費(fèi)、衛(wèi)生費(fèi)、水費(fèi)和電費(fèi),并按月收取,收費(fèi)標(biāo)準(zhǔn)如表2-1所示。其中:物業(yè)費(fèi)=房屋面積(平方米)×每平米單價(jià),衛(wèi)生費(fèi)=套房數(shù)量(套)×每套房單價(jià),水費(fèi)=用水?dāng)?shù)量(噸)×每噸水單價(jià),電費(fèi)=用電數(shù)量(度)×每度電單價(jià)。
(5)收費(fèi)完畢應(yīng)為業(yè)主生成收費(fèi)單,收費(fèi)單示例如表2-2所示。

【概念模型設(shè)計(jì)】
根據(jù)需求階段收集的信息,設(shè)計(jì)的實(shí)體聯(lián)系圖(不完整)如圖2-1所示。圖2-1中收費(fèi)員和經(jīng)理是員工的子實(shí)體。

【邏輯結(jié)構(gòu)設(shè)計(jì)】
根據(jù)概念模型設(shè)計(jì)階段完成的實(shí)體聯(lián)系圖,得出如下關(guān)系模式(不完整):
業(yè)主( (1) ,姓名,房屋面積,工作單位,聯(lián)系電話)
員工( (2) ,姓名,出生年月,性別,住址,聯(lián)系電話,職務(wù),密碼)
部門( (3) ,部門名稱,部門電話)
權(quán)限( 職務(wù),操作權(quán)限)
收費(fèi)標(biāo)準(zhǔn)( (4) )
收費(fèi)信息( (5) ,收費(fèi)類型,收費(fèi)金額,員工號(hào))
?【問題1】(8分)
根據(jù)圖2-1,將邏輯結(jié)構(gòu)設(shè)計(jì)階段生成的關(guān)系模式中的空(1)~(5)補(bǔ)充完整,然后給出各關(guān)系模式的主鍵和外鍵。
?【問題2】(5分)
填寫圖2-1中(a)~(f)處聯(lián)系的類型(注:一方用1表示,多方用m或 n 或 *表示),并補(bǔ)充完整圖2-1中的實(shí)體、聯(lián)系和聯(lián)系的類型。
?【問題3】(2分)
業(yè)主關(guān)系屬于第幾范式?請(qǐng)說明存在的問題。
答案解析與討論:
m.xiexiliangjiufa.com/st/3809815223.html第
3題: 閱讀下列說明和圖,回答問題1至問題3,將解答填入答題紙的對(duì)應(yīng)欄內(nèi)。
【說明】
某網(wǎng)上藥店允許顧客憑借醫(yī)生開具的處方,通過網(wǎng)絡(luò)在該藥店購買處方上的藥品。該網(wǎng)上藥店的基本功能描述如下:
(1)注冊(cè)。顧客在買藥之前,必須先在網(wǎng)上藥店注冊(cè)。注冊(cè)過程中需填寫顧客資料以及付款方式(信用卡或者支付寶賬戶)。此外顧客必須與藥店簽訂一份授權(quán)協(xié)議書,授權(quán)藥店可以向其醫(yī)生確認(rèn)處方的真?zhèn)巍?br />(2)登錄。已經(jīng)注冊(cè)的顧客可以登錄到網(wǎng)上藥房購買藥品。如果是沒有注冊(cè)的顧客,系統(tǒng)將拒絕其登錄。
(3)錄入及提交處方。登錄成功后,顧客按照“處方錄入界面”顯示的信息,填寫開具處方的醫(yī)生的信息以及處方上的藥品信息。填寫完成后,提交該處方。
(4)驗(yàn)證處方。對(duì)于已經(jīng)提交的處方(系統(tǒng)將其狀態(tài)設(shè)置為“處方已提交”),其驗(yàn)證過程為:
①核實(shí)醫(yī)生信息。如果醫(yī)生信息不正確,該處方的狀態(tài)被設(shè)置為“醫(yī)生信息無效”,并取消這個(gè)處方的購買請(qǐng)求;如果醫(yī)生信息是正確的,系統(tǒng)給該醫(yī)生發(fā)送處方確認(rèn)請(qǐng)求,并將處方狀態(tài)修改為“審核中”。
②如果醫(yī)生回復(fù)處方無效,系統(tǒng)取消處方,并將處方狀態(tài)設(shè)置為“無效處方”。如果醫(yī)生沒有在7天內(nèi)給出確認(rèn)答復(fù),系統(tǒng)也會(huì)取消處方,并將處方狀態(tài)設(shè)置為“無法審核”。
③如果醫(yī)生在7天內(nèi)給出了確認(rèn)答復(fù),該處方的狀態(tài)被修改為“準(zhǔn)許付款”。
系統(tǒng)取消所有未通過驗(yàn)證的處方,并自動(dòng)發(fā)送一封電子郵件給顧客,通知顧客處方被取消以及取消的原因。
(5)對(duì)于通過驗(yàn)證的處方,系統(tǒng)自動(dòng)計(jì)算藥品的價(jià)格并郵寄藥品給己經(jīng)付款的顧客。
該網(wǎng)上藥店采用面向?qū)ο蠓椒ㄩ_發(fā),使用UML進(jìn)行建模。系統(tǒng)的類圖如圖3-1所示。

?【問題1】(8分)
根據(jù)說明中的描述,給出圖3-1中缺少的C1~C5所對(duì)應(yīng)的類名以及(1)~(6)處所對(duì)應(yīng)的多重度。
?【問題2】(4分)
圖3-2給出了“處方”的部分狀態(tài)圖。根據(jù)說明中的描述,給出圖3-2中缺少的S 1~S4所對(duì)應(yīng)的狀態(tài)名以及(7)~(10)處所對(duì)應(yīng)的遷移(transition)名。

答案解析與討論:
m.xiexiliangjiufa.com/st/380999198.html第
5題: 閱讀下列說明和C++代碼,將應(yīng)填入(n)處的字句寫在答題紙的對(duì)應(yīng)欄內(nèi)。
【說明】
某公司的組織結(jié)構(gòu)圖如圖5-1所示,現(xiàn)采用組合(Composition)設(shè)計(jì)模式來構(gòu)造該公司的組織結(jié)構(gòu),得到如圖5-2所示的類圖。
圖5-1 組織結(jié)構(gòu)圖
圖5-2 類圖
其中Company為抽象類,定義了在組織結(jié)構(gòu)圖上添加(Add)和刪除(Delete)分公司/辦事處或者部門的方法接口。類ConcreteCompany表示具體的分公司或者辦事處,分公司或辦事處下可以設(shè)置不同的部門。類HRDepartment和FinanceDepartment分別表示人力資源部和財(cái)務(wù)部。
【C++代碼】
#include
#include
#include
using namespace std;
class Company {//抽象類
protected:
strìng name;
public:
Company(string name) {(1)= name;}
(2); //增加子公司、辦事處或部門
(3);//刪除子公司、辦事處或部門
};
class ConcreteCompany: public Company {
private:
list<(4)>children; //存儲(chǔ)子公司、辦事處或部門
public:
ConcreteCompany(string name) : Company(name) { }
void Add(Company* c) { (5).push_back(c); }
void Delete(Company* c) { (6).remove(c); }
};
class HRDepartment : public Company {
public:
HRDepartment(string name) : Company(name) { } //其他代碼省略
};
class FinanceDepartment : public Company {
public:
FinanceDepartment(string name) : Company(name) { } //其他代碼省烙
};
void main() {
ConcreteCompany *root = new ConcreteCompany("北京總公司") ;
root->Add(new HRDepartment("總公司人力資源部") ) ;
root->Add(new FinanceDepartment("總公司財(cái)務(wù)部") ) ;
ConcreteCompany *comp = new ConcreteCompany("上海分公司") ;
comp->Add(new HRDepartment("上海分公司人力資源部") ) ;
comp->Add(new FinanceDepartment("上海分公司財(cái)務(wù)部") ) ;
(7);
ConcreteCompany *compl = new ConcreteCompany("南京辦事處") ;
compl->Add(new HRDepartment("南京辦事處人力資源部") ) ;
compl->Add(new FinanceDepartment("南京辦事處財(cái)務(wù)部") ) ;
(8); //其他代碼省略
}
答案解析與討論:
m.xiexiliangjiufa.com/st/3810116336.html第
6題: 閱讀下列說明和Java代碼,將應(yīng)填入(n)處的字句寫在答題紙的對(duì)應(yīng)欄內(nèi)。
【說明】
某公司的組織結(jié)構(gòu)圖如圖6-1所示,現(xiàn)采用組合(Composition)設(shè)計(jì)模式來設(shè)計(jì),得到如圖6-2所示的類圖。
其中Company為抽象類,定義了在組織結(jié)構(gòu)圖上添加(Add)和刪除(Delete)分公司/辦事處或者部門的方法接口。類ConcreteCompany表示具體的分公司或者辦事處,分公司或辦事處下可以設(shè)置不同的部門。類HRDepartment和FinanceDepartment分別表示人力資源部和財(cái)務(wù)部。
圖6-1 組織結(jié)構(gòu)圖

圖6-2 類圖
【Java代碼】
import java.util.*;
(1)Company {
protectedString name;
public Company(String name) { (2)= name; }
public abstract void Add(Company c); //增加子公司、辦尊處或部門
public abstract void Delete(Company c); //刪除子公司、辦事處或部門
}
class ConcreteCompany extends Company {
private List<(3)> children = new ArrayList<(4)>();
//存儲(chǔ)子公司、辦事處或部門
public ConcreteCompany(String name) { super(name); }
public void Add(Company c) { (5).add(c); }
public void Delete(Company c) {(6).remove(c); }
}
class HRDepartment extends Company {
public HRDepartment(String name) { super(name); }
//其他代碼省略
}
class FinanceDepartment extends Company {
public FinanceDepartment(String name) { super(name); }
//其他代碼省略
}
public class Test {
public static void main(String[] args) {
ConcreteCompany root =new ConcreteCompany("北京總公司");
root.Add(new HRDepartment("總公司人力資源部") );
root.Add(new FinanceDepartment("總公司財(cái)務(wù)部") );
ConcreteCompany comp =new ConcreteCompany("上海分公司");
comp.Add(new HRDepartment("上海分公司人力資源部") );
comp.Add(new FinanceDepartment("上海分公司財(cái)務(wù)部"));
(7);
ConcreteCompany compl = new ConcreteCompany("南京辦事處");
compl.Add(new HRDepartment("南京辦事處人力資源部") );
compl.Add(new Fina.nceDepartment ("南京辦事處財(cái)務(wù)部") );
(8); // 其他代碼省略
}
}
答案解析與討論:
m.xiexiliangjiufa.com/st/3810217409.html