设计二中关系Merchandise中由属性price表示商品价格,关系lnvoicedetail中的属性 unitprice也表示
第1题
阅读下列说明和C++代码,将应填入(n)处的字句写在对应栏内。
【说明】
已知某企业的采购审批是分级进行的,即根据采购金额的不同由不同层次的主管人员来审批,主任可以审批5万元以下(不包括5万元)的采购单,副董事长可以审批5万元至10万元(不包括10万元)的采购单,董事长可以审批10万元至50万元(不包括50万元)的采购单,50万元及以上的采购单就需要开会讨论决定。
采用责任链设计模式(Chain of Responsibility)对上述过程进行设计后得到的类图如图6-1所示。
【C++代码】
include <string>
include <iostream>
using namespace std;
class PurchaseRequest {
public:
double Amount; /*一个采购的金额*/
int Number; /*采购单编号*/
string Purpose; /*采购目的*/
};
class Approver { /*审批者类*/
public:
Approver() { successor = NULL; }
virtual void ProcessRequest(PurchaseRequest aRequest){
if (successor != NULL){ successor-> (1) ; }
}
void SetSuccessor(Approver *aSuccesssor) { successor = aSuccesssor; } private:
(2) successor; };
class Congress : public Approver {
public:
void ProcessRequest(PurchaseRequest aRequest) {
if(aRequest.Amount >= 500000){ /*决定是否审批的代码少略*/ }
else (3) ProcessRequest(aRequest);
}
class Director : public Approver {
public:
void ProcessRequest(PurchaseRequest aRequest){ /*此处代码省略*/
}
};
class President : public Approver {
public:
void ProcessRequest(PurchaseRequest aRequest) /*此处代码省略*/ }
};
class VicePresident : public Approver {
public:
void ProcessRequest(PurchaseRequest aRequest) /*此处代码省略*/ }
};
void main(){
Congress Meeting; VicePresident Sam; Director Larry ; President
Tammy;
Meeting. SetSuccessor(NULL); Sam. SetSuccessor( (4) );
Tammy. SetSuccessor( (5) ); Larry. SetSuccessor( (6) );
PurchaseRequest aRequest; /*构造一采购审批请求*/
cin >> aRequest.Amount; /*输入采购请求的金额*/
(7) .ProcessRequest(aRequest); /*开始审批*/
return ;
}
第3题
阅读下列说明、图和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;
第4题
阅读下列说明,回答问题1、问题2和问题3。
[说明]
某单位资料室需要建立一个图书管理系统,初步的需求分析结果如下:
(1)资料室有图书管理员若干名,他们负责己购入图书的编目和借还工作,每名图书管理员的信息包括工号和姓名;
(2)读者可在阅览室读书,也可通过图书流通室借还图书,读者信息包括读者D、姓名、电话和E-mail,系统为不同读者生成不同的读者ID;
(3)每部书在系统中对应唯一的一条图书在版编目数据(CIP,以下简称书目),书目的基本信息包括ISBN号、书名、作者、出版商、出版年月,以及本资料室拥有该书的册数(以下简称册数),不同书目的ISBN号不相同:
(4)资料室对于同一书目的图书可拥有多册(本),图书信息包括图书ID、ISBN号、存放位置、当前状态,每一本书在系统中被赋予唯一的图书ID:
(5)一名读者最多只能借阅十本图书,且每本图书最多只能借两个月,读者借书时需由图书管理员登记读者①、所借图书D、借阅时间和应还时间,读者还书时图书管
理员在对应的借书信息中记录归还时间;
(6)当某书目的可借出图书的数量为零时,读者可以对其进行预约登记,即记录读者ID、需要借阅的图书的ISBN号、预约时间。
某书目的信息,以及与该书目对应的图书信息,如下表所示。
系统的主要业务处理如下。
(1)入库管理:图书购进入库时,管理员查询本资料室的书目信息,若该书的书目尚未建立,则由管理员编写该书的书月信息并输入系统,然后编写并输入图书信息;否则,修改该书目的册数,然后编写并输入图书信息,对于进入流通室的书,其初始状态为“未借出”,而送入阅览室的书的状态始终为“不外借”。
(2)借书管理:读者借书时,若有,则由管理员为该读者办理借书手续,并记录该读者的借书信息,同时将借出图书的状态修改为“已借出”。
(3)预约管理:若图书流通室没有读者要借的书,则可为该读者建立预约登记,需要记录读者ID、书的ISBN号、预约时间和预约期限(最长为10天)。一旦其他读者归还这种书,就自动通知该预约读者。系统将自动清除超出预约期限的预约记录并修改相关信息。
(4)还书管理:读者还书时,则记录相应借还信息中的“归还时间”,对于超期归还者,系统自动计算罚金(具体的计算过程此处省略)。系统同时自动查询预约登记表,若存在其他读者预约该书的记录,则将该图书的状态修改为“已预约”,并将该图书ID写入相应的预约记录中(系统在清除超出预约期限的记录时解除该图书的“已预约”状态);否则,将该图书的状态修改为“未借出”。
(5)通知处理:对于己到期且未归还的图书,系统通过E-mail自动通知读者:若读者预约的书已到,系统则自动通过E-mail通知该读者来办理借书手续。
根据以上说明设计的实体联系图如下图所示,请指出读者与图书、书目与读者、书目与图书之间的联系类型。
第5题
阅读下列说明和图,回答问题l至问题3,将解答填入答题纸的对应栏内。
【说明】
某银行计划开发一个自动存提款机模拟系统(ATM System)。系统通过读卡器((:ardReader)读取ATM卡;系统与客户(Customer)的交互由客户控制台(CustomerCon—sole)实现;银行操作员(()perator)可控制系统的启动(System Startup)和停止(SystemShutdown);系统通过网络和银行系统(Bank)实现通信。当读卡器判断用户已将ATM卡插入后,创建会话(Session)。会话开始后,读卡器进行读卡,并要求客户输入个人验证码(PIN)。系统将卡号和个人验证码信息送到银行系统进行验证。验证通过后,客户可从菜单选择如下事务(Transaction):
1.从ATM卡账户取款(withdraw);
2.向ATM卡账户存款(Deposit);
3.进行转账(Transfer);
4.查询(Inquire)ATM卡账户信息。
一次会话可以包含多个事务,每个事务处理也会将卡号和个人验证码信息送到银行系统进行验证。若个人验证码错误,则转个人验证码错误处理(Invalid PIN Process)。每个事务完成后,客户可选择继续上述事务或退卡。选择退卡时,系统弹出ATM卡,会话结束。系统采用面向对象方法开发,使用uML进行建模。系统的顶层用例图如图5—3所示,一次会话的序列图(不考虑验证)如图5—4所示。消息名称参见表5—4。
根据【说明】中的描述,给出图5—3中A1和A2所对应的参与者,u1至u3所对应的用例,以及该图中空 (1) 所对应的关系。(ul至u3的可选用例包括:Session、Trans-action、Inserl Card、Invalid PIN Process和Transfer)
第7题
阅读以下说明,回答问题。
【说明】
某公司要开发一个销售管理系统,该系统的主要功能是:处理客户和销售员送来的订单;工厂是根据订货安排生产的,交出货物同时开出发票,收到客户付款后,根据发票存根进行应收款处理。每张订单由订单号,若干头信息和订单细节组成。一张订单可定购多种产品,工厂对大宗订货给予优惠。每种产品都规定了不同订货数量的折扣。
根据上述要求公司的销售部王经理写下了以下数据表结构:
客户:(客户号,客户名,地址,电话)
订单:(订单号,客户号,产品号,订货数,订货日期,交货日期,金额)
应收账款:(客户号,订单号,发票号,应收金额,支付日期,支付金额,当前余额)
产品描述:(产品号,产品名,单价,重量)
折扣规则:(产品号,订货量,折扣)
上表中带下划线的为主码。请为还没有确定主码或是主码不合理的数据表选定最合适的主码。
第8题
阅读下列程序说明和C++代码,将应填入(n)处。
【说明】
源程序中定义了Circle类与Money类,Circle类可对半径为r的圆进行周长与面积的计算,而Money类用于计算一圆形游泳池的造价。游泳池四周有原形过道,过道外围上栅栏,过道宽度为3米,根据键入的游泳池半径,每米栅栏价格及每平方米过道价格,即可计算出游泳池的造价。请按要求完成下列操作,将程序补充完整。
①定义符号常量PI(值为3.14159f)与WIDTH(值为3.00f),分别用于表示圆周率与过道的固定宽度。
②定义Circle类默认构造函数,把私有成员radius初始化为参数r的值。
③完成Money类默认构造函数的定义,把私有成员FencePrice(每米栅栏的价格)、ConcretePrice(每平方米过道的价格)初始化为参数f,c的值。
④完成Money类成员函数float Money::TotalMoney(float fencelen,float conarea)的定义,根据参数fencelen(栅栏的长度)和conarea(过道的面积),返回栅栏与过道的总造价。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件test4.cpp清单如下:
include<iostream.h>
(1)
class Circle
{
private:
float radius;
public:
(2)
float Circumference(){return 2 * P| * radius;}
float Area(){return P|*radius * radius;}
};
class Money
{
private:
float FencePrice;
float ConcretePrice;
public:
Money(float f,float c);
float Tota|Money(float fencelen, float conarea);
};
Money::Money(float f,float c)
{
(3)
}
float Money::Tota|Money(float fencelen, float conarea)
{
(4)
}
void main( )
{
float radius, fence, concrete;
cout. setf(ios:: fixed);
cout. setf(ios:: showpoint);
cout. precision (2);
cout << "Enter the radius of the pool:";
cin > > radius;
cout << "Enter the FencePrice:";
cin > > fence;
cout << "Enter the ConcretePrice: ";
cin > > concrete;
Circle Pool(radius);
Circle PoolRim(radius + WIDTH);
Money mon( fence, concrete);
float totalmoney = mon. TotalMoney( PoolRim. Circumference( ), ( PoolRim. Area ( ) - Pool.
Area ( ) ) );
cout << "The total money is RMB" << totalmoney << end|;
}
第9题
阅读以下说明和C程序,填入(n)外。
[说明]
以下C程序实现了将字符串转化为浮点数的功能。例如字符串“1234567”转化为浮点数1234567;字符串“100.02035”转化为浮点数100.02035;字符串“-100.02035”转化为浮点数-100.02035。程序中的部分变量的含义如表9-5。
[C程序]
double StrToDouble(char*s)
{
char hexch[]="0123456789";
int i,j,psign=1;
DWORD n,k,intpart=0;
double doublepart=0,kdouble,resoult;
char ch;
if (*s=='.'
{
(1);
(2);
}
char*s1=s,*temp=NULL;
temp=strrchr ( s1,'.' );
if (!temp)
{
k=1; intpart=0;
for (i=strlen (s); i>0;i--)
{
ch=s[i-1];
if (ch>0x3f) ch&=0xDF;
n=0;
for (j=0; j<10; j++)
if ( ch==hexch[j]) n=j;
intpart+= (n*k);
k*=10;
}
}
else
{
s1=temp+1;
kdouble=0.1;
doublepart=0;
for ((3))
{
ch=s1[i-1];
if (ch>0x3f) ch&=0xDF;
n=0;
for (j=0; j<10; j++ )
if (ch==hexch[j])
n=j;
doublepart+= (n*kdouble);
(4);
}
*temp=NULL;
k=1; intpart=0;
for ((5);)
{
ch=s[i-1];
if (ch>0x3f) ch&=0xDF;
n=0;
for (j=0; j<10; j++)
if (ch==hexch[j]) n=j;
intpart+= (n*k);
k*=10;
}//end else
}
(6);
return resoult;
}
第10题
请补齐下列数据字典条目:
系统命令=检索命令|统计命令|打印命令|维护命令;
干部信息=____________________________________
输入信息=____________________________________
检索项=______________________________________
统计项=______________________________________
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!