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

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

答案解析與討論:
m.xiexiliangjiufa.com/st/380999198.html第
4題: 閱讀下列說(shuō)明和C代碼,回答問(wèn)題1至問(wèn)題3,將解答寫(xiě)在答題紙的對(duì)應(yīng)欄內(nèi)。
【說(shuō)明】
堆數(shù)據(jù)結(jié)構(gòu)定義如下:
對(duì)于n個(gè)元素的關(guān)鍵字序列{a1,a2,...,an},當(dāng)且僅當(dāng)滿(mǎn)足下列關(guān)系時(shí)稱(chēng)其為堆。

在一個(gè)堆中,若堆頂元素為最大元素,則稱(chēng)為大頂堆;若頂堆元素為最小元素,則稱(chēng)為小頂堆。堆常用完全二叉樹(shù)表示,圖4-1是一個(gè)大頂堆的例子。

圖4-1 大頂堆示例
堆數(shù)據(jù)結(jié)構(gòu)常用于優(yōu)先隊(duì)列中,以維護(hù)由一組元素構(gòu)成的集合。對(duì)應(yīng)于兩類(lèi)堆結(jié)構(gòu),優(yōu)先隊(duì)列也有最大優(yōu)先隊(duì)列和最小優(yōu)先隊(duì)列,其中最大優(yōu)先隊(duì)列采用大頂堆,最小優(yōu)先隊(duì)列采用小頂堆。以下考慮最大優(yōu)先隊(duì)列。
假設(shè)現(xiàn)已建好大頂堆A,且已經(jīng)實(shí)現(xiàn)了調(diào)整堆的函數(shù)heapify(A,N,INDEX)。
下面將C代碼中需要完善的三個(gè)函數(shù)說(shuō)明如下:
(1)heapMaximum(A):返回大頂堆A中的最大元素。
(2)heapExtractMax(A):去掉并返回大頂堆A的最大元素,將最后一個(gè)元素“提前”到堆頂位置,并將剩余元素調(diào)整成大頂堆。
(3)maxHeapInsert(A,key):把元素key插入到大頂堆A的最后位置,再將A調(diào)整成大頂堆。
優(yōu)先隊(duì)列采用順序存儲(chǔ)方式,其存儲(chǔ)結(jié)構(gòu)定義如下:
#define PARENT(i) i/2
typedef struct array{
int*int_array; //優(yōu)先隊(duì)列的存儲(chǔ)空間首地址
int array_size; //優(yōu)先隊(duì)列的長(zhǎng)度
int capacity; //優(yōu)先隊(duì)列存儲(chǔ)空間的容量
}ARRAY;
【C代碼】
(1)函數(shù)heapMaximum
int heapMaximum(ARRAY*A){ return (1) ; }
(2)函數(shù)heapExtractMax
int heapExtractMax(ARRAY*A){
int max;
max=A->int_array[0];
(2);
A->array_size --;
heapify(A,A->array_size,0); //將剩余元素調(diào)整成大頂堆
return max;
}
(3)函數(shù)maxHeapInsert
int maxHeapInsert(ARRAY *A,int key){
int i,*p;
if (A->array_size == A->capacity) { //存儲(chǔ)空間的容量不夠時(shí)擴(kuò)充空間
p=(int*)realloc(A->int_array,A->capacity *2 * sizeof(int));
if (!p) return -1;
A->int_array = p;
A->capacity = 2 * A->capacity;
}
A->array_size ++;
i = (3) ;
while (i > 0 && (4)){
A->int_array[i] = A->int_array[PARENT(i)];
i = PARENT(i);
}
(5);
return 0;
}
答案解析與討論:
m.xiexiliangjiufa.com/st/3810012907.html