计算机类
公务员类
工程类
语言类
金融会计类
计算机类
医学类
研究生类
专业技术资格
职业技能资格
学历类
党建思政类
计算机软件水平考试
全国计算机应用水平考试(NIT)
计算机软件水平考试
计算机等级考试(NCRE)
全国高校计算机等级考试CCT
行业认证
信息素养
软件设计师(中级)
信息系统项目管理师(高级)
系统分析师(高级)
系统架构设计师(高级)
网络规划设计师(高级)
系统规划与管理师(高级)
软件评测师(中级)
软件设计师(中级)
网络工程师(中级)
多媒体应用设计师(中级)
嵌入式系统设计师(中级)
电子商务设计师(中级)
系统集成项目管理工程师(中级)
信息系统监理师(中级)
信息安全工程师(中级)
数据库系统工程师(中级)
信息系统管理工程师(中级)
软件过程能力评估师(中级)
计算机辅助设计师(中级)
计算机硬件工程师(中级)
信息技术支持工程师(中级)
程序员(初级)
网络管理员(初级)
信息处理技术员(初级)
电子商务技术员(初级)
信息系统运行管理员(初级)
网页制作员(初级)
多媒体应用制作技术员(初级)
PMP项目管理员资格认证
软件设计应用技术
软件设计基础知识
软件设计应用技术
问答题[说明]已知某企业欲开发一家用电器遥控系统,即用户使用一个遥控器即可控制某些家用电器的开与关。遥控器面板如图1-18所示。该遥控器共有4个按钮,编号分别是0至3,按钮0和2能够遥控打开电器1和电器2,按钮1和3则能遥控关闭电器1和电器2。由于遥控系统需要支持形式多样的电器,因此,该系统的设计要求具有较高的扩展性。现假设需要控制客厅电视和卧室电灯,对该遥控系统进行设计所得类图如图1-19所示。在图1-19中,类RomoteController的方法onPressButton(intbutton)表示当遥控器按键按下时调用的方法,参数为按键的编号;Command接口中on和off方法分别用于控制电器的开与关;Light中turnLight(intdegree)方法用于调整电灯灯光的强弱,参数degree值为0时表示关灯,值为100时表示开灯并且将灯光亮度调整到最大;TV中setChannel(intchannel)方法表示设置电视播放的频道,参数channel值为0时表示关闭电视,为1时表示开机并将频道切换为第1频道。[Java代码]本试题应用命令模式能够有效让类(5)和类(6)、类(7)之间的耦合性降至最小。
进入题库练习
问答题8.
进入题库练习
问答题[说明]分糖果问题是一个经典问题。问题描述如下:幼儿国有n(<20)个孩子围成一圈分糖果,老师先随机地发给每个孩子若干颗糖果,然后按以下规则调整:每个孩子同时将自己手中的糖果分一半给坐在他右边的小朋友;如共有8个孩子,则第1个将原来的一半分给第2个,第2个将原有的一半分给第3个……第8个将原来的一半分给第1个,这样的平分动作同时进行;若平分前,某个孩子手中的糖果是奇数颗,则必须从老师那里要一颗,使他的糖果变成偶数。小孩人数和每个小孩的初始数由键盘输入。经过多少次调整,使每个孩子手中的糖果一样多,调整结束时每个孩子有糖果多少颗,在调整过程中老师又新增发了多少颗糖果。[C程序]#include<stdlib.h>#include<stdio.h>boolallequall(intchild[],intn)//判断各小孩子手中的糖果是否相等{for(inti=0;i<n-1;i++)if(child[i]!=child[i+1])returnfalse;//不相等返回假returntrue;//相等返回真}constintMaxNum=20;//定义最大人数//主函数voidmain(){intNum=0;int*child;int*child1;//构造两个相应大小的数组child代表小朋友现有的粮果数child1代表小朋友原来有的糖果数intTnum=0;inti=0;do{printf("Pelaseinputthenumberofthechildren:").,scanf("%d",if(Num>MaxNum)printf("ErrorNumber!!");}while(Num>MaxNum);child=newint[Nmn];child1=newint[Num];for(i=0;i<Num;i++)//将数组赋值{printf("InputNO.%dchild'scandynumbers:",i+1);scanf("%d",}while({{U}}(1){{/U}}){for(i=0;i<Num;i++){if({{U}}(2){{/U}}){{{U}}(3){{/U}}Tnum++;}}for(i=0;i<Num;i++)child1[i]=child[i];//将child1赋值用来记忆原来小朋友的粮果数for(i=0;i<Nam;i++){{U}}(4){{/U}}for(i=0;i<Num-1;i++)//用循环实现前一个小朋友粮果数加后一个小朋友粮果数的一半{child[i]/=2;child[i]+=child1[i+1];}child[Num-1]/=2;{{U}}(5){{/U}}}printf("每个同学最后分到糖果数目是%d/n",child[1]);printf("老师分发出的糖果是%d/n",Tnum);}图12-7是一种解决问题的流程图,请根据该流程图将对应C代码{{U}}(n){{/U}}处补充完整。
进入题库练习
问答题[说明] 以下程序实现了在applet里移动图形文件,仔细阅读代码和相关注释,将程序补充完整。 [代码6-1] import j ava. awt. *; import j ava.awt.event.*; import java.applet. Applet; public class AppCIU extends Applet implements MouseMotionListener, MouseListener { Image IMG onClick=over(this) title=放大; // 声明 Image 类类型的变量 IMG onClick=over(this) title=放大 int x=70,y=60,posX=70,posY=60,dx,dy; public void init ( ) { IMG onClick=over(this) title=放大=getImage ( getCodeBase ( ) ,"mouse.gif" ); //载入影像 addMouseListener ( this ); addMouseMotionListener ( this );   } public void mousePressed ( MouseEvent e ) { dx=e.getX()-posX; //取得按下之点与基准点X方向的距离 dy=e.getY()-posY; //取得按下之点与基准点Y方向的距离 } public void mouseDragged ( MouseEvent e ) { {{U}} (1) {{/U}} {{U}} (2) {{/U}} if ( dx>0 {{U}} (3) {{/U}} } } public void paint ( Graphics g ) { {{U}} (4) {{/U}} {{U}} (5) {{/U}} {{U}} (6) {{/U}} } public void mouseMoved ( MouseEvent e ) {}; public void mouseReleased ( MouseEvent e ) {}; public void mouseEntered ( MouseEvent e ) {}; public void mouseExited ( MouseEvent e ) {}; public void mouseClicked ( MouseEvent e ) {}; }
进入题库练习
问答题某集团公司拥有多个大型连锁商场,公司需要构建一个数据库系统以方便管理其业务运作活动。[需求分析结果](1)商场需要记录的信息包括商场编号(编号唯一)、商场名称、地址和联系电话。某商场信息如表1所示。表1商场信息表商场编号商场名称地址联系电话PS2101淮海商场淮海中路918号021-64158818PS2902西大街商场西大街时代盛典大厦029-87283229PS2903东大街商场碑林区东大街239号029-87450287PS2901长安商场雁塔区长安中路38号029-85264950(2)每个商场包含不同的部门,部门需要记录的信息包括部门编号(集团公司分配)、部门名称、位置分布和联系电话。某商场的部门信息如表2所示。表2部门信息表部门编号部门名称位置分布联系电话DT002财务部商场大楼6层82504342DT007后勤部商场地下副一层82504347DT021安保部商场地下副一层82504358DT005人事部商场大楼6层82504446DT004管理部商场裙楼3层82504668(3)每个部门雇佣多名员工处理日常事务,每名员工只能隶属一个部门(新进员工在培训期不隶属于任何部门)。员工需要记录的信息包括员工编号(集团公司分配)、姓名、岗位、电话号码和工资。员工信息如表3所示。表3员工信息表员工编号姓名岗位电话号码工资XA3310周超理货员136092576381500.00SH1075刘飞防损员134772934871500.00XA0048江雪花广播员152345678931428.00BJ3123张正华部门主管133456984321876.00(4)每个部门的员工中有一名是经理,每个经理只能管理一个部门,系统需要记录每个经理的任职时间。[概念模型设计]根据需求阶段搜集的信息,设计实体联系图(如图所示)和关系模式(不完整)。[关系模式设计]商场(商场编号,商场名称,地址,联系电话)部门(部门编号,部门名称,位置分布,联系电话,{{U}}(a){{/U}})员工(员工编号,员工姓名,岗位,电话号码,工资,{{U}}(b){{/U}})经理({{U}}(c){{/U}},任职时间)
进入题库练习
问答题【说明】 有如下关系数据库: S(SNO,SN,STATUS,CITY) P(PNO,PN,COLORS,WEIGHT) J(JNO,JN,CITY) SPJ(SNO,PNO,JNO,QTY) 其中,S为供应单位,P为零件,J为工程项目,SPJ为工程订购零件的订单,其语义为:某供应单位供应某种零件给某个工程,请用SQL完成下列操作。1. 【问题1】 求为工程J1提供红色零件的供应商代号。
进入题库练习
问答题【说明】 本程序将两个从小到大的有序链表合成一个新的从小到大的有序链表。链表的每一项由类 Node描述,而链表由List描述,类List的成员函数有以下几个: creatList(): 创建从小到大的有序链表。 multiplyList(List L1, Llst L2): 将链表L1和链表L2合并。 print(): 打印链表。 【C++代码】 #include <iostream> using namespace std; class List; class Node friend class List; public: Node(int data)   (1) ; private: int data; Node *next; ; class List public: List()list=NULL; void multiplyList(List L1, List L2); void creatList(); void print(); private: Node *list; ; void List::creatList() Node *p, *u, *pre; int dara; list=NULL; wbile(1) cout<<"输入链表的一项: (小于零,结束链表) "<<endl; cin>>data; if(dara<0)break;//小于零,结束输入 p=list; while(p !=NULL p=p->next; u= (2) ; if(p==list)list=u; else pre->next=u;   (3) ; void List::multiplyList(List L1, List L2) Node *pL1, *pL2, *pL, *u; list = NULL; pL1 = L1.list; pL2 = L2.11st; while(pL1 != NULL pL1 = pL1->next; else u = new Node(pL2->data); pL2 = pL2->next; if(list == NULL) list = (4) ; else pL->next=u; pL=u; pL1 = (pL1 != NULL)? pL1:pL2; while(pL1 != NULL) u= (5) ; pL1 = pL1->next; if(list == NULL) list=pL=u; else pL->next=u; pL=u; void List::print() Node *p; p = list; while(p !=NULL) cout<<p->data<<"/t"; p=p->next; cout<<end1; void main() List L1, L2, L; cout<<"创建第一个链表/n";L1.creatList(); cout<<"创建第二个链表/n";L2.creatList(); L1.print();L2.print(); L.multiplyList(L1,L2); L.print();
进入题库练习
问答题【说明】“进货库存信息管理系统”是ERP系统中一个重要的子系统,下面是该系统的一个简化了的主结构功能图。其中一些各系统功能描述如下:[进货信息管理系统]①进货单据建立文件维护管理工作。②进货查询统计管理工作。③进货过账工作。在进货管理系统中,要处理“成本计算和费用摊消”的问题。处理方式如下所述。进口货物的成本计算:(1)先算出本次进货货物的原币总成本金额。(2)再依照当时原币(如:美金US$,英镑、港币HK$等)的汇率乘以本次进货原币总成本金额,算出本次进货台币总成本金额。(3)再计算出本次进货所产生的全部费用总金额(包含:关税、报关费、运费、其他费用等费用)。(4)将“本次进货台币总成本金额”加上“全部费用总金额”算出本次实际的“总成本金额”。(5)再利用下述公式算出各单项货物的“单项货物的成本金额”。  (6)最后一个步骤,再将“单项货物的成本金额”除以单项货物本次进货的数量,即可算出“单一货物本次进货实际的成本金额”。【问题1】将此“进口货物的成本计算方式”利用UML的类图米设计结构,要求使用到抽象和继承。写出类1和类2名称(中文、英文皆可,但要说明其主要功能)【问题2】说明类图都包括什么。【问题3】解释依赖与泛化,请举例。
进入题库练习
问答题现准备为某银行开发一个信用卡系统CCMS,该系统的基本功能如下。(1)信用卡申请。非信用卡客户填写信用卡申请表,说明所要申请的信用卡类型及申请者的基本信息,提交CCMS。如果信用卡申请被银行接受,CCMS将记录该客户的基本信息,并发送确认函给该客户,告知客户信用卡的有效期及信贷限额;否则该客户将会收到一封拒绝函。非信用卡客户收到确认函后成为信用卡客户。(2)信用卡激活。信用卡客户向CCMS提交激活请求,用信用卡号和密码激活该信用卡。激活操作结束后,CCMS将激活通知发送给客户,告知客户其信用卡是否被成功激活。(3)信用卡客户信息管理。信用卡客户的个人信息可以在CCMS中进行在线管理。每位信用卡客户可以在线查询和修改个人信息。(4)交易信息查询。信用卡客户使用信用卡进行的每一笔交易都会记录在CCMS中。信用卡客户可以通过CCMS查询并核实其交易信息(包括信用卡交易记录及交易额)。图1和图2分别给出了该系统的项层数据流图和0层数据流图的初稿。图1顶层数图20层数据流图
进入题库练习
问答题【说明】 “背包问题”的基本描述是:有一个背包,能盛放的物品总重量为S,设有N件物品,其重量分别为w1;w2,……,wn,希望从N件物品中选择若干件物品,所选物品的重量之和恰能放入该背包,即所选物品的重量之和等于S。 如下程序均能求得“背包问题”的一组解,其中程序4.1是“背包问题”的递归解法,而程序4.2是“背包问题”的非递归解法。 【程序4.1】 #include<stdio.h> #define N 7 #define S 15 int w[N+1]=0,1,4,3,4,5,2,7; int knap(int s,int n) if(s==0)return 1; if(s<0||(s>0& &n<1))return 0; if( (1) ))| printf("%4d",w[n]);return 1; return (2) ; main() if(knap(S,N))printf("OK!/n"); else printf("NO!/n"); 【程序4.2】 #include<stdio.h> #define N 7 #define S 15 typedef struct int s; int n: int job; KNAPTP; int w[N+1]=0,1,4,3,4,5,2,7; int knap(int s,int n); main() if(knap(S,N))printf("OK!/n"); else printf("NO!/n"); int knap(int s,int n) KNAPTP stack[100],x; int top,k,rep; x.s=s;x.n=n; x.job=0; top=|;Stack[top]=x; k=0; while( (3) ) x=Stack[top]; rep=1; while(!k && rep) if(x.s==0)k=1;/*已求得一组解*/ else if(x.s<0||x.n <=0)rep=0; elsex.s= (4) ;x.job=1; (5) =x; if(!k) rep=1; while(top>=1&&rep) x=stack[top--]; if(x.job==1) x.s+=W[x.n+1]; x.job=2; Stack[++top]=x; (6) ; if(k)/*输出一组解*/ while(top>=1) x=staCk[top--]; if(x.job==1) printf("%d/t",w[x.n+1]); return k;
进入题库练习
问答题【说明】[程序6说明]单源最短路径的分支限界算法。 const int MAXNUM=29999; #include<iostream> #include<vector> #include<algorithm> #include<functional> using namespace std; template <class VertexType,class EdgeType> class MinNode { //程序中使用的最小化堆的结点说明 friend class Graph<VertexType,EdgeType> public: MinNode (int nl, EdgeType length1) { VexNum=nl; length=length1; } bool operator>(const MinNode<VertexType,EdgeType> //记录源点序号,序号数组p及distance下标相一致。源点为初始扩展顶点 EdgeType length; //记录源点到本顶点的当前最短路径的长度,源点到自身的长度为0 } template<class VertexType,classEdgeType> void Graph<VertexType,EdgeType>:: shortestpath(VertexType start) { int j,k,source;//source 记录源点的序号。 EdgeType*distance={{U}} (2) {{/U}}; int*p=new int[MaxNumVertex]; vector<MinNode<VertexType,EdgeType> >H; for(source=0;source<MaxNumVertex;source++) { if(NodeList[source]==start)break;} if (source>=MaxNumVertex){cout<<”This is error!”<<end1;return;} MinNode<VertexType,Edge Type>{{U}} (3) {{/U}}; for(k=0;k<MaxNumVertex;k++) { distance[k]:MAXXUM; //记录源点到本顶点k的最终的最短路径的长度 p[k]=source; //记录最短路径上的本顶点的直接前驱顶点的序号 } distance[source]=0;p[source]=-1;//m 是源点,前一顶点不存在 vector<MinNode<VertexType, EdgeType>>::iterator q; while(1){ for(j=0;j<MaxNumVertex;j++) if((AdjMatrix[E.VexNum* MaxNumVertex+j]<MAXNUM) &&({{U}} (4) {{/U}}<distance[j])) { distance[j]=E.length+AdjMatrix[E.VexNum* MaxNumVertex+j]; p[j]=E. VexNum; //记录顶点j的前一顶点 MinNode<VertexType, EdgeType>{{U}} (5) {{/U}}; H.push_ back(N); push_heap(H. begin(),H.end(),greater<MinNode<VertexType, EdgeType>>()); } if(H.empty()=true)break; //若优先队列为空,那么算法结束 else{ pop_ heap(H.begin(),H. end(),greater<MinNode<VertexType, EdgeType>>()); q=H.end()-1; //从最小化堆中取路径最短的顶点 E=*q; H.pop_ back(); //删除从最小化堆中“挤”出的顶点 } } //end while for(k=0;k<MaxNumVertex;k++){ cout<<"Shorstest path from vertex"<<k<<"is"<<distance[k]<<end1; j=k;cout<<"All vertices are:"; while(j!=source){cout<<j<<"->";j=p[j];} cout<<source<<”.”<<end1; } //打印顶点的最短路径长度和至源点的最短路径上经过的顶点序列 return; }
进入题库练习
问答题[说明]某图书管理系统的主要功能是图书管理和信息查询。对于初次借书的读者,系统自动生成读者号,并与读者基本信息(姓名、单位和地址等)一起写入读者文件。该系统的图书管理功能主要分为购入新书、读者借书、读者还书及图书注销4个方面。(1)购入新书时需要为该书编制入库单。入库单内容包括图书分类目录号、书名、作者、价格、数量和购书日期,将这些信息写入图书目录文件并修改文件中的库存总量(表示到目前为止,购入此种图书的数量)。(2)读者借书时需填写借书单。借书单内容包括读者号和所借图书分类目录号。系统首先检查该读者号是否有效,若无效,则拒绝借书;若有效,则进一步检查该读者已借图书是否超过最大限制数(假设每位读者能同时借阅的书不超过10本),若已达到最大限制数,则拒绝借书;否则允许借书,同时将图书分类目录号、读者号和借阅日期等信息写入借书文件中。(3)读者还书时需填写还书单。系统根据读者号和图书分类目录号,从借书文件中读出与该图书相关的借阅记录,标明还书日期,再写回到借书文件中,若图书逾期,则处以相应的罚款。(4)注销图书时,需填写注销单并修改图书目录文件中的库存总量。系统的信息查询功能主要包括读者信息查询和图书信息查询。其中,读者信息查询可得到读者的基本信息及读者借阅图书的情况;图书信息查询可得到图书基本信息和图书的借出情况。该图书管理系统的顶层数据流图,如图2-21所示;该图书管理系统的第0层DFD图,如图2-22所示;其中加工2的细化图,如图2-23所示。1.[问题1]请用100字以内的文字简要说明逻辑数据流图(LogicalDataFlowDiagram)和物理数据流图(PhysicalDataFlowDiagram)之间的主要差别。
进入题库练习
问答题【说明】装饰者模式动态地给一个对象添加一些额外的职责,就扩展功能而言,该模式比生成子类方式更加灵活。装饰模式的提出有助于解决滥用继承的问题。例如,一个名叫星巴兹(Starbuzz)的咖啡连锁店提供多种多样的咖啡,最朴素的设计就是采用继承,即设计一个饮料抽象基类Beverage,让不同种类的咖啡HouseBlend、Decaf、Espresso、DarkRoast继承Beverage类,如图13-23所示。Beverage类的cost()方法是抽象方法,每个子类的cost()方法实现即返回具体咖啡种类的价钱,Beverage类的description实例变量由每个子类设置,用来描述该类饮料,Beverage类的getDescription()方法用来返回此描述。客户在点咖啡时还可以要求添加各种各样的调料(Condiment),加入的调料不同所收取的费用也是不同的,让各种加了调料的不同咖啡都继承基类Beverage,当咖啡种类和调料种类很多时,组合种类的数量就会急剧增长,就会发生“类数量爆炸”现象,如图13-24所示。显然,采用这种设计方式会使得代码的维护变得十分困难,可以采用装饰者模式来解决这个问题。软件设计师蝴蝶飞根据装饰者模式的思想设计了如图13-25所示的类图。在图13-25中,将各种调料Milk、Mocha、Soy、Whip作为装饰者来装饰House-Blend、Decal、Espresso、DarkRoast等各种咖啡。下面的Java程序(代码13-6)对应其具体实现。【代码13-6】importjava.io.*;abstractclassBeverageStringdescription="UnknownBeverage";publicStringgetDescription()returndescription;public(1)doublecost();abstractclassCondimentDecorator(2)BeveragepublicabstractStrmggetDescription();classDecafextendsBeveragepublicDecaf()description="DecafCoffee";publicdoublecost()return1.05;classEspressoextendsBeveragepublicEspresso()description="Espresso";publicdoublecost()return1.99;classHouseBlendextendsBeveragepublicHouseBlend()description="HouseBlendCoffee";publicdoublecost()return.89;classDarkRoastextendsBeveragepublicDarkRoast()description="DarkRoastCoffee";publicdoublecost()return.99;classMochaextendsCondtmentDecoratorBeverage(3);publicMocha(Beveragebeverage)this.beverage=beverage;publicStringgetDescription()returnbeverage.getDescription()+",Mocha";publicdoublecost()return.20+beverage.cost();ClassSoyextendsCondimentDecoratorBeveragebeverage;publicSoy(Beveragebeverage)this.beverage=beverage;publicStrillggetDescription()returnbeverage.getDescription()+",Soy";publicdoublecost()return.15+beverage.cost();classWhipextendsCondimentDecoratorBeveragebeverageipublicWhip(Beveragebeverage)this.beverage=beverage;publicStringgetDescrlption()returnbeverage.getDescription()+",Whip";publicdoublecost()return.10+beverage.cost();classMilkextendsCondlmentDecoratorBeverligebeverage;publicMilk(Beveragebeverage)this.beverage=beverage;publicStringgetDescription()returnbeverage.getDescription()+",Milk";publicdoublecost()return.10+beverage.cost();publicclassStarbuzzCoffeepublicstaticvoidmain(Sttingargs[])//订一杯Espresso咖啡,不需要任何调料,打印出它的描述和价钱Beveragebeverage=newEspresso();System.out.println(beverage.getDescription()+"$"+beverage.cost());//订一杯加了两份Macha调料、一份Whip调料的DarkRoast咖啡//并打印出它的描述和价钱Beveragebeverage2=newDarkRoast();beverage2=newMocha(beverage2):beverage2=new(4)(beverage2);beverage2=newWhip(beverage2);System.out.println(beverage2.getDescription()+"$"+beverage2.cost());//订一杯加了一份Soy调料、一份Mocha调料、一份Whip调料//的HouseBlend咖啡,并打印出它的描述和价钱Beveragebeverage3=newHouseBlend();beverage3=newSoy(beverage3);beverage3=newMocha(beverage3);beverage3=newWhip(beverage3);System.out.println(beverage3.getDescription()+"$"+beverage3.cost());【问题1】根据题目叙述,请将上述Java程序代码13-6中的(1)~(4)空填充完整。【问题2】请写出上述程序的输出结果。
进入题库练习
问答题 阅读以下说明和流程图,回答问题1至问题3。 【说明】 某城市电信局受理了许多用户申请在指定电话上开设长话业务。长话包括国内长途和国际长途。电信局保存了长话用户档案和长话业务档案。 长话用户档案的记录格式为 用户编码 用户名 用户地址  长话业务档案的记录格式为 电话号码 用户编码 国内长途许可标志 国际长途许可标志  电话用户每次通话的计费数据都自动地记录在电信局程控交换机的磁带上。计费数据的记录格式为 日期 电话号码 受话号码 通话开始时间 通话持续时间  该电信局为了用计算机自动处理长话收费以提高工作效率,开发了长话计费管理系统。该系统每月能为每个长话用户打印出长话缴费通知单。长话缴费通知单的记录格式为 用户名 用户地址 国内长途话费 国际长途话费 话费总额  流程图描述了该系统的数据处理过程。  该系统每天对原始的计费数据进行分类排序,并确定每个通话记录的通话类型(市话/国内长途/国际长途),再根据话费单价文件算出每个通话记录应收取的话费。因此,形成的日计费文件中,增加了两个数据项:通话类型和话费。该系统每日对日计费文件进行累计 (按电话号码和通话类型,对该类型的话费进行累计,得到该电话号码该通话类型的当月话费总计),形成月计费文件。  月计费文件经过长话出账处理形成长话账单文件。长话账单文件的记录格式为 月份 用户编码 电话号码 国内长途话费 国际长途话费 话费总额  长话账单文件经过处理5和处理6的处理后,就可以形成长话缴费通知单。
进入题库练习
问答题【说明】 关于一位花商有以下一些事实。 (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,普通名,拉丁名,花能够生长的最冷地区,花能够生长的最热地区,发货类型,日光需求)
进入题库练习
问答题阅读下列说明、图1和图2,回答问题1、问题2和问题3。【说明】下面是某租车信息管理系统的介绍:该车库中备有若干车辆,每辆车有车号、车牌、车名、价格等属性。车库不定期地购买并注册新车供用户借用,也可将报废的旧车注销以停止租用。车库可为众多用户提供服务。每个用户在借车之前需注册姓名、地址等内容。每个用户最多可同时借3辆车。每辆车借期7天;若有一辆车超期,则不可再借其他车。一辆车超期一天罚款250元。若一辆车超期3周不归还,则发布通告。若用户借的车丢失,在罚款处理之前不能借车,每辆报失的车罚款该车目前市价(包括折旧)的1.2倍。注册新用户不受限制;而注销用户之前,该用户必须归还所有借的车,或者报失并接受罚款。【状态图1】
进入题库练习
问答题[说明] 某软件开发公司,决定结合自身工作的需求开发设计本公司的项目工作管理系统,由郭工程师承担数据库的设计工作。公司项目管理的需求分析如下。 1.组织机构。该公司有多个部门,每个部门有多个职员、多个办公室,每个办公室有一部电话。当部门变更时更换新的部门代码。职员辞职后,若再次被聘用仍使用辞职前的代码。被聘用职员担任某职务,职务用职务代码来标识。职务分为:工程师、高级工程师、经理助理、经理等。职员的工资根据等级区分,共分为S、A、B、C、D 5个等级。一个职务对应某个等级,一个等级对应多个职务。职员月工资等于职员月工作时间(小时)乘以小时工资。职员的人事变动及职位变更(升级、降级)在月初进行。 2.项目管理。项目用项目代码标识,使用过的项目代码不能重复使用。一个部门可承担多个项目,但一个项目仅由一个部门承担。一个项目有一名项目主管和多个职员;一个职员可参加多个项目。项目代码由系统自动生成,一旦项目建立,项目名、部门代码及起始年月日不能再变更。 3.项目的工作管理流程为:项目工作计划输入(初始计划)→工作业绩输入→业绩生成(每月一次)→计划修正(每月一次)。 ①项目工作计划输入。项目主管使用如图1-9所示的计划输入界面,输入项目代码、职员代码、职员参加某个项目的月工作时间(计划)。图中空白区域为可输入项。 项目代码 123456 项目名 ABCD 部门代码 03 部门名 开发部 起始年月日 2007-06-11 结束年月日 2007-11-31 登陆时间 2007-05-28 职员代码 职员名 6月 7月 8月 9月 10月 11月 12月 1月 2月 3月 4月 5月 合计 0302 小郭 120 180 180 180 180 180 1020 0316 小谢 120 180 180 150 150 150 930 0309 张三 90 150 150 180 180 180 930 0328 李四 120 180 180 120 120 90 870 0321 王五 90 150 150 150 150 90 810  ②工作业绩输入。输入职员每天参加各个项目的工作时间。如图1-10所示为工作业绩输入界面,图中空白区域为可输入项。其中,出勤时间由考勤系统管理,指定项目代码的顺序可以不同,并且一天可以输入多个项目代码,但同一个项目代码不能重复输入。 职工代号 0302 职员名 小郭 输入年月 2007 6月 年月日 星期 出勤时间 每个项目的工作时间 项目代码 工作时间 项目代码 工作时间 备注 2007-06-11 一 12.0 123456 8.0 345678 4.0 2007-06-12 二 15.0 123456 10.0 345678 5.0 2007-06-13 三 18.0 123456 15.0 345678 3.0 2007-06-14 四 15.0 123456 15.0 2007-06-15 五 18.0 123456 18.0 2007-06-16 六 10.0 123456 10.0 2007-06-17 日 0.0 ③业绩生成。月底汇总职员的当月工作业绩,生成月工作业绩表。 ④计划修正。项目主管根据项目进度修改以后的工作计划。 郭工程师根据公司的项目需求将数据库关系模式设计如下: 部门(部门代码,部门名,起始年月,终止年月,办公室,办公电话); 职务(职务代码,职务名); 等级(等级代码,等级名,年月,小时工资); 职员(职员代码,职员名,部门代码,职务代码,任职时间); 项目(项目代码,项目名,部门代码,起始年月日,结束年月日,项目主管); 工作计划(项目代码,职员代码,年月,工作时间)。
进入题库练习
问答题【说明】 本程序将两个从小到大的有序链表合成一个新的从小到大的有序链表。链表的每一项由类 Node描述,而链表由List描述,类List的成员函数有以下几个: creatList(): 创建从小到大的有序链表。 multiplyList(List L1, Llst L2): 将链表L1和链表L2合并。 print(): 打印链表。 【C++代码】 #include <iostream> using namespace std; class List; class Node{ friend class List; public: Node(int data){  {{U}} (1) {{/U}}; } private: int data; Node *next; }; class List{ public: List(){list=NULL;} void multiplyList(List L1, List L2); void creatList(); void print(); private: Node *list; }; void List::creatList() { Node *p, *u, *pre; int dara; list=NULL; wbile(1){ cout<<"输入链表的一项: (小于零,结束链表) "<<endl; cin>>data; if(dara<0)break;//小于零,结束输入 p=list; while(p !=NULL p=p->next; } u={{U}} (2) {{/U}}; if(p==list)list=u; else pre->next=u;  {{U}} (3) {{/U}}; } } void List::multiplyList(List L1, List L2) { Node *pL1, *pL2, *pL, *u; list = NULL; pL1 = L1.list; pL2 = L2.11st; while(pL1 != NULL pL1 = pL1->next; }else{ u = new Node(pL2->data); pL2 = pL2->next; } if(list == NULL){ list ={{U}} (4) {{/U}}; }else{ pL->next=u; pL=u; } } pL1 = (pL1 != NULL)? pL1:pL2; while(pL1 != NULL){ u={{U}} (5) {{/U}}; pL1 = pL1->next; if(list == NULL){ list=pL=u; }else{ pL->next=u; pL=u; } } } void List::print() { Node *p; p = list; while(p !=NULL){ cout<<p->data<<"/t"; p=p->next; } cout<<end1; } void main() { List L1, L2, L; cout<<"创建第一个链表/n";L1.creatList(); cout<<"创建第二个链表/n";L2.creatList(); L1.print();L2.print(); L.multiplyList(L1,L2); L.print(); }
进入题库练习
问答题【说明】 所谓货郎担问题,是指给定一个无向图,并已知各边的权,在这样的图中,要找一个闭合回路,使回路经过图中的每一个点,而且回路各边的权之和最小。 应用贪婪法求解该问题。程序先计算由各点构成的所有边的长度(作为边的权值),按长度大小对各边进行排序后,按贪婪准则从排序后的各边中选择边组成回路的边,贪婪准则使得边的选择按各边长度从小到大选择。 函数中使用的预定义符号如下: #define M 100 typedef struct/*x为两端点p1、p2之间的距离,p1、p2所组成边的长度*/ float x; int p1, p2; tdr; typedef struct/*p1、p2为和端点相联系的两个端点,n为端点的度*/ int n, P1, p2; tr; typedef struct/*给出两点坐标*/ float x,y; tpd; typedef int tl[M]; int n=10; 【函数】 float distance(tpd a,tpd b);/*计算端点a、b之间的距离*/ void sortArr(tdr a[M], int m); /*将已经计算好的距离关系表按距离大小从小到大排序形成排序表,m为边的条数*/ int isCircuit(tr[M], int i, int j); /*判断边(i, j)选入端点关系表r[M]后,是否形成回路,若形成回路返回0*/ void selected(tr r[M], int i, int j);/*边(i,j)选入端点关系表r*/ void course(tr r[M], tl 1[M]);/*从端点关系表r中得出回路轨迹表*/ void exchange(tdr a[M], int m, int b); /*调整表排序表,b表示是否可调,即是否有边长度相同的边存在*/ void travling(tpd pd[M], int n, float dist, t1 locus[M]) /*dist记录总路程*/ tdr dr[M];/*距离关系表*/ tr r[M];;/*端点关系表*/ int i, j, k, h, m;/*h表示选入端点关系表中的边数*/ int b;/*标识是否有长度相等的边*/ k=0; /*计算距离关系表中各边的长度*/ for(i=1;i<n;i++) for(j=i+1;j<=n;j++) k++; dr[k].x= (1) ; dr[k].p1=i; dr[k].p2=j; m=k; sortArr(dr,m);/*按距离大小从小到大排序形成排序表*/ do b=1; dist=0; k=h=0; do k++; i=dr[k].p1; j=dr[k].p2; if((r[i].n<=1) h++; dist+=dr[k].x; else if( (4) ) /*最后一边选入r成回路,则该边必须加入且得到解*/ selected(r,i,j); h++; dist+=dr[k].x; while((k!=n) if(h==n)/*最后一边选入构成回路,完成输出结果*/ course(r,locus); else/*找不到解,调整dr,交换表中边长相同的边在表中的顺序,并将b置0*/   (5) ; while(!b);
进入题库练习
问答题[说明]快速排序是一种典型的分治算法。采用快速排序对数组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.合并:快速排序在原地排序,故无需合并操作。1.[问题1]下面是快速排序的伪代码,请将空缺处(1)~(3)的内容填写完整。伪代码中的主要变量说明如下。A:待排序数组p,r:数组元素下标,从p到rq:划分的位置x:枢轴元素i:整型变量,用于描述数组下标。下标小于或等于i的元素的值,小于或等于枢轴元素的值j:循环控制变量,表示数组元素下标
进入题库练习