摘要:試題六(15分)閱讀下列說明、圖和C++代碼,將應(yīng)填入(n)處的字句寫在答題紙的對(duì)應(yīng)欄內(nèi)?!菊f明】某訂單管理系統(tǒng)的部分UML類圖如圖6-1所示。圖6-1中,Product表示產(chǎn)品,ProductList表示產(chǎn)品目錄,Order表示產(chǎn)品訂單,Orderltem表示產(chǎn)品訂單中的一個(gè)條目,OrderList表示訂單列表,SalesSystem提供訂單管理系統(tǒng)的操作接口。請(qǐng)完善類Or
試題六(15分)
閱讀下列說明、圖和C++代碼,將應(yīng)填入 (n) 處的字句寫在答題紙的對(duì)應(yīng)欄內(nèi)。
【說明】
某訂單管理系統(tǒng)的部分UML類圖如圖6-1所示。
圖6-1中,Product表示產(chǎn)品,ProductList表示產(chǎn)品目錄,Order表示產(chǎn)品訂單,
Orderltem表示產(chǎn)品訂單中的一個(gè)條目,OrderList表示訂單列表,SalesSystem提供訂單
管理系統(tǒng)的操作接口。
請(qǐng)完善類Order的成員函數(shù)getOrderedAmount()和類SalesSystem的statistic()方
法,各個(gè)類的屬性及部分方法定義參見下面的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 getProductld(); //獲取產(chǎn)品識(shí)別碼
string getProductDescription(); //獲取產(chǎn)品描述
double getProductPrice();//獲取產(chǎn)品單價(jià)
//其他成員省略
};
class ProductList{//產(chǎn)品列表類
private:
vector <Product> products;
public:
ProductList();
Product getProductByIndex(int i);//獲得產(chǎn)品列表中的第i件產(chǎn)品
void addProduct(Product t); //在產(chǎn)品列表中加入一件產(chǎn)品
Product * getProductByID(string pid); //獲得識(shí)別碼為pid的產(chǎn)品指針
unsigned int getProductAmount();//獲得產(chǎn)品列表中的產(chǎn)品數(shù)量
};
class OrderItem { //訂單條目類
private:
Product *productPtr;//指向被定購(gòu)產(chǎn)品的指針
int quantity;//定購(gòu)數(shù)量
public:
OrderItem (Product *, int);
Product * getProductptr();//獲取指向被定購(gòu)產(chǎn)品的指針
int getQuantity (); //獲取被定購(gòu)產(chǎn)品的數(shù)量
};
class Order { //訂單類
private:
unsigned int orderid;//訂單識(shí)別號(hào)
vector<OrderItem>items; //訂單內(nèi)容(訂單項(xiàng))
public:
Order(unsigned int orderid);
//獲得識(shí)別碼為tid的產(chǎn)品在當(dāng)前訂單中被定購(gòu)的數(shù)量
int getOrderedAmount(string tid);
void additem(Product *productPtr,unsigned int n);//在訂單中增加—個(gè)訂單項(xiàng)
//其他成員省略
};
class OrderList{ //訂單列表類
prtvate:
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)品沒有被定購(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 tt; Product p;
cout<<"產(chǎn)品識(shí)別碼\t描述\t\t定購(gòu)數(shù)量\t金額"<<endl;
for(k=0; k<catalog.getProductAtnount(); k++){//遍歷產(chǎn)品列表
p =(3) ; //從產(chǎn)品列表取得一件產(chǎn)品信息存入變量p
ordered_qty = 0;
//通過迭代器變量it遍歷訂單列表中的每一份訂單
for(it = sales.Begin(); (4) ; it++){
//根據(jù)產(chǎn)品識(shí)別碼獲得產(chǎn)品p在當(dāng)前訂單中被定購(gòu)的數(shù)量
t =?。?)(p.getProductId());
ordered_qty += t;
}
cout<<p.getProductId()<<"\t\t"<<p.getProductDescription()<<"\t\t";
cout<<ordered_qty<<"\t\t"<<p.getProductPrice() * ordered_qty<<endl;
}
}
軟考備考資料免費(fèi)領(lǐng)取
去領(lǐng)取
共收錄117.93萬道題
已有25.02萬小伙伴參與做題