计算机类
公务员类
工程类
语言类
金融会计类
计算机类
医学类
研究生类
专业技术资格
职业技能资格
学历类
党建思政类
计算机软件水平考试
全国计算机应用水平考试(NIT)
计算机软件水平考试
计算机等级考试(NCRE)
全国高校计算机等级考试CCT
行业认证
信息素养
软件设计师(中级)
信息系统项目管理师(高级)
系统分析师(高级)
系统架构设计师(高级)
网络规划设计师(高级)
系统规划与管理师(高级)
软件评测师(中级)
软件设计师(中级)
网络工程师(中级)
多媒体应用设计师(中级)
嵌入式系统设计师(中级)
电子商务设计师(中级)
系统集成项目管理工程师(中级)
信息系统监理师(中级)
信息安全工程师(中级)
数据库系统工程师(中级)
信息系统管理工程师(中级)
软件过程能力评估师(中级)
计算机辅助设计师(中级)
计算机硬件工程师(中级)
信息技术支持工程师(中级)
程序员(初级)
网络管理员(初级)
信息处理技术员(初级)
电子商务技术员(初级)
信息系统运行管理员(初级)
网页制作员(初级)
多媒体应用制作技术员(初级)
PMP项目管理员资格认证
问答题阅读下列说明和图,回答问题1至问题3。【说明】某大型旅店为了便于管理,欲开发一个客房管理系统。希望实现客房预订、入住登记、账务结算、退房,以及将服务项目记入客人账单。旅客包括散客和团体,散客预订或入住时需要提供姓名、性别、身份证和联系电话,团体则提供团体名称、负责人的姓名、性别、身份证和联系电话,以及团体人数。对于散客,还要提供换房。旅店还提供了很多服务项目,比如早餐。对每一个入住客人,服务列表记录了住宿期间的各项服务,包括服务类型、日期、数量等。当然,客人也可以不要任何服务。旅店的客房有一个唯一的房间号,分为不同的类别,不同的房间床位数和价格不同。为了有效的管理,需要记录每天的客房状态。客房的状态有:空闲、占用、已预订和维修。·客人入住后,客房处于占用状态。·客人退房后,客房处于空闲状态。·客人预订后,客房处于已预订状态。·预订客人入住后,客房处于占用状态。·预订客人取消预订后客房处于空闲状态。·需要维修时客房处于维修状态。·维修完成后客房处于空闲状态。该系统采用面向对象方法开发,系统中的类及类之间的关系用UML类图表示,如图9-12所示是该系统的类图的一部分,图9-13描述了客房状态的转变情况。
进入题库练习
问答题下面是一个Applet程序,其功能是在绘图区域中通过鼠标的移动来绘制直线,并且有清除绘图区域按钮,用来清除已经绘制的图像。程序运行结果如图5所示。importjava.awt.*;importjava.applet.*;/*<appletcode=ex6_7.classwidth=800height=400></applet>*/publicclassex6_7extendsApplet{privateButtonbtn;privatebooleanbDraw,bClear;privateintupX,upY,downX,downY;publicvoidint(){setLayout(null);bClear=false;bDraw=false;btn=newButton("clear");btn.reshape(250,150,70,30);add(btn);}publicvoidpaint(Graphicsg){if(bClear){g.clearRect(0,0,getSize().width,getSize().height);{{U}}(1){{/U}};}if(bDraw){g.drawLine({{U}}(2){{/U}});bDraw=false;}}publicvoidupdate(Graphicsg){{{U}}(3){{/U}};}publicbooleanmouseDown(Eventevent,intx,inty){downX=x;downY=y;returntrue;}publicbooleanmouseup(Eventevent,intX,inty){upX=x;upY=y;{{U}}(4){{/U}};repaint();returntrue;}publicbooleanaction(Eventevent,Objectobject){if({{U}}(5){{/U}}){bClear=true;repaint();}returntrue;}}ex6_7.html<HTML><HEAD><TITLE>ex6_7</TITLE></HEAD><BODY><appletcode="ex6_7.class"width=800height=400></applet></BODY></HTML>
进入题库练习
问答题【说明】下面是一个Applet程序,其功能是通过一个按钮控制一个窗口的创建,显示与隐藏,并且以按钮文字作为提示,可以随着窗口的状态改变,即如果窗口出现,则按钮文字为"HidemyFrm",提示用户点击按钮,则隐藏窗口,反之亦然。请将横线处语句补充完整。程序运行结果如图5所示:importjava.awt.*;importjava.applet.*;<appletcode="ex8_7.class"width=800height=400></applet>*/publicclassex8_7extendsApplet{privateFramefrm;privateButtonshowBtn;publicvoidinit(){showBtn=newButton("ShowFrame");{{U}}(1){{/U}};}publicbooleanaction(Evente,Objecto){if(e.target==showBtn){if({{U}}(2){{/U}}){{{U}}(3){{/U}};frm.dispose(){{U}}(4){{/U}}showBtn,setLabel("ShowmyFrm");}else{frm=newFrame("myFrm");frm.resize(200,150);frm.setBackground(Color.gray);{{U}}(5){{/U}};showBtn,setLabel("HidemyFrm");}}returntrue;}}ex8_7,html<HTML><HEAD><TITLE>ex8_7</TITLE></HEAD><BODY><appletcode="ex8_7,class"width=800height=400></applet></BODY></HTML>
进入题库练习
问答题[说明] 快速排序是一种典型的分治算法。采用快速排序对数组A[p..r]排序的3个步骤如下。 (1)分解:选择一个枢轴(Pivot)元素划分数组。将数组A[p..r]划分为两个子数组(可能为空)A[p..q-1]和A[q+1..r],使得A[q]大于等于A[p..q-1]中的每个元素,小于A[q+1..r]中的每个元素。q的值在划分过程中计算。 (2)递归求解:通过递归的调用快速排序,对子数组A[p..q-1]和A[q+1..r]分别排序。 (3)合并:快速排序在原地排序,故不需合并操作。
进入题库练习
问答题【说明】传输门是传输系统中的重要装置。传输门具有Open(打开)、Closed(关闭)、Opening(正在打开)、StayOpen(保持打开)和Closing(正在关闭)五种状态。触发状态的转换事件有click、complete和timeout三种。事件与其相应的状态转换如下图所示。下面的Java代码1与Java代码2分别用两种不同的设计思路对传输门进行状态模拟,请填补代码中的空缺。【Java代码1】publicclassDoor{publicstaticfinalintCLOSED=1;publicstaticfinalintOPENING=2;publicstaticfinalintOPEN=3;publicstaticfinalintCLOSING=4;publicstaticfinalintSTAYOPEN=5;privateintstate=CLOSED;//定义状态变量,用不同的整数表示不同状态privatevoidsetState(intstate){this.state=state;}//设置传输门当前状态publicvoidgetState(){//此处代码省略,本方法输出状态字符串,//例如,当前状态为CLOSED时,输出字符串为"CLOSED"}publicvoidclick(){//发生click事件时进行状态转换if({{U}}(1){{/U}};)setState(OPENING);elseif({{U}}(2){{/U}};)setState{CLOSING);elseif({{U}}(3){{/U}};)setState(STAYOPEN);}//发生timeout事件时进行状态转换publicvoidtimeout(){if(state==OPEN)setState(CLOSING);}publicvoidcomplete(){//发生complete事件时进行状态转换if(state==OPENING)setState(OPEN);elseif(state==CLOSING)setState(CLOSED);}publicstaticvoidmain(String[]args){DooraDoor=newDoor();aDoor.getState();aDoor.click();aDoor.getState();aDoor.complete();aDoor.getState();aDoor.click();aDoor.getState();aDoor.click();aDoor.getState();return;}}【Java代码2】publicclassDoor{publicfinalDoorStateCLOSED=newDoorClosed(this);publicfinalDoorStateOPENING=newDoorOpening(this);publicfinalDoorStateOPEN=newDoorOpen(this);publicfinalDoorStateCLOSING=newDoorClosing(this);publicfinalDoorStateSTAYOPEN=newDoorStayOpen(this);privateDoorStatestate=CLOSED;//设置传输门当前状态publicvoidsetState(DoorStatestate){this.state=state;}publicvoidgetState(){//根据当前状态输出对应的状态字符串System.out.println(state.getClass().getName());}publicvoidclick(){{{U}}(4){{/U}};}//发生click事件时进行状态转换publicvoidtimeout(){{{U}}(5){{/U}};}//发生timeout事件时进行状态转换publicvoidcomplete(){{{U}}(6){{/U}};)//发生complete事件时进行状态转换publicstaticvoidmain(String[]args){DooraDoor=newDoor();aDoor.getState();aDoor.click();aDoor.getState();aDoor.complete();aDoor.getState();aDoor.timeout();aDoor.getState();return;}}publicabstractclassDoorState{//定义所有状态类的基类protectedDoordoor;publicDoorState(Doordoer){this.door=door;}publicvoidclick(){}publicvoidcomplete(){}publicvoidtimeout(){}}classDoorClosedextendsDoorState{//定义一个基本的Closed状态publicDoorClosed(Doordoor){super(door);}publicvoidclick(){{{U}}(7){{/U}};)//该类定义的其余代码省略}//其余代码省略
进入题库练习
问答题选出正确的关系代数表达式。
进入题库练习
问答题[说明] 某公司拟开发一多用户电子邮件客户端系统,部分功能的初步需求分析结果如下。 (1)邮件客户端系统支持多个用户,用户信息主要包括用户名和用户密码,且系统中的用户名不可重复。 (2)邮件账号信息包括邮件地址及其相应的密码,一个用户可以拥有多个邮件地址(如user1@123.com)。 (3)一个用户可拥有一个地址簿,地址簿信息包括联系人编号、姓名、电话、单位地址、邮件地址1、邮件地址2、邮件地址3等信息。地址簿中一个联系人只能属于一个用户,且联系人编号唯一标识一个联系人。 (4)一个邮件账号可以含有多封邮件,一封邮件可以含有多个附件。邮件主要包括邮件号、发件人地址、收件人地址、邮件状态、邮件主题、邮件内容、发送时间、接收时间。其中,邮件号在整个系统内唯一标识一封邮件,邮件状态有已接收、待发送、已发送和已删除4种,分别表示邮件是属于收件箱、发件箱、已发送箱和废件箱。一封邮件可以发送给多个用户。附件信息主要包括附件号、附件文件名、附件大小。一个附件只属于一封邮件,且附件号仪在一封邮件内唯一。
进入题库练习
问答题试题五(共15分)阅读下列说明和C++代码,将应填入____(n)___处的字句写在答题纸的对应栏内。[说明]某咖啡店售卖咖啡时,可以根据顾客的要求在其中加入各种配料,咖啡店会根据矽加入的配料来计算费用。咖啡店所供应的咖啡及配料的种类和价格如下表所示。
进入题库练习
问答题【说明】 函数DeleteNode (Bitree *r, int e)的功能是:在树根结点指针为r的二叉查找(排序)树上删除键值为e的结点,若删除成功,则函数返回0,否则函数返回-1。二叉查找树结点的类型定义为: typedef struct Tnode int data; /*结点的键值*/ struct Tnode *Lchild, *Rchild; /*指向左、右子树的指针*/ *Bitree: 在二叉查找树上删除一个结点时,要考虑3种情况: ①若待删除的结点p是叶子结点,则直接删除该结点; ②若待删除的结点p只有一个子结点,则将这个子结点与待删除结点的父结点直接连接,然后删除结点p; ③若待删除的结点p有两个子结点,则在其左子树上,用中序遍历寻找关键值最大的结点s,用结点s的值代替结点p的值,然后删除结点s,结点s必属于上述①、②情况之一。 【函数】 int DeleteNode (Bitree *r,int e) Bitree p=*r,pp,s,c; while ( (1) ) /*从树根结点出发查找键值为e的结点*/ pp=p; if(e<p->data) p=p->Lchild; else p=p->Rchild; if(!P) return-1; /*查找失败*/ if(p->Lchild p->data=s->data; p=s; /*处理情况①、②*/ if ( (4) ) c=p->Lchild; else c=p->Rchild; if(p==*r) *r=c; else if ( (5) ) pp->Lchild=c; else pp->Rchild=c; free (p); return 0;
进入题库练习
问答题【问题3】 若将上述各关系直接实现为对应的物理表,现需查询在2005年1月1日到2005年 12月31日期间,在该宾馆住宿次数大于5次的客人身份证号,并且按照入住次数进行降序排列。下面是实现该功能的SQL语句,请填补语句中的空缺。 SELECT 住宿.身份证号,count (入住日期) FROM 住宿,客人 WHERE 入住日期>='20050101'AND入住日期<='20051231' AND 住宿.身份证号=客人.身份证号 GROUP BY {{U}}(2) {{/U}} {{U}} (3) {{/U}} count(入住日期)>5 {{U}} (4) {{/U}}
进入题库练习
问答题【说明】某超市的销售业务由一个销售业务管理系统进行管理,该系统每完成一次交易都需要提供顾客发票,其格式如表1-1所示。对于这样一个销售业务管理系统,分别给出了以下两种关系数据库的设计(下划线表示主关键字)设计一:顾客Customer(顾客代码Cno,姓名name,住址address,联系电话phone)收银员Salesman(收银员代码Sno,身份证号idno,姓名flame,住址address,联系电话phone)商品Merchandise(商品代码Milo,商品名称Mname,价格price)发票Invoice(发票号码Ino,交易日期Idate,顾客代码Cno,收银员代码Sno,商品代码Mno,单价unitprice,数量amount)设计二:顾客Customer(顾客代码Cno,姓名name,住址address,联系电话phone)收银员Salesman(收银员代码Sno,身份证号idno,姓名name,住址address,联系电话吵one)商品Merchandise(商品代码Mno,商品名称mllame,价格pnce)发票Invoice(发票号码Ino,交易日期Idate,顾客代码Cno,收银员代码Sno)发票明细Invoicedetail(发票号码Ino,商品代码Uno,单价unitprice,数量amount)
进入题库练习
问答题[说明1]B树是一种多又平衡查找树。一棵m阶的B树,或为空树,或为满足下列特性的m叉树。(1)树中每个节点至多有m棵子树。(2)若根节点不是叶子节点,则它至少有两棵子树。(3)除根之外的所有非叶子节点至少有[m/2]棵子树。(4)所有的非叶子节点中包含下列数据信息:(n,A0,K1,A1,K2,A2,…,Kn,An)。其中,Ki(i=1,2,…,n)为关键字,且Ki<Ki+1(i=1,2,…,n-1),Ai(i=0,1,…,n)为指向树根节点的指针,且指针Ai-1所指子树中所有节点的关键字均小于ki,Ai+1所指子树中所有节点的关键字均大于ki;n为节点中关键字的数目。(5)所有的叶子节点都出现在同一层次上,并且不带信息(可以看作是外部节点或查找失败的节点,实际上这些节点不存在,指向这些节点的指针为空)。例如,一棵4阶B树如图1所示(节点中关键字的数目省略)。B树的阶M、bool类型、关键字类型及B树节点的定义如下:#defineM4/*B树的阶*/typedefenum{FALSE=0,TRUE=1}bool;typedefintElemKeyType;typedefStructBTreeNode{intnumkeys;/*节点中关键字的数目*/structBTreeNode*parent;/*指向父节点的指针,树根的父节点指针为空*/structBTreeNode*A[M];/*指向子树节点的指针数组*/ElemgeyTypeK[M];/*存储关键字的数组,K[0]闲置不用*/}BTreeNode;函数SearchBtree(BTreeNode*root,ElemKeyTypeakey,BTreeNode**ptr)的功能是:在给定的一棵M阶B树中查找关键字akey所在节点,若找到则返回TRUE,否则返回FALSE。其中,root是指向该M阶B树根节点的指针,参数ptr返回akey所在节点的指针,若akey不在该B树中,则ptr返回查找失败时空指针所在节点的指针。例如,在图1所示的4阶B树中查找关键字25时,ptr返回指向节点e的指针。注:在节点中查找关键字akey时采用二分法。函数SearchBtree的代码如下:boolSearchBtree(BTreeNode*root,ElemKeyTypeakey,BTreeNode**ptr){intlw,hi,mid;BTreeNode*P=root;*ptr=NULL;while(p){lw=1;hi=______;while(lw<=hi){mid=(lw+hi)/2;if(p→K[mid]==akey){*ptr=P;returnTRUE;}elseif______hi=mid-1;elselw=mid+1;}*ptr=p;p=______;}returnFALSE;}
进入题库练习
问答题【说明】 源程序中定义了Circle类与Money类,Circle类可对半径为r的圆进行周长与面积的计算,而Money类用于计算一圆形游泳池的造价。游泳池四周有原形过道,过道外围上栅栏,过道宽度为3米,根据键入的游泳池半径,每米栅栏价格及每平方米过道价格,即可计算出游泳池的造价。请按要求完成下列操作,将程序补充完整。 ①定义符号常量PI(值为3.14159f)与WIDTH(值为3.00f),分别用于表示圆周率与过道的固定宽度。 ②定义Circle类默认构造函数,把私有成员radius初始化为参数r的值。 ③完成Money类默认构造函数的定义,把私有成员FencePrice(每米栅栏的价格)、ConcretePrice(每平方米过道的价格)初始化为参数f,c的值。 ④完成Money类成员函数float Money::TotalMoney(float fencelen,float conarea)的定义,根据参数fencelen(栅栏的长度)和conarea(过道的面积),返回栅栏与过道的总造价。 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。 源程序文件test4.cpp清单如下: #include<iostream.h> {{U}} (1) {{/U}} class Circle { private: float radius; public: {{U}} (2) {{/U}} float Circumference(){return 2 * P| * radius;} float Area(){return P|*radius * radius;} }; class Money { private: float FencePrice; float ConcretePrice; public: Money(float f,float c); float Tota|Money(float fencelen, float conarea); }; Money::Money(float f,float c) { {{U}}(3) {{/U}} } float Money::Tota|Money(float fencelen, float conarea) { {{U}}(4) {{/U}} } void main( ) { float radius, fence, concrete; cout. setf(ios:: fixed); cout. setf(ios:: showpoint); cout. precision (2); cout << "Enter the radius of the pool:"; cin > > radius; cout << "Enter the FencePrice:"; cin > > fence; cout << "Enter the ConcretePrice: "; cin > > concrete; Circle Pool(radius); Circle PoolRim(radius + WIDTH); Money mon( fence, concrete); float totalmoney = mon. TotalMoney( PoolRim. Circumference( ), ( PoolRim. Area ( ) - Pool. Area ( ) ) ); cout << "The total money is RMB" << totalmoney << end|; }
进入题库练习
问答题[问题3] 写出每种关系模式的主键。
进入题库练习
问答题试题五(共15分)阅读下列说明和C++代码,将应填入____(n)____处的字句写在答题纸的对应栏内。[说明]某实验室欲建立一个实验室环境监测系统,能够显示实验室的温度、湿度以及洁净度等环境数据。当获取到最新的环境测量数据时,显示的环境数据能够更新。现在采用观察者(Observer)模式来开发该系统。观察者模式的类图如图5-1所示。[C++代码]
进入题库练习
问答题[说明] 在一个简化的绘图程序中,支持的图形种类有点(point)和圆(circle),在设计过程中采用面向对象思想,认为所有的点和圆都是一种图形(shape),并定义了类型shape_t、point_t和circle_t分别表示基本图形、点和圆,并且点和圆具有基本图形的所有特征。 [C程序] typedef enum { point, circle } shape_type; /* 程序中的两种图形:点和圆 */ typedef struct { /* 基本的图形类型 */ shape type type; /* 图形种类标识:点或者圆 */ void (*destroy) (); /* 销毁图形操作的函数指针 */ void (*draw)(); /* 绘制图形操作的函数指针 */ } shape_t; typedef struct { shape_t common; int x; int y; } point_t; /* 定义点类型,x、y为点坐标 */ void destroyPoint (point_t* this) { free(this); printf ("Point destoryed!/n");) /* 销毁点对象 */ void drawPoint (point_t* this) { printf("P(%d, %d)", this→x, this→y);) /* 绘制点对象 */ shape_t* createPoint(va_list* ap) /* 创建点对象,并设置其属性 */ { point_t* p point; if ((p_point=(point_t*) malloc (sizeof(point_t)))==NULL) return NULL; p_point→common. type = point; p_point→common. destroy = destroyPoint; p_point→common. draw=drawPoint; p_point→x = va_arg (*ap, int); /* 设置点的横坐标 */ p_point→y = va_arg(*ap, int); /* 设置点的纵坐标 */ return (shape_t*)p_point; /* 返回点对象指针 */ } tyPedef struct /* 定义圆类型 */ { shape_t common; point_t *center; /* 圆心点 */ int radius; /* 圆半径 */ } circle_t; void destroyCircle(circle_t* this) { free (______); free(this); printf("Circle destoryed!/n"); } void drawCircle (circle_t* this) { printf ("C("); ______.draw( this→center); /* 绘制圆心*/ printf (", %d)", this→radius); } shape_t* createCircle(va list* ap) /* 创建一个圆,并设置其属性 */ { circle_t* p_circle; if ((p_circle=(circle_t*)malloc(sizeof(circle_t)))==NULL)return NULL; p_circle→common. type=circle; p_circle→common. destroy=destroyCircle; p_circle→common. draw=drawCircle; ______ =createPoint(ap); /* 设置圆心 */ p_circle→radius=va arg(*ap, int); /* 设置圆半径 */ return p_circle; } shape t* createShape(shape_type st, …) /* 创建某一种具体的图形 */ { va_list ap; /* 可变参数列表 */ shape_t* P_shape = NULL; ______ (ap, st); if ( st == point) p_shape=createPoint( &ap); /* 创建点对象 */ if ( st == circle) p_shape=createCircle(&ap); /* 创建圆对象 */ va_end(ap); return p-shape; } int main() { int i; /* 循环控制变量,用于循环计数 */ shape t* shapes[2]; /* 图形指针数组,存储图形的地址 */ shape_s[0] = createShape ( point, 2, 3); /* 横坐标为2,纵坐标为3 */ shapes[1] = createShape( circle, 20, 40, 10); /* 圆心坐标(20, 40), 半径为10 */ for (i=0; i<2; i++) { shapes[i]→draw(shapes[i]); printf("/n"); } /* 绘制数组中图形 */ for( i=1; i>=0; i--) shapes[i]→destroy(shapes[i]); /* 销毁数组中图形 */ return 0; } 运行结果如下: p(2, 3) ______ Circle destoryed! Point destoryed!
进入题库练习
问答题问题:4.3 若输入的硬币数为30,则最少的比较次数为( ),最多的比较次数为( )。
进入题库练习
问答题【说明】某绘图系统存在point、line、square三种图元,它们具有Shape接口,图元的类图关系如图13-12所示。现要将circle图元加入此绘图系统以实现功能扩充。已知某第三方库已经提供了XCircle类,且完全满足系统新增的Circle图元所需的功能,但XCircle不是由Shape派生而来的,它提供的接口不能被系统直接使用。代码13-2既使用了XCircle又遵循了Shape规定的接口,既避免了从头开发一个新的Circle类,又可以不修改绘图系统中已经定义的接口。代码13-3根据用户指定的参数生成特定的图元实例,并对之进行显示操作。绘图系统定义的接口与XCircle提供的显示接口及其功能如表13-5所示。{{B}}表13-5接口及其功能{{/B}}ShapeXCircle功能display()DisplayIt()显示图元【代码13-2】classCircle{{U}}(1){{/U}}{private{{U}}(2){{/U}}pxc;publicCircle(){pxc=new{{U}}(3){{/U}};}publicvoiddisplay(){pxc.{{U}}(4){{/U}};}}【代码13-3】publicclassFactory{public{{U}}(5){{/U}}getShapeInstance(inttyoe){//生成特定类实例switch(type){case0:returnnewpoint();case1:returnnewRectangle();case2:returnnewline();case3:returnnewCircle();default:returnnull}}};publicclassApp{publicstaticviodmain(Stringargv[){if(argv.length!=1){system.out.println("errorparameters!");Return;}inttype=(newInteger(argv[0)).intValue();Factoryfactory=newFactory();shapes;s=factory.{{U}}(6){{/U}};if(s==null){system.out.println("Errorgetinstance!");Return;}s.display();return;}}
进入题库练习
问答题[说明]某订单管理系统的部分UML类图如图5-16所示。在图5-16中,Product表示产品,ProductList表示所销售产品的列表,Order表示产品订单,Orderltem表示产品订单中的一个条目,OrderList表示订单列表,SalesSystem提供订单管理系统的操作接口。各个类的部分属性和方法说明如表5-23所示。{{B}}表5-23某订单管理系统各个类的部分属性和方法说明表{{/B}}{{B}}类{{/B}}{{B}}成员{{/B}}{{B}}说明{{/B}}ProductListArrayList<Product>productsProductStringcode产品编号Stringdescription产品描述doubleprice产品单价Booleanequals(Objectobject)若两个产品相同则返回true,否则返回falseOrderItemProductproduct订单项中的产品intquantity产品的订购数量ProductgetProduct()获取订单项中的产品OrderArrayList(orderItem)items订单中包含的订单项orderListArrayList(Order)Orders订单voidaddorder(orderOrder)向订单列表中添加新订单intgetNumberOfOrders()获取订单列表中的订单总数SalesSystemProductListcatalog产品目录orderListsales订单列表voidstatistic()依次统计产品目录中每个产品的订购总量,并打印出每个产品的编号、说明、订购总量和订购金额可以使用类java.util.ArrayList<E>来实现对象的聚集关系,如图5-16中OrderList与Order之间的聚集关系。for-each循环提供了一种遍历对象集合的简单方法。在for-each循环中,可以指定需要遍历的对象集合及用来接收集合中每个元素的变量,其语法如下:for(用来接收集合中元素的变量:需要遍历的对象集合)如果要使用for-each循环来遍历对象集合,那么包含该对象集合的类必须实现接口java.util.Iterable<T>。Java程序7-1和Java程序7-2分别给出了类OrderList和方法statistic的Java代码。
进入题库练习
问答题 对文法G[S]:S→a|∧|(T);T→T,S|S:回答问题1~问题3。 【表】 表4-2 预测分析表 a ∧ ( ) , # S →a →∧ (u)(2)(/u) T (u)(1)(/u) →SN →SN N (u)(3)(/u) →,SN
进入题库练习