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

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

試題五
閱讀下列說(shuō)明、圖和C代碼。
[說(shuō)明5-1]
B樹是一種多叉平衡查找樹。一棵m階的B樹,或?yàn)榭諛?,或?yàn)闈M足下列特性的m叉樹:
①樹中每個(gè)結(jié)點(diǎn)最多有m棵子樹;
②若根結(jié)點(diǎn)不是葉子結(jié)點(diǎn),則它至少有兩棵子樹;
⑧除根之外的所有非葉子結(jié)點(diǎn)至少有[m/2]棵子樹;
④所有的非葉子結(jié)點(diǎn)中包含下列數(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é)點(diǎn)的指針,且指針Ai-1,所指子樹中所有結(jié)點(diǎn)的關(guān)鍵字均小于Ki,Ai+1,所指子樹中所有結(jié)點(diǎn)的關(guān)鍵字均大于Ki,n為結(jié)點(diǎn)中關(guān)鍵字的數(shù)目。
⑤所有的葉子結(jié)點(diǎn)都出現(xiàn)在同一層次上,并且不帶信息(可以看作是外部結(jié)點(diǎn)或查找失敗的結(jié)點(diǎn),實(shí)際上這些結(jié)點(diǎn)不存在,指向這些結(jié)點(diǎn)的指針為空)。
例如,一棵4階B樹如下圖所示(結(jié)點(diǎn)中關(guān)鍵字的數(shù)目省略)。

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



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



查看答案

相關(guān)試題

2題:

試題二
閱讀下列說(shuō)明以及UML類圖,回答問(wèn)題1、問(wèn)題2和問(wèn)題3。
[說(shuō)明]
某客戶信息管理系統(tǒng)中保存著兩類客戶的信息。
(1)個(gè)人客戶,對(duì)于這類客戶,系統(tǒng)保存了其客戶標(biāo)識(shí)(由系統(tǒng)生成)和基本信息 (包括姓名、住宅電話和E-mail)。
(2)集團(tuán)客戶。集團(tuán)客戶可以創(chuàng)建和管理自己的若干名聯(lián)系人。對(duì)于這類客戶,系統(tǒng)除了保存其客戶標(biāo)識(shí)(由系統(tǒng)生成)之外,也保存了其聯(lián)系人的信息。聯(lián)系人的信息包括姓名、住宅電話、E-mail、辦公電話以及職位。
該系統(tǒng)除了可以保存客戶信息之外,還具有以下功能:
(1)向系統(tǒng)中添加客戶(addCustomer);
(2)根據(jù)給定的客戶標(biāo)識(shí),在系統(tǒng)中查找該客戶(getCustomer):
(3)根據(jù)給定的客戶標(biāo)識(shí),從系統(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類圖如下圖所示。

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

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

3題:

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

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


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





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


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



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

4題:

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

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

6題:

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

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

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



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



可以使用類java.util.ArrayList<E>米實(shí)現(xiàn)對(duì)象的聚集關(guān)系,如上圖中OrderList與 Order之間的聚集關(guān)系。
for-each循環(huán)提供了一種遍歷對(duì)象集合的簡(jiǎn)單方法。在for-each循環(huán)中,可以指定需要遍歷的對(duì)象集合以及用來(lái)接收集合中每個(gè)元素的變量,其語(yǔ)法如下:
for(用來(lái)接收集合中元素的變量:需要遍歷的對(duì)象集合)
如果要使用for-each循環(huán)來(lái)遍歷對(duì)象集合,那么包含該對(duì)象集合的類必須實(shí)現(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