问答题[说明]某时装邮购提供商拟开发订单处理系统,用于处理客户通过电话、传真、邮件或Web站点所下订单。其主要功能如下。(1)增加客户记录。将新客户信息添加到客户文件,并分配一个客户号以备后续使用。(2)查询商品信息。接收客户提交商品信息请求,从商品文件中查询商品的价格和可订购数量等商品信息,返回给客户。(3)增加订单记录。根据客户的订购请求及该客户记录的相关信息,产生订单并添加到订单文件中。(4)产生配货单。根据订单记录产生配货单,并将配货单发送给仓库进行备货;备好货后,发送备货就绪通知。如果现货不足,则需向供应商订货。(5)准备发货单。从订单文件中获取订单记录,从客户文件中获取客户记录,并产生发货单。(6)发货。当收到仓库发送的备货就绪通知后,根据发货单给客户发货:产生装运单并发送给客户。(7)创建客户账单。根据订单文件中的订单记录和客户文件中的客户记录,产生并发送客户账单,同时更新商品文件中的商品数量和订单文件中的订单状态。(8)产生应收账户。根据客户记录和订单文件中的订单信息,产生并发送给财务部门应收账户报表。现采用结构化方法对订单处理系统进行分析与设计,获得如图4.5所示的顶层数据流图和图4.6所示0层数据流图。1.使用说明中的词语,给出图4.5中的实体E1~E3的名称。
问答题【问题2】
请从下面的选项中选择相应的判断逻辑填补【算法5-2】中的“判断条件1”至“判断条件3”。注意,若“判断条件2”的逻辑判断结果为假,就无须对“判断条件3”进行判断。
(a) 字符是括号 (b) 字符是左括号 (c) 字符是右括号 (d) 栈空
(e) 栈不空 (f) 栈顶元素表示的是与当前字符匹配的左括号
(g) 栈顶元素表示的是与当前字符匹配的右括号
问答题【问题1】
请将【算法5-1】和【算法5-2】中(1)至(7)处补充完整。
问答题阅读下列说明,回答下面问题。
[说明]
某单位资料室需要建立一个图书管理系统,初步的需求分析结果如下。
(1)资料室有图书管理员若干名,他们负责已购入图书的编目和借还工作,每名图书管理员的信息包括工号和姓名。
(2)读者可在阅览室读书,也可通过图书流通室借还图书。读者信息包括读者ID、姓名、电话和E-mail,系统为不同读者生成不同的读者ID。
(3)每本书在系统中对应唯一的一条在版编目数据(CIP,以下简称书目),书目的基本信息包括ISBN号、书名、作者、出版商、出版年月,以及本资料室拥有该书的册数(以下简称册数),不同书目的ISBN号不相同。
(4)资料室对于同一书目的图书可拥有多册(本)。图书信息包括图书ID、ISBN号、存放位置、当前状态,每一本书在系统中被赋予唯一的图书ID。
(5)一名读者最多只能借阅10本图书,且每本图书最多只能借两个月。读者借书时需由图书管理员登记读者ID、所借图书ID、借阅时间和应还时间,读者还书时图书管理员在对应的借书信息中记录归还时间。
(6)当某书目的可借出图书的数量为零时,读者可以对其进行预约登记,即记录读者ID、需要借阅的图书的ISBN号、预约时间。
某书目的信息如表1所示,与该书目对应的图书信息如表2所示。
表1 书目信息
书 名
作 者
出版商
ISBN号
出版年月
册 数
经办人
《数据结构》
严蔚敏 吴伟民
清华大学出版社
ISBN7-302-02368-9
1997.4
4
01
表2 图书信息
图书ID
ISBN号
存放位置
状 态
经办人
C832.1
ISBN7-302-02368-9
图书流通室
已借出
01
C832.2
ISBN7-302-02368-9
图书阅览室
不外借
01
C832.3
ISBN7-302-02368-9
图书流通室
未借出
01
C832.4
ISBN7-302-02368-9
图书流通室
已预约
01
系统的主要业务处理如下。
(1)入库管理:图书购进入库时,管理员查询本资料室的书目信息,若该书的书目尚未建立,则由管理员编写该书的书目信息并录入系统,然后编写并录入图书信息;否则,修改该书目的册数,然后编写并录入图书信息。对于进入流通室的书,其初始状态为“未借出”,而送入阅览室的书的状态始终为“不外借”。
(2)借书管理:读者借书时,若有,则由管理员为该读者办理借书手续,并记录该读者的借书信息,同时将借出图书的状态修改为“已借出”。
(3)预约管理:若图书流通室没有读者要借的书,则可为该读者建立预约登记,需要记录读者ID、书的ISBN号、预约时间和预约期限(最长为10天)。一旦其他读者归还这种书,就自动通知该预约读者。系统将自动清除超出预约期限的预约记录并修改相关信息。
(4)还书管理:读者还书时,则记录相应借还信息中的“归还时间”,对于超期归还者,系统自动计算罚金(具体的计算过程此处省略)。系统同时自动查询预约登记表。若存在其他读者预约该书的记录,则将图书的状态修改为“已预约”,并将该图书ID写入相应的预约记录中(系统在清除超出预约期限的记录时解除该图书的“已预约”状态);否则,将该图书的状态修改为“未借出”。
(5)通知处理:对于已到期且未归还的图书,系统通过E-mail自动通知读者;若读者预约的书已到,系统则自动通过E-mail通知该读者来办理借书手续。
问答题【问题2】
如果等级为R的房间每人每天的住宿费为RATE(R),RATE为数组。为使该算法在输出每个候选的房间号RM(J)后,再输出这批散客每天所需的总住宿费DAYRENT(J),图4-5的β所指框中的最后处应增加什么处理?
问答题阅读以下说明和图,根据要求回答下面问题。[说明]某航空公司会员积分系统(CFrequentFlyer)的主要功能描述如下:乘客只要办理该航空公司的会员卡,即可成为普卡会员(CBasic)。随着飞行里程数的积累,可以从普卡会员升级到银卡会员(CSilver)或金卡会员(CGold)。非会员(CNonMember)不能累积里程数。每年年末,系统根据会员在本年度累积的里程数对下一年会员等级进行调整。普卡会员在一年内累积的里程数若满25,000英里但不足50,000英里,则自动升级为银卡会员;若累积的里程数在50,000英里以上,则自动升级为金卡会员。银卡会员在一年内累积的里程数若在50,000英里以上,则自动升级为金卡会员。若一年内没有达到对应级别要求的里程数,则自动降低会员等级。金卡会员一年内累积的里程数若不足25,000英里,则自动降级为普卡会员;若累积的里程数达到25,000英里,但是不足50,000英里,则自动降级为银卡会员。银卡会员一年内累积的里程数若不足25,000英里,则自动降级为普卡会员。采用面向对象方法对会员积分系统进行分析与设计,得到如图1所示的状态图和图2所示的类图。图1某会员积分系统状态图图2某会员积分系统类图
问答题【程序说明】
著名的四色定理指出任何平面区域图均可用4种颜色着色,使相邻区域着不同的颜色。本程序对给定的区域图找出所有可能的不超过4种颜色的着色方案。程序中用1~4表示4种颜色。要着色的N个区域用0~N-1编号,区域相邻关系用adj[][]矩阵表示,矩阵的i行j列的元素为1,表示区域i与区域j相邻:矩阵的i行j列的元素为0,表示区域i与区域j不相邻。数组color[]用来存储着色结果,color[i]的值为区域i所着颜色。
【程序】
#include<stdio.h>
#define N 10
void output(int color[])/*输出一种着色方案*/
{
int i;
for(i=0; i<N; i++)
printf("%4d", color[i]);
pfintf("/n");
}
int back(int *ip,int color[])/*回溯*/
{
int c=4;
while(c==4){
if(*ip<=0)return 0;
--(*ip);
c= {{U}}(1) {{/U}};
color[*ip]=-1;
}
return c;
}
/*检查区域i,对c种颜色的可用性*/
int colorOK(int i, int c, int adj[][N], int color[])
{
int j;
for(j=0; j<i; j++)
if({{U}} (2) {{/U}})return 0;
return 1;
}
/*为区域i选一种可着的颜色*/
int select(int i,int c,int adj[][N], int color[])
int k;
for(k = c; k<=4; k++)
if({{U}} (3) {{/U}})return k;
return 0;
int coloring(int adj[][N])/*寻找各种着色方案*/
{
int color[N], i, c, cnt;
for(i=0; i<N; i++)cotor[i]=-1;
i=c=0;cnt=0;
while(1){
if((c={{U}} (4) {{/U}}==0){
c=back(
if(c==0)return cnt;
}else{
{{U}} (5) {{/U}}; i++;
if(i==N){
output(color);
++cnt;
c=back(
}else c = 0;
}
}
}
void main()
{
int adj[N][N]={
{0,1,0,1,1,1,1,1,1,1},
{1,0,1,1,0,1,1,1,1,0},
{0,1,0,1,0,1,1,0,1,1},
{1,1,1,0,1,1,0,0,1,1},
{1,0,0,1,0,1,0,0,0,0},
{1,1,1,1,1,0,1,0,0,1},
{1,1,1,0,0,1,0,0,1,0},
{1,1,0,0,0,0,0,0,1,1},
{1,1,1,1,0,0,1,1,0,1},
{1,0,1,1,0,1,0,1,1,0}
};
printf("共有%d组解./n",coloring(adj));
}
问答题【问题2】为了记录每种图书或唱碟的历史记录,引入类CirculationHistory,类中存储的信息是如图3-2所示的内容。请采用UML表示法将下列4个类间的关系表示出来。
问答题阅读下列说明和C++代码,将应填入空白处的字句写在答题纸的对应栏内。[说明]某大型商场内安装了多个简易的纸巾售卖机,自动出售2元钱一包的纸巾,且每次仅售出一包纸巾。纸巾售卖机的状态图如图1所示。图1纸巾售卖的状态图采用状态(State)模式来实现该纸巾售卖机,得到如图2所示的类图。其中类State为抽象类,定义了投币、退币、出纸巾等方法接口。类SoldState、SoldOutState、NoQuarterState和HasQuarterState分别对应图1中纸巾售卖机的4种状态:售出纸巾、纸巾售完、没有投币、有2元钱。图2类图[C++代码]#include<iostream>usingnamespacestd;//以下为类的定义部分classTissueMachine;//类的提前引用classState{public:virtualvoidinsertQuarter()=0;//投币virtualvoidejectQuarter()=0;//退币virtualvoidturnCrank()=0;//按下取纸巾按钮virtualvoiddispense()=0;//出纸巾};/*类SoldOutState.NoQuarterState.HasQuarterState.SoldState的定义省略,每个类中均定义了私有数据成员TissueMachine*tissueMachine;*/classTissueMachine{private:______*soldOutState,*noQuarterstate,*hasQuarterstate,*soldState,*state;intcount,//纸巾数public:TissueMaohine(intnumbers);voidsetState(State*state);State*getHasQuarterState();State*getNoQuarterState();State*getSoldState();State*getSoldOutState();intgetCount();//其余代码省略};//以下为类的实现部分voidNoQuarterState::insertQuarter(){tissueMachine->setState(______);}voidHasQuarterState""ejectQuarter(){tissueMachine->setState(______);}voidSoldState::dispense(){if(tissueMachine->getCount()>0){tissueMachine->setState(______);}else{tissueMachine->setState(______);}}//其余代码省略
问答题【说明】散列文件的存储单位称为桶(BUCKET)。假如一个桶能存放m个记录,当桶中已有m个同义词(散列函数值相同)的记录时,存放第m+1个同义词会发生“溢出”。此时需要将第m+1个同义词存放到另一个称为“溢出桶”的桶中。相对地,称存放前m个同义词的桶为“基桶”。溢出桶和基桶大小相同,用指针链接。查找指定元素记录时,首先在基桶中查找。若找到,则成功返回,否则沿指针到溢出桶中进行查找。例如:设散列函数为Hash(Key)=Keymod7,记录的关键字序列为15,14,21,87,96,293,35,24,149,19,63,16,103,77,5,153,145,356,51,68,705,453,建立的散列文件内容如图5-3所示。为简化起见,散列文件的存储单位以内存单元表示。函数InsertToHashTable(intNewElemKey)的功能是;若新元素NewElemKey正确插入散列文件中,则返回值1;否则返回值0。采用的散列函数为Hash(NewElemKey)=NewElemKey%P,其中P为设定的基桶数目。函数中使用的预定义符号如下:#defineNULLKEY-1/*散列桶的空闲单元标识*/#defineP7/*散列文件中基桶的数目*/#defineITEMS3/*基桶和溢出桶的容量*/typedefstruetBucketNode{/*基桶和溢出桶的类型定义*/intKeyData[ITEMS];structBucketNode*Link;}BUCKET;BUCKETBucket[P];/*基桶空间定义*/【函数5-3】intInsertToHashTable(intNewElemKey){/*将元素NewElemKey插入散列桶中,若插入成功则返回0,否则返回-1*//*设插入第一个元素前基桶的所有KeyData[],Link域已分别初始化为NULLKEY、NULL*/intIndex;/*基桶编号*/inti,k'BUCKET*s,*front,*t;{{U}}(1){{/U}};for(i=0;i<ITEMS;i++)/*在基桶查找空闲单元,若找到则将元素存入*/if(Bucket[Index].KeyData[i]==NULLKEY){Bucket[Index].KeyData[i]=NewElemKey;break;}if({{U}}(2){{/U}})return0;/*若基桶已满,则在溢出桶中查找空闲单元,若找不到则申请新的溢出桶*/{{U}}(3){{/U}};t=Bucket[Index].Link;if(t!=NULL){/*有溢出桶*/while(t!=NULL){for(k=0;k<ITEMS;k++)if(t->KeyData[k]==NULLKEY){/*在溢出桶链表中找到空闲单元*/t->KeyData[k]=NewElemKey;break;}/*if*/front=t;if({{U}}(4){{/U}})t=t->Link;elsebreak;}/*while*/}/*if*/if({{U}}(5){{/U}}){/*申请新溢出桶并将元素存入*/s=(BUCKET*)malloc(sizeof(BUCKET));if(!s)retum-1;s->Link=NULL;for(k=0;k<ITEMS;k++)s->KeyData[k]=NULLKEY;s->KeyData[0]=NewElemKey;{{U}}(6){{/U}};}/*if*/return0;}/*InsertToHashTable*/
问答题【问题1】 假设当前该旅馆各个房间的情况如表4-3所示。 {{B}}表4-3 旅馆各房间情况{{/B}}
序号1
ROOM
RANK
NBED
STATUS
1
101
3
4
0
2
102
3
4
1
3
201
2
3
0
4
202
2
4
1
5
301
1
6
0 当输入M=4,R=0时,该算法的输出是什么?
问答题阅读下列说明,回答问题。[说明]某地区举行篮球比赛,需要开发一个比赛信息管理系统来记录比赛的相关信息。[需求分析结果](1)登记参赛球队的信息。记录球队的名称、代表地区、成立时间等信息。系统记录球队每个队员的姓名、年龄、身高、体重等信息。每个球队有一个教练负责管理球队,一个教练仅负责一个球队。系统记录教练的姓名、年龄等信息。(2)安排球队的训练信息。比赛组织者为球队提供了若干个场地,供球队进行适应性训练。系统记录现有的场地信息,包括:场地名称、场地规模、位置等信息。系统可为每个球队安排不同的训练场地,如表7.15所示,系统记录训练场地安排的信息。表7.15训练安排表球队名称场地名称训练时间解放军一号球场2008-06-0914:00-18:00解放军一号球场2008-06-1209:00-12:00解放军二号球场2008-06-1114:00-18:00山西一号球场2008-06-1009:00-12:00(3)安排比赛。该赛事聘请专职裁判,每场比赛只安排一个裁判。系统记录裁判的姓名、年龄、级别等信息。系统按照一定的规则,首先分组,然后根据球队、场地和裁判情况,安排比赛(每场比赛的对阵双方分别称为甲队和乙队)。记录参赛球队名称、比赛时间、比分、比赛场地等信息,如表7.16所示。表7.16比赛安排表A组:甲队——乙队场地名称比赛时间裁判比分解放军——北京一号球场2008-06-1715:00李大明天津——山西一号球场2008-06-1717:00胡学海B组:甲队——乙队场地名称比赛时间裁判比分上海——安徽二号球场2008-06-1715:00丁鸿甲山东——辽宁二号球场2008-06-1719:00郭爱琪(4)所有球员、教练和裁判可能表出现重名情况。[概念模型设计]根据需求阶段收集的信息,设计的实体联系图和关系模式(不完整)如下。(1)实体联系图(如图7.8所示)(2)关系模式教练(教练编号,姓名,年龄)队员(队员编号,姓名,年龄,身高,体重,(a))球队(球队名称,代表地区,成立时间,(b))场地(场地名称,场地规模,位置)训练记录(c))裁判(裁判编号,姓名,年龄,级别)比赛记录((d))1.根据问题描述,补充联系及其类型,完善实体联系图7.8。(联系及其类型的书写格式参照教练与球队之间的联系描述,联系名称也可使用联系1、联系2、…)
问答题【问题4】用面向对象方法设计的类中,有一些类的对象是需要持久存储的,这样的类一般需要映射到关系数据库模式中。请指出图1-13中哪些类需要做这样的映射。
问答题阅读下列说明和图,回答下面问题。[说明]某会议策划公司为了方便客户,便于开展和管理各项业务活动,需要构建一个基于网络的会议预定系统。[需求分析]1.会议策划公司设有受理部、策划部和其他部门。部门信息包括部门号、部门名称、部门主管、电话和邮箱号。每个部门有多名员工处理部门的日常事务,每名员工只能在一个部门工作。每个部门有一名主管负责管理本部门的事务和人员。2.员工信息包括员工号、姓名、部门号、职位、联系方式和工资,其中,职位包括主管、业务员、策划员等。业务员负责受理会议申请。若申请符合公司规定,则置受理标志并填写业务员的员工号。策划部主管为已受理的会议申请制定策划任务,包括策划内容、参与人数、要求完成时间等。一个已受理的会议申请对应一个策划任务,一个策划任务只对应一个已受理的会议申请,但一个策划任务可由多名策划员参与执行,且一名策划员可以参与多项策划任务。3.客户信息包括客户号、单位名称、通信地址、所属省份、联系人、联系电话、银行账号。其中,一个客户号唯一标识一个客户。一个客户可以提交多个会议申请,但一个会议申请对应唯一的一个客户号,4.会议申请信息包括申请号、开会日期、会议地点、持续天数、会议人数、预算费用、会议类型、酒店要求、会议室要求、客房类型、客房数、联系人、联系方式、受理标志和业务员的员工号等。客房类型有豪华套房、普通套房、标准间、三人间等,且申请号和客房类型决定客房数。[概念模型设计]根据需求阶段收集的信息,设计的实体联系图和关系模式(不完整)如图所示。实体联系图[关系模式设计]部门(部门号,部门名称,主管,电话,邮箱号)员工(员工号,姓名,______,联系方式,工资)客户(客户号,单位名称,通信地址,所属省份,联系人,联系电话,银行账号)会议申请(______,开会日期,会议地点,持续天数,会议人数,预算费用,会议类型,酒店要求,会议室要求,客房数,联系人,联系方式,受理标志,员工号)策划任务(______,策划内容,参与人数,要求完成时间)执行策划(______,实际完成时间)
问答题阅读以下说明,根据要求回答下面问题。[说明]某快递公司为了方便管理公司物品运送的各项业务活动,需要构建一个物品运送信息管理系统。[需求分析结果](1)快递公司有多个分公司,分公司信息包括分公司编号、名称、经理、办公电话和地址。每个分公司可以有多名员工处理分公司的日常业务,每名员工只能在一个分公司工作。每个分公司由一名经理负责管理分公司的业务和员工,系统需要记录每个经理的任职时间。(2)员工信息包括员工号、姓名、岗位、薪资、手机号和家庭地址。其中,员工号唯一标识员工信息的每一个元组。岗位包括经理、调度员、业务员等。业务员根据客户提交的快件申请单进行快件受理事宜,一个业务员可以受理多个客户的快件申请,一个快件申请只能由一个业务员受理。调度员根据已受理的申请单安排快件的承运事宜,例如:执行承运的业务员、运达时间等。一个业务员可以执行调度员安排的多个快件的承运业务。(3)客户信息包括客户号、单位名称、通信地址、所属省份、联系人、联系电话、银行账号。其中,客户号唯一标识客户信息的每一个元组。当客户要寄快件时,先要提交快件申请单,申请号由系统自动生成。快件申请信息包括申请号、客户号、发件人、发件人电话、快件名称、运费、发出地、收件人、收件人电话、收件地址。其中,一个申请号对应唯一的一个快件申请,一个客户可以提交多个快件申请,但一个快件申请由唯一的一个客户提交。[概念模型设计]根据需求阶段收集的信息,设计的实体联系图(下图)和关系模式(不完整)如下:某物品运送信息管理系统实体联系图(不完整)[关系模式设计]分公司(分公司编号,名称,经理,办公电话,地址)员工(员工号,姓名,(a),岗位,薪资,手机号,家庭地址)客户(客户号,单位名称,通信地址,所属省份,联系人,联系电话,银行账号)申请单((b),发件人,发件人电话,发件人地址,快件名称,运费,收件人,收件人电话,收件地址,受理标志,业务员)安排承运((c),实际完成时间,调度员)
问答题【问题3】
根据系统功能和数据流图填充下列数据字典条目中的(1)和(2):
查询请求信息=[查询读者请求信息|查询图书请求信息]
读者情况=读者号+姓名+所在单位+{借书情况}
管理工作请求单={{U}} (1) {{/U}}
入库单={{U}} (2) {{/U}}
某企业职工和部门的关系模式如下所示,其中部门负责人也是一个职工。职工和部门关系的外键分别是 (12) 。 职工(职工号,姓名,年龄,月工资,部门号,电话,办公室) 部门(部门号,部门名,负责人代码,任职时间) 查询每个部门中月工资最高的“职工号”的SQL查询语句如下: select 职工号 from 职工 as E where 月工资=(select Max(月工资) from 职工 as M (13) )。
假设有职工EMP(职工号,姓名,性别,部门号,职务,进单位时间,电话),职务JOB(职务,月薪)和部门DEPT(部门号,部门名称,部门电话,负责人)实体集。一个职务可以由多个职工担任,但一个职工只能担任一个职务,并属于一个部门,部门负责人是一个职工。如图6-2所示的a、b处的实体名分别为(30);图中a、b之间为(31)联系。
采用面向对象开发方法时,对象是系统运行的基本实体。以下关于对象的叙述中,正确的是______。
数字签名是 (1) ,数字摘要(也称为数字指纹)是指 (2) 。
