问答题 阅读以下说明和图,回答问题1和问题2,将答案写在对应栏内。
【说明】
某教学管理系统的用户是教学管理人员、教师和学生。系统主要提供学生选课管理和学生成绩管理两方面的功能。
(1)学生选修课管理
主要功能是管理新学期开始时,学生对选修的课程进行选课注册工作。新学期开始后的前两周为学生试听、选课注册时间;允许校内各院系学生跨专业跨年级选修课程;学生可以在校园网的任何一个终端进行选课。
①新学期选修课程表生成:各学院教学管理人员在新学期开始前,将准备开设的选修课程名称、课程代码、总课时、上课时间、学分、任课教师和上课教室录入系统,供学生选课使用。新学期开学两周后,系统自动将实际选课学生少于10人的课程停开,并删除该课程;教学管理人员打印学生选课注册名单和开课通知书,送交有关部门和任课教师。
②学生选课注册:新学期开学前两周为学生试听、选课注册时间,并允许改变或取消注册申请。学生调用待选课程表,系统显示课程名、课程代码、任课教师、上课时间、总课时、上课教室、学分和本课程己选修人数。学生所选几门课程在上课时间上不能冲突:若一门课程实际选课学生已达到40人时,停止选课。当学生退出系统时,系统提示该学生所选的几门课程、任课教师、上课时间、教室、学分和学分总计。
③选修课程查询:选修课程表信息查询,用户是教师、学生和教学管理人员。系统显示课程名、课程代码、任课教师、上课时间、总课时、上课教室、学分和本课程已选修人数。查询关键词可为学院名称、专业、授课教师等。
学生选课情况查询:教师和教学管理人员可以查看学生的选课情况。查询关键词可以为学生姓名(学号)、课程名称(课程代码)、授课教师等。学生只能查自己所选课程内容,不允许查其他同学选课情况。
教师简历查询:用户是学生、教师和教学管理人员。查询关键词可为教师姓名、性别、职称、年龄等单关键词或组合关键词。
④信息统计与报表生成:各学院教学管理人员对学生选课注册信息进行统计(按课程、专业等),打印汇总报表。
⑤把学生选课注册信息传送到财务管理系统,计算学生应交纳的费用。 (2)学生成绩管理
①学生考试成绩录入:各学院教学管理人员将学生考试成绩录入系统。录入学生成绩时,系统自动检查财务系统传来的选课交费信息,核对该学生是否已经交纳本门课程的费用,没有交纳费用者,不给成绩。
②成绩查询;教师和教学管理人员可查询学生各门课程的成绩。查询关键词可为学生姓名(学号),课程名(课程代码)等。学生只能查自己各门课程的成绩,不允许查其他同学成绩。
③成绩汇总与报表生成:教学管理人员对学生考试成绩信息进行统计(按学生、课程、专业等),打印汇总报表。向学校教务管理系统发送汇总信息表格等,不反馈信息。
问答题【说明】当一元多项式aixi中有许多系数为零时,可用一个单链表来存储,每个节点存储一个非零项的指数和对应系数。为了便于进行运算,用带头节点的单链表存储,头节点中存储多项式中的非零项数,且各节点按指数递减顺序存储。例如:多项式8x5-2x2+7的存储结构为:函数中使用的预定义符号如下:#defineEPSIle-6structNode(/*多项式中的一项*/doublec;/*系数*/inte;/*指数*/structNode*next;;typedefstruct/*多项式头节点*/intn;/*多项式不为零的项数*/structNode*head;POLY;【函数】voidDel(POLY*C,structNode*p)/*若p是空指针则删除头节点,否则删除p节点的后继*/structNode*t;/*C是空指针或C没有节点*/if(C==NULL||C->head==NULL)return;if((1))/*删除头节点*/t=C->head;C->head=t->next;return;/*if*/t=p->next;p->next=t->next;;/*Del*/voidInsert(POLY*C,structNode*pC)/*将pC节点按指数降序插入到多项式C中*//*若C中存在pC对应的指数项,则将系数相加;若其结果为零,则删除该节点*/structNode*t,*tp;/*pC为空指针或其系数近似为零*/if(pC==NULL||fabs(pC->c)<EPSI)return;if(C->head==NULL)/*若C为空,作为头节点插入*/C->head=pC;pC->next=NULL;C->n++;return;/*if*//*若pC的指数比头节点的还大,插入到头节点之前*/if(pC->e>C->head->e)(2);C->head=pC;C->n++;return;/*if*/(3);t=C->head;while(t!=NULL)if(t->e>pC->e)tp=t;t=t->next;elseif(t->e==pC->e)/*C中已经存在该幂次项*/t->c+=pC->c;/*系数相加*/if(fabs(t->c)<EPSI)/*系数之和为零*/(4);/*删除对应节点*/C->n--;(5);elset=NULL;/*C中已经不存在该幂次项*//*while*/if(t==NULL)/*适当位置插入*/pC->next=tp->next;tp->next=pC;C->n++;/*if*/;/*Insert*/
问答题【说明】某超市的销售业务由一个销售业务管理系统进行管理,该系统每完成一次交易都需要提供顾客发票,其格式见表6所示。对于这样一个销售业务管理系统,分别给出了以下两种关系数据库的设计(下划线表示主关键字)设计一:顾客Customer(顾客代码Cno,姓名name,住址address,联系电话phone)收银员Salesman(收银员代码Sno,身份证号idno,姓名name,住址address,联系电话phone)商品Merchandise(商品代码Mno,商品名称Mname,价格price)发票Invoice(发票号码Ino,交易日期Idate,顾客代码Cno,收银员代码Sno,商品代码Mno,单价unitpfice,数量amount)设计二:顾客Customer(顾客代码Cno,姓名name,住址address,联系电话phone)收银员Salesman(收银员代码Sno,身份证号idno,姓名name,住址address,联系电话phone)商品Memhandise(商品代码Mno,商品名称Mname,价格price)发票Ivoice(发票号码Ino,交易日期Idate,顾客代码Cno,收银员代码Sno)发票明细Invoicedetail(发票号码Ino,商品代码Mno,单价unitprice,数量amount)
问答题【说明】某考务处理系统具有以下功能:(1)输入报名单;(2)自动编制准考证号;(3)输出准考证;(4)输入成绩清单;(5)输出成绩通知单;(6)输出成绩分布表;(7)输入合格标准、输出录取通知单;(8)试题难度分析,并输出试题难度分析表。这里给出了实现上述要求的部分不完整的数据流图,其中部分数据流的组成如下所示。报名单=报名号+姓名+通信地址考生名册=报名号+准考证号+姓名+通信地址成绩册=准考证号+(课程号+成绩)(其中{W}表示W重复多次)准考证=报名号+姓名+准考证号【问题1】指出0层图中可以删去的部分。【问题2】在加工1子图中将遗漏的数据流添加在答题纸上。【问题3】加工2子图分解成如图所示的4个子加工及相关的文件(即数据存储)。试在此基础上将相关的DFD成份添加在答题纸上,以完成该加工子图。
问答题【说明】 中国教育科研网受理了许多用户(高校和研究机构)中请在指定IP上开设网络访问业务。网络访问包括国内流量和国际流量。教育科研网管理中心保存了网络访问用户档案和网络访问业务档案。 网络访问用户档案的记录格式为: 用户编码 用户名 用户地址 网络访问业务档案的记录格式为: IP地址 用户编码 国内流量许可标志 国际流量许可标志 用户每次上网流量的计费数据都自动地记录在管理中心的服务器上。计费数据的记录格式为: 日期 IP地址 受访问的IP地址 访问开始时间 持续时间 管理中心为了用计算机自动处理流量收费以提高工作效率,开发计费管理系统。该系统每月能为每个用户打印出网络流量缴费通知单。缴费通知单的记录格式为: IP地址 用户编码 国内流量费用 国际流量费用 总额 【流程图】 下面的流程图描述了该系统的数据处理过程。该系统每天对原始的计费数据进行分类排序,并确定每个网络访问记录的访问类型(本地/国内/国际),冉根据流量费用单价文件,算出每个记录应收取的费用。因此,形成的日计费文件中增加了两个数据项:访问类型和话费。该系统每日对日计费文件进行累计(按IP地址和访问类型,对该类型的费用进行累计,得到该p地址该访问类型的当月费用总计),形成月计费文件。月计费文件经过出账处理形成流量费用账单文件。流量费用账单文件的记录格式为: 月份 用户编码 IP地址 国内费用 国际费用 1. 【问题1】 (1)请说明流程图中的文件F0、F1分别是哪个文件。 (2)处理1和处理5分别按照哪些数据项进行分类?
问答题阅读以下关于工作流系统模型建立和性能分析的叙述,根据要求回答问题1~问题4。[说明]某软件开发公司向客户交付系统产品后,由技术支持部门负责向客户提供技术服务。该技术支持部门的业务流程如下:①当该技术支持部门接到一个客户问询电话时,由客户服务代表(CSR)接听该电话。客户服务代表根据客户问询内容产生一份服务请求文件,并开始解决客户提出的问题;②若客户服务代表解决了客户提出的问题,这份服务请求文件被标记为“已解决”;③如果客户服务代表在2个小时内未能解决这个问题,客户服务代表将服务请求文件转交给技术支持代表(TSR)处理;④如果技术支持代表也无法解决这个问题,他/她将邀请助理工程师(ENGR)来一起处理这个问题;⑤若助理工程师解决了这个问题,该服务请求文件被标记为“已解决”;⑥若技术支持代表和助理工程师认为,是由于系统的错误引起的问题,则告知客户该问题目前无法解决;并把服务请求文件转交给本公司的工程部门处理;⑦对已经解决的服务请求,每个月底进行一次归档(放入归档数据库)。该软件公司正在创建一个相应的工作流管理系统,目前正处于过程定义阶段,即创建工作流模型阶段。对于这些工作流模型,除了要考虑工作流的正确性外,工作流的性能也是十分重要的。工作流性能主要反映工作流定量方面的特性,例如,任务的完成时间、单位时间内处理的任务数量、资源的利用率及在预定时间标准内完成任务的百分比等。图7-14所示的是一个简单的工作流模型(其中单位时间为1小时),它表示这样一个执行过程:每小时将会有20个任务到达c1,这20个任务首先经过处理task1,再经过处理task2,最终将结果传递到c3。处理task1和处理task2相互独立。假设性能评价模型符合M/M/1排队模型,在计算性能指标的过程中可以使用下列公式进行计算:其中,ρ表示资源利用率,λ表示单位时间内到达的任务数,μ表示该资源单位时间内能够完成的任务数。
问答题[问题1] 请用DFD 图描绘该功能的需求。
问答题【问题1】
请按[说明]中的要求画出修改后的数据模型。
问答题 阅读以下说明,回答问题1至问题3,将答案写在对应栏内。
【说明】 关于一位花商有以下一些事实。
(1)销售在不同地区生长的花,这些地区一年的量低温度在一定范围内变化。
(2)想用编号来表示发货类型。 (3)要出售某些类型的花。
假定已经通过SQL语句建立了基本表: CREATE TABLE Zone
( ID Char(2) PRIMARY KEY, LowerTemp Number
(3), UpperTemp Number (3) );
CREATE TABLE Delivery ( ID char(2)PRIMARY
KEY, Category VarChar (5), DelSize Number
(5,3) ): CREATE TABLE FlowerInfo
( ID Char(3) CONSTRAINT
Flowerinfo_ id _ pk PRIMARY KEY, ComName VarChar
(25), LatName VarChar (30), Czone Number
(3), Hzone Number (3), Delivered Number
(3), SunNeed Char (3), PRIMARY KEY
(ID) ): 地区(ID,最高温度,最低温度)
发货(ID,发货类型,发货规格)
花的信息(ID,普通名,拉丁名,花能够生长的最冷地区,花能够生长的最热地区,发货类型,日光需求)
问答题【说明】传输门是传输系统中的重要装置。传输门具有Open(打开)、Closed(关闭)、Opening(正在打开)、StayOpen(保持打开)和Closing(正在关闭)五种状态。触发传输门状态转换的事件有click、complete和timeout三种。事件与其相应的状态转换如下图所示。下面的C++代码1与C++代码2分别用两种不同的设计思路对传输门进行状态模拟,请填补代码中的空缺。【C++代码1】constintCLOSED=1;constintOPENING=2;constintOPEN=3;constintCLOSING=4;constintSTAYOPEN=5;//定义状态变量,用不同整数表示不同状态classDoor{Private:intstate;//传输门当前状态voidsetState(intstate){this->state=state;}//设置当前状态public:Door():state(CLOSED){};voidgetState(){//根据当前状态输出相应的字符串switch(state){caseOPENING:cout<<"OPENING"<<endl;break;caseCLOSED:cout<<"CLOSED"<<endl;break;caseOPEN:cout<<"OPEN"<<endl;break;caseCLOSING:cout<<"CLOSING"<<endl;break;caseSTAYOPEN:cout<<"STAYOPEN"<<endl;break;}};voidclick(){//发生click事件时进行状态转换if({{U}}(1){{/U}})setState(OPENING);elseif({{U}}(2){{/U}})setState(CLOSING);elseif({{U}}(3){{/U}})setState(STAYOPEN);}voidtimeout(){//发生timeout事件时进行状态转换if(state==OPEN)setState(CLOSING);}voidcomplete(){//发生complete事件时进行状态转换if(state==OPENING)setState(OPEN);elseif(state==CLOSING)setState(CLOSED);}};intmain(){DooraDoor;aDoor.getState();aDoor.click();aDoor.getState();aDoor.complete();aDoor.getState();aDoor.click();aDoor.getState();aDoor.click();aDoor.getState();return0;}【C++代码2】classDoor{public:DoorState*CLOSED,*OPENING,*OPEN,*CLOSING,*STAYOPEN,*state;Door();virtual~Door(){……//释放申请的内存,此处代码省略);voidsetState(DoorState*state){this->state=state;}voidgetState(){//此处代码省略,本方法输出状态字符串,//例如,当前状态为CLOSED时,输出字符串为“CLOSED”};voidclick();voidtimeout();voidcomplete();};Door::Door(){CLOSED=newDoorClosed(this);OPENING=newDoorOpening(this);OPEN=newDoorOpen(this);CLOSING=newDoorClosing(this);STAYOPEN=newDoorStayOpen(this);state=CLOSED;}voidDoor::click(){{{U}}(4){{/U}};)voidDoor::timeout(){{{U}}(5){{/U}};)voidDoor::complete(){{{U}}(6){{/U}};}classDoorState//定义一个抽象的状态,它是所有状态类的基类{protected:Door*door;public:DoorState(Door*door){this->door=door;}virtual~DoorState(void);virtualvoidclick(){}virtualvoidcomplete(){}virtualvoidtimeout(){}};classDoorClosed:publicDoorState{//定义一个基本的Closed状态public:DoorClosed(Door*door):DoorState(door){}virtual~DoorClosed(){}voidclick();};voidDoorClosed::click(){{{U}}(7){{/U}};}//其他状态类的定义与实现代码省略intmain(){DooraDoor;aDoor.getState();aDoor.click();aDoor.getState();aDoor.complete();aDoor.getState();aDoor.timeout();aDoor.getState();return0;}
问答题【程序】下面是一段求最大值的程序,其中datalist是数据表,n是datalist的长度。intGetMax(intn,intdatalist[])intk=0;for(intj=1;j<n;j++)if(datalist[j]>datalist[k])k=j;returnk;【控制流图】1.【问题1】该程序的控制流图中A~E分别是什么?
问答题【说明】一棵非空二叉树中“最左下”结点定义为:若树根的左子树为空,则树根为“最左下”结点;否则,从树根的左子树根出发,沿结点的左孩子分支向下查找,直到某个结点不存在左孩子时为止,该结点即为此二叉树的“最左下”结点。例如:图13-26所示的以A为根的二叉树的“最左下”结点为D,以C为根的子二叉树中的“最左下”结点为C。二叉树的结点类型定义如下:typedefstructBSTNode{intdata;structBSTNode*lch,*rch;//结点的左、右孩子指针}*BSTree;代码13-7中,函数BSTreeFind_Del(BSTreeroot)的功能是:若root指向一棵二茶树的根结点,则找出该结点的右子树上的“最左下”结点*p,并从树中删除以*p为根的子树,函数返回被删除子树的根结点指针;若该树根的右子树上不存在“最左下”结点,则返回空指针。【代码13-7】BSTreeFind_Del(BSTreeroot){BSTreep,pre;If(!root)/*root指向的二叉树为空树*/returnNULL;{{U}}(1){{/U}};/*令p指向根结点的右子树*/if(!p)returnNULL;{{U}}(2){{/U}};/*设置pre的初值*/while(p->lch){/*查找“最左下”结点*/pre=p;p={{U}}(3){{/U}};}if({{U}}(4){{/U}}==root)/*root的右子树根为“最左下”结点*/pre->rch=NULL;else{{U}}(5){{/U}}=NULL;/*删除以“最左下”结点为根的子树*/returnp;}
问答题【说明】在一公文处理系统中,开发者定义了一个公文结构OfficeDoc,其中定义了公文应该具有的属性。当公文的内容或状态发生变化时,与之相关联的DocExplorer结构的值都需要发生改变。一个OfficeDoc结构能够关联一组DocExplorer结构。当OfficeDoc结构的内容或状态发生变化时,所有与之相关联的DocExplorer结构都将被更新,这种应用被称为观察者模式。以下代码采用C语言实现,能够正确编译通过。【代码13-4】#include<stdio.h>#defineOBS_MAXNUM20/*一个OfficeDoc变量最多能够关联的DocExplorer变量的个数*/typedefvoid({{U}}(1){{/U}})(strucOffieeDoc*,structDoeExplorer*)I;structDocExplorer{funcupdate;/*DocExplorer结构采用的更新函数*//*其它的结构字段省略*/};struetOffieeDoc{{{U}}(2){{/U}}myObs[OBS_MAXNUM;/*存储所有与OfficeDoc相关联的DocExplorer结构指针*/intindex;/*与OffieeDoc结构变量相关联的DoeExplorer结构变量的个数*/};voidattaeh(structOfficeDoc*doc,structDocExplorer*ob){/*关联Observer结构ob与OffieeDoe结构doe*/intloop=0;if(doc->index>=OBS_MAXNUM||ob==NULL)return;for(loop=0,loop<doc->index;loop++)if(doc->myObs[loop]==ob)return;doc->myObs[doe->index]=ob;doc->index++;}voiddetaeh(structOfficeDoc*doc,structDocExplorer*ob){/*解除doc结构与ob结构间的关联*/intloop;if(ob==NULL)return;for(loop=0;loop<doc->index;loop++){if(doe->myObs[loop]==ob){if(loop<=doc->index-2)doc->myObs[loop]=doc->myObs[{{U}}(3){{/U}}];doc->myObs[doc->index-1]=NULL;doc->index——;breack;}}}voidupdatel(structOfficeDoe*doe,structDoeExplorer*ob){/*更新ob结构的值,更新代码省略*/}voidupdate2(structOffieeDoc*doc,struetDocExplorer*ob){/*更新ob结构的值,更新代码省略*/}voidnotifyObs(structOfficeDoc*doc){/*当doc结构的值发生变化时,通知与之关联的所有DocExplorer结构变量*/intloop;for(loop=0;loop<doc->index;loop++){(doc->myObs[loop)->update({{U}}(4){{/U}});}}voidmain(){structOfficeDocdoc;/*定义一了OfficeDoe变量*/structDocExplorerexplorer1,explorer2;/*定义两个DocExplorer变量*//*初始化与OfficeDoc变量相关的DocExplorer变量个数为0*/doc.index=0;explorer1.update=update1;/*设置explorer1变量的更新函数*/explorer2.update=update2;/*设置explorer2变量的更新函数*/attach(/*关联explorer1与doc对象*/attach(/*关联explorer2与doc对象*//*其它代码省略*/{{U}}(5){{/U}};/*通知与OfficeDoe相关的所有DoeExploer变量*/return;}
问答题[问题2]
数据流图8-5中缺少了与“年度汇总”加工相关的数据流,请指出此数据流的起点和终点。
数据流图8-5中缺少了与“查询”加工相关的数据流,请指出此数据流的起点和终点。
问答题[说明] 在学校中,存在以下关系:(a)一个系有若干学生,但一个学生只能在一个系;(b)一个学生可以选修多门课程,每门课程有若干学生选修;(c)每个学生所学的每门课程都有一个成绩。 该校在学生信息管理数据库设计了三个基本表,分别为表一、表二、表三。(a)表一:学生信息表STUDENT(STID,NAME,AGE,DEPTNO),其中,STID表示学号,NAME表示学生姓名,AGE表示年龄,DEPTNO表示系号。(b)表二:课程表COURSE(COID,NAME),其中,COID表示课程号,NAME表示课程名。(c)表三:成绩表SCORE(SCID,COID,GRADE),其中,SCID表示学号,COID表示课程号, GRADE表示成绩,成绩为空时表示这学期正在上的课程。1. [问题1] 根据要求将SQL语句补充完整。 (1)查询各系的学生数 SELECT (1) ,COUNT(*) (2) GROUP BY DEPTNO; (2)更改课程号为C601的课程名为“大学物理” UPDATE (3) SET (4) (3)基于学生信息表,建立一个计算机系(系编号为D01)的学生视图。写出命令。 CREATE OR REPLACE VIEW V_STUDENT AS (5)
问答题[问题1]
请在下列选项中选择合适的答案,填入图3-1、图3-2的方框a和方框b。
B的公钥,B的私钥,摘要算法,A的私钥,A的公钥,会话密钥
问答题有下列关于运动会管理系统的ER图,如图10所示。图中矩形表示实体,圆表示属性,双圆表示关键字属性,菱形表示实体之间的关系。假定已通过下列SQL语言建立了基本表。CREATETABLEATHLETEANAMECHAR(20),ASEXCHAR(1),ATEAMCHAR(20));CREATETABLE|TEM(INOCHAR(6)NOTNULL,INAMECHAR(20),ITIMECHAR(12),IPLACECHAR(20);CREATETABLEGAMES(ANOCHAR(6)NOTNULL,INOCHAR(6)NOTNULL,SCORRECHAR(10));为了答题的方便,图中的实体和属性同时给出了中英文两种文字,回答问题时只需写出英文名即可。【E-R图】【问题】填充下列SQL程序1~4中的(1)~(7),使它们分别完成相应的功能:程序1:统计参加比赛时男运动员人数。SELECT(1)FROMATHLETEWHEREASEX='M';程序2:查100872号运动员参加的所有项目及其比赛时间和地点。SELECTITEM,INO,INAME,ITIME,IPLACEFROMGAMES,ITEMWHERE(2);AND(3);程序3:查参加100035项目的所有运动员名单。SELECTANO,ANAME,ATEAMFROMATHLETEWHERE(4);(SELECT(4)(5)FROMGAMESWHEREGAMESANO=ATHLETE.ANOANDINO='100035');程序4:建立运动员成绩视图。(6)ATHLETE-SCOREASSELECTATHLETE,ANO,ANAME,ATEAM,INAME,SCOREFORM(7)WHEREATHLETE.ANO=GAMES.ANOANDGAMES.INO=ITEM.INO;
问答题某咖啡店当卖咖啡时,可以根据顾客的要求在其中加入各种配料,咖啡店会根据所加入的配料来计算费用。咖啡店所供应的咖啡及配料的种类和价格如表所示。咖啡及配料的种类和价格表咖啡价格/杯配料价格/份蒸馏咖啡(Espresso)25摩卡(Mocha)10深度烘焙咖啡(DarkRoast)20奶泡(Whip)8现采用装饰器(Decorator)模式来实现计算费用的功能,得到如图所示的类图。用类图[C++代码]#include<iostream>#include<string>usingnamespacestd;constintESPRESSO_PRICE=25;constintDRAKROAST_PRICE=20;constintMOCHA_PRICE=10;constintWHIP_PRICE=8;classBeverage{//饮料{{U}}{{U}}{{/U}}{{/U}}:stringdescription;public:{{U}}{{U}}{{/U}}{{/U}}(){returndescription;}{{U}}{{U}}{{/U}}{{/U}};};classCondimentDecorator:publicBeverage{//配料protected:{{U}}{{U}}{{/U}}{{/U}};};classEspresso:publicBeverage{//蒸馏咖啡public:Espresso(){description="Espresso";}intcost(){returnESPRESSO_PRICE;)};classDarkRoast:publicBeverage{//深度烘焙咖啡public:DarkRoast()(description="DardRoast";}intcost(){returnDRAKROAST_PRICE;}};classMocha:publicCondimentDecorator{//摩卡public:Mocha(Beverage*beverage){this->beverage=beverage;)stringgetDescription(){returnbeverage->getDescription()+",Mocha";)intcost(){returnMOCHA_PRiCE+beverage->cost();}};classwhip:publiccondimentDecorator{//奶泡publio:Whip(Beverage*beverage){this->beverage=beverage;)stringgetDescription(){returnbeverage->getDescription()+",Whip";]intcost()(returnWHIP_PRiCE+beverage->cost();}};intmain(){Beverage*beverage=newDarkRoast();beverage=newMocha({{U}}{{U}}{{/U}}{{/U}});beverage=newWhip({{U}}{{U}}{{/U}}{{/U}});cout<<beverage->getDescription()<<"¥"<<beverage->cost()end1;return0;}编译运行上述程序,其输出结果为:DarkRoast,Mocha,Whip¥38
问答题某公司的主要业务是出租图书和唱碟。由于业务需求,该公司委托希赛公司开发一套信息管理系统。该系统将记录所有的图书信息、唱碟信息、用户信息、用户租借信息等。希赛公司决定采用面向对象的分析和设计方法开发此系统。图1所示为某类图书或唱碟被借阅时应记录的信息,图2描述了系统定义的两个类Book和CD,分别表示图书和唱碟的信息。图1借阅时应记录的信息图2借阅时应记录的信息
问答题[问题2] 将ER图转换成关系模型,并说明主键和外键。
