試題一(共15分)
閱讀下列說明和圖,回答問題1至問題4,將解答填入答題紙的對應欄內。
【說明】
某會議中心提供舉辦會議的場地設施和各種設備,供公司與各類組織機構租用。場地包括一個大型報告廳、一個小型報告廳以及諸多會議室。這些報告廳和會議室可提供的設備有投影儀、白板、視頻播放/回放設備、計算機等。為了加強管理,該中心欲開發(fā)一會議預訂系統(tǒng),系統(tǒng)的主要功能如下。
(1)檢查可用性??蛻籼峤活A訂請求后,檢查預訂表,判定所申請的場地是否在申請日期內可用;如果不可用,返回不可用信息。
(2)臨時預訂。會議中心管理員收到客戶預定請求的通知之后,提交確認。系統(tǒng)生成新臨時預訂存入預訂表,并對新客戶創(chuàng)建一條客戶信息記錄加以保存。根據客戶記錄給客戶發(fā)送臨時預訂確認信息和支付定金要求。
(3)分配設施與設備。根據臨時預訂或變更預定的設備和設施需求,分配所需設備(均能滿足用戶要求)和設施,更新相應的表和預訂表。
(4)確認預訂。管理員收到客戶支付定金的通知后,檢查確認,更新預訂表,根據客戶記錄給客戶發(fā)送預訂確認信息。
(5)變更預訂??蛻暨€可以在支付余款前提交變更預訂請求,對變更的預訂請求檢查可用性,如果可用,分配設施和設各;如果不可用,返回不可用信息。管理員確認變更后,根據客戶記錄給客戶發(fā)送確認信息。
(6)要求付款。管理員從預訂表中查詢距預訂的會議時間兩周內的預定,根據客戶記錄給滿足條件的客戶發(fā)送支付余款要求。
(7)支付余款。管理員收到客戶余款支付的通知后,檢查確認,更新預訂表中的已支付余款信息。
現采用結構化方法對會議預定系統(tǒng)進行分析與設計,獲得如圖1-1所示的上下文數據流圖和圖1-2所示的0層數據流圖(不完整)。
【問題1】(2分)
使用說明中的詞語,給出圖1-1中的實體E1~E2的名稱。
?【問題2】(4分)
使用說明中的詞語,給出圖1-2中的數據存儲D1~D4的名稱。
?【問題3】(6分)
根據說明和圖中術語,補充圖1-2之中缺失的數據流及其起點和終點。
?【問題4】(3分)
如果發(fā)送給客戶的確認信息是通過Email系統(tǒng)向客戶信息中的電子郵件地址進行發(fā)送的,那么需要對圖1-1和1-2進行哪些修改?用150字以內文字加以說明。
試題二(共15分)
閱讀下列說明,回答問題1至問題3;將解答填入答題紙的對應欄內。
【說明】
某銷售公司當前的銷售業(yè)務為商城實體店銷售?,F該公司擬開展網絡銷售業(yè)務,需要開發(fā)一個信息化管理系統(tǒng)。請根據公司現有業(yè)務及需求完成該系統(tǒng)的數據庫設計。
【需求描述】
(1)記錄公司所有員工的信息。員工信息包括工號、身份證號、姓名、性別、出生日期和電話,并只登記一部電話。
(2)記錄所有商品的信息。商品信息包括商品名稱、生產廠家、銷售價格和商品介紹。系統(tǒng)內部用商品條碼唯一區(qū)別每種商品。
(3)記錄所有顧客的信息。顧客信息包括顧客姓名、身份證號、登錄名、登錄密碼、和電話號碼。一位顧客只能提供一個電話號碼。系統(tǒng)自動生成唯一的顧客編號。
(4)顧客登錄系統(tǒng)之后,在網上商城購買商品。顧客可將選購的商品置入虛擬的購物車內,購物車可長期存放顧客選購的所有商品。顧客可在購物車內選擇商品、修改商品數量后生成網購訂單。訂單生成后,由顧客選擇系統(tǒng)提供的備選第三方支付平臺進行電子支付,支付成功后系統(tǒng)需要記錄唯一的支付憑證編號,然后由商城根據訂單進行線下配送。
(5)所有的配送商品均由倉庫統(tǒng)一出庫。為方便顧客,允許每位顧客在系統(tǒng)中提供多組收貨地址、收貨人及聯系電話。一份訂單所含的多個商品可能由多名分檢員根據商品所在倉庫信息從倉庫中進行分揀操作,分揀后的商品交由配送員根據配送單上的收貨地址進行配送。
(6)新設計的系統(tǒng)要求記錄實體店的每筆銷售信息,包括營業(yè)員、顧客、所售商品及其數量。
【概念模型設計】
根據需求階段收集的信息,設計的實體聯系圖(不完整)如圖2-1所示。
【邏輯結構設計】
根據概念模型設計階段完成的實體聯系圖,得出如下關系模式(不完整):
員工(工號,身份證號,姓名,性別,出生日期,電話)
商品(商品條碼,商品名稱,生產廠家,銷售價格,商品介紹,(a))
顧客(顧客編號,姓名,身份證號,登錄名,登錄密碼,電話)
收貨地點(收貨ID,顧客編號,收貨地址,收貨人,聯系電話)
購物車(顧客編號,商品條碼,商品數量)
訂單(訂單ID,顧客編號,商品條碼,商品數量,(b))
分檢(分揀ID,分揀員工號,(c),分揀時間)
配送(配送ID,分揀ID,配送員工號,收貨ID,配送時間,簽收時間,簽收快照)
銷售(銷售ID,營業(yè)員工號,顧客編號,商品條碼,商品數量)
【問題1】(4分)
補充圖2-1中的“配送”聯系所關聯的對象及聯系類型。
【問題2】(6分)
補充邏輯結構設計中的(a)、(b)和(c)三處空缺。
【問題3】(5分)
對于實體店銷售,若要增加送貨上門服務,由營業(yè)員在系統(tǒng)中下訂單,與網購的訂單進行后續(xù)的統(tǒng)一管理。請根據該需求,對圖2-1進行補充,并修改訂單關系模式。
試題三(共15分)
閱讀下列說明和圖,回答問題1至問題3,將解答填入答題紙的對應欄內。
【說明】
某軟件公司欲設計實現一個虛擬世界仿真系統(tǒng)。系統(tǒng)中的虛擬世界用于模擬現實世界中的不同環(huán)境(由用戶設置并創(chuàng)建),用戶通過操作仿真系統(tǒng)中的1~2個機器人來探索虛擬世界。機器人維護著兩個變量b1和b2,用來保存從虛擬世界中讀取的字符。
該系統(tǒng)的主要功能描述如下:
(1)機器人探索虛擬世界(RunRobots)。用戶使用編輯器(Editor)編寫文件以設置想要模擬的環(huán)境,將文件導入系統(tǒng)(LoadFile)從而在仿真系統(tǒng)中建立虛擬世界(SetupWorld)。機器人在虛擬世界中的行為也在文件中進行定義,建立機器人的探索行為程序(SetupProgram)。機器人在虛擬世界中探索時(RunProgram),有2種運行模式:
①自動控制(Run):事先編排好機器人的動作序列(指令(Instruction)),執(zhí)行指令,使機器人可以連續(xù)動作。若干條指令構成機器人的指令集(InstructionSet)。
②單步控制(Step):自動控制方式的一種特殊形式,只執(zhí)行指定指令中的一個動作。
(2)手動控制機器人(ManipulateRobots)。選定1個機器人后(SelectRobot),可以采用手動方式控制它。手動控制有4種方式:
①Move:機器人朝著正前方移動一個交叉點。
②Left:機器人原地沿逆時針方向旋轉90度。
③Read:機器人讀取其所在位置的字符,并將這個字符的值賦給b1;如果這個位置上沒有字符,則不改變b1的當前值。
④Write:將b1中的字符寫入機器人當前所在的位置,如果這個位置上已經有字符,該字符的值將會被b1的值替代。如果這時b1沒有值,即在執(zhí)行Write動作之前沒有執(zhí)行過任何Read動作,那么需要提示用戶相應的錯誤信息(ShowErrors)。
手動控制與單步控制的區(qū)別在于,單步控制時執(zhí)行的是指令中的動作,只有一種控制方式,即執(zhí)行下個動作;而手動控制時有4種動作。
現采用面向對象方法設計并實現該仿真系統(tǒng),得到如圖3-1所示的用例圖和圖3-2所示的初始類圖。圖3-2中的類“Interpreter”和“Parser”用于解析描述虛擬世界的文件以及機器人行為文件中的指令集。
【問題1】(6分)
根據說明中的描述,給出圖3-1中U1~U6所對應的用例名。
【問題2】(4分)
圖3-1中用例U1~U6分別與哪個(哪些)用例之間有關系,是何種關系?
【問題3】(5分)
根據說明中的描述,給出圖3-2中C1~C5所對應的類名。
試題四(共15分)
閱讀下列說明和C代碼,回答問題1至問題3,將解答寫在答題紙的對應欄內。
【說明】
在一塊電路板的上下兩端分別有n個接線柱。根據電路設計,用(i,π(i))表示將上端接線柱i與下端接線柱π(i)相連,稱其為該電路板上的第i條連線。如圖4-1所示的π(i)排列為{8,7,4,2,5,1,9,3,10,6}。對于任何1≤i
在制作電路板時,要求將這n條連線分布到若干絕緣層上,在同一層上的連線不相交?,F在要確定將哪些連線安排在一層上,使得該層上有盡可能多的連線,即確定連線集Nets={(i,π(i)),1≤i≤n}的最大不相交子集。
【分析問題】
記N(i,j)={t|(t,π(t))∈Nets,t≤i,π(t)≤j}。N(i,j)的最大不相交子集為MNS(i,j),size(i,j)=|MNS(i,j)|。
經分析,該問題具有最優(yōu)子結構性質。對規(guī)模為n的電路布線問題,可以構造如下遞歸式:
【C代碼】
下面是算法的C語言實現。
(1)變量說明
size[i][j]:上下端分別有i個和j個接線柱的電路板的第一層最大不相交連接數
pi[i]:π(i),下標從1開始
(2)C程序
#include"stdlib.h"
#include
#define N 10/*問題規(guī)模*/
Int m=0;/*牢記錄最大連接集合中的接線柱*/
Void maxNum(intpi[],intsize[N+1][N+1],intn){/*求最大不相交連接數*/
int i,j;
for(j=0;j
for(i=2;i
size[i][j]=size[i-l][j]>=size[i-l][pi[i]-l]+1?size[i-l][j]:size[i-l][pi[i]-l]+l;
}
}
/*最大連接數*/
size[n][n]=size[n-l][n]>=size[n-l][pi[n]-l]+1?size[n-l][n]:size[n-l][pi[n]-l]+l;
}
/*構造最大不相交連接集合,net[i]表示最大不相交子集中第i條連線的上端接線柱的序號*/
void constructSet(int pi[],int size[N+1][N+1],int n,int net[n]){
int i,j=n;
m=0;
for(i=n;i>1;i--){/*從后往前*/
if(size[i][j]!=size[i-l][j]){/*(i,pi[i])是最大不相交子集的一條連線*/
(3);/*將i記錄到數組net中,連接線數自增1*/
j=pi[i]-1;/*更新擴展連線柱區(qū)間*/
}
}
if(j>=pi[l])net[m++]=l;/*當i=1時*/
}
【問題1】(6分)
根據以上說明和C代碼,填充C代碼中的空(1)~(3)。
【問題2】(6分)
根據題干說明和以上C代碼,算法采用了(4)算法設計策略。
函數maxNum和constructSet的時間復雜度分別為(5)和(6)(用O表示)。
【問題3】(3分)
若連接排列為{8,7,4,2,5,1,9,3,10,6},即如圖4-1所示,則最大不相交連接數為(7),包含的連線為(8)(用(i,π(i))的形式給出)。