首页
试卷库
试题库
当前位置:
X题卡
>
所有题目
>
题目详情
软件项目的进度管理有许多方法,()不仅表达了子任务之间的逻辑关系,而且可以找出关键子任务。
查看本题答案
包含此试题的试卷
中级软件设计师《单项选择》真题及答案
点击查看
你可能感兴趣的试题
软件项目的进度管理有许多方法但77不是常用的进度控制图示方法在几种进度控制方法中78难以表达多个子任
甘特图
IPO
PERT
时标网状图
阅读下列说明[说明]某省级电子政务工程建设项目重点建设内容是在已有基础软硬件环境下进行业务应用系统的
以下关于编制进度计划应掌握的程序性工作方法的陈述正确的有
利用组织分解结构确定管理任务和子项任务
利用工作(工程)分解结构界定承担上述任务的机构与岗位
检查任务和子任务之间的逻辑关系
草拟进度计划
完善并优化进度计划
阅读下列说明[说明]某省级电子政务工程建设项目重点建设内容是在已有基础软硬件环境下进行业务应用系统的
下列不是项目进度计划编制方法的是
利用工作(工程)分解结构确定管理任务和子项任务
完成管理任务与子任务
检查任务和子任务之间的逻辑关系
确定工期
完善并优化进度计划
下列各项不属于项目进度计划程序性工作方法的有
利用工作(工程)分解结构确定管理任务和子项任务
完成管理任务与子任务
检查任务和子任务之间的逻辑关系
确定工期
完善并优化进度计划
软件项目的进度管理有许多种方法在几种进度控制方法中难以表达多个子任务之间的逻辑关系
甘特图
IPO
PERT
时标网状图
在进行软件项目的进度管理时使用不仅能表达子任务间的依赖关系还可以找出关键子任务
甘特图
IPO
PERT
时标网状图
阅读下列说明 [说明] 某省级电子政务工程建设项目重点建设内容是在已有基础软硬件环境下
阅读下列说明 [说明] 某省级电子政务工程建设项目重点建设内容是在已有基础软硬件环境下
项目管理软件能确定各项任务之间的逻辑依赖关系
软件项目的进度管理有许多方法但77不是常用的进度控制图示方法在几种进度控制方法中78难以表达多个子任
数据流
控制流
事件
起点或终点
论文试题论软件项目的进度管理软件开发项目进度管理是软件开发项目管理的一个重要内容有效的进度管理是保证
软件项目的进度管理有许多方法清晰地描述每个任务从何时开始到何时结束以及各个任务之间的并行性但难以表达
Gantt图
IPO
PERT
时标网状图
编制项目计划应掌握的程序性工作方法有
利用工作分解结构确定管理任务和子项任务
检查任务和子任务间的逻辑关系
革拟进度计划
计算计划最迟完成时间
完善并优化进度计划
阅读下列说明回答问题1至问题3将解答填入答题纸的对应栏内【说明】某省级电子政务工程建设项目重点
软件项目的进度管理有许多方法但77不是常用的进度控制图示方法在几种进度控制方法中78难以表达多
数据流
控制流
事件
起点或终点
下列关于建设项目进度控制的方法表述正确的是
规划、控制和协调是建设项目进度控制的主要方法
控制是项目的前提
规划就是各建设项目管理各部门之间和各参与方之间的进度关系
规划是建设项目进度控制的重要方法和基础
协调是建设项目业主在项目管理上极为重要的任务
软件项目的进度管理有许多方法但77不是常用的进度控制图示方法在几种进度控制方法中78难以表达多个子任
数据流
控制流
事件
处理
阅读下列说明 [说明] 某省级电子政务工程建设项目重点建设内容是在已有基础软硬件环境下
热门试题
更多
[说明] 对多个元素的聚合进行遍历访问时需要依次推移元素例如对数组通过递增下标的方式数组下标功能抽象化一般化的结果就称为迭代器Iterator模式以下程序模拟将书籍Book放到书架BookShelf上并依次输出书名这样就要涉及到遍历整个书架的过程使用迭代器Iterator实现图7-1显示了各个类间的关系以下是JAVA语言实现能够正确编译通过 [图7-1] [C代码] typedefbool*fun1; typedef1*fun2; constintBOOK_MAX=10;//最大书本数 structBook charname30; ; structBookShelf//书架 structBookbooks[BOOKMAX]; intindex;//书架上最后一本书的下标加1即下一本书的下标如0表示有0本书 ; StructBook*getBookAtstructBookShelf*BSintindex //从书架BS上取得下标为index的书 //只有当下标大于等于0且不大于当前书架上的最后一本书对应的下标才取书成功 //否则失败返回NULL ifindex>=0&&2 return&BS->books[index]; returnNULL; boolappendBookstructBookShelf*BSstructBookbook ifBS->index<BOOK_MAX BS->books[BS->index++]=book; returntrue; returnfalse; intgetLengthstructBookShelf*bookShelf returnbookShelf->index; structIterator//迭代器 fun1hasNext;//判断是否还有下一个元素 fun2next;//取得下一个元素 ; structBookshelfIteratorf//书架迭代器 intindex; struetBookShelf*bookShelf; bookShelfIterator=0NULL; boolBShasNext//判断是否还有下一本书 ifbookShelfIterator.index returntrue; else returnfalse; structBook*BSnext//取得下一本书并将index加1以便下一次正确访问 returngetBookAtbookShelfIterator.bookShelf 3; voidmain structBookShelfbookShelf; bookShelf.index=0; //将书籍上架省略代码 //将bookShelf与bookShelfIterator相关联 bookShelfIterator.bookShelf=4; structIteratoriterator; iterator.hasNext=BShasNext; iterator.next=BSnext; structBook*b; while5//遍历书架输出书名 b=iterator.next; printf"%s/n"b->name; 2处填
[说明]任何一种程序都是为了解决问题而撰写的解决问题时需要实现一些特定的运算法则在策略Strategy模式下可以更换实现算法的部分而不留痕迹切换整个算法简化改为采用其他方法来解决同样问题以下是一个剪刀石头布游戏猜拳时的策略有2种方法第一种是猜赢后继续出同样的招式WinningStrategy第二种是从上一次出的招式中以概率分配方式求出下一个招式的几率ProbStrategy程序中定义了Hand类表示猜拳时的手势类内部以0石头1剪刀2布来表示Hand类的实例只会产生3个以下是C++语言实现能够正确编译通过[C++代码]classHandprivate:inthandvalue;staticHand*hand0;staticHand*hand1;staticHand*hand2;1;Handinthandvaluethis->handvalue=handvalue;public:2Hand*getHandinthandvalue/*省略具体实现*/;Hand*Hand::hand0=newHand0;Hand*Hand::hand1=newHand1;Hand*Hand::hand2=newHand2;classStrategypublic:3Hand*nextHand=0;;classWinningStrategy:publicStrategyprivate:boolwon;Hand*prevHand;public:winningStrategywon=false;Hand*nextHandif!wonprevHand=Hand::getHandrand%3;returnprevHand;;classprobstrategy:publicStrategypublic:Hand*nextHandinthandvalue=0;/*省略具体实现*/returnHand::getHandhandvalue;;classPlayerprivate:stringname;Strategy*strategy;public:Playerstringname4strategythis->name=name;this->strategy=strategy;Hand*nextHand//向战略请示手势return5;;
[说明]在进行文法分析的时候通常需要检测一个单词是否在我们的单词列表里为了提高查找和定位的速度通常都要画出与单词列表所对应的单词查找树程序构造一棵二叉排序树每个节点存储一个单词按字典序列较小的在左子树较大的在右子树函数中使用的预定义符号如下typedefstructTreeNode/*二叉排序树节点*/char*word;structTreeNode*left*right;BNODE;[函数]intgetWordFILE*fptchar*word/*从文件fpt中读取单词到word中到达文件结束时返回0*/charc;c=fgetcfpt;ifc==EOFreturn0;/*跳过单词间的非字母字符*/while!tolowerc>=’a’&&tolowerc=’a’&&tolowerc0ptr->right:ptr->left;ptr=BNODE*mallocsizeofptr;ptr->left=ptr->right=NULL;ptr->word=char*mallocstrlenword+1;strcpyptr->wordword;ifp==NULL4;elseifcompres>0p->right=ptr;elsep->left=ptr;intmainFILE*fpt;charword[40];BNODE*root=NULL;iffpt=fopentext.inr==NULLprintf不能打开文件text.in!/n;return1;whilegetWordfptword==1BTree5;fclosefpt;return0;
[说明]任何一种程序都是为了解决问题而撰写的解决问题时需要实现一些特定的运算法则在策略Strategy模式下可以更换实现算法的部分而不留痕迹切换整个算法简化改为采用其他方法来解决同样问题以下是一个剪刀石头布游戏猜拳时的策略有2种方法第一种是猜赢后继续出同样的招式WinningStrategy第二种是从上一次出的招式种以概率分配方式求出下一个招式的几率ProbStrategy程序中定义了Hand类表示猜拳时的手势类内部以0石头1剪刀2布来表示Hand类的实例只会产生3个以下是Java语言实现省略了不相关属性及方法方法实现体亦有所省略能够正确编译通过[Java代码]//Hand.jav__件publicclassHandpublicstaticfinalintHANDVALUE_GUU=0;//石头publicstaticfinalintHANDVALUE_CHO=1;//剪刀publicstaticfinalintHANDVALUE_PAA=2;//布publicstaticfinalHand[]hand=newHandHANDVALUE_GUUnewHandHANDVALUE_CHOnewHandHANDVALUE_PAA;privateinthandvalue;1Handinthandvaluethis.handvalue=handvalue;public2HandgetHandinthandvalue//从值取得对象实例returnhand[handvalue];//Strategy.jav__件publicinterfaceStrategypublic3HandnextHand;//ProbStrategy.jav__件importjava.util.Random;publicclassProbStrategyimplementsStrategypublicHandnextHandinthandvalue=0;/*省略具体实现*/returnHand.getHandhandvalue;//WinningStrategy.jav__件importjava.util.Random;publicclassWinningStrategyimplementsStrategy/*省略了不相关属性*/publicHandnextHandif!wonprevHand=Hand.getHandrandom.nextInt3;returnprevHand;//Player.jav__件publicclassPlayerprivateStringname;privateStrategystrategy;publicPlayerStringname4strategythis.name=name;this.strategy=strategy;publicHandnextHand//向战略请示手势return5;
[说明]在某些系统中存在非常复杂的对象可以采用循序渐进的方式进行组合将小对象组合成复杂的大对象以下实例展示了Builder生成器模式该实例用来建立文件文件内容包括一个标题一串字符以及一些有项目符号的项目Builder类规定组成文件的方法Director类利用这个方法产生一份具体的文件图5-1显示了各个类间的关系[图5-1]以下是C++语言实现能够正确编译通过[C++代码]classBuilderpublic:virtualvoidmakeTitlestringtitle=0;virtualvoidmakestringstringstr=0;virtualvoidmakeItems1items=0;virtualstringgetResult=0;;classDirectorprivate:2builder;public:DirectorBuilder*builderthis->builder=builder;stringconstructvectoritems;items.push_back早安;items.push_back午安;builder->makeTitleGreeting;builder->makeString从早上到白天结束;builder->makeItemsitems;builder->makeString到了晚上;3;//清空items向量items.push_back晚安;items.push_back好梦;builder->makeItemsitems;returnbuilder->getResult;;classTextBuilder:public4private:stringbuffer;public:TextBuilderbuffer=;voidmakeTitlestringtitlebuffer+========================================/n;buffer+=『+title+』/n;buffer+=/n;voidmakeStringstringstrbuffer+=■+str+/n;buffer+=/n;voidmakeItemsvectoritemsvector::iteratorit;forit=items.begin;it!=items.end;it++buffer+=.+*it+/n;buffer+=/n;stringgetResultbuffer+=========================/n;returnbuffer;;intmainDirector*director=newDirectornewTextBuilder;stringresult=stringdirector-5;cout
[说明]在某些系统中存在非常复杂的对象可以采用循序渐进的方式进行组合将小对象组合成复杂的对象以下实例展示了Builder生成器模式该实例用来建立文件文件内容包括一个标题一串字符以及一些有项目符号的项目Builder类规定组成文件的方法Director类利用这个方法产生一份具体的文件图7-1显示了各个类间的关系[图7-1]以下是C语言实现能够正确编译通过[C代码]typedefvoid1char*title;typedefvoid*fun2charitems[][10]intN;typedefchar**fun3;charbuffer[500];structBuilder//构造器fun1makeTitle;2makeString;fun2makeItems;fun3getResult;;structDirectorstructBuilderbuilder;;char*construct3director//构造文件charitems[2][10]=早安午安;director->builder.makeTitleGreeting;director->builder.makeString从早上到白天结束;director->builder.makeItemsitems2;director->builder.makeString到了晚上;strcpyitems[0]晚安;strcpyitems[1]好梦;director->builder.makeItemsitems2;returndirector->builder.getResult;voidTXTmakeTitlechar*titlestrcatbuffer『;Strcatbuffertitle;strcatbuffer』/n/n;voidTXTmakeStringchar*strstrcatbuffer■;Strcatbufferstr;strcatbuffer/n/n;voidTXTmakeItemscharitems[][10]intN//将items加入文件中forinti=0i
[说明]图3-1描述某超市销售数据的部分处理流程超市中有若干台收款机和若干名收款员这里我们把一个收款员开始使用一台收款机到离开这台收款机称为该收款员的一次作业作业开始时收款员先在收款机上输入收款员号和作业前金额作业前金额是为了销售时的找零而在作业前预先放入钱柜的金额数作业结束时收款员要打开钱柜取走全部现金并把这些现金的金额数称为作业后金额输入收款机当作业前金额+本次作业售货总金额-本次作业退货总金额≠作业后金额时表示这次作业存在金额差错本流程图已作简化并作以下假定该超市只有现金交易不用信用卡和礼券一个收款员因某种原因如吃饭在一天中可以有多个作业销售方式只有售货和退货两种整个超市分成若干部门如食品部服装部系统按部门统计一个月中各类货物的销售数量和金额最后根据月销售计划文件分析各部门完成销售计划的情况系统还统计每个收款员的差错情况和退货情况图中处理4和处理8每月的最后一天执行一次营业结束后其他处理每天执行一次图中部分数据文件的记录格式如下日销售数据收款机号+收款员号+作业前金额+售货标记|退货标记+货号+数量+单价+金额+作业后金额日销售文件记录作业开始标记+收款机号+收款员号+作业前金额|售货标记|退货标记+货号+数量+金额|作业结束标记+收款机号+收款员号+作业后金额部门目销售文件记录部门号+售货标记|退货标记+货号+数量+金额部门月销售计划文件记录部门号+月计划金额收款员差错月报月份+收款员号+差错作业数+差错总金额收款员退货月报月份+收款员号+退货次数+退货总金额其中w表示w重复出现多次a|b表示a或ba+b表示a与b[图3-1]分别写出收款员日销售文件商品文件部门日销售汇总文件至少应包含哪些数据项
[说明]为了有效记录交通事故情况欲设计一个交通事故记录系统一辆汽车有一个唯一的车牌号车主购买汽车时需要提供相关信息包括身份证姓名年龄性别地址等一个车主可以拥有多辆汽车而一辆汽车只有一个车主驾驶员不一定是车主因此记录交通事故时要记录驾驶员身份证号同时记录事故发生时刻图2-1描绘了人汽车交通事故三个实体类型及实体间联系的一个E-R图[图2-1]对应的关系模式为·人身份证号姓名性别年龄地址·汽车车牌号型号·事故车牌号身份证号时刻损失描述·拥有身份证号车牌号指出每种关系模式的主键
[说明]任何一种程序都是为了解决问题而撰写的解决问题时需要实现一些特定的运算法则在策略Strategy模式下可以更换实现算法的部分而不留痕迹切换整个算法简化改为采用其他方法来解决同样问题以下是一个剪刀石头布游戏猜拳时的策略有2种方法第一种是猜赢后继续出同样的招式WinningStrategy第二种是从上一次出的招式中以概率分配方式求出下一个招式的几率ProbStrategy程序中定义了Hand类表示猜拳时的手势类内部以0石头1剪刀2布来表示Hand类的实例只会产生3个以下是C++语言实现能够正确编译通过[C++代码]classHandprivate:inthandvalue;staticHand*hand0;staticHand*hand1;staticHand*hand2;1;Handinthandvaluethis->handvalue=handvalue;public:2Hand*getHandinthandvalue/*省略具体实现*/;Hand*Hand::hand0=newHand0;Hand*Hand::hand1=newHand1;Hand*Hand::hand2=newHand2;classStrategypublic:3Hand*nextHand=0;;classWinningStrategy:publicStrategyprivate:boolwon;Hand*prevHand;public:winningStrategywon=false;Hand*nextHandif!wonprevHand=Hand::getHandrand%3;returnprevHand;;classprobstrategy:publicStrategypublic:Hand*nextHandinthandvalue=0;/*省略具体实现*/returnHand::getHandhandvalue;;classPlayerprivate:stringname;Strategy*strategy;public:Playerstringname4strategythis->name=name;this->strategy=strategy;Hand*nextHand//向战略请示手势return5;;
[说明]某学校的教学系统描述如下学生信息包括学号Sno姓名Sname性别Ssex年龄Sage入学年份Syear主修专业Smajor其中学号是入学时唯一编定的教师信息包括教工号Tno姓名Tname性别Tsex年龄Tage职称Title其中教工号是唯一编定的课程信息包括课程号Cno课程名称Cname学时Cpeiiod学分Ccredit其中课程号是唯一编定的每个专业每个年级只有一个班级这样班级就可用入学年份标识每位教师只教授特定的一门的课程每门课程可以有多个教师教授各位老师的上课地点及上课时间有所不同注意一门课程至少有一位教师教授否则这门课程就视为不存在每位学生可以同时选修多门不同的课程一门课程至少要有10位学生选修否则就取消这门课程的开设注意选修课程时要指定任课教师不能重复选修同一门课程课程结束后任课教师给选修该课程的学生一个成绩Grade注意教师不能给没有选修他所教授课程的学生成绩即使选修了其他教师教授的同一门课也不行图2-1是经分析得到的E-R图[图2-1]按照有关模式名属性属性的格式将此E-R图转换为5个关系模式指出每个关系模式中的主码和外码其中模式名根据需要取实体名或联系名
[说明]假定用一个整型数组表示一个长整数数组的每个元素存储长整数的一位数字则实际的长整数m表示为m=a[k]×10k-2+a[k-1]×10k-3++a[3]×10+a[2]其中a[1]保存该长整数的位数a[0]保存该长整数的符号0表示正数1表示负数运算时先决定符号再进行绝对值运算对于绝对值相减情况总是绝对值较大的减去绝对值较小的以避免出现不够减情况注意不考虑溢出情况即数组足够大[函数]intcmpint*LAint*LB;/*比较长整数LA与LB的绝对值大小*//*若LA绝对值较大返回正值LA较小返回负值相等则返回0*/intADDint*LAint*LBint*LC/*计算长整数LA与LB的和结果存储于LC中*//*注意正数与负数的和相当于正数与负数绝对值的差*//*数据有误返回0正常返回1*/ifLA==NULL||LB==NULL||LC==NULLreturn0;int*pA*pBiNcarryflag;flag=LA[0]+LB[0];switchflag/*根据参与运算的两个数的符号进行不同的操作*/case0:case2:Lc[0]=LA[0];/*LA与LB同号结果符号与LALB相同*/pA=LA;pB=LB;1;break;case1:/*LA与LB异号*//*比较两者的绝对值大小结果符号与较大者相同*/flag=2;ifflag>0/*LA较大*/LC[0]=LA[0];pA=LA;pB=LB;elseifflag<0/*LB较大*/LC[0]=LB[0];pA=LB;pB=LA;else/*LA与LB相等*/LC[0]=0;LC[1]=0;return1;flag=-1;break;default:return0;break;/*switch*//*绝对值相加减*//*注意对于减法pA指向较大数pB指向较小数不可能出现不够减情况*/3;N=LA[1]>LB[1]LA[1]:LB[1];fori=0;i
=pA[1]/*LA计算完毕*/carry+=flag*pB[i+2];elseifi>=pB[1]/*LB计算完毕*/carry+=pA[i+2];elsecarry+=pA[i+2]+flag*pB[i+2];LC[i+2]=carry%10;carry/=10;if4/*需要借位针对减法*/LC[i+2]+=10;carry--;/*for*/if5/*最高进位针对加法*/LC[i+2]=carry;i++;ifLC[i+1]==0i--;/*若最高位为零针对减法*/LC[1]=i;return1;;/*ADD*/
[说明]在某些系统中存在非常复杂的对象可以采用循序渐进的方式进行组合将小对象组合成复杂的对象以下实例展示了Builder生成器模式该实例用来建立文件文件内容包括一个标题一串字符以及一些有项目符号的项目Builder类规定组成文件的方法Director类利用这个方法产生一份具体的文件图6-1显示了各个类间的关系以下是Java语言实现能够正确编译通过[Java代码]//Builder.jav__件public1classBuilderpublicabstractvoidmakeTitleStringtitle;publicabstractvoidmakeStringStringstr;publicabstractvoidmakeItemsString[]items;publicabstractObjectgetResult;//Director.jav__件publicclassDirectorprivate2builder;publicDirectorBuilderbuilderthis.builder=builder;publicObjectconstructbuilder.makeTitleGreeting;builder.makeString从早上到白天结束;builder.makeItemsnewString[]早安午安;builder.makeString到了晚上;builder.makeItemsnewString[]晚安好梦;returnbuilder.getResult;//TextBuilder.jav__件publicclassTextBuilder3BuilderprivateStringBufferbuffer=newStringBuffer;publicvoidmakeTitleStringtitlebuffer.append『+title+』/n/n;publicvoidmakeStringStringstrbuffer.append’■’+str+/n/n;publicvoidmakeItemsString[]itemsforinti=0;i
[说明]在某些系统中存在非常复杂的对象可以采用循序渐进的方式进行组合将小对象组合成复杂的大对象以下实例展示了Builder生成器模式该实例用来建立文件文件内容包括一个标题一串字符以及一些有项目符号的项目Builder类规定组成文件的方法Director类利用这个方法产生一份具体的文件图5-1显示了各个类间的关系[图5-1]以下是C++语言实现能够正确编译通过[C++代码]classBuilderpublic:virtualvoidmakeTitlestringtitle=0;virtualvoidmakestringstringstr=0;virtualvoidmakeItems1items=0;virtualstringgetResult=0;;classDirectorprivate:2builder;public:DirectorBuilder*builderthis->builder=builder;stringconstructvectoritems;items.push_back早安;items.push_back午安;builder->makeTitleGreeting;builder->makeString从早上到白天结束;builder->makeItemsitems;builder->makeString到了晚上;3;//清空items向量items.push_back晚安;items.push_back好梦;builder->makeItemsitems;returnbuilder->getResult;;classTextBuilder:public4private:stringbuffer;public:TextBuilderbuffer=;voidmakeTitlestringtitlebuffer+========================================/n;buffer+=『+title+』/n;buffer+=/n;voidmakeStringstringstrbuffer+=■+str+/n;buffer+=/n;voidmakeItemsvectoritemsvector::iteratorit;forit=items.begin;it!=items.end;it++buffer+=.+*it+/n;buffer+=/n;stringgetResultbuffer+=========================/n;returnbuffer;;intmainDirector*director=newDirectornewTextBuilder;stringresult=stringdirector-5;cout
[说明]在某些系统中存在非常复杂的对象可以采用循序渐进的方式进行组合将小对象组合成复杂的对象以下实例展示了Builder生成器模式该实例用来建立文件文件内容包括一个标题一串字符以及一些有项目符号的项目Builder类规定组成文件的方法Director类利用这个方法产生一份具体的文件图6-1显示了各个类间的关系以下是Java语言实现能够正确编译通过[Java代码]//Builder.jav__件public1classBuilderpublicabstractvoidmakeTitleStringtitle;publicabstractvoidmakeStringStringstr;publicabstractvoidmakeItemsString[]items;publicabstractObjectgetResult;//Director.jav__件publicclassDirectorprivate2builder;publicDirectorBuilderbuilderthis.builder=builder;publicObjectconstructbuilder.makeTitleGreeting;builder.makeString从早上到白天结束;builder.makeItemsnewString[]早安午安;builder.makeString到了晚上;builder.makeItemsnewString[]晚安好梦;returnbuilder.getResult;//TextBuilder.jav__件publicclassTextBuilder3BuilderprivateStringBufferbuffer=newStringBuffer;publicvoidmakeTitleStringtitlebuffer.append『+title+』/n/n;publicvoidmakeStringStringstrbuffer.append’■’+str+/n/n;publicvoidmakeItemsString[]itemsforinti=0;i
[说明]公司IT部门决定开发一个计算机管理系统以记录期刊的传阅情况期刊在公司内部传阅员工可以要求加入传阅队列图书室登记公司收到的期刊交给名单中的第一名员工员工应在三个工作日内完成阅读员工阅读完毕后通知系统系统提醒下一位阅读者取书下一个员工必须确认已收到期刊当传阅名单中下一位员工出差在外时将无法进行传阅此时将期刊传给再下一位而将该员工作标记再次传递此书时优先考虑该员工最后一位员工阅读完毕后将期刊交还图书室以便共用系统能在员工忘记传递期刊时发出提醒信息系统详细记录期刊传阅情况当员工阅读完后通知系统系统记录该员工员工号及日期并在备注栏注明是传出同样当员工收到期刊后给系统确认系统记录该员工员工号及日期并在备注栏注明是收到公司的员工都有一个唯一的员工号公司订阅了多种期刊为每一本期刊有唯一期刊流水号产生一份传阅名单并详细记录传阅情况员工的出差情况存储在系统主机中该系统采用面向对象方法开发系统中的类以及类之间的关系用UML类图表示图1-1是该系统的类图的一部分图1-2描述了成功传递期刊的序列图[图1-1][图1-2]同一种期刊分不同的期所以有多本同一种期刊传阅名单只需每一种期刊一份还是应该每本期刊一份为什么
[说明]假定用一个整型数组表示一个长整数数组的每个元素存储长整数的一位数字则实际的长整数m表示为m=a[k]×10k-2+a[k-1]×10k-3++a[3]×10+a[2]其中a[1]保存该长整数的位数a[0]保存该长整数的符号0表示正数1表示负数运算时先决定符号再进行绝对值运算对于绝对值相减情况总是绝对值较大的减去绝对值较小的以避免出现不够减情况注意不考虑溢出情况即数组足够大[函数]intcmpint*LAint*LB;/*比较长整数LA与LB的绝对值大小*//*若LA绝对值较大返回正值LA较小返回负值相等则返回0*/intADDint*LAint*LBint*LC/*计算长整数LA与LB的和结果存储于LC中*//*注意正数与负数的和相当于正数与负数绝对值的差*//*数据有误返回0正常返回1*/ifLA==NULL||LB==NULL||LC==NULLreturn0;int*pA*pBiNcarryflag;flag=LA[0]+LB[0];switchflag/*根据参与运算的两个数的符号进行不同的操作*/case0:case2:Lc[0]=LA[0];/*LA与LB同号结果符号与LALB相同*/pA=LA;pB=LB;1;break;case1:/*LA与LB异号*//*比较两者的绝对值大小结果符号与较大者相同*/flag=2;ifflag>0/*LA较大*/LC[0]=LA[0];pA=LA;pB=LB;elseifflag<0/*LB较大*/LC[0]=LB[0];pA=LB;pB=LA;else/*LA与LB相等*/LC[0]=0;LC[1]=0;return1;flag=-1;break;default:return0;break;/*switch*//*绝对值相加减*//*注意对于减法pA指向较大数pB指向较小数不可能出现不够减情况*/3;N=LA[1]>LB[1]LA[1]:LB[1];fori=0;i
=pA[1]/*LA计算完毕*/carry+=flag*pB[i+2];elseifi>=pB[1]/*LB计算完毕*/carry+=pA[i+2];elsecarry+=pA[i+2]+flag*pB[i+2];LC[i+2]=carry%10;carry/=10;if4/*需要借位针对减法*/LC[i+2]+=10;carry--;/*for*/if5/*最高进位针对加法*/LC[i+2]=carry;i++;ifLC[i+1]==0i--;/*若最高位为零针对减法*/LC[1]=i;return1;;/*ADD*/
[说明] 对多个元素的聚合进行遍历访问时需要依次推移元素例如对数组通过递增下标的方式数组下标功能抽象化一般化的结果就称为迭代器Iterator模式以下程序模拟将书籍Book放到书架BookShelf上并依次输出书名这样就要涉及到遍历整个书架的过程使用迭代器Iterator实现图6-1显示了各个类间的关系以下是JAVA语言实现能够正确编译通过 [图6-1] [Java代码] //Iterator.jav__件 publicinterfaceIterator publicabstractbooleanhasNext; publicabstractObjectnext; //Aggregate.jav__件 publicinterfaceAggregate publicabstractIteratoriterator; //Book.java publicclassBook //省略具体方法和属性 //BookshelfIterator.jav__件 publicclassBookshelf工terator1Iterator privateBookShelfbookShelf; privateintindex; publicBookshelfIteratorBookShelfbookShelf this.bookShelf=bookShelf; this.index=0; publicbooleanhasNext//判断是否还有下一个元素 ifindex<bookShelf.getLength returntrue; else returnfalse; publicObjectnextf//取得下一个元素 Bookbook=bookShelf.getBookAtindex; index++; returnbook; //BookShelf.java importjava.util.Vector; publicclassBookShelf privateVectorbooks; publicBookShelfintinitialsize this.books=newVectorinitialsize; publicBookgetBookAtintindex returnBookbooks.getindex; publicintgetLength returnbooks.size; publicIteratoriterator returnnewBookShelfIterator2; //Main.jav__件 publicclassMain publicstaticvoidmainStringargs BookShelfbookShelf=newBookShelf4; //将书籍上架省略代码 Iteratorit=bookShelf.3; while4//遍历书架输出书名 Bookbook=Bookit.5; System.out.printin""+book.getName; 3处填
[说明]任何一种程序都是为了解决问题而撰写的解决问题时需要实现一些特定的运算法则在策略Strategy模式下可以更换实现算法的部分而不留痕迹切换整个算法简化改为采用其他方法来解决同样问题以下是一个剪刀石头布游戏猜拳时的策略有2种方法第一种是猜赢后继续出同样的招式WinningStrategy第二种是从上一次出的招式种以概率分配方式求出下一个招式的几率ProbStrategy程序中定义了Hand类表示猜拳时的手势类内部以0石头1剪刀2布来表示Hand类的实例只会产生3个以下是Java语言实现省略了不相关属性及方法方法实现体亦有所省略能够正确编译通过[Java代码]//Hand.jav__件publicclassHandpublicstaticfinalintHANDVALUE_GUU=0;//石头publicstaticfinalintHANDVALUE_CHO=1;//剪刀publicstaticfinalintHANDVALUE_PAA=2;//布publicstaticfinalHand[]hand=newHandHANDVALUE_GUUnewHandHANDVALUE_CHOnewHandHANDVALUE_PAA;privateinthandvalue;1Handinthandvaluethis.handvalue=handvalue;public2HandgetHandinthandvalue//从值取得对象实例returnhand[handvalue];//Strategy.jav__件publicinterfaceStrategypublic3HandnextHand;//ProbStrategy.jav__件importjava.util.Random;publicclassProbStrategyimplementsStrategypublicHandnextHandinthandvalue=0;/*省略具体实现*/returnHand.getHandhandvalue;//WinningStrategy.jav__件importjava.util.Random;publicclassWinningStrategyimplementsStrategy/*省略了不相关属性*/publicHandnextHandif!wonprevHand=Hand.getHandrandom.nextInt3;returnprevHand;//Player.jav__件publicclassPlayerprivateStringname;privateStrategystrategy;publicPlayerStringname4strategythis.name=name;this.strategy=strategy;publicHandnextHand//向战略请示手势return5;
[说明]在某些系统中存在非常复杂的对象可以采用循序渐进的方式进行组合将小对象组合成复杂的对象以下实例展示了Builder生成器模式该实例用来建立文件文件内容包括一个标题一串字符以及一些有项目符号的项目Builder类规定组成文件的方法Director类利用这个方法产生一份具体的文件图7-1显示了各个类间的关系[图7-1]以下是C语言实现能够正确编译通过[C代码]typedefvoid1char*title;typedefvoid*fun2charitems[][10]intN;typedefchar**fun3;charbuffer[500];structBuilder//构造器fun1makeTitle;2makeString;fun2makeItems;fun3getResult;;structDirectorstructBuilderbuilder;;char*construct3director//构造文件charitems[2][10]=早安午安;director->builder.makeTitleGreeting;director->builder.makeString从早上到白天结束;director->builder.makeItemsitems2;director->builder.makeString到了晚上;strcpyitems[0]晚安;strcpyitems[1]好梦;director->builder.makeItemsitems2;returndirector->builder.getResult;voidTXTmakeTitlechar*titlestrcatbuffer『;Strcatbuffertitle;strcatbuffer』/n/n;voidTXTmakeStringchar*strstrcatbuffer■;Strcatbufferstr;strcatbuffer/n/n;voidTXTmakeItemscharitems[][10]intN//将items加入文件中forinti=0i
[说明]在进行文法分析的时候通常需要检测一个单词是否在我们的单词列表里为了提高查找和定位的速度通常都要画出与单词列表所对应的单词查找树程序构造一棵二叉排序树每个节点存储一个单词按字典序列较小的在左子树较大的在右子树函数中使用的预定义符号如下typedefstructTreeNode/*二叉排序树节点*/char*word;structTreeNode*left*right;BNODE;[函数]intgetWordFILE*fptchar*word/*从文件fpt中读取单词到word中到达文件结束时返回0*/charc;c=fgetcfpt;ifc==EOFreturn0;/*跳过单词间的非字母字符*/while!tolowerc>=’a’&&tolowerc=’a’&&tolowerc0ptr->right:ptr->left;ptr=BNODE*mallocsizeofptr;ptr->left=ptr->right=NULL;ptr->word=char*mallocstrlenword+1;strcpyptr->wordword;ifp==NULL4;elseifcompres>0p->right=ptr;elsep->left=ptr;intmainFILE*fpt;charword[40];BNODE*root=NULL;iffpt=fopentext.inr==NULLprintf不能打开文件text.in!/n;return1;whilegetWordfptword==1BTree5;fclosefpt;return0;
[说明]一个新的音像商店准备向比较广泛的人群出租录像带和光碟该商店的管理决定在计算机系统的支持下来运作音像商店在货架上存放着题材广泛的当前流行的电影库由于同一个电影片名可能有于不同的导演而有不同的版本因此电影用电影代码区分而不用电影片名同一个版本有多份拷贝因此音像制品用一个唯一的编号标识某个特定的电影可以存放在录像带或光碟上录像带和光碟的租金不同录像带要么是Beta格式要么是VHS格式光碟为DVD格式容量比较大一张光碟可以存储同一电影片名的不同版本每个电影都有特定的租用期用天表示并带有在租用期内的租金音像商店必须能够立即回答关于某个电影的库存和有多少供租用的带子或光碟音像商店的店员负责定购音像联系客户音像上架并对客户的询问给出答复该系统采用面向对象方法开发系统中的类以及类之间的关系用UML类图表示图1-1是该系统的用例图图1-2是该系统的类图的一部分[图1-1][图1-2]根据题意指出图1-1中缺失的用例
[说明] 对多个元素的聚合进行遍历访问时需要依次推移元素例如对数组通过递增下标的方式数组下标功能抽象化一般化的结果就称为迭代器Iterator模式以下程序模拟将书籍Book放到书架BookShelf上并依次输出书名这样就要涉及到遍历整个书架的过程使用迭代器Iterator实现图6-1显示了各个类间的关系以下是JAVA语言实现能够正确编译通过 [图6-1] [Java代码] //Iterator.jav__件 publicinterfaceIterator publicabstractbooleanhasNext; publicabstractObjectnext; //Aggregate.jav__件 publicinterfaceAggregate publicabstractIteratoriterator; //Book.java publicclassBook //省略具体方法和属性 //BookshelfIterator.jav__件 publicclassBookshelf工terator1Iterator privateBookShelfbookShelf; privateintindex; publicBookshelfIteratorBookShelfbookShelf this.bookShelf=bookShelf; this.index=0; publicbooleanhasNext//判断是否还有下一个元素 ifindex<bookShelf.getLength returntrue; else returnfalse; publicObjectnextf//取得下一个元素 Bookbook=bookShelf.getBookAtindex; index++; returnbook; //BookShelf.java importjava.util.Vector; publicclassBookShelf privateVectorbooks; publicBookShelfintinitialsize this.books=newVectorinitialsize; publicBookgetBookAtintindex returnBookbooks.getindex; publicintgetLength returnbooks.size; publicIteratoriterator returnnewBookShelfIterator2; //Main.jav__件 publicclassMain publicstaticvoidmainStringargs BookShelfbookShelf=newBookShelf4; //将书籍上架省略代码 Iteratorit=bookShelf.3; while4//遍历书架输出书名 Bookbook=Bookit.5; System.out.printin""+book.getName; 5处填
[说明]任何一种程序都是为了解决问题而撰写的解决问题时需要实现一些特定的运算法则在策略Strategy模式下可以更换实现算法的部分而不留痕迹切换整个算法简化改为采用其他方法来解决同样问题以下是一个剪刀石头布游戏猜拳时的策略有2种方法第一种是猜赢后继续出同样的招式WinningStrategy第二种是从上一次出的招式种以概率分配方式求出下一个招式的几率ProbStrategy程序中定义了Hand类表示猜拳时的手势类内部以0石头1剪刀2布来表示Hand类的实例只会产生3个以下是Java语言实现省略了不相关属性及方法方法实现体亦有所省略能够正确编译通过[Java代码]//Hand.jav__件publicclassHandpublicstaticfinalintHANDVALUE_GUU=0;//石头publicstaticfinalintHANDVALUE_CHO=1;//剪刀publicstaticfinalintHANDVALUE_PAA=2;//布publicstaticfinalHand[]hand=newHandHANDVALUE_GUUnewHandHANDVALUE_CHOnewHandHANDVALUE_PAA;privateinthandvalue;1Handinthandvaluethis.handvalue=handvalue;public2HandgetHandinthandvalue//从值取得对象实例returnhand[handvalue];//Strategy.jav__件publicinterfaceStrategypublic3HandnextHand;//ProbStrategy.jav__件importjava.util.Random;publicclassProbStrategyimplementsStrategypublicHandnextHandinthandvalue=0;/*省略具体实现*/returnHand.getHandhandvalue;//WinningStrategy.jav__件importjava.util.Random;publicclassWinningStrategyimplementsStrategy/*省略了不相关属性*/publicHandnextHandif!wonprevHand=Hand.getHandrandom.nextInt3;returnprevHand;//Player.jav__件publicclassPlayerprivateStringname;privateStrategystrategy;publicPlayerStringname4strategythis.name=name;this.strategy=strategy;publicHandnextHand//向战略请示手势return5;
[说明]在进行文法分析的时候通常需要检测一个单词是否在我们的单词列表里为了提高查找和定位的速度通常都要画出与单词列表所对应的单词查找树程序构造一棵二叉排序树每个节点存储一个单词按字典序列较小的在左子树较大的在右子树函数中使用的预定义符号如下typedefstructTreeNode/*二叉排序树节点*/char*word;structTreeNode*left*right;BNODE;[函数]intgetWordFILE*fptchar*word/*从文件fpt中读取单词到word中到达文件结束时返回0*/charc;c=fgetcfpt;ifc==EOFreturn0;/*跳过单词间的非字母字符*/while!tolowerc>=’a’&&tolowerc=’a’&&tolowerc0ptr->right:ptr->left;ptr=BNODE*mallocsizeofptr;ptr->left=ptr->right=NULL;ptr->word=char*mallocstrlenword+1;strcpyptr->wordword;ifp==NULL4;elseifcompres>0p->right=ptr;elsep->left=ptr;intmainFILE*fpt;charword[40];BNODE*root=NULL;iffpt=fopentext.inr==NULLprintf不能打开文件text.in!/n;return1;whilegetWordfptword==1BTree5;fclosefpt;return0;
[说明]为了有效记录交通事故情况欲设计一个交通事故记录系统一辆汽车有一个唯一的车牌号车主购买汽车时需要提供相关信息包括身份证姓名年龄性别地址等一个车主可以拥有多辆汽车而一辆汽车只有一个车主驾驶员不一定是车主因此记录交通事故时要记录驾驶员身份证号同时记录事故发生时刻图2-1描绘了人汽车交通事故三个实体类型及实体间联系的一个E-R图[图2-1]对应的关系模式为·人身份证号姓名性别年龄地址·汽车车牌号型号·事故车牌号身份证号时刻损失描述·拥有身份证号车牌号请在下列SQL查询语句空缺处填入正确的内容1查询身份证号为123456的人作为驾驶员时所有的事故记录SELECT*FROM事故WHERE12查询身份证号为123456的车主所拥有的汽车的事故记录SELECT*FROM事故WHERE车牌号2SELECT车牌号FROM3WHERE身份证号=1234563查询车牌号为123456汽车在车主是驾驶员时的事故记录SELECT*FROM事故WHERE4SELECT*FROM5WHERE车牌号=123456AND6
[说明] 对多个元素的聚合进行遍历访问时需要依次推移元素例如对数组通过递增下标的方式数组下标功能抽象化一般化的结果就称为迭代器Iterator模式以下程序模拟将书籍Book放到书架BookShelf上并依次输出书名这样就要涉及到遍历整个书架的过程使用迭代器Iterator实现图7-1显示了各个类间的关系以下是JAVA语言实现能够正确编译通过 [图7-1] [C代码] typedefbool*fun1; typedef1*fun2; constintBOOK_MAX=10;//最大书本数 structBook charname30; ; structBookShelf//书架 structBookbooks[BOOKMAX]; intindex;//书架上最后一本书的下标加1即下一本书的下标如0表示有0本书 ; StructBook*getBookAtstructBookShelf*BSintindex //从书架BS上取得下标为index的书 //只有当下标大于等于0且不大于当前书架上的最后一本书对应的下标才取书成功 //否则失败返回NULL ifindex>=0&&2 return&BS->books[index]; returnNULL; boolappendBookstructBookShelf*BSstructBookbook ifBS->index<BOOK_MAX BS->books[BS->index++]=book; returntrue; returnfalse; intgetLengthstructBookShelf*bookShelf returnbookShelf->index; structIterator//迭代器 fun1hasNext;//判断是否还有下一个元素 fun2next;//取得下一个元素 ; structBookshelfIteratorf//书架迭代器 intindex; struetBookShelf*bookShelf; bookShelfIterator=0NULL; boolBShasNext//判断是否还有下一本书 ifbookShelfIterator.index returntrue; else returnfalse; structBook*BSnext//取得下一本书并将index加1以便下一次正确访问 returngetBookAtbookShelfIterator.bookShelf 3; voidmain structBookShelfbookShelf; bookShelf.index=0; //将书籍上架省略代码 //将bookShelf与bookShelfIterator相关联 bookShelfIterator.bookShelf=4; structIteratoriterator; iterator.hasNext=BShasNext; iterator.next=BSnext; structBook*b; while5//遍历书架输出书名 b=iterator.next; printf"%s/n"b->name; 4处填
[说明]图3-1描述某超市销售数据的部分处理流程超市中有若干台收款机和若干名收款员这里我们把一个收款员开始使用一台收款机到离开这台收款机称为该收款员的一次作业作业开始时收款员先在收款机上输入收款员号和作业前金额作业前金额是为了销售时的找零而在作业前预先放入钱柜的金额数作业结束时收款员要打开钱柜取走全部现金并把这些现金的金额数称为作业后金额输入收款机当作业前金额+本次作业售货总金额-本次作业退货总金额≠作业后金额时表示这次作业存在金额差错本流程图已作简化并作以下假定该超市只有现金交易不用信用卡和礼券一个收款员因某种原因如吃饭在一天中可以有多个作业销售方式只有售货和退货两种整个超市分成若干部门如食品部服装部系统按部门统计一个月中各类货物的销售数量和金额最后根据月销售计划文件分析各部门完成销售计划的情况系统还统计每个收款员的差错情况和退货情况图中处理4和处理8每月的最后一天执行一次营业结束后其他处理每天执行一次图中部分数据文件的记录格式如下日销售数据收款机号+收款员号+作业前金额+售货标记|退货标记+货号+数量+单价+金额+作业后金额日销售文件记录作业开始标记+收款机号+收款员号+作业前金额|售货标记|退货标记+货号+数量+金额|作业结束标记+收款机号+收款员号+作业后金额部门目销售文件记录部门号+售货标记|退货标记+货号+数量+金额部门月销售计划文件记录部门号+月计划金额收款员差错月报月份+收款员号+差错作业数+差错总金额收款员退货月报月份+收款员号+退货次数+退货总金额其中w表示w重复出现多次a|b表示a或ba+b表示a与b[图3-1]处理4对收款员月销售文件作何种操作
[说明]在某些系统中存在非常复杂的对象可以采用循序渐进的方式进行组合将小对象组合成复杂的大对象以下实例展示了Builder生成器模式该实例用来建立文件文件内容包括一个标题一串字符以及一些有项目符号的项目Builder类规定组成文件的方法Director类利用这个方法产生一份具体的文件图5-1显示了各个类间的关系[图5-1]以下是C++语言实现能够正确编译通过[C++代码]classBuilderpublic:virtualvoidmakeTitlestringtitle=0;virtualvoidmakestringstringstr=0;virtualvoidmakeItems1items=0;virtualstringgetResult=0;;classDirectorprivate:2builder;public:DirectorBuilder*builderthis->builder=builder;stringconstructvectoritems;items.push_back早安;items.push_back午安;builder->makeTitleGreeting;builder->makeString从早上到白天结束;builder->makeItemsitems;builder->makeString到了晚上;3;//清空items向量items.push_back晚安;items.push_back好梦;builder->makeItemsitems;returnbuilder->getResult;;classTextBuilder:public4private:stringbuffer;public:TextBuilderbuffer=;voidmakeTitlestringtitlebuffer+========================================/n;buffer+=『+title+』/n;buffer+=/n;voidmakeStringstringstrbuffer+=■+str+/n;buffer+=/n;voidmakeItemsvectoritemsvector::iteratorit;forit=items.begin;it!=items.end;it++buffer+=.+*it+/n;buffer+=/n;stringgetResultbuffer+=========================/n;returnbuffer;;intmainDirector*director=newDirectornewTextBuilder;stringresult=stringdirector-5;cout
[说明]在某些系统中存在非常复杂的对象可以采用循序渐进的方式进行组合将小对象组合成复杂的对象以下实例展示了Builder生成器模式该实例用来建立文件文件内容包括一个标题一串字符以及一些有项目符号的项目Builder类规定组成文件的方法Director类利用这个方法产生一份具体的文件图7-1显示了各个类间的关系[图7-1]以下是C语言实现能够正确编译通过[C代码]typedefvoid1char*title;typedefvoid*fun2charitems[][10]intN;typedefchar**fun3;charbuffer[500];structBuilder//构造器fun1makeTitle;2makeString;fun2makeItems;fun3getResult;;structDirectorstructBuilderbuilder;;char*construct3director//构造文件charitems[2][10]=早安午安;director->builder.makeTitleGreeting;director->builder.makeString从早上到白天结束;director->builder.makeItemsitems2;director->builder.makeString到了晚上;strcpyitems[0]晚安;strcpyitems[1]好梦;director->builder.makeItemsitems2;returndirector->builder.getResult;voidTXTmakeTitlechar*titlestrcatbuffer『;Strcatbuffertitle;strcatbuffer』/n/n;voidTXTmakeStringchar*strstrcatbuffer■;Strcatbufferstr;strcatbuffer/n/n;voidTXTmakeItemscharitems[][10]intN//将items加入文件中forinti=0i
[说明]公司IT部门决定开发一个计算机管理系统以记录期刊的传阅情况期刊在公司内部传阅员工可以要求加入传阅队列图书室登记公司收到的期刊交给名单中的第一名员工员工应在三个工作日内完成阅读员工阅读完毕后通知系统系统提醒下一位阅读者取书下一个员工必须确认已收到期刊当传阅名单中下一位员工出差在外时将无法进行传阅此时将期刊传给再下一位而将该员工作标记再次传递此书时优先考虑该员工最后一位员工阅读完毕后将期刊交还图书室以便共用系统能在员工忘记传递期刊时发出提醒信息系统详细记录期刊传阅情况当员工阅读完后通知系统系统记录该员工员工号及日期并在备注栏注明是传出同样当员工收到期刊后给系统确认系统记录该员工员工号及日期并在备注栏注明是收到公司的员工都有一个唯一的员工号公司订阅了多种期刊为每一本期刊有唯一期刊流水号产生一份传阅名单并详细记录传阅情况员工的出差情况存储在系统主机中该系统采用面向对象方法开发系统中的类以及类之间的关系用UML类图表示图1-1是该系统的类图的一部分图1-2描述了成功传递期刊的序列图[图1-1][图1-2]根据题意给出类传阅记录的主要属性
热门题库
更多
中级信息系统管理工程师
初级程序员
中级软件设计师
初级网络管理员
初级信息处理技术员
中级数据库系统工程师
中级多媒体应用设计师
高级系统分析师
高级网络规划设计师
高级系统架构师
中级信息系统监理师
初级通信工程师
中级通信工程师
通信新技术、新业务知识
无线通信专业技术
移动通信专业技术