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

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

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



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



可以使用類(lèi)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ì)象集合的類(lèi)必須實(shí)現(xiàn)接口 java.util.Iterable<T>。
Java程序7-1和Java程序7-2分別給出了類(lèi)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());
}
}
//其余的方法末列出
}

查看答案

相關(guān)試題

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ù)性。開(kāi)發(fā)人員提出用Web Service作為中間層的接口進(jìn)行開(kāi)發(fā)。
[問(wèn)題1]
請(qǐng)用120字以?xún)?nèi)文字,從業(yè)務(wù)的繼承性、升級(jí)成本(時(shí)間、工作量)和擴(kuò)展性三個(gè)方面簡(jiǎn)要說(shuō)明開(kāi)發(fā)人員所提方案的優(yōu)點(diǎn)。
[問(wèn)題2]
Web Service的三個(gè)基本技術(shù)是WSDL、SOAP、UDDI,它們都是以XML為基礎(chǔ)定義的。請(qǐng)用120字以?xún)?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字以?xún)?nèi)文字,說(shuō)明這三者的主要功能及其交互過(guò)程。

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

5題:

試題五
閱讀下列說(shuō)明、圖和C代碼。
[說(shuō)明5-1]
B樹(shù)是一種多叉平衡查找樹(shù)。一棵m階的B樹(shù),或?yàn)榭諛?shù),或?yàn)闈M(mǎn)足下列特性的m叉樹(shù):
①樹(shù)中每個(gè)結(jié)點(diǎn)最多有m棵子樹(shù);
②若根結(jié)點(diǎn)不是葉子結(jié)點(diǎn),則它至少有兩棵子樹(shù);
⑧除根之外的所有非葉子結(jié)點(diǎn)至少有[m/2]棵子樹(shù);
④所有的非葉子結(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)為指向子樹(shù)根結(jié)點(diǎn)的指針,且指針Ai-1,所指子樹(shù)中所有結(jié)點(diǎn)的關(guān)鍵字均小于Ki,Ai+1,所指子樹(shù)中所有結(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樹(shù)如下圖所示(結(jié)點(diǎn)中關(guān)鍵字的數(shù)目省略)。

B樹(shù)的階M、bool類(lèi)型、關(guān)鍵字類(lèi)型及B樹(shù)結(jié)點(diǎn)的定義如下:
#define  M  4                                    /*B樹(shù)的階*/
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)的指針,樹(shù)根的父結(jié)點(diǎn)指針為空*/
struct BTreeNode *A[M];                    /*指向子樹(shù)結(jié)點(diǎn)的指針數(shù)組*/
ElemKeyType  K[M];                          /*存儲(chǔ)關(guān)鍵字的數(shù)組,K[0]閑置不用*/
}BTreeNode;
函數(shù)SearchBtree(BTreeNode*root,ElemKcyTypeakey,BTreeNode:*pb)的功能是:在給定的一棵M階B樹(shù)中查找關(guān)鍵字akey所在結(jié)點(diǎn),若找到則返回TRUE,否則返回 FALSE。其中,root是指向該M階B樹(shù)根結(jié)點(diǎn)的指針,參數(shù)ptr返回akey所在結(jié)點(diǎn)的指針,若akey不在該B樹(shù)中,則ptr返回查找失敗時(shí)空指針?biāo)诮Y(jié)點(diǎn)的指針。例如,在上圖所示的4階B樹(shù)中查找關(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樹(shù)中插入一個(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)鍵字為分界線(xiàn),把原結(jié)點(diǎn)分成兩個(gè)結(jié)點(diǎn)?!胺至选边^(guò)程可能會(huì)一直持續(xù)到樹(shù)根,若樹(shù)根結(jié)點(diǎn)也需要分裂,則整棵樹(shù)的高度增加1。
例如,在上圖所示的B樹(shù)中插入關(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為分界線(xiàn)將結(jié)點(diǎn)e分裂為e1和e2兩個(gè)結(jié)點(diǎn),結(jié)果如下圖所示。



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


[函數(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題:

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

上圖中,Product表示產(chǎn)品,ProductList表示產(chǎn)品目錄,Order表示產(chǎn)品訂單,OrderItem表示產(chǎn)品訂單中的一個(gè)條目,OrderList表示訂單列表,SalesSystem提供訂單管理系統(tǒng)的操作接口。
請(qǐng)完善類(lèi)Order的成員函數(shù)getOrderedAmount()和類(lèi)SalesSystem的stafistic()方法,各個(gè)類(lèi)的屬性及部分方法定義參見(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)品列表類(lèi)
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 {                               //訂單條目類(lèi)
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 {                                  //訂單類(lèi)
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 {                                        //訂單列表類(lèi)
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



更多試題