女人久久久www免费人成看片,国内自拍偷拍网,国产一区二区三区免费在线观看,欧美精品三区四区,91久久国产综合久久91,欧美成人精品第一区二区三区 ,美女成人在线观看

軟題庫 學(xué)習(xí)課程
試卷年份2006年上半年
試題題型【分析簡答題】
試題內(nèi)容

試題四
閱讀以下說明,回答問題1、問題2和問題3。
[說明]
某單位正在使用一套C/S模式的應(yīng)用軟件系統(tǒng),現(xiàn)在需要升級為B/S應(yīng)用模式,但需要保持業(yè)務(wù)的連續(xù)性。開發(fā)人員提出用Web Service作為中間層的接口進(jìn)行開發(fā)。
[問題1]
請用120字以內(nèi)文字,從業(yè)務(wù)的繼承性、升級成本(時間、工作量)和擴展性三個方面簡要說明開發(fā)人員所提方案的優(yōu)點。
[問題2]
Web Service的三個基本技術(shù)是WSDL、SOAP、UDDI,它們都是以XML為基礎(chǔ)定義的。請用120字以內(nèi)文字,簡要說明WSDL、SOAP和UDDI的作用。
[問題3]
服務(wù)注冊中心、服務(wù)提供者和服務(wù)請求者之間的交互和操作構(gòu)成了Web Service的體系結(jié)構(gòu),如下圖所示。請用180字以內(nèi)文字,說明這三者的主要功能及其交互過程。

查看答案

相關(guān)試題

1題:

試題一
閱讀下列說明以及數(shù)據(jù)流圖,回答問題1、問題2和問題3。
[說明]
某學(xué)校建立了一個網(wǎng)上作業(yè)提交與管理系統(tǒng),基本功能描述如下:
(1)賬號和密碼。任課老師用賬號和密碼登錄系統(tǒng)后,提交所有選課學(xué)生的名單。系統(tǒng)自動為每個選課學(xué)生創(chuàng)建登錄系統(tǒng)的賬號和密碼。
(2)作業(yè)提交。學(xué)生使用賬號和密碼登錄系統(tǒng)后,可以向系統(tǒng)申請所選課程的作業(yè)。系統(tǒng)首先檢查學(xué)生的當(dāng)前狀態(tài),如果該學(xué)生還沒有做過作業(yè),則從數(shù)據(jù)庫服務(wù)器申請一份作業(yè)。若申請成功,則顯示需要完成的作業(yè)。學(xué)生需在線完成作業(yè),單擊“提交”按鈕上交作業(yè)。
(3)在線批閱。系統(tǒng)自動在線批改作業(yè),顯示作業(yè)成績,并將該成績記錄在作業(yè)成績統(tǒng)計文件中
[問題1]
如果將數(shù)據(jù)庫服務(wù)器(記為DB.作為一個外部實體,那么在繪制該系統(tǒng)的數(shù)據(jù)流圖時,還應(yīng)有哪些外部實體和數(shù)據(jù)存儲?
[問題2]
根據(jù)說明結(jié)合問題1的解答,指出在該系統(tǒng)的頂層數(shù)據(jù)流圖中應(yīng)有哪些數(shù)據(jù)流。請采用說明中的詞匯給出這些數(shù)據(jù)流的起點、終點以及數(shù)據(jù)流名稱,下表給出了數(shù)據(jù)流的部分信息,請?zhí)畛淇杖碧帯?br />
[問題3]
根據(jù)數(shù)據(jù)流圖的設(shè)計原則,閱讀下圖所示的數(shù)據(jù)流圖,找出其中的錯誤之處。



答案解析與討論:m.xiexiliangjiufa.com/st/2453621253.html

2題:

試題二
閱讀下列說明以及UML類圖,回答問題1、問題2和問題3。
[說明]
某客戶信息管理系統(tǒng)中保存著兩類客戶的信息。
(1)個人客戶,對于這類客戶,系統(tǒng)保存了其客戶標(biāo)識(由系統(tǒng)生成)和基本信息 (包括姓名、住宅電話和E-mail)。
(2)集團客戶。集團客戶可以創(chuàng)建和管理自己的若干名聯(lián)系人。對于這類客戶,系統(tǒng)除了保存其客戶標(biāo)識(由系統(tǒng)生成)之外,也保存了其聯(lián)系人的信息。聯(lián)系人的信息包括姓名、住宅電話、E-mail、辦公電話以及職位。
該系統(tǒng)除了可以保存客戶信息之外,還具有以下功能:
(1)向系統(tǒng)中添加客戶(addCustomer);
(2)根據(jù)給定的客戶標(biāo)識,在系統(tǒng)中查找該客戶(getCustomer):
(3)根據(jù)給定的客戶標(biāo)識,從系統(tǒng)中刪除該客戶(removeCustomer):
(4)創(chuàng)建新的聯(lián)系人(addContact):
(5)在系統(tǒng)中查找指定的聯(lián)系人(getContact);
(6)從系統(tǒng)中刪除指定的聯(lián)系人(removeContact)。
該系統(tǒng)采用面向?qū)ο蠓椒ㄟM(jìn)行開發(fā)。在面向?qū)ο蠓治鲭A段,根據(jù)上述描述,得到如下表所示的類。

描述該客戶信息管理系統(tǒng)的UML類圖如下圖所示。

[問題1]
請使用說明中的術(shù)語,給出上圖中類Customer和類Person的屬性。
[問題2]
識別關(guān)聯(lián)的多重度是面向?qū)ο蠼_^程中的一個重要步驟。根據(jù)說明中給出的描述,完成圖中的(1)~(6)。
[問題3]
根據(jù)說明中的敘述,抽象出如下表所示的方法,請指出上圖中的類Customer- InformationSystem和

答案解析與討論:m.xiexiliangjiufa.com/st/2453726703.html

3題:

試題三
閱讀下列說明,回答問題1、問題2和問題3。
[說明]
某單位資料室需要建立一個圖書管理系統(tǒng),初步的需求分析結(jié)果如下:
(1)資料室有圖書管理員若干名,他們負(fù)責(zé)己購入圖書的編目和借還工作,每名圖書管理員的信息包括工號和姓名;
(2)讀者可在閱覽室讀書,也可通過圖書流通室借還圖書,讀者信息包括讀者D、姓名、電話和E-mail,系統(tǒng)為不同讀者生成不同的讀者ID;
(3)每部書在系統(tǒng)中對應(yīng)唯一的一條圖書在版編目數(shù)據(jù)(CIP,以下簡稱書目),書目的基本信息包括ISBN號、書名、作者、出版商、出版年月,以及本資料室擁有該書的冊數(shù)(以下簡稱冊數(shù)),不同書目的ISBN號不相同:
(4)資料室對于同一書目的圖書可擁有多冊(本),圖書信息包括圖書ID、ISBN號、存放位置、當(dāng)前狀態(tài),每一本書在系統(tǒng)中被賦予唯一的圖書ID:
(5)一名讀者最多只能借閱十本圖書,且每本圖書最多只能借兩個月,讀者借書時需由圖書管理員登記讀者①、所借圖書D、借閱時間和應(yīng)還時間,讀者還書時圖書管
理員在對應(yīng)的借書信息中記錄歸還時間;
(6)當(dāng)某書目的可借出圖書的數(shù)量為零時,讀者可以對其進(jìn)行預(yù)約登記,即記錄讀者ID、需要借閱的圖書的ISBN號、預(yù)約時間。
某書目的信息,以及與該書目對應(yīng)的圖書信息,如下表所示。

系統(tǒng)的主要業(yè)務(wù)處理如下。
(1)入庫管理:圖書購進(jìn)入庫時,管理員查詢本資料室的書目信息,若該書的書目尚未建立,則由管理員編寫該書的書月信息并輸入系統(tǒng),然后編寫并輸入圖書信息;否則,修改該書目的冊數(shù),然后編寫并輸入圖書信息,對于進(jìn)入流通室的書,其初始狀態(tài)為“未借出”,而送入閱覽室的書的狀態(tài)始終為“不外借”。
(2)借書管理:讀者借書時,若有,則由管理員為該讀者辦理借書手續(xù),并記錄該讀者的借書信息,同時將借出圖書的狀態(tài)修改為“已借出”。
(3)預(yù)約管理:若圖書流通室沒有讀者要借的書,則可為該讀者建立預(yù)約登記,需要記錄讀者ID、書的ISBN號、預(yù)約時間和預(yù)約期限(最長為10天)。一旦其他讀者歸還這種書,就自動通知該預(yù)約讀者。系統(tǒng)將自動清除超出預(yù)約期限的預(yù)約記錄并修改相關(guān)信息。
(4)還書管理:讀者還書時,則記錄相應(yīng)借還信息中的“歸還時間”,對于超期歸還者,系統(tǒng)自動計算罰金(具體的計算過程此處省略)。系統(tǒng)同時自動查詢預(yù)約登記表,若存在其他讀者預(yù)約該書的記錄,則將該圖書的狀態(tài)修改為“已預(yù)約”,并將該圖書ID寫入相應(yīng)的預(yù)約記錄中(系統(tǒng)在清除超出預(yù)約期限的記錄時解除該圖書的“已預(yù)約”狀態(tài));否則,將該圖書的狀態(tài)修改為“未借出”。
(5)通知處理:對于己到期且未歸還的圖書,系統(tǒng)通過E-mail自動通知讀者:若讀者預(yù)約的書已到,系統(tǒng)則自動通過E-mail通知該讀者來辦理借書手續(xù)。


[問題1]
根據(jù)以上說明設(shè)計的實體聯(lián)系圖如下圖所示,請指出讀者與圖書、書目與讀者、書目與圖書之間的聯(lián)系類型。





[問題2]
該圖書管理系統(tǒng)的主要關(guān)系模式如下,請補充“借還記錄”和“預(yù)約登記”關(guān)系中的空缺。
管理員(工號,姓名)
讀者(讀者ID,姓名,電話,E-mail)
書目(ISBN號,書名,作者,出版商,出版年月,冊數(shù),經(jīng)辦人)
圖書(圖書ID,ISBN號,存放位置,狀態(tài),經(jīng)辦人)
借還記錄(  (a)  ,借出時間,應(yīng)還時間,歸還時間)
預(yù)約登記(   (b)  ,預(yù)約時間,預(yù)約期限,圖書ID.
注:時間格式為“年.月.日 時:分:秒”。


[問題3]
請指出問題2中給出的讀者、書目關(guān)系模式的主鍵,以及圖書、借還記錄和預(yù)約登記關(guān)系模式的主鍵和外鍵。



答案解析與討論:m.xiexiliangjiufa.com/st/245388453.html

5題:

試題五
閱讀下列說明、圖和C代碼。
[說明5-1]
B樹是一種多叉平衡查找樹。一棵m階的B樹,或為空樹,或為滿足下列特性的m叉樹:
①樹中每個結(jié)點最多有m棵子樹;
②若根結(jié)點不是葉子結(jié)點,則它至少有兩棵子樹;
⑧除根之外的所有非葉子結(jié)點至少有[m/2]棵子樹;
④所有的非葉子結(jié)點中包含下列數(shù)據(jù)信息:
(n,A0,K1,A1,K2,A2,  …,Kn,An)其中:Ki(i=1,2,…,n)為關(guān)鍵字,且Ki<Ki+1(i=1,2,…,n-1);Ai(i=0,1,…,n)為指向子樹根結(jié)點的指針,且指針Ai-1,所指子樹中所有結(jié)點的關(guān)鍵字均小于Ki,Ai+1,所指子樹中所有結(jié)點的關(guān)鍵字均大于Ki,n為結(jié)點中關(guān)鍵字的數(shù)目。
⑤所有的葉子結(jié)點都出現(xiàn)在同一層次上,并且不帶信息(可以看作是外部結(jié)點或查找失敗的結(jié)點,實際上這些結(jié)點不存在,指向這些結(jié)點的指針為空)。
例如,一棵4階B樹如下圖所示(結(jié)點中關(guān)鍵字的數(shù)目省略)。

B樹的階M、bool類型、關(guān)鍵字類型及B樹結(jié)點的定義如下:
#define  M  4                                    /*B樹的階*/
typedef enum {FALSE=0,TRUE=1}bool;
typedef int ElemKeyType;
typedef struct BTreeNode {
int numkeys;                                 /*結(jié)點中關(guān)鍵字的數(shù)日*/
struct BTreeNode*parent;                    /*指向父結(jié)點的指針,樹根的父結(jié)點指針為空*/
struct BTreeNode *A[M];                    /*指向子樹結(jié)點的指針數(shù)組*/
ElemKeyType  K[M];                          /*存儲關(guān)鍵字的數(shù)組,K[0]閑置不用*/
}BTreeNode;
函數(shù)SearchBtree(BTreeNode*root,ElemKcyTypeakey,BTreeNode:*pb)的功能是:在給定的一棵M階B樹中查找關(guān)鍵字akey所在結(jié)點,若找到則返回TRUE,否則返回 FALSE。其中,root是指向該M階B樹根結(jié)點的指針,參數(shù)ptr返回akey所在結(jié)點的指針,若akey不在該B樹中,則ptr返回查找失敗時空指針?biāo)诮Y(jié)點的指針。例如,在上圖所示的4階B樹中查找關(guān)鍵字25時,ptr返回指向結(jié)點e的指針。
注;在結(jié)點中查找關(guān)鍵字akey時采用二分法。
[函數(shù)5-1]
bool SearchBtree(BTreeNode* root, ElemKeyType akey, BTreeNode **ptr)
{
int  lw, hi, mid;
BTreeNode*p = root;
*ptr = NULL;
while ( p ) {
1w = 1;   hi=   (1)  ;
while (1w <= hi) {
mid = (1w + hi)/2;
if (p -> K[mid] == akey) {
*ptr = p;
return TRUE;
}
else
if (  (2)  )
hi=mid - 1;
else
1w = mid + 1;
}
*ptr = p;
p =   (3)  ;
}
return FALSE;
}
[說明5-2]
在M階B樹中插入一個關(guān)鍵字時,首先在最接近外部結(jié)點的某個非葉子結(jié)點中增加一個關(guān)鍵字,若該結(jié)點中關(guān)鍵字的個數(shù)不超過M-1,則完成插入;否則,要進(jìn)行結(jié)點的“分裂”處理。所謂“分裂”,就是把結(jié)點中處于中間位置上的關(guān)鍵字取出來并插入其父結(jié)點中,然后以該關(guān)鍵字為分界線,把原結(jié)點分成兩個結(jié)點。“分裂”過程可能會一直持續(xù)到樹根,若樹根結(jié)點也需要分裂,則整棵樹的高度增加1。
例如,在上圖所示的B樹中插入關(guān)鍵字25時,需將其插入結(jié)點e中。由于e中已經(jīng)有3個關(guān)鍵字,因此將關(guān)鍵字24插入結(jié)點e的父結(jié)點b,并以24為分界線將結(jié)點e分裂為e1和e2兩個結(jié)點,結(jié)果如下圖所示。



函數(shù)Isgrowing(BTreeNode*root,ElemKeyTypeakey)的功能是:判斷在給定的M階B樹中插入關(guān)鍵字akey后,該B樹的高度是否增加,若增加則返回TRUE,否則返回FALSE。其中,root是指向該M階B樹根結(jié)點的指針。
在函數(shù)Isgrwing中,首先調(diào)用函數(shù)SearchBtree(即函數(shù)5-1)查找關(guān)鍵字akey是否在給定的M階B樹中,若在,則返回FALSE(表明無需插入關(guān)鍵字akey,樹的高度不會增加);否則,通過判斷結(jié)點中關(guān)鍵字的數(shù)目考查插入關(guān)鍵字akey后該B樹的高度是否增加。


[函數(shù)5-2]
bool Isgrowing(BTreeNode* root, ElernKeyType akey)
{   BTreeNode *t, *f;
if( !SearchBtree(   (4)   ) ) {
t=f;
while (  (5)  ) {
t=t -> parent;
}
if( !t )
return TRUE;
}
return FALSE;
}



答案解析與討論:m.xiexiliangjiufa.com/st/245408738.html

6題:

試題六
閱讀下列說明、圖和c++代碼。
[說明]
某訂單管理系統(tǒng)的部分UML類圖如下圖所示。

上圖中,Product表示產(chǎn)品,ProductList表示產(chǎn)品目錄,Order表示產(chǎn)品訂單,OrderItem表示產(chǎn)品訂單中的一個條目,OrderList表示訂單列表,SalesSystem提供訂單管理系統(tǒng)的操作接口。
請完善類Order的成員函數(shù)getOrderedAmount()和類SalesSystem的stafistic()方法,各個類的屬性及部分方法定義參見下面的C++代碼。
[C++代碼]
class Product {                                        //產(chǎn)品
private:
string pid;                                       //產(chǎn)品識別碼
string description;                              //產(chǎn)品描述
double price;                                   ///產(chǎn)品單價
public:
void setProductPrice(double price);            //設(shè)置產(chǎn)品單價
string getProduetld();                         //獲取產(chǎn)品識別碼
string getProduetDescriprion 0;              //獲取產(chǎn)品描述
double getProductPrice0;                    //獲得產(chǎn)品單價
//其他成員省略
};
class ProductList {                             //產(chǎn)品列表類
private:
vector <Product> products;
public:
ProductList();
Product getProductBylndex(int i);          //獲得產(chǎn)品列表中的第i件產(chǎn)品
void addProduct(Product t);                //在產(chǎn)品列表中加入一件產(chǎn)品
Product * getProductByID(string pid);      //獲得識別碼為pid的產(chǎn)品指針
unsigned iht getProductAmount();           //獲得產(chǎn)品列表中的產(chǎn)品婁量
};
class OrderItem {                               //訂單條目類
private:
Product *productPtr;                      //指向被訂購產(chǎn)品的指針
int quantity;                             //訂購數(shù)量
public:
OrderItem (Product *,iht);
Product * getProductptr O;                //獲得指向被訂購產(chǎn)品的指針
int getQuantity ();                       //獲取被訂剛強產(chǎn)品數(shù)量
};
class Order {                                  //訂單類
private:
unsigned int orderid;                    //訂單識別號
vector<Orderltem> items;               //訂單內(nèi)容(訂單項)
public:
Order(unsigned int orderid);              //獲得識別碼為fid的產(chǎn)品在當(dāng)前訂單中被訂購的數(shù)量
int getOrderedAmount(string fid);
void additem(Product *productPtr,unsigned int n);    //在訂單中增加一個訂單項
};
class OrderList {                                        //訂單列表類
private:
vector<Order> orders;
public:
OrderList();
//Begin()返回指向訂單列表第一個元素的迭代器(指針)
virtual vector<Order>::iterator OrderList::Begin();
//End()返回指向訂單列表最后一個元素之后的迭代器(指向一個不存在的元素)
virtual vector<Order>::iterator orderList::End();
void addOrder(Order t);             //在訂單列表中加入一份訂單
//其他成員省略
};
class SalesSystem{
private:
ProductList catalog;                 //產(chǎn)品目錄
OrderList sales;                    //訂單列表
public:
SalesSystem();
void statistic();                  //統(tǒng)計所有產(chǎn)品的訂購情況
//其他成員省略
};
//在訂單中查找識別碼為tid的產(chǎn)品的訂購數(shù)量,若該產(chǎn)品沒有被訂購,則返回0
int Order::getOrderedAmount(string tid)
{   for (int k=0; k < items.size(); k++) {
if(  (1)  ==tid)
return   (2)  ;
}
return 0;
}
//方法statistic()依次統(tǒng)計產(chǎn)品目錄中每個產(chǎn)品的訂購總量,并打印輸出
//每個產(chǎn)品的識別碼、描述、訂購總量和訂購金額
void SalesSystem::statistic()
{   unsigned int k, t, ordered_qty = 0;
vector<Order>::iterator it;   Product p;
cout<<''產(chǎn)品識別碼\t描述\t\t訂購數(shù)量\t金額''<<endl;
for (k = 0; k < catalog.gctProductAmount(); k++){//遍歷產(chǎn)品列表
p =  (3)  ;            //從產(chǎn)品列表取得一件產(chǎn)品信息存入變量p
ordered_qty = 0;
//通過迭代器變量it遍歷訂單列表中的每一份訂單
for (it = sales. Begin();   (4)   : it++) {
//根據(jù)產(chǎn)品識別碼獲得產(chǎn)品p在當(dāng)前訂單中被訂購的數(shù)量
t =  (5)  (p.getProductld());
ordered_qty +=t;
}
cout << p.getProducfld() << "\t\t"<< p.gntProductDescription() << "\t\t";
cout <<o(jì)rdered_qty << "\t\t" << p.getProductPrice() * ordered_qty << endl;
}
}



答案解析與討論:m.xiexiliangjiufa.com/st/2454117374.html

7題:

試題七
閱讀下列說明、圖以及Java程序。
[說明]
某訂單管理系統(tǒng)的部分UML類圖如下圖所示。



上圖中,Product表示產(chǎn)品,ProductList表示所銷售產(chǎn)品的列表,Order表示產(chǎn)品訂單,Orderltem表示產(chǎn)品訂單中的一個條目,OrderList表示訂單列表,SalesSystem提供訂單管理系統(tǒng)的操作接口。各個類的部分屬性和方法說明如下表所示。



可以使用類java.util.ArrayList<E>米實現(xiàn)對象的聚集關(guān)系,如上圖中OrderList與 Order之間的聚集關(guān)系。
for-each循環(huán)提供了一種遍歷對象集合的簡單方法。在for-each循環(huán)中,可以指定需要遍歷的對象集合以及用來接收集合中每個元素的變量,其語法如下:
for(用來接收集合中元素的變量:需要遍歷的對象集合)
如果要使用for-each循環(huán)來遍歷對象集合,那么包含該對象集合的類必須實現(xiàn)接口 java.util.Iterable<T>。
Java程序7-1和Java程序7-2分別給出了類OrderList和方法statistic的Java代碼
[Java程序7-1]
import java.util.*;
public class OrderList  (1)   {
private ArrayList<Order> orders;
public OrderList0 {
this.orders = new ArrayList<Order>();
}
public void addOrder(Order orde0
this.orders.add(order);
}
public Iterator<Order> iterator() {
return  (2)  ;
}
public iht getNumberOfOrders0 {
return this.orders.size();
}
}
[Java程序7-21]
import java.u61.*;
public class SalesSystem {
private ProductList catalog;
private OrderList sales;
private static PrintWriter  stdOut = new  PrintWriter(System.out, true);
public void statistic() {
for (Product product:   (3)  ) {
iht number = 0;
for (Order order:   (4)  ) {
for (   (5)  : order) {
if (produet.equals(item.getProduct()))
number += item. getQuantity();
}
}
stdOut.println(product .getCode() +"  "
+ product.getDescription() +"  "
+ number +"  "+ number * product.getPrice());
}
}
//其余的方法末列出
}

答案解析與討論:m.xiexiliangjiufa.com/st/245421009.html