仅试题,如需答案请到我的分享里面找提供近三年的软件设计师真题,答案及试题解析。
2009
【试题一】
考察数据流图,每年第1题必考。
这道题就从题中找文字。连锁超市提出供货请求,图中E3只能是连锁超市。另外虽然D4也有可能,但是D是数据存储,不是外部实体,所以E3是连锁超市,而D4不是,事实上,那条线画错了。 接到供货请求,从商品库存记录文件中查询库存信息,所以D2必定是商品库存记录文件无疑了。 如果缺货,向采购部门发出缺货通知,所以E2必定是采购部门。
配送处理接收配送通知后,查询供货请求数据记录文件,更新商品库存记录文件,所以D4是供货请求数据记录文件,进一步证实D2是商品库存记录文件。同时,也说明“供货请求处理”与D4(供货请求数据记录文件)之间连线方向错误。 向配送部门发送配送单,所以E4必定是配送部门。
在配送货品的同时记录配送信息至商品配送记录文件,所以D3必定是商品配送记录文件。 采购部门进行商品采购处理,合格商品入库,并记录采购清单至采购清单记录文件,所以D1必定是采购清单记录文件,而合格商品入库,则需更新D2(商品库存记录文件),但是这里确实读取,所以从“采购处理”到D2之间的箭头方向相反。
同时,采购部门进行商品采购处理,则需要在E2采购部门和采购处理中增加一条线。同时通知财务部门给供货商付款,所以E1是付款通知,但是奇怪图上的付款同时是给E2(采购部门)的,有问题,所以这个线不需要。 【答案】
【问题1】E1 财务部门
E2 采购部门 E3 连锁超市 E4 配送部门
【问题2】
年上半年软件设计师下午试题解析
D1 采购清单记录文件 D2 商品库存记录文件 D3 商品配送记录文件 D4 供货请求记录文件
仅试题,如需答案请到我的分享里面找提供近三年的软件设计师真题,答案及试题解析。
错误的数据流 起点 D4 D2 E1
终点
供货请求处理 采购处理 E2
补充的数据流 起点
终点 D4
供货请求处理 E2
采购处理
D2
采购处理
【试题二】 【问题1】
显然,一个商场对应多个部门,一个部门对应多个员工,一个部门对应一个经理,每个经理对应了一个员工。 【问题2】
部门中,必须记录其归属的商场。员工中,必须记录其归属的部门。
经理的情况比较特殊,首先他是员工,所以必须记录其员工编号,其次他对应一个部门,所以记录中必须有一个部门编号,但是每个员工都对应了一个部门,即知道经理的员工编号,就已经知道了经理的部门。 【问题3】
紧急联系人必定作为一个独立实体而存在,并且每个员工都必须对应一个紧急联系人,所以他们之间是1对多关系。 【答案】 【问题1】
仅试题,如需答案请到我的分享里面找提供近三年的软件设计师真题,答案及试题解析。
联系1 联系2 联系3 联系4 【问题2】 a:所在商场编号 b:所在部门编号 c:员工编号表名 商场 部门 员工 经理 【问题3】 (1)紧急联系人 (2)1:n
商场与部门 部门与员工 部门与经理 员工与经理
1:n 1:n 1:1 1:1
主键 商场编号 部门编号 员工编码 员工编号
外键 无
所在商场编号 所在部门编号 员工编号
紧急联系人编号,姓名,联系电话, 主键:紧急联系人编号 【试题三】
这是一道UML的面向对象分析题目。 【问题1】
显然,A2是用户,而U3是交互核心,就是那个Session。 那么还剩下插卡和密码错误处理。
我们知道,要进入Session,插卡、读卡是必须的,而密码错误判断不一定需要,而必须的是include关系,不一定要的是extend关系,所以U1是插卡,U2是密码错误判断。所以A1是读卡器。
仅试题,如需答案请到我的分享里面找提供近三年的软件设计师真题,答案及试题解析。
其实表中的内容在图3-2中已经出现很多了,一对比,发现只有4个没有出现,分别是读PIN,PIN信息,创建事务和执行事务,那么答案就在这4个中选择。
Customerconsole是人机交互控制台,考虑到循环在8,9处,而可以循环的自然是办交易,也就是多次的创建事务和执行事务,所以8,9分别为创建事务和执行事务。 这样一来,67就简单多了,自然是读密码和密码信息了。 【问题3】
四个用例具有共同的特征,就是读卡、读密码,输入(金额、确定)等,所以他们与Session刚好满足泛化要求。 【答案】 问题1: A1 A2 (1) 问题2: 6 7 8 9
readPIN() PIN
create(atm,this,card,pin) performTransaction()
读卡器 用户 extend
U1 U2 U3
InsertCard Invalid PIN Process Session
问题3:
他们之间是泛化关系,无论存、取、转、查,他们拥有共同的结构和行为。 【试题四】
这表明上是一道关于顶点之间最短路径的相当难的算法题,很多考试可能就是倒在算法上的,其实对于算法,你完全可以一知半解,但是仍然可以作出答案来。 【第2空,第3空|】
首先看题目的方程,再看空:
仅试题,如需答案请到我的分享里面找提供近三年的软件设计师真题,答案及试题解析。
这不就是说现在需要dij取值了,麻烦你们给个最小值给他,如果if成立,那么最小值就是dij(k-1),如果不成立,那么就小值就是dik(k-1)+ dkj(k-1),大胆写就行了,别管这个算法是为什么。 【第1空】
这里面有i,j,k,其中i和j已经定了,就是k没有,所以第1空必定与k有关,是关于k的循环,那么是不是1 To n呢?当前计算第n个,需要第n-1个的数据。如果n=1,那么就是第0个的数据,而题中也讲了,dij(0)就是Wij,有意义!所以就是1到n。 【第4空】
这下面计算每个顶点的最小和,总之别管dij(n)是怎么计算出来的,但是这里肯定是要把相加到SP[i]中。SP[i]= di1(n)+ di2(n)+…+ din(n) 【第5空】
这么多SP[i],谁是最小的呢?就记在min_SP中,最小值就记在min_v中,初始时假设第1个最小,于是min_SP=SP[1],min_v=1。 【第6空】
返回最小顶点,自然就是min_v了。 【第7空】
你看前面I,j,k三个循环,就应该知道时间复杂度是O(n3)了。 【答案】 【问题1】
(k)
1 2 3
k=1 to n dij(k)= dij(k-1) dij(k) =dik(k-1) djk(k-1)
仅试题,如需答案请到我的分享里面找提供近三年的软件设计师真题,答案及试题解析。
4 5 6
【问题2】 O(n3) 【试题五】
SP[i] += dij(n) min_v = 1 min_v
算法题,表明上是求非递归中序遍历,其实大部分有链栈的内容。 二叉树中序遍历非递归算法使用一个栈,其基本思想为: 将根结点入栈S。 while(栈不空) {
读取栈顶结点信息。
依次栈顶结点的左子树的根结点入栈。本步为一个循环,直到最左结点入栈时结束。 将栈顶结点出栈,并访问之。
如果栈顶结点具有右子树,则将右子树的根结点入栈,下一次循环将中序遍历此右子树。 }
其实就是一个劲儿的找当前结点的左子树,直到最左为止,路上的左子树全部入栈。然后访问最左左子树的那个结点,再按照这个方法遍历这个结点的右孩子。 【第1空】
其实可以猜测出来,这里对二叉树的遍历,都将依靠ptr来完成,所以是ptr不能为NULL。如果ptr和栈都是空了,就说明遍历完成了。 【第2空】
这里演示链栈的插入,新结点的下一个结点为栈顶结点,所以q->link = stacktop。 【第3空】
访问最左结点,自然ptr等于左孩子,即ptr->lchild。就算你不懂算法也没有关系,题目中都提示了“进入左子树”。
仅试题,如需答案请到我的分享里面找提供近三年的软件设计师真题,答案及试题解析。
这里是链栈的出栈,栈顶指针移动下一个结点,即stacktop->link。 【第5空】
到结点的右子树,其实题目中提示了“进入右子树”,你就大胆的写就行了!软件设计师下午考试不会太难的!所以万事朝简单的想就行了。 【答案】
1 2 3 4 5
【试题六】
ptr != NULL q->link = stacktop ptr = ptr->lchild
stacktop = stacktop->link q->rchild
这是一道C++设计题,只有真正用过C++的继承和多态功能的考生才能正确答出。如果你的C++仅仅停留在封装层面,这样是不行的。 【第1空】
这里是设置成员变量的取值,由于两个变量名称一样,所以必须区分,this->就特指成员变量了。 【第2空】
联系第1空,就直到这里应按是真实画图的那个类指针,也就是ImageImp,其实可以从第1空抄下来。 【第3空】
这里考察封装,就是如何调用类里面的函数,显然对象是imp,函数名称是doPaint,参数是m。 【第4空,第5空】
这里开始主函数了,代码自然是要创建一个真实画图类的对象,再创建一个解析图形文件类的对象,所以要new两个,联系到BMP和Windows,自然是BMP和WinImp,显然Image对应BMP,ImageImp对应WinImp,别写反了。
仅试题,如需答案请到我的分享里面找提供近三年的软件设计师真题,答案及试题解析。
调用类的Setimp函数,前面的铺垫就是为了这里的,以便Bmp把WinImp联系起来,就是image1调用Setimp把imageImp1联系起来。 【第7空】
10个格式就是10个Image子类,再加上Image类本身就是11个。
5中操作系统就是5个ImageImp子类,在加上ImageImp类本身就是6个类。 11+6就是17个类。 【答案】1
1 2 3 4 5 6 7
this->imp class ImageImp imp->doPaint(m) new BMP new WinImp
image1->setImp(imageImp1) 17