深夜成人在线,chinese国产一区二区,欧美精品乱码,日韩欧美在线视频免费观看,国产午夜不卡,日韩av影院在线,五月天婷婷国产精品

軟題庫 學習課程
試卷年份2006年上半年
試題題型【分析簡答題】
試題內容

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

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



查看答案

相關試題

3題:

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

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


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





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


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



答案解析與討論:www.ichunya.com/st/245388453.html

4題:

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

答案解析與討論:www.ichunya.com/st/2453915560.html

5題:

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

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



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


[函數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;
}



答案解析與討論:www.ichunya.com/st/245408738.html

7題:

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



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



可以使用類java.util.ArrayList<E>米實現對象的聚集關系,如上圖中OrderList與 Order之間的聚集關系。
for-each循環(huán)提供了一種遍歷對象集合的簡單方法。在for-each循環(huán)中,可以指定需要遍歷的對象集合以及用來接收集合中每個元素的變量,其語法如下:
for(用來接收集合中元素的變量:需要遍歷的對象集合)
如果要使用for-each循環(huá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());
}
}
//其余的方法末列出
}

答案解析與討論:www.ichunya.com/st/245421009.html