问答题

试题二
阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
[说明]
某物流公司为了整合上游供应商与下游客户,缩短物流过程,降低产品库存,需要构建一个信息系统以方便管理其业务运作活动。
[需求分析结果]
(1)物流公司包含若干部门,部门信息包括部门号、部门名称、经理、电话和邮箱。一个部门可以有多名员工处理部门的日常事务,每名员工只能在一个部门工作。每个部门有一名经理,只需负责管理本部门的事务和人员。
(2)员工信息包括员工号、姓名、职位、电话号码和工资;其中,职位包括:经理、业务员等。业务员根据托运申请负责安排承运货物事宜,例如:装货时间、到达时间等。一个业务员可以安排多个托运申请,但一个托运申请只由一个业务员处理。
(3)客户信息包括客户号、单位名称、通信地址、所属省份、联系人、联系电话、银行账号,其中,客户号唯一标识客户信息的每一个元组。每当客户要进行货物托运时,先要提出货物托运申请。托运申请信息包括申请号、客户号、货物名称、数量、运费、出发地、目的地。其中,一个申请号对应唯一的一个托运申请;一个客户可以有多个货物托运申请,但一个托运申请对应唯一的一个客户号。
[概念模型设计]
根据需求阶段收集的信息,设计的实体联系图和关系模式(不完整)如图2-1所示。

[关系模式设计]
部门(部门号,部门名称,经理,电话,邮箱)
员工(员工号,姓名,职位,电话号码,工资, (a) )
客户( (b) ,单位名称,通信地址,所属省份,联系人,联系电话,银行账号)
托运申请( (c) ,货物名称,数量,运费,出发地,目的地)
安排承运( (d) ,装货时间,到达时间,业务员)

若系统新增需求描述如下:为了数据库信息的安全性,公司要求对数据库操作设置权限管理功能,当员工登录系统时,系统需要检查员工的权限。权限的设置人是部门经理。为满足上述需要,应如何修改(或补充)图2-1所示的实体联系图,请给出修改后的实体联系图和关系模式。

【参考答案】

热门 试题

问答题
试题六 阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。 [说明] 某大型商场内安装了多个简易的纸巾售卖机,自动出售2元钱一包的纸巾,且每次仅售出一包纸巾。纸巾售卖机的状态图如图6-1所示。 采用状态(State)模式来实现该纸巾售卖机,得到如图6-2所示的类图。其中类State为抽象类,定义了投币、退币、出纸巾等方法接口。类SoldState、SoldOutState、NoQuarterState和HasQuarterState分别对应图6-1中纸巾售卖机的4种状态:售出纸巾、纸巾售完、没有投币、有2元钱。 [Java代码] import java.util.*; interface State { public void insertQuarter(); 投币 public void ejectQuarter(); 退币 public void turnCrank(); 按下“出纸巾”按钮 public void dispense(); 出纸巾 } class TissueMachine { (1) soldOutStater noQuarterState, hasQuarterState, soldState,state; state - soldOutState; int count=0; 纸巾数 public TissueMachine (int numbers) { *实现代码省略* } public State getHasQuarterState() { return hasQuarterState; } public State getNoQuarterState() { return noQuarterState; } public State getSoldState() { return soldState; } public State getSoldOutState() { return soldOutState; } public int getCount() { return count; } 其余代码省略 } class NoQuarterState implements State { TissueMachine tissueMachine; public void insertQuarter() { tissueMachine. setState( (2) ); } 构造方法以及其余代码省略 } class HasQuarterState implements State { TissueMachine tissueMachine; public void ejectQuarter() { tissueMachine.setState( (3) ); } 构造方法以及其余代码省略 } class SoldState implements State { TissueMachine tissueMachine; public void dispense() { if(tissueMachine .getCount()>0) { tissueMachine.setState( (4) ); }else { tissueMachine.setState( (5) ); } } }
问答题
试题五 阅读下列说明和C++代码,将应填入(n)处的字句写在答题纸的对应栏内。 [说明] 某大型商场内安装了多个简易的纸巾售卖机,自动出售2元钱一包的纸巾,且每次仅售出一包纸巾。纸巾售卖机的状态图如图5-1所示。 采用状态(State)模式来实现该纸巾售卖机,得到如图5-2所示的类图。其中类State为抽象类,定义了投币、退币、出纸巾等方法接口。类SoldState、SoldOutState、NoQuarterState和HasQuarterState分别对应图5-1中纸巾售卖机的4种状态:售出纸巾、纸巾售完、没有投币、有2元钱。 [C++代码] #include <iostream> using namespace std; 以下为类的定义部分 class TissueMachine; 类的提前引用 class State { public: virtual void insertQuarter()=0; 投币 virtual void ejectQuarter()=0; 退币 virtual void turnCrank()=0; 按下“出纸巾”按钮 virtual void dispense()=0; 出纸巾 }; *类SoldOutState、NoQuarterState、HasQuarterState、SoldState的定义省略, 每个类中均定义了私有数据成员TissueMachine* tissueMachine;* class TissueMachine { private: (1) *soldOutState, *noQuarterState, *hasQuarterState,*soldState, *state; int count; 纸巾数 public: TissueMachine (int numbers); void setState (State* state); State* getHasQuarterState(); State* getNoQuarterState()j State* getSoldState(); State* getSoldOutState(); int getCount()j 其余代码省略 }; 以下为类的实现部分 void NoQuarterState ::insertQuarter() { tissueMachine->setState( (2) ); } void HasQuarterState ::ejectQuarter() { tissueMachine->setState( (3) ); } void SoldState ::dispense() { if (tissueMachine->getCount()>0) { tissueMachine->setState( (4) ); } else { tissueMachine->setState( (5) ); } } 其余代码省略