欢迎来到麦多课文档分享! | 帮助中心 海量文档,免费浏览,给你所需,享你所想!
麦多课文档分享
全部分类
  • 标准规范>
  • 教学课件>
  • 考试资料>
  • 办公文档>
  • 学术论文>
  • 行业资料>
  • 易语言源码>
  • ImageVerifierCode 换一换
    首页 麦多课文档分享 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    【计算机类职业资格】中级软件设计师下午试题-17 (1)及答案解析.doc

    • 资源ID:1323131       资源大小:68.50KB        全文页数:10页
    • 资源格式: DOC        下载积分:5000积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    二维码
    微信扫一扫登录
    下载资源需要5000积分(如需开发票,请勿充值!)
    邮箱/手机:
    温馨提示:
    如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如需开发票,请勿充值!如填写123,账号就是123,密码也是123。
    支付方式: 支付宝扫码支付    微信扫码支付   
    验证码:   换一换

    加入VIP,交流精品资源
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    【计算机类职业资格】中级软件设计师下午试题-17 (1)及答案解析.doc

    1、中级软件设计师下午试题-17 (1)及答案解析(总分:70.00,做题时间:90 分钟)一、B试题一/B(总题数:1,分数:5.00)1.【说明】 某考务处理系统具有以下功能: (1)输入报名单; (2)自动编制准考证号; (3)输出准考证;(4)输入成绩清单; (5)输出成绩通知单; (6)输出成绩分布表; (7)输入合格标准、输出录取通知单; (8)试题难度分析,并输出试题难度分析表。 这里给出了实现上述要求的部分不完整的数据流图,其中部分数据流的组成如下所示。 报名单=报名号+姓名+通信地址 考生名册=报名号+准考证号+姓名+通信地址 成绩册=准考证号+(课程号+成绩)(其中W表示 W

    2、重复多次) 准考证=报名号+姓名+准考证号 【问题 1】 指出 0 层图中可以删去的部分。 【问题 2】 在加工 1 子图中将遗漏的数据流添加在答题纸上。 【问题 3】 加工 2 子图分解成如图所示的 4 个子加工及相关的文件(即数据存储)。试在此基础上将相关的 DFD 成份添加在答题纸上,以完成该加工子图。 (分数:5.00)_二、B试题二/B(总题数:1,分数:5.00)2.【说明】 请设计一个图书馆数据库,此数据库中对每个借阅者保存的读者记录包括:读者号、姓名、地址、性别、年龄、单位。对每本书存有:书号、书名、作者、出版社。对每本书被借出的书存有读者号、借出日期和应还日期。 (分数:5.

    3、00)_三、B试题三/B(总题数:1,分数:15.00)3.【说明】 某公司的用品采购流程如下所述。 (1)由营业部门提出需求用品清单。 (2)将需求用品清单交采购部门建立采购采买单据。 (3)采购部门建立采购采买单据后,交财务部门,向财务部申请款项,预支定金。 (4)财务部建立应付帐款单据后,核支款项。 (5)采购部门再收到款项后,进行采买。 (6)采买完成,执行: 发票核剩余款项交财务部,即由财务部门处理。 用品点交营业部门发放,即由营业部门处理。 (7)进行财务结算处理,执行: 采购部门:采购单据结案。 财务部门:帐款冲销结案。 【问题】 完成下面的 UML 活动图对象流分析,111 为

    4、活动,设计此采购活动的流程。 (分数:15.00)_四、B试题四/B(总题数:1,分数:15.00)4.【说明】函数 int Toplogical(LinkedWDigraph G)的功能是对图 G 中的顶点进行拓扑排序,并返回关键路径的长度。其中图 G 表示一个具有 n 个顶点的 AOE 一网,图中顶点从 1n 依次编号,图 G 的存储结构采用邻接表表示,其数据类型定义如下: typedef struct Gnode /*邻接表的表结点类型*/ int adivex; /*邻接顶点编号*/ int weight; /*弧上的权值*/ bstmct Gonde*nextare; /*指示下一个

    5、弧的结点*/ Gnode; typedef struct Adjlist /*邻接表的头结点类型*/ char vdata; /*顶点的数据信息*/ struct Gnode*Firstadj; /*指向邻接表的第 1 个表结点*/ Adjlist; typedef struct LinkedWDigraph /*图的类型*/ int n, e; /*图中顶点个数和边数*/ struct Adjlist head; /*指向图中第 1 个顶点的邻接表的头结点*/ LinkedWDigraph; 【函数】 int Toplogical(LinkedWDigraph G) Gnode *p; in

    6、t j,w,top=0; int *Stack,*ve,*indegree; ve=(int *)mallloc(G.n+1)* sizeof(int); indegree=(int *)malloc(G.n+1)*sizeof(int);/*存储网中个顶点的入度*/ Stack=(int *)malloc(G.n+1)*sizeof(int); /*存储入度为 0 的顶点的编号*/ if(!ve!indegree!Stack) exit(0); for(j=1;j=G.n;j+) vej=0; indegreej=0; /*for*/ for(j=1;j=G.n;j+) /*求网中各顶点的入

    7、度*/ p=G.headj.Firstadj; while(p) U(1) /U; p=p-nextarc; /*while*/ /*for*/ for(i=1;j=G.n;j+) /求网中入度为 0 的顶点并保存其编号*/ if(!indegreej) Stack+top=j; while(top0) w=U (2) /U; printf(“%c“, G.headw.vdata); p=G.headw.Firstadj; while(p) U (3) /U; if(!indegreep-adjvex) Stack+top=p-adjvex; if(U (4) /U) vep-adjvex=v

    8、ew+p-weight; p=p-nextarc; /*while*/ returnU (5) /U; /*Toplogical*/(分数:15.00)_五、B试题五/B(总题数:1,分数:15.00)5.【说明】通常情况下,用户可以对应用系统进行配置,并将配置信息保存在配置文件中,应用系统在启动时首先将配置文件加载到内存中,这些内存配置信息应该有且仅有一份。下面的代码应用了单身模式(Singleton)以保证 Configure 类只能有一个实例。这样,Configure 类的使用者无法定义该类的多个实例,否则会产生编译错误。# include iostream.hclass Configu

    9、reU (1) /U;Configure(); /构造函数public:static Configure *Instance();public:int GetConfigureData()return data; /获取配置信息int SetConfigureDate(int m_data)data=m_data; return data; /设置配置信息private:static Configure* _instance;int data; /配置信息;U (2) /U=NULL;Configure * ConfigureInstance() if(_instance=NULL) _ins

    10、tance=U (3) /U;/加载配置文件并设置内存配置信息,此处省略returnU (4) /U;void main() Configure *t=NULL;t=U (5) /U;int d=t-GetConfigureData();/获取配置信息后进行其它工作,此处省略(分数:15.00)_六、B试题六/B(总题数:1,分数:15.00)6.【说明】类 Queue 表示队列,类中的方法如下表所示。 isEmpty() 判断队列是否为空。如果队列不为空,返回 true;否则,返回 falseenqueue(Object newNode) 入队操作dequeue() 出队操作。如果队列为空,

    11、则抛出异常类 Node 表示队列中的元素;类 EmptyQueueException 给出了队列操作中的异常处理操作。public class TestMain /主类public static viod main (String args)Queue q=new Queue();q.enqueue(“first!“);q.enqueue(“second!“);q.enqueue(“third!“);U (1) /Uwhile(true)System.out.println(q.dequeue();catch(U (2) /U) public class Queue /队列Node m_Fir

    12、stNode;public Queue()m_FirstNode=null;public boolean isEmpty()if(m_FirstNode=null)return true;else return false;public viod enqueue(Object newNode) /入队操作Node next=m_FirstNode;if(next=null)m_FirstNode=new Node(newNode);elsewhile(next.getNext()!=null)next=next.getNext();next.setNext(new node(newNode);

    13、public Object dequeue()U (3) /U /出队操作Object node;if (isEempty()U (4) /U; /队列为空, 抛出异常elsenode=m_FirstNode.getObject();m_FirstNode=m_FirstNode.getNext();return node;public class Node /队列中的元素Object m_Data;Node m_Next;public Node(Object data) m_Data=data; m_Next=null;public Node(Object data, Node next)

    14、m_Data=data; m_Next=-next;public void setObject(Object data) m_Data=data;public Object getObject(Object data) return m_data;public void setNext(Node next) m_Next=next;public Node getNext() return m_Next;public class EmptyQueueException extendsU (5) /U /异常处理类public EmptyQueueException() System.out.pr

    15、intln(“队列已空! “);(分数:15.00)_中级软件设计师下午试题-17 (1)答案解析(总分:70.00,做题时间:90 分钟)一、B试题一/B(总题数:1,分数:5.00)1.【说明】 某考务处理系统具有以下功能: (1)输入报名单; (2)自动编制准考证号; (3)输出准考证;(4)输入成绩清单; (5)输出成绩通知单; (6)输出成绩分布表; (7)输入合格标准、输出录取通知单; (8)试题难度分析,并输出试题难度分析表。 这里给出了实现上述要求的部分不完整的数据流图,其中部分数据流的组成如下所示。 报名单=报名号+姓名+通信地址 考生名册=报名号+准考证号+姓名+通信地址

    16、成绩册=准考证号+(课程号+成绩)(其中W表示 W 重复多次) 准考证=报名号+姓名+准考证号 【问题 1】 指出 0 层图中可以删去的部分。 【问题 2】 在加工 1 子图中将遗漏的数据流添加在答题纸上。 【问题 3】 加工 2 子图分解成如图所示的 4 个子加工及相关的文件(即数据存储)。试在此基础上将相关的 DFD 成份添加在答题纸上,以完成该加工子图。 (分数:5.00)_正确答案:()解析:【问题 1】 成绩册文件可删。 【问题 2】 补充后的加工 1 子图如下所示。 【问题 3】 完成后的加工 2 子图如下所示。 解析 0 层图中的成绩册文件只被加工成绩处理使用,是个局部文件,按照

    17、数据隐蔽的规则,不应出现在 0 层图中。 加工 1 子图中,对比 0 层图,很明显缺少输入数据流“报名单”,输出数据流“准考证”。 问题 3 是要完善加工 2 子图,显得比较繁杂。这种题的出现频率应该非常低,但它是对考生实际处理问题能力的一个非常有效的检验,要比问题 1、2 复杂,容易发生遗漏和错误。所以,建议考生在做模拟试题时,在基本完成试题的情况下,还要多加思考,考虑如果遇到像问题 3这样,应该如何解决,这将对考生的应试能力和实际工作有相当大的帮助。 完善加工子图,其实就是要补充数据流图的基本成分。数据流图的基本成分是:加工、数据流、数据存储(数据文件)、外部实体。其中,在这个题目中,外部

    18、实体不用考虑。 首先考虑加工。加工 2 子图中,目前有 4 个子加工,即:(1)成绩清单录入,(2)制作成绩通知单,(3)制作录取通知单,(4)试题难度分析。根据说明中关于功能的第 8项,很明显缺少一个实现“输出试题成绩分布表”的子加工。现在这 5 个加工已经全面实现了加工 2。 接着,看是否还缺少数据文件,经过对说明的分析,可以肯定没有其它的数据文件。 最后,就是要补充数据流。这一步最为复杂,容易遗漏和错画。必须把握一个原则:围绕数据文件,按加工顺序,依据说明逐步进行。 加工 1.1 需要输入考生名册的数据,经过加工,向成绩册输出数据。 加工 2.2 需要输入考生名册和成绩册的数据,经过加工

    19、,输出成绩通知单。 加工 2.3 需要输入考生名册和成绩册的数据,经过加工,输出合格标准和录取通知单。 加工 2.4 只需要输入成绩册的数据,经过加工,输出试题难度分析表。 加工 2.5 需要输入成绩册的数据,经过加工,输出成绩分布表。二、B试题二/B(总题数:1,分数:5.00)2.【说明】 请设计一个图书馆数据库,此数据库中对每个借阅者保存的读者记录包括:读者号、姓名、地址、性别、年龄、单位。对每本书存有:书号、书名、作者、出版社。对每本书被借出的书存有读者号、借出日期和应还日期。 (分数:5.00)_正确答案:()解析:【问题 1】 三、B试题三/B(总题数:1,分数:15.00)3.【

    20、说明】 某公司的用品采购流程如下所述。 (1)由营业部门提出需求用品清单。 (2)将需求用品清单交采购部门建立采购采买单据。 (3)采购部门建立采购采买单据后,交财务部门,向财务部申请款项,预支定金。 (4)财务部建立应付帐款单据后,核支款项。 (5)采购部门再收到款项后,进行采买。 (6)采买完成,执行: 发票核剩余款项交财务部,即由财务部门处理。 用品点交营业部门发放,即由营业部门处理。 (7)进行财务结算处理,执行: 采购部门:采购单据结案。 财务部门:帐款冲销结案。 【问题】 完成下面的 UML 活动图对象流分析,111 为活动,设计此采购活动的流程。 (分数:15.00)_正确答案:

    21、()解析:1送出需求用品清单(营业部门)。 2建立采购采买单据(采购部门)。 3向财务部门申请款项:预支定金(财务部门)。 4财务部建立应付账款单据后:核支款项(财务部门)。 5收到款项,进行采买(采购部门)。 6采买完成(采购部门)。 7用品点交发放(营业部门)。 8发票及剩余款项交财务(财务部门)。 9采购单据结案(采购部门)。 10账款冲销结帐(财务部门)。 11关闭采购单据(采购部门)。解析 活动图(Active Diagram)是一种用来设计系统动态视图的图形,是 UML 中的流程图,而且可以设计活动与活动之间的流程控制,因此运用活动图可以设计系统的动态角度。 利用活动图设计系统的动

    22、态视图时,应用的方式有两种: (1)设计工作流程(对象流程)。 (2)设计操作。 对象流(Object Flow):是将对象放置在活动图上,来指定参与此活动图的事务,接着将建立、修改或销毁这些对象的活动或转换,运用依赖关系连在一起,这种对象和依赖关系的使用方式称为“对象流”。 问题中有 11 个活动,3 个对象:营业部门,采购部门,财务部门。其中营业部门有 2 个活动,采购部门有 5 个活动,财务部门有 4 个活动。 分析已知的采购流程描述,先区分出各个对象独自的活动,和对象之间联系的活动,从整个活动图的“初始状态”和“最终状态”入手,再从每个对象的第一个活动和最后一个活动入手,注意并发的活动

    23、。通过这些方法,可以比较顺利的得到结果。 这道题需要考生对 UML 知识的扎实掌握,并且有一定的软件工程和面向对象的实践,才能很好的解决这类问题。 最后给出完整的采购流程活动图对象流分析中的 11 个动作。四、B试题四/B(总题数:1,分数:15.00)4.【说明】函数 int Toplogical(LinkedWDigraph G)的功能是对图 G 中的顶点进行拓扑排序,并返回关键路径的长度。其中图 G 表示一个具有 n 个顶点的 AOE 一网,图中顶点从 1n 依次编号,图 G 的存储结构采用邻接表表示,其数据类型定义如下: typedef struct Gnode /*邻接表的表结点类型

    24、*/ int adivex; /*邻接顶点编号*/ int weight; /*弧上的权值*/ bstmct Gonde*nextare; /*指示下一个弧的结点*/ Gnode; typedef struct Adjlist /*邻接表的头结点类型*/ char vdata; /*顶点的数据信息*/ struct Gnode*Firstadj; /*指向邻接表的第 1 个表结点*/ Adjlist; typedef struct LinkedWDigraph /*图的类型*/ int n, e; /*图中顶点个数和边数*/ struct Adjlist head; /*指向图中第 1 个顶点

    25、的邻接表的头结点*/ LinkedWDigraph; 【函数】 int Toplogical(LinkedWDigraph G) Gnode *p; int j,w,top=0; int *Stack,*ve,*indegree; ve=(int *)mallloc(G.n+1)* sizeof(int); indegree=(int *)malloc(G.n+1)*sizeof(int);/*存储网中个顶点的入度*/ Stack=(int *)malloc(G.n+1)*sizeof(int); /*存储入度为 0 的顶点的编号*/ if(!ve!indegree!Stack) exit(0

    26、); for(j=1;j=G.n;j+) vej=0; indegreej=0; /*for*/ for(j=1;j=G.n;j+) /*求网中各顶点的入度*/ p=G.headj.Firstadj; while(p) U(1) /U; p=p-nextarc; /*while*/ /*for*/ for(i=1;j=G.n;j+) /求网中入度为 0 的顶点并保存其编号*/ if(!indegreej) Stack+top=j; while(top0) w=U (2) /U; printf(“%c“, G.headw.vdata); p=G.headw.Firstadj; while(p)

    27、U (3) /U; if(!indegreep-adjvex) Stack+top=p-adjvex; if(U (4) /U) vep-adjvex=vew+p-weight; p=p-nextarc; /*while*/ returnU (5) /U; /*Toplogical*/(分数:15.00)_正确答案:()解析:解析 (1)indegreep-adjvex+及其等价形式 此填空在 for(j=1;j=G.n;j+)中,求网中各顶点的入度。遍历邻接表 G.headj.Firstadj,将每个结点 p-adjvex 的入度 indegreep-adjvex加 1。邻接表是 j 的出度

    28、结点表。 (2)Stacktop-及其等价形式 栈 Stack 中存放的是入度为 0 的结点号,此 while 循环中,w 取栈顶值开始搜索打印这些结点。 (3)indegreep-adjvex-及其等价形式 由于p=G.headw.Firstadj;因此 while 循环是遍历这个邻接链表,将每个结点的入度减 1。将入度为 0 的结点号入栈 Stack 中。 (4)vew+p-weightvep-adjvex及其等价形式 若 vew+p-weight 大于vep-adjvex,则 vew+p-weight 是最长路径,用 vew+p-weight 取代 vep-adjvex。 (5)vew及

    29、其等价形式 最终返回的是 w 结点的 vew值作为整个 AOE网的最长路径值。五、B试题五/B(总题数:1,分数:15.00)5.【说明】通常情况下,用户可以对应用系统进行配置,并将配置信息保存在配置文件中,应用系统在启动时首先将配置文件加载到内存中,这些内存配置信息应该有且仅有一份。下面的代码应用了单身模式(Singleton)以保证 Configure 类只能有一个实例。这样,Configure 类的使用者无法定义该类的多个实例,否则会产生编译错误。# include iostream.hclass ConfigureU (1) /U;Configure(); /构造函数public:st

    30、atic Configure *Instance();public:int GetConfigureData()return data; /获取配置信息int SetConfigureDate(int m_data)data=m_data; return data; /设置配置信息private:static Configure* _instance;int data; /配置信息;U (2) /U=NULL;Configure * ConfigureInstance() if(_instance=NULL) _instance=U (3) /U;/加载配置文件并设置内存配置信息,此处省略re

    31、turnU (4) /U;void main() Configure *t=NULL;t=U (5) /U;int d=t-GetConfigureData();/获取配置信息后进行其它工作,此处省略(分数:15.00)_正确答案:()解析:解析 (1)publicC+类中,构造函数属于公有成员函数,因此应该填入:public。(2)Configure *Configure_instanceC+类中静态成员变量赋初值,只能在函数和类外进行。(3)new ConfigureInstance 是类 Configure 的静态成员函数,它只能访问类的静态成员_instance,当指针_instanc

    32、e 为NULL 时,应该给_instance 动态分配内存,所以此处应该填入:new Configure。(4)_instance类 Configure 的静态成员函数 Instance 的返回值是 Configure*,即 Configure 类指针类型,由于此函数只能访问类的静态成员_instance,因此返回值应当是指针_instance。所以此处应该填入:_instance。(5)ConfigureInstance()t 是一个 Configure 类指针,初值为 NULL,因此此处必须首先动态开辟一个 Configure 类对象,让 t 指向这个对象,下面才能进行 d=t-GetCo

    33、nfigureData()访问对象的成员函数。所以此处应该填入:new Configure。六、B试题六/B(总题数:1,分数:15.00)6.【说明】类 Queue 表示队列,类中的方法如下表所示。 isEmpty()判断队列是否为空。如果队列不为空,返回true;否则,返回falseenqueue(Object newNode)入队操作dequeue()出队操作。如果队列为空,则抛出异常类 Node 表示队列中的元素;类 EmptyQueueException 给出了队列操作中的异常处理操作。public class TestMain /主类public static viod main

    34、(String args)Queue q=new Queue();q.enqueue(“first!“);q.enqueue(“second!“);q.enqueue(“third!“);U (1) /Uwhile(true)System.out.println(q.dequeue();catch(U (2) /U) public class Queue /队列Node m_FirstNode;public Queue()m_FirstNode=null;public boolean isEmpty()if(m_FirstNode=null)return true;else return fa

    35、lse;public viod enqueue(Object newNode) /入队操作Node next=m_FirstNode;if(next=null)m_FirstNode=new Node(newNode);elsewhile(next.getNext()!=null)next=next.getNext();next.setNext(new node(newNode);public Object dequeue()U (3) /U /出队操作Object node;if (isEempty()U (4) /U; /队列为空, 抛出异常elsenode=m_FirstNode.get

    36、Object();m_FirstNode=m_FirstNode.getNext();return node;public class Node /队列中的元素Object m_Data;Node m_Next;public Node(Object data) m_Data=data; m_Next=null;public Node(Object data, Node next) m_Data=data; m_Next=-next;public void setObject(Object data) m_Data=data;public Object getObject(Object data

    37、) return m_data;public void setNext(Node next) m_Next=next;public Node getNext() return m_Next;public class EmptyQueueException extendsU (5) /U /异常处理类public EmptyQueueException() System.out.println(“队列已空! “);(分数:15.00)_正确答案:()解析:解析 (1)try 从紧随其后的 catch 可以断定这是异常处理的 try-catch 结构。 (2)Exception e或者 EmptyQueueException e 其中 e 是对象名,可用任意合法标识符替换,这是 catch 要捕获的信息。 (3)throw EmptyQueueException 当队列为空时,抛出错误信息 EmptyQueueException。 (4)throw(new EmptyQueueException() 当队列为空时,抛出异常。动态生成 EmptyQueueException 对象,出错处理。 (5)Exception EmptyQueueException 对象是从异常处理类 Exception 扩展而来。


    注意事项

    本文(【计算机类职业资格】中级软件设计师下午试题-17 (1)及答案解析.doc)为本站会员(amazingpat195)主动上传,麦多课文档分享仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文档分享(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
    备案/许可证编号:苏ICP备17064731号-1 

    收起
    展开