试题一(共15 分)阅读下列说明和图,回答问题1至问题4,将解答填入答题纸的对应栏内。 【说明】 某大型企业的数据中心为了集中管理、控制用户对数据的访问并支持大量的连接需求,欲构建数据管理中间件,其主要功能如下: 1)数据管理员可通过中间件进行用户管理、操作管理和权限管理。用户管理维护用户信息,用户信息(用户名、密码)存储在用户表中;操作管理维护数据实体的标准操作及其所属的后端数据库信息,标准操作和后端数据库信息存放在操作表中;权限管理维护权限表,该表存储用户可执行的操作信息。 2)中间件验证前端应用提供的用户信息。若验证不通过,返回非法用户信息;若验证通过,中间件将等待前端应用提交操作请求。 3)前端应用提交操作请求后,中间件先对请求进行格式检查。如果格式不正确,返回格式错误信息;如果格式正确,则进行权限验证 2013教师资格证报名(验证用户是否有权执行请求的操作),若用户无权执行该操作,则返回权限不足信息,否则进行连接管理。 4)连接管理连接相应的后台数据库并提交操作。连接管理先检查是否存在空闲的数据库连接,如果不存在,新建连接;如果存在,则重用连接。 5)后端数据库执行操作并将结果传给中间件,中间件对收到的操作结果进行处理后,将其返回给前端应用。 现采用结构化方法对系统进行分析与设计,获得如图1-1所示的顶层数据流图和图1-2所示的0层数据流图。 【问题1】(3 分) 使用说明中的词语,给出图1-1中的实体E1~E3的名称。 【问
2】(3 分) 使用说明中的词语,给出图1-2中的数据存储D1~D3的名称。 【问题3】(英语专业四级能考几次6 分) 给出图1-2中加工P 的名称及其输入、输出流。 除加工P 的输入与输出流外,图1-2还缺失了两条数据流,请给出这两条数据流的起点和终点。 注:名称使用说明中的词汇,起点和终点均使用图1-2中的符号或词汇。 【问题4】(3 分) 在绘制数据流图时,需要注意加工的绘制。请给出三种在绘制加工的输入、输出时可能出现的错误。
查看答案
查看答案解析
2010年上半年(5月份)软件设计师考试下午真题(标准答案解析版)—2
试题二(共15 分) 阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。 【说明】 某学校拟开发一套实验管理系统,对各课程的实验安排情况进行管理。 【需求分析】 一个实验室可进行多种类型不同的实验。由于实验室和实验员资源有限,需根据学生人数分批次安排实验室和实验员。一门课程可以为多个班级开设,每个班级每学期可以开设多门课程。一门课程的一种实验可以根据人数、实验室的可容纳人数和实验类型,分批次开设在多个实验室的不同时间段。一个实验室的一次实验可以分配多个实验员负责辅导实验,实验员给出学生的每次实验成绩。 1)课程信息包括:课程编号、课程名称、实验学时、授课学期和开课的班级等信息;实验信息记录该课程的实验进度信息,包括:实验名、实验类型、学时、安排周次等信息,如表2-1所示。 【概念模型设计】 根据需求阶段收集的信息,设计的实体联系图(不完整)如图2-1所示。 【逻辑结构设计】根据概念模型设计阶段完成的实体联系图,得出如下关系模式(不完整): 课程(课程编号,课程名称,授课院系,实验学时) 班级(班级号,专业,所属系) 开课情况( 1 ,授课学期) 实验( 2英语四级评分) ,实验类型,难度,学时,安排周次) 实验计划( 3春节联欢晚会2022名单) ,实验时间,人数) 实验员( 4 ,级别) 实验室(实验室编号,地点,开放时间,可容纳人数,实验类型) 学生( 5 ,姓名,年龄,性别) 实验成绩( 6 ,实验成
绩,评分实验员) 【问题1】(6 分) 补充图2-1中的联系和联系的类型。 【问题2】(6 分) 根据图2-1,将逻辑结构设计阶段生成的关系模式中的空(1~6)补充完整并用下划线指出这六个关系模式的主键。 【问题3】(3分) 如果需要记录课程的授课教师,新增加“授课教师”实体。请对图 2-1 进行修改,画出修改后的实体间联系和联系的类型。
查看答案
查看答案解析
2010年上半年(5月份)软件设计师考试下午真题(标准答案解析版)—3
试题三(共15 分) 阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。 【说明】 某运输公司决定为新的售票机开发车票销售的控制软件。图 3-1 给出了售票机的面板示意图以及相关的控制部件。 售票机相关部件的作用如下所述: 1)目的地键盘用来输入行程目的地的代码(例如,200表示总站)。 2)乘客可以通过车票键盘选择车票种类(单程票、多次往返票和座席种类)。 3)继续/取消键盘上的取消按钮用于取消购票过程,继续按钮允许乘客连续购买多张票。 4)显示屏显示所有的系统输出和用户提示信息。 5)插卡口接受MCard(现金卡),硬币口和纸币槽接受现金。 6)打印机用于输出车票。 假设乘客总是支付恰好需要的金额而无需零,售票机的维护工作(取回现金、放入空白车票等)由服务技术人员完成。长沙市教育局电话 系统采用面向对象方法开发,使用 UML 进行建模。系统的顶层用例图和类图分别如图3-2和图3-3所示。job.icbc 【问题1】(5 分) 根据说明中的描述,给出图 3-2 A1 A2 所对应的参与者,U1 所对应的用例,以及(1)、(2)处所对应的关系。 【问题2】(7 分) 根据说明中的描述,给出图3-3中缺少的C1~C4所对应的类名以及(3)~(6)处所对应的多重度。 【问题3】(3 分) 3-3中的类图设计采用了中介者(Mediator)设计模式,请说明该模式的内涵。
查看答案
查看答案解析
2010年上半年(5月份)软件设计师考试下午真题(标准答案解析版)—4
试题四(共15 分) 阅读下列说明和C 代码,回答问题1至问题3,将解答写在答题纸的对应栏内。 【说明】 对有向图进行拓扑排序的方法是: 1)初始时拓扑序列为空; 2)任意选择一个入度为 0 顶点,将其放入拓扑序列中,同时从图中删除该顶点以及从该顶点出发的弧; 3)重复(2),直到不存在入度为 0 的顶点为止(若所有顶点都进入拓扑序列则完成拓扑排序,否则由于有向图中存在回路无法完成拓扑排序)。 函数int* TopSort(LinkedDigraph G)的功能是对有向图G 中的顶点进行拓扑排序,返回拓扑序列中的顶点编号序列,若不能完成拓扑排序,则返回空指针。其中,图G 中的顶点从 1 开始依次编号,顶点序列为 v1v2,…,vn,图 G 采用邻接表表示,其数据类型定义如下: #define MAXVNUM 50 /* 最大顶点数 */ typedef struct ArcNode{ /* 表结点类型 */ int adjvex; /* 邻接顶点编号 */ struct ArcNode *nextarc; /* 指示下一个邻接顶点 */ }ArcNode; typedef struct AdjList{ /* 头结点类型 */ char vdata; /* 顶点的数据信息 */ ArcNode *firstarc; /* 指向邻接表的第一个表结点 */ }AdjList; typedef struct LinkedDigraph{ /* 图的类型 */ int n; /* 图中顶点个数 */ AdjList Vhead[MAXVNUM]; /* 所有顶点的头结点数组 */ }LinkedDigraph; 例如,某有向图G 如图4-1所示,其邻接表如图4-2所示。函数 TopSort 中用到了队列结构(Queue 的定义省略),实现队列基本操作的函数原型如下表所
示: C 代码】 int *TopSort(LinkedDigraph G) { ArcNode *p; /* 临时指针,指示表结点 */ Queue Q; /* 临时队列,保存入度为0的顶点编号 */ int k = 0; /* 临时变量,用作数组元素的下标 */ int j = 0, w = 0; /* 临时变量,用作顶点编号 */ int *topOrder, *inDegree; topOrder = (int *)malloc((G.n+1) * sizeof(int)); /* 存储拓扑序列中的顶点编号 */ inDegree = (int *)malloc((G.n+1) * sizeof(int)); /* 存储图G 中各顶点的入度 */ if (!inDegree || !topOrder) return NULL; 1 ; /* 构造一个空队列 */ for ( j = 1; j <= G.n; j++ ) { /* 初始化 */ topOrder[j] = 0; inDegree[j] = 0; } for (j = 1; j <= G.n; j++) /* 求图G 中各顶点的入度 */ for( p = G.Vhead[j].firstarc; p; p = p->nextarc ) inDegree[p-> adjvex] += 1; for (j = 1; j <= G.n; j++) /* 将图G 中入度为0的顶点保存在队列中 */ if ( 0 == inDegree[j] ) EnQueue(&Q,j); while (!IsEmpty(Q)) { 2 ; /* 队头顶点出队列并用w保存该顶点的编号 */ topOrder[k++] = w; /* 将顶点w的所有邻接顶点的入度减1 (模拟删除顶点w及从该顶点出发的弧的操作) */ for(p = G.Vhead[w].firstarc; p; p = p->nextarc) { 3 -= 1; if (0 == 4 ) EnQueue(&Q, p->adjvex); }/* for */ }/* while */ free(inDegree); if ( 5 ) return NULL; return topOrder; } /*TopSort*/ 【问题1】(9 分) 根据以上说明和C 代码,填充C 代码中的空(1)~(5)。 【问题2】(2 对于图 4-1 所示的有向图 G,写出函数 TopSort
行后得到的拓扑序列。若将函数TopSort中的队列改为栈,写出函数TopSort执行后得到的拓扑序列。 【问题3】(4 分) 设某有向无环图的顶点个数为 n、弧数为 e,那么用邻接表存储该图时,实现上述拓扑排序算法的函数TopSort的时间复杂度是 6 若有向图采用邻接矩阵表示(例如,图4-1所示有向图的邻接矩阵如图4-3所示),且将函数TopSort中有关邻接表的操作修改为针对邻接矩阵的操作,那么对于有n个顶点、e条弧的有向无环图,实现上述拓扑排序算法的时间复杂度是 7
查看答案
查看答案解析