信管网每日一练
软件设计师 - 每日一练 导航

软件设计师案例分析每日一练试题(2023/1/9)

2023年01月10日来源:信管网 作者:cnitpm

软件设计师案例分析当天每日一练试题地址:www.cnitpm.com/exam/ExamDayAL.aspx?t1=4

往期软件设计师每日一练试题汇总:www.cnitpm.com/class/27/e4_1.html

软件设计师案例分析每日一练试题(2023/1/9)在线测试:www.cnitpm.com/exam/ExamDayAL.aspx?t1=4&day=2023/1/9

点击查看:更多软件设计师习题与指导

软件设计师案例分析每日一练试题内容(2023/1/9)

试题六
阅读下列说明、图和c++代码。
[说明]
某订单管理系统的部分UML类图如下图所示。

上图中,Product表示产品,ProductList表示产品目录,Order表示产品订单,OrderItem表示产品订单中的一个条目,OrderList表示订单列表,SalesSystem提供订单管理系统的操作接口。
请完善类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();                  //统计所有产品的订购情况
//其他成员省略
};
//在订单中查找识别码为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 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;
}
}



信管网试题答案与解析:www.cnitpm.com/st/2454117374.html

信管网考友试题答案分享:

信管网试题答案与解析:www.cnitpm.com/st/2454117374.html

温馨提示:因考试政策、内容不断变化与调整,信管网提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!

分享至:

信管网 - 信息系统项目管理专业网站

下载APP-在线学习

培训课程

0元畅享

考试题库

免费资料

客服咨询