试题详情

试题内容

试题六
阅读下列说明、图和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;
}
}



查看答案

软题库参考答案:暂时没有答案(仅供参考)

软题库解析:正在加载....

你可能感兴趣的试题

2题:

试题二
阅读以下说明,回答问题1至问题3,将解答填入对应栏内。
[说明]
某公司拟开发一套小区物业收费管理系统。初步的需求分析结果如下:
(1)业主信息主要包括:业主编号、姓名、房号、房屋面积、工作单位、联系电话等。房号可唯一标识一条业主信息,且一个房号仅对应一套房屋;一个业主可以有一套或多套的房屋。
(2)部门信息主要包括:部门号、部门名称、部门负责人、部门电话等。一个员工只能属于一个部门,一个部门只有一位负责人。
(3)员工信息主要包括:员工号、姓名、出生年月、性别、住址、联系电话、所在部门号、职务和密码等。根据职务不同,员工可以有不同的权限:职务为“经理”的员工具有更改(添加、删除和修改)员工表中本部门员工信息的操作权限;职务为“收费”的员工只具有收费的操作权限。
(4)收费信息包括:房号、业主编号、收费日期、收费类型、数量、收费金额、员工号等。收费类型包括物业费、卫生费、水费和电费,并按月收取,收费标准如表2-1所示。其中:物业费=房屋面积(平方米)×每平方米单价,卫生费=套房数量(套)×每套房单价,
6题:

试题六
14、现要求实现一个能够自动生成求职简历的程序,简历的基本内容包括求职者的姓名、性别、年龄及工作经历。希望每份简历中的工作经历有所不同,并尽量减少程序中的重复代码。
现采用原型模式(Prototype)来实现上述要求,得到如图所示的类图。

[Java代码]
Class WorkExperience ______ Cloneable{          //工作简历
Private String workDate;
Private String company;
Public Object Clone(){
______;
obj.workDate=this.workDate;
Obj.company-this.company;
4题:阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。
【说明】
模式匹配是指给定主串t和子串s,在主串t中寻找子串s的过程,其中s称为模式。如果匹配成功,返回s在t中的位置,否则返回-1 。
KMP算法用next数组对匹配过程进行了优化。KMP算法的伪代码描述如下:
1.在串t和串s中,分别设比较的起始下标i=j=0。
2.如果串t和串s都还有字符,则循环执行下列操作:
(1)如果j=-l或者t[i]=s[j],则将i和j分别加1,继续比较t和s的下一个字符;
(2)否则,将j向右滑动到next[j]的位置,即j =next[j]。
3.如果s中所有字符均已比较完毕,则返回匹配的起始位置(从1开始);否则返回-1。其中,next数组根据子串s求解。求解next数组的代码已由get_next函数给出。
【C代码】
(1)常量和变量说明
t,s:长度为悯铂Is的字符串
next:next数组,长度为Is
(2)C程序 <
4题:阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。
【说明】
计算两个字符串x和y的最长公共子串(Longest Common Substring)。
假设字符串x和字符串y的长度分别为m和n,用数组c的元素c[i][j]记录x中前i个字符和y中前j个字符的最长公共子串的长度。
c[i][j]满足最优子结构,其递归定义为:

计算所有c[i][j](0 ≤i ≤ m,0 ≤j ≤ n)的值,值最大的c[i][j]即为字符串x和y的最长公共子串的长度。根据该长度即i和j,确定一个最长公共子串。
【C代码】
(1)常量和变量说明
x,y:长度分别为m和n的字符串
c[i][j]:记录x中前i个字符和y中前j个字符的最长公共子串的长度
max:x和y的最长公共子串的长度
max
1题:

试题一
阅读下列说明和图,回答问题1~问题3。
[说明]
某公司的主要业务是出租图书和唱碟。由于业务需求,该公司委托软件开发公司A开发一套信息管理系统。该系统将记录所有的图书信息、唱碟信息、用户信息、用户租借信息等。A公司决定采用面向对象的分析和设计方法开发此系统。图1-1所示为某类图书或唱碟被借阅时应记录的信息,图1-2描述了系统定义的两个类Book和CD,分别表示图书和唱碟的信息。

[问题1]
经过进一步分析,设计人员决定定义一个类Items on loan,以表示类Book和CD的共有属性和方法。请采用图1-2中属性和方法的名称给出类Items_on_loan应该具有的属性和方法(注意:不同名称的属性和方法表示不同的含义,如CD中的composer与 Book甲的author无任何关系)。
[问题2]
为了记录每种
1题:

试题一(共15分)
阅读下列说明图,回答问题1至问题4,将解答填入答题纸的对应栏内。
【说明】
某大学欲开发一个基于Web的课程注册系统。该系统的主要功能如下:
1、验证输入信息
(1)检查学生信息:检查学生输入的所有注册所需信息。如果信息不合法,返回学生信息不合法提示;如果合法,输出合法学生信息。
(2)检查学位考试信息:检查学生提供的学位考试结果。如果不合法,返回学位考试结果不合法提示;如果合法,检查该学生注册资格。
(3)检查学生资格:根据合法学生信息和合法学位考试结果,检查该学生对欲选课程的注册资格。如果无资格,返回无注册资格提示;如果有注册资格,则输出注册学生信息(包含选课学生标识)和欲注册课程信息。
2、处理注册申请
(1)存储注册信息:将注册学生信息记录在学生库。
(2)存储所注册课程:将选课学生标识与欲注册课程进行关联,然后存入课程库。
(3)发送注册通知:从学生库中读取注册学生信息,从课程库中读取所注册课程信息,结学生发送接受提示;给教务人员发送所注册