计算机类
公务员类
工程类
语言类
金融会计类
计算机类
医学类
研究生类
专业技术资格
职业技能资格
学历类
党建思政类
计算机软件水平考试
全国计算机应用水平考试(NIT)
计算机软件水平考试
计算机等级考试(NCRE)
全国高校计算机等级考试CCT
行业认证
信息素养
软件设计师(中级)
信息系统项目管理师(高级)
系统分析师(高级)
系统架构设计师(高级)
网络规划设计师(高级)
系统规划与管理师(高级)
软件评测师(中级)
软件设计师(中级)
网络工程师(中级)
多媒体应用设计师(中级)
嵌入式系统设计师(中级)
电子商务设计师(中级)
系统集成项目管理工程师(中级)
信息系统监理师(中级)
信息安全工程师(中级)
数据库系统工程师(中级)
信息系统管理工程师(中级)
软件过程能力评估师(中级)
计算机辅助设计师(中级)
计算机硬件工程师(中级)
信息技术支持工程师(中级)
程序员(初级)
网络管理员(初级)
信息处理技术员(初级)
电子商务技术员(初级)
信息系统运行管理员(初级)
网页制作员(初级)
多媒体应用制作技术员(初级)
PMP项目管理员资格认证
问答题【说明】某考务处理系统具有以下功能:(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图转换成关系模型,并说明主键和外键。
进入题库练习
问答题[说明]已知某企业欲开发一家用电器遥控系统,即用户使用一个遥控器就可控制某些家用电器的开与关。遥控器如下图1所示。该遥控器共有4个按钮,编号分别是0~3,按钮0和按钮2能够遥控打开电器1和电器2,按钮1和按钮3则能遥控关闭电器1和电器2。由于遥控系统需要支持形式多样的电器,因此该遥控系统的设计要求具有较高的扩展性。现假设需要控制客厅电视和卧室电灯,对该遥控系统进行设计所得类图如下图2所示。在图2中,类RomoteController的方法onPressButton(intbutton)表示当遥控器按键按下时调用的方法,参数为按键的编号;Command接口中on和off方法分别用于控制电器的开与关;Light中turnLight(intdegree)方法用于调整电灯光的强弱,参数degree值为0时表示关灯,值为100时表示开灯,并且将灯光亮度调整到最大;TV中setChannei(intchannel)方法表示设置电视播放的频道,参数channel值为0时表示关闭电视,为1时表示开机并将频道切换为第1频道。[C++程序]classLight{//电灯类public:voidturnLight(intdegree){//调整灯光亮度,0表示关灯,100表示亮度最大};classTV{//电视机类public:voidsetChannel(intchannel){//N整电视频道,0表示关机,//1表示开机并切换到1频道};classCommand{//抽象命令类public:virtualvoidon()=0;virtualvoidoff()=0;};classRemoteController{//遥控器类protected:Command*commands[4];//遥控器有4个按钮,按照编号分别对应4个Command对象public:voidonPressButton(intbutton){//按钮被按下时执行命令对象中的命令if(button%2==0)commands[button]->on();elsecommands[button]->off();}voidsetCommand(intbutton,Command*command){______=command;//设置每个按钮对应的命令对象}};classLightCommand:publicCommand{//电灯命令类protected:Light*light;//指向要控制的电灯对象public:voidon(){light→turnLight(100);};voidoff(){light→______);LightCommand(Light*light){this→light=light;};};classTVCommand:publicCommand{//电视机命令类protected:TV*tv;//指向要控制的电视机对象public:voidon(){tv→______;};voidoff(){tv→setChannel(0);};TVCommand(TV*tv){this→tv=tv;};};voidmain(){Lightlight;TVtv;//创建电灯和电视对象LightCommandlightCommand(&light);TVCommandtvCommand(&tv);RemoteControllerremoteController;remotecontroller.setCommand(0,______);//设置按钮0的命令对象…//此处省略设置按钮1、按钮2和按钮3的命令对象代码}本题中,应用命令模式能够有效地让类______和类______、类______之间的耦合性降至最小。
进入题库练习
问答题试题五(共15分)阅读下列说明和C++代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】现欲构造一文/目录树,采用组合(Composite)设计模式来设计,得到的类图如5-1所示:图5-1类图
进入题库练习
问答题[说明] 某超市管理系统的前台销售子系统以最基本的方式处理销售业务。系统的功能需求如下: ①记录每种商品的编号、单价和现有数量; ②为顾客选购的商品计价、收费,并打印清单; ③帮助商家找出哪种商品将脱销,从而及时补充货源; ④随时按上级系统的要求报告当前的款货数量、增减商品的种类或修改商品定价; ⑤交接班时结算货款数目和商品数目。 每台收款机可以处理任何数目的销售事件,但一个销售事件只能由一台收款机处理。每个销售事件从收款机响应收款人员的指令开始,先向商品发送检索请求消息来查找将被出售的商品。如果该商品的数量少于下限,则向供货员发送缺货登记消息。每名供货员可以提供一种或多种商品,同一品牌的商品只能由一位供货员来提供。接着收款机发送计价和入账消息请求售出操作,再由销售事件发送记账消息给相应的账册,并控制流程返回收款机等待下一次销售操作。每本销售账册可以记录任何数目的销售事件,但一个销售事件只能由一本销售账册记录。 该销售子系统采用面向对象方法开发,系统中的类及类之间的关系用UML类图表示,图1-11是该系统类图中的一部分;系统的动态行为采用UML序列图表示,图1-12是销售事件部分的序列图。
进入题库练习