摘要:試題六(15分)閱讀下列說明、圖和C++代碼,將應填入(n)處的字句寫在答題紙的對應欄內。【說明】某訂單管理系統的部分UML類圖如圖6-1所示。圖6-1中,Product表示產品,ProductList表示產品目錄,Order表示產品訂單,Orderltem表示產品訂單中的一個條目,OrderList表示訂單列表,SalesSystem提供訂單管理系統的操作接口。請完善類Or
試題六(15分)
閱讀下列說明、圖和C++代碼,將應填入 (n) 處的字句寫在答題紙的對應欄內。
【說明】
某訂單管理系統的部分UML類圖如圖6-1所示。
圖6-1中,Product表示產品,ProductList表示產品目錄,Order表示產品訂單,
Orderltem表示產品訂單中的一個條目,OrderList表示訂單列表,SalesSystem提供訂單
管理系統的操作接口。
請完善類Order的成員函數getOrderedAmount()和類SalesSystem的statistic()方
法,各個類的屬性及部分方法定義參見下面的C++代碼。
【C++代碼】
class Product {//產品類
private:
string pid;//產品識別碼
string description;//產品描述
double price; //產品單價
public:
void setProductPrice(double price); //設置產品單價
string getProductld(); //獲取產品識別碼
string getProductDescription(); //獲取產品描述
double getProductPrice();//獲取產品單價
//其他成員省略
};
class ProductList{//產品列表類
private:
vector <Product> products;
public:
ProductList();
Product getProductByIndex(int i);//獲得產品列表中的第i件產品
void addProduct(Product t); //在產品列表中加入一件產品
Product * getProductByID(string pid); //獲得識別碼為pid的產品指針
unsigned int getProductAmount();//獲得產品列表中的產品數量
};
class OrderItem { //訂單條目類
private:
Product *productPtr;//指向被定購產品的指針
int quantity;//定購數量
public:
OrderItem (Product *, int);
Product * getProductptr();//獲取指向被定購產品的指針
int getQuantity (); //獲取被定購產品的數量
};
class Order { //訂單類
private:
unsigned int orderid;//訂單識別號
vector<OrderItem>items; //訂單內容(訂單項)
public:
Order(unsigned int orderid);
//獲得識別碼為tid的產品在當前訂單中被定購的數量
int getOrderedAmount(string tid);
void additem(Product *productPtr,unsigned int n);//在訂單中增加—個訂單項
//其他成員省略
};
class OrderList{ //訂單列表類
prtvate:
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();//統計所有產品的定購情況
//其他成員省略
};
//在訂單中查找識別碼為tid的產品的定購數量,若該產品沒有被定購,則返回0
int Order::getOrderedAmount(string tid)
{ for (int k = 0; k < items.size(); k++){
if ((1) == tid)
return (2) ;
}
return 0;
}
//方法statistic()依次統計產品目錄中每個產品的訂購總量,并打印輸出
//每個產品的識別碼、描述、訂購總量和訂購金額
void SalesSystem::statistic()
{unsigned int k, t, ordered_qty = 0;
vector<Order>::iterator tt; Product p;
cout<<"產品識別碼\t描述\t\t定購數量\t金額"<<endl;
for(k=0; k<catalog.getProductAtnount(); k++){//遍歷產品列表
p =(3) ; //從產品列表取得一件產品信息存入變量p
ordered_qty = 0;
//通過迭代器變量it遍歷訂單列表中的每一份訂單
for(it = sales.Begin(); (4) ; it++){
//根據產品識別碼獲得產品p在當前訂單中被定購的數量
t = (5)(p.getProductId());
ordered_qty += t;
}
cout<<p.getProductId()<<"\t\t"<<p.getProductDescription()<<"\t\t";
cout<<ordered_qty<<"\t\t"<<p.getProductPrice() * ordered_qty<<endl;
}
}
軟考不知道考啥科目?掃碼測最適合你的報考科目

熱門活動:【免費考前摸底】軟考4月模考大賽![]()
軟考備考資料免費領取
去領取
專注在線職業教育25年