问答题【问题1】根据以上说明设计的实体联系图如图2-1所示,请指出读者与图书、书目与读者、书目与图书之间的联系类型。
问答题【问题1】
转换图中缺少哪3条数据流?请指明每条数据流的名称、起点和终点。
问答题阅读下列说明和图,回答下面问题。[说明]某学校开发图书管理系统,以记录图书馆藏书及其借出和归还情况,提供给借阅者借阅图书功能,提供给图书馆管理员管理和定期更新图书表功能。主要功能的具体描述如下。(1)处理借阅。借阅者要借阅图书时,系统必须对其身份(借阅者ID)进行检查。通过与教务处维护的学生数据库、人事处维护的职工数据库中的数据进行比对,以验证借阅者ID是否合法,若合法,则检查借阅者在逾期未还图书表中是否有逾期未还图书,以及罚金表中的罚金是否超过限额。如果没有逾期未还图书并且罚金未超过限额,则允许借阅图书,更新图书表,并将借阅的图书存入借出图书表。借阅者归还所借图书时,先由图书馆管理员检查图书是否缺失或损坏,若是,则对借阅者处以相应罚金并存入罚金表;然后,检查所还图书是否逾期,若是,执行“处理逾期”操作;最后,更新图书表,删除借出图书表中的相应记录。(2)维护图书。图书馆管理员查询图书信息;在新进图书时录入图书信息,存入图书表;在图书丢失或损坏严重时,从图书表中删除该图书记录。(3)处理逾期。系统在每周一统计逾期未还图书,逾期未还的图书按规则计算罚金,并记入罚金表,给有逾期未还图书的借阅者发送提醒消息。借阅者在借阅和归还图书时,若罚金超过限额,管理员收取罚金,并更新罚金表中的罚金额度。现采用结构化方法对该图书管理系统进行分析与设计,获得如图1所示的顶层数据流图和如图2所示的0层数据流图。图1顶层数据流图图20层数据流图
问答题【问题2】
(1)用SQL定义“职员”关系模式,请在空缺处填入正确的内容。
Create Table职员(职员号CHAR(5){{U}} (a) {{/U}},
职员姓名 CHAR(8),
月工资 NUMBER(4),
部门号 CHAR(1),
办公室 CHAR(20),
电话 CHAR(8),
{{U}} (b) {{/U}} (部门号),
CHECK(月工资>=1000 AND 月工资<=8000));
(2)针对人数大于等于2的部门创建视图D_View(Dept,D_num,D_Totals,D_AvgPay),其中,Dept为部门号,D_Num为部门人数,D_Totals为工资总数,D_AvgPay为平均工资,请在空缺处填入正确的内容。
Create View D_View(Dept,D_num,D_Totals,D_AvgPay)As
(Select 部门号,{{U}} (c) {{/U}}
from 职员
{{U}} (d) {{/U}} count(*)>=2 WHERE 部门号 IS NOT NULL):
问答题阅读下列说明和Java代码,将应填入(n)处的字句写在对应栏内。[说明]某软件公司现欲开发一款飞机飞行模拟系统,该系统主要模拟不同种类飞机的飞行特征与起飞特征。需要模拟的飞机种类及其特征如表10.5所示。表10.5飞机种类的特性飞机种类起飞特征飞行特征直升机(Helicopter)垂直起飞(VerticalTakeOff)亚音速飞行(SubSonicFly)客机(AirPlane)长距离起飞(LongDistanceTakeOff)亚音速飞行(SubSonicFly)歼击机(Fighter)长距离起飞(LongDistanceTakeOff)超音速飞行(SuperSonicFly)鹞式战斗机(Harrier)垂直起飞(VerticaITakeOff)超音速飞行(SuperSonicFly)为支持将来模拟更多种类的飞机,采用策略设计模式(Strategy)设计的类图如图10.12示。图10.12中,AirCraft为抽象类,描述了抽象的飞机,而类Helicopter、AirPlane、Fighter和Harrier分别描述具体的飞机种类,方法fly()和takeOff()分别表示不同飞机都具有飞行特征和起飞特征类FlyBehavior与TakeOffBehavior为抽象类,分别用于表示抽象的飞行为与起飞行为;类SubSonicFly与SuperSonicFly分别描述亚音速飞行和超音速飞行的行为;类VerticalTakeOff与LongDistanceTakeOff分别描述垂直起飞与长距离起飞的行为。[Java代码]interfaceFlyBehaviorpublicvoidfly();;classSubSonicFlyimplementsFlyBehaviorpublicvoidfly()(System.out.println("亚音速飞行!");;classSuperSonicFlyimplementsFlyBehaviorpublicvoidfly()(System.out.println("超音速飞行!");;interfaceTakeOffBehaviorpublicvoidtakeOff();;classVerticalTakeOffimplementsTakeOffBehaviorpublicvoidtakeOff()(System.out.println("垂直起飞!");;classLongDistanceTakeOffimplementsTakeOffBehaviorpublicvoidtakeOff()System.out.println("长距离起飞!");;abstractclassAirCraftprotected(1);protected(2);publicvoidfly()((3);)publicvoidtakeOff()(4);;classHelicopter(5)AirCraftpublicHelicopter()flyBehavior=new(6);takeOffBehavior=new(7);;//其他代码省略
问答题【问题3】
将数据流图如图1-11(加工4的细化图)所示中的数据流补充完整,并指明加工名称、数据流的方向(输入/输出)和数据流名称。
问答题设有部门管理系统,需要对部门信息、部门职工信息、产品的信息和制造商信息进行管理。 已知部门信息(Dept):部门号(DNO)、部门经理(DMan);部门职工信息(worker):职工号(WNo)、职工姓名(WName)、家庭住址(WAdd);产品的信息(Product):产品号(PNO)、产品名(PName)、价格(PPrice)、产品型号(PType);制造商信息(Maker):制造商号(MNO)、制造商名称(MName)、制造商地址(MAdd)。 其中的规则为: Ⅰ.一个职工属于一个部门,一个部门有多个职工; Ⅱ.一个部门可销售多种产品,一种产品可被多个部门销售; Ⅲ.一种产品可被多个制造商生产,一个制造商可生产多种产品。 请针对以上描述,完成下列设计内容: ①构建该部门管理系统的ER图。 ②根据构建的ER图,设计满足3NF的关系模式,并标出每个关系模式的主码和外码。
问答题阅读下列说明,回答下面问题。[说明]某物流公司为了整合上游供应商与下游客户,缩短物流过程,降低产品库存,需要构建一个信息系统以方便管理其业务运作活动。[需求分析结果](1)物流公司包含若干部门,部门信息包括部门号、部门名称、经理、电话和邮箱。一个部门可以有多名员工处理部门的日常事务,每名员工只能在一个部门工作。每个部门有一名经理,只需负责管理本部门的事务和人员。(2)员工信息包括员工号、姓名、职位、电话号码和工资,其中,职位包括:经理、业务员等。业务员根据托运申请负责安排承运货物事宜,如装货时间、到达时间等。一个业务员可以安排多个托运申请,但一个托运申请只由一个业务员处理。(3)客户信息包括客户号、单位名称、通信地址、所属省份、联系人、联系电话、银行账号,其中,客户号唯一标识客户信息的每一个元组。每当客户要进行货物托运时,先要提出货物托运申请。托运申请信息包括申请号、客户号、货物名称、数量、运费、出发地、目的地。其中,一个申请号对应唯一的一个托运申请;一个客户可以有多个货物托运申请,但一个托运申请对应唯一的一个客户号。[概念模型设计]根据需求阶段收集的信息,设计的实体联系图和关系模式(不完整)如图所示。实体联系图[关系模式设计]部门(部门号,部门名称,经理,电话,邮箱)员工(员工号,姓名,职位,电话号码,工资,(a))客户((b),单位名称,通信地址,所属省份,联系人,联系电话,银行账号)托运申请((c),货物名称,数量,运费,出发地,目的地)安排承运((d),装货时间,到达时间,业务员)
问答题【问题2】
数据流图1-8中缺少3条数据流,请指出这3条数据流的起点和终点。
问答题阅读下列说明和图,回答问题1至问题3,将解答填入对应栏内。[说明]希赛公司拟开发一个销售管理系统,其主要功能描述如下:(1)接受客户订单,检查库存货物是否满足订单要求。如果满足,进行供货处理,即修改库存记录文件,给库房开具备货单并且保留客户订单至订单记录文件;否则进行缺货处理,即将缺货订单录入缺货记录文件。(2)根据缺货记录文件进行缺货统计,将缺货通知单发给采购部门。(3)根据采购部门提供的进货通知单进行进货处理,即修改库存记录文件,并从缺货记录文件中取出缺货订单进行供货处理。(4)根据保留的客户订单进行销售统计,打印统计报表给经理。现采用结构化方法对销售管理系统进行分析与设计,获得如图15-17所示的顶层数据流图和如图15-18所示的第0层数据流图。
问答题阅读下列说明和图,回答下面问题。[说明]某学校开发图书管理系统,以记录图书馆藏图书及其借出和归还情况,提供给借阅者借阅图书功能,提供给图书馆管理员管理和定期更新图书表功能,主要功能的具体描述如下。(1)处理借阅。借阅者要借阅图书时,系统必须对其身份(借阅者ID)进行检查。通过与教务处维护的学生数据库、人事处维护的职工数据库中的数据进行比对,以验证借阅者ID是否合法,若合法,则检查借阅者在逾期未还图书表中是否有逾期未还图书,以及罚金表中的罚金是否超过限额。如果没有逾期未还图书并且罚金未超过限额,则允许借阅图书,更新图书表,并将借阅的图书存入借出图书表,借阅者归还所借图书时,先由图书馆管理员检查图书是否缺失或损坏,若是,则对借阅者处以相应罚金并存入罚金表;然后,检查所还图书是否逾期,若是,执行“处理逾期”操作;最后,更新图书表,删除借出图书表中的相应记录。(2)维护图书。图书馆管理员查询图书信息;在新进图书时录入图书信息,存入图书表;在图书丢失或损坏严重时,从图书表中删除该图书记录。(3)处理逾期。系统在每周一统计逾期未还图书,逾期未还的图书按规则计算罚金,并记入罚金表,并给有逾期未还图书的借阅者发送提醒消息。借阅者在借阅和归还图书时,若罚金超过限额,管理员收取罚金,并更新罚金表中的罚金额度。现采用结构化方法对该图书管理系统进行分析与设计,获得如图1所示的顶层数据流图和图2所示的0层数据流图。图1顶层数据流图图20层数据流图
问答题【问题1】
经过进一步分析,设计人员决定定义一个类Items_on_loan,以表示类Book和ED的共有属性和方法。请采用图3-3中属性和方法的名称给出类Items_on_loan应该具有的属性和方法 (注意:不同名称的属性和方法表示不同的含义,如CD中的composer与Book中的author无任何关系)。
问答题阅读下列说明和C语言代码,将应填入空格处的字句写在下面。
[说明]
设某一机器由n个部件组成,每一个部件都可以从m个不同的供应商处购得。供应商j供应的部件i具有重量W
ij
和价格C
ij
。设计一个算法,求解总价格不超过上限cc的最小重量的机器组成。
采用回溯法来求解该问题:
首先定义解空间。解空间由长度为n的向量组成,其中每个分量取值来自集合{1,2,…,m},将解空间用树形结构表示。
接着从根节点开始,以深度优先的方式搜索整个解空间。从根节点开始,根节点成为活节点,同时也成为当前的扩展节点。向纵深方向考虑第一个部件从第一个供应商处购买,得到一个新节点。判断当前的机器价格(C
11
)是否超过上限(cc),重量(W
11
)是否比当前已知的解(最小重量)大,若为是,应回溯至最近的一个活节点;若为否,则该新节点成为活节点,同时也成为当前的扩展节点,根节点不再是扩展节点。继续向纵深方向考虑第二个部件从第一个供应商处购买,得到一个新节点。同样判断当前的机器价格(C
11
+C
21
)是否超过上限(cc),重量(W
11
+W
21
)是否比当前已知的解(最小重量)大。若为是,应回溯至最近的一个活节点;若为否,则该新节点成为活节点,同时也成为当前的扩展节点,原来的节点不再是扩展节点。以这种方式递归地在解空间中搜索,直到找到所要求的解或者解空间中已无活节点为止。
[C语言代码]
下面是该算法的C语言实现。
(1)变量说明
●n:机器的部件数。
●m:供应商数。
●cc:价格上限。
●w[][]:二维数组,w[i][j]表示第j个供应商供应的第i个部件的重量。
●c[][]:二维数组,c[i][j]表示第j个供应商供应的第i个部件的价格。
●best1W:满足价格上限约束条件的最小机器重量。
●bestC:最小重量机器的价格。
●bestX[]:最优解,一维数组,bestX[i]表示第i个部件来自哪个供应商。
●cw:搜索过程中机器的重量。
●cp:搜索过程中机器的价格。
●x[]:搜索过程中产生的解,x[i]表示第i个部件来自哪个供应商。
●i:当前考虑的部件,从0到n-1。
●j:循环变量。
(2)函数backtrack
int n=3;
int m=3;
int cc=4;
int w[3][3]={{1,2,3},{3,2,1},{2,2,2));
int c[3][3]={{1,2,3},{3,2,1},{2,2,2}};
int bestW=8;
int bestC=0;
int bestX[3]={0,0,0};
int cw=0;
int cp=0;
int x[3]={0,0,0};
int backtrack(int i){
int j=0;
int found=0;
if(i>n-1){/*得到问题解*/
bestW=cw;
bestC=cp;
for(j=0;j<n;j++)(
______;
}
return 1;
}
if(cp<=cc){/*有解*/
found=1;
}
for(j=0;______;j++){
/*第i个部件从第j个供应商购买*/
______;
cw=cw+w[i][j];
cp=cp+c[i][j];
if(cp<=cc}
}
/*回溯*/
cw=cw-w[i][j];
______;
}
return found;
}
问答题【说明】设M叉树采用列表法表示,即每棵子树对应一个列表,列表的结构为:子树根节点的值部分(设为一个字符)和用“()”,括起来的各子树的列表(如有子树的话),各子列表间用“,”分隔。例如下面的三叉树可用列表a(b(c,d),e,f(g,h,i))表示。本程序输入列表,生成一棵M叉树,并由M叉树输出列表。假定输入无错误。【函数5-8】#inelude<stdio.h>#include<stdlib.h>#defineM3typedefstructnode{charval;streetnode*subTree[M];}NODE;charbuf[255],*six=buf;NODE*d=NULL;NODE*makeTree()/*由列表生成M叉树*/{intk;NODE*s;s={{U}}(1){{/U}};s->val=*six++;for(k=0;k<M;k++)s->subTree[k]=NULL;if(*str=='('){k=0;do{six++;s->subTree[k]={{U}}(2){{/U}};if(*str==')'){six++;break;}k=k+1;}while({{U}}(3){{/U}});}returns;}voidwalkTree(NODE*t)/*由M叉数输出列表*/{inti;if(t!=NULL){{{U}}(4){{/U}};if(t->subTree[0]==NULL)return;putchar('(');for(i=0;i<M;i++){{{U}}(5){{/U}};if(i!=M-1}putchax(')');}}voidmain(){prinff("Enterexp:");scanf("%s",str);d=makeTree();walkTree(d);putchaW',n');}
问答题阅读以下说明和图,回答问题1至问题3,将解答填入对应栏内。[说明]某房屋租赁公司欲建立一个房屋租赁服务系统,统一管理房主和租赁者的信息,从而快速地提供租赁服务。该系统具有以下功能。(1)登记房主信息。对于每名房主,系统需登记其姓名、住址和联系电话,并将这些信息写入房主信息文件。(2)登记房屋信息。所有在系统中登记的房屋都有一个唯一的识别号(对于新增加的房屋,系统会自动为其分配一个识别号)。除此之外,还需登记该房屋的地址、房型(如平房、带阳台的楼房、独立式住宅等)、最多能够容纳的房客数、租金及房屋状态(待租赁、已出租)。这些信息都保存在房屋信息文件中。一名房主可以在系统中登记多个待租赁的房屋。(3)登记租赁者信息。所有想通过该系统租赁房屋的租赁者,必须首先在系统中登记个人信息,包括:姓名、住址、电话号码、出生年月和性别。这些信息都保存在租赁者信息文件中。(4)租赁房屋。已经登记在系统中的租赁者,可以得到一份系统提供的待租赁房屋列表。一旦租赁者从中找到合适的房屋,就可以提出看房请求。系统会安排租赁者与房主见面。对于每次看房,系统会生成一条看房记录并将其写入看房记录文件中。(5)收取手续费。房主登记完房屋后,系统会生成一份费用单,房主根据费用单交纳相应的费用。(6)变更房屋状态。当租赁者与房主达成租房或退房协议后,房主向系统提交变更房屋状态的请求。系统将根据房主的请求,修改房屋信息文件。图15-11和图15-12分别给出了该系统的顶层数据流图和第0层数据流图。
问答题阅读下列说明和流程图(如图17-1所示),回答问题,把解答填入对应栏内。[说明]本流程图描述了某子程序的处理流程,现要求用白盒测试法对子程序进行测试。[问题]根据判定覆盖、条件覆盖、判定/条件覆盖、多重条件覆盖(条件组合覆盖)和路径覆盖5种覆盖标准,从供选择的答案中分别找出满足相应覆盖标准的最小的测试数据组(用①~⑩表示)。供选择的答案如下①a=5,b=1②a=5,b=-1③a=5,b=1④a=5,b=1a=-5,b=-1a=0,b=-1⑤a=5,b=-1⑥a=5,b=1a=5,b=1a=0,b=0a=-5,b=-1a=-5,b=-1⑦a=5,b=1⑧a=5,b=1a=0,b=1a=0,b=-1a=0,b=-1a=5,b=1a=-5,b=1a=5,b=-1⑨a=5,b=1⑩d=5,b=1a=0,b=-1a=5,b=0a=0,b=1a=5,b=-1a=-5,b=1a=0,b=1a=-5,b=-1a=0,b=0a=0,b=-1a=5,b=1a=-5,b=0a=-5,b=1
问答题【问题2】
依据上述说明中给出的词语,将图3-7中的(1)~(5)处补充完整。
问答题【问题3】
写出子程序B的功能,并顺序写出实现该功能的操作。
问答题阅读下列说明和图,回答下面问题。[说明]某慈善机构欲开发一个募捐系统,已跟踪记录为事业或项目向目标群体进行募捐而组织的集体性活动。该系统的主要功能如下所述。(1)管理志愿者。根据募捐任务给志愿者发送加入邀请、邀请跟进、工作任务;管理志愿者提供的邀请响应、志愿者信息、工作时长、工作结果等。(2)确定募捐需求和收集所募捐赠(资金及物品)。根据需求提出募捐任务、活动请求和捐赠请求,获取所募集的资金和物品。(3)组织募捐活动。根据活动请求,确定活动时间范围。根据活动时间,搜索场馆,即:向场馆发送场馆可用性请求,获得场馆可用性。然后根据活动时间和地点推广募捐活动,根据相应的活动信息举办活动,从募捐机构获取资金并向其发放赠品。获取和处理捐赠,根据捐赠请求,提供所募集的捐赠;处理与捐赠人之间的交互,即:录入捐赠人信息,处理后存入捐赠人信息表;从捐赠人信息表中查询捐赠人信息,向捐赠人发送募捐请求,并将已联系的捐赠人存入已联系的捐赠人表。根据捐赠请求进行募集,募得捐赠后,将捐赠记录存入捐赠表;对捐赠记录进行处理后,存入已处理捐赠表,向捐赠人发送致谢函,根据已联系的捐赠人和捐赠记录进行跟踪,将捐赠跟进情况发送给捐赠人。先采用结构化方法对募捐系统进行分析与设计,获得如图1至图3所示的分层数据流图。图10层数据流图图21层数据流图图32层数据流图
问答题阅读下列说明和C代码,回答下面问题。
[说明]
设有m台完全相同的机器运行n个独立的任务,运行任务i所需要的时间为t
i
,要求确定一个调度方案,使的完成所有任务所需要的时间最短。
假设任务已经按照其运行时间从大到小排序,算法基于最长运行时间作业优先的策略;按顺序先把每个任务分配到一台机器上,然后将剩余的任务一次放入最先空闲的机器。
[C代码]
下面是算法的C语言实现。
(1)常量和变量说明
●m:机器数。
●n:任务数。
●t[]:输入数组,长度为n,其中每个元素表示任务的运行时间,下标从0开始。
●s[][]:二维数组,长度为m*n,下标从0开始,其中元素s[i][j]表示机器i运行的任务j的编号。
●d[]:数组,长度为m其中元素d[i]表示机器i的运行时间,下标从0开始。
●count[]:数组,长度为m,下标从0开始,其中元素count[i]表示机器i运行的任务数。
●i:循环变量。
●i:循环变量。
●k:临时变量。
●max:完成所有任务的时间。
●min:临时变量。
(2)函数schedule
void schedule()
{
int i,j,k max=0;
for(i=0; i<m;i++)
{
d[i]=0;
for(j=0;j<n;j++)
{
s[i][j]=0;
}
}
for(i=0;i<m;i++)
{ //分配前m个任务
s[i][0]=i;
______;
count[i]=1;
}
for(______;i<n;i++)
{ //分配后n-m个任务
int min=d[0];
k=0;
for(j=1;j<m;j++)
{ //确定空闲机器
if(min>d[j])
{
min=d[j];
k=j; //机器k空闲
}
}
______;
count[k]=count[k]+1;
d[k]=d[k]+t[i];
for(i=0;i<m;i++)
{ //确定完成所有任务所需要的时间
if(______)
{
max=d[i];
}
}
}
}