logo资料库

2011上半年软件设计师考试真题及答案-下午卷.doc

第1页 / 共17页
第2页 / 共17页
第3页 / 共17页
第4页 / 共17页
第5页 / 共17页
第6页 / 共17页
第7页 / 共17页
第8页 / 共17页
资料共17页,剩余部分请下载后查看
2011上半年软件设计师考试真题及答案-下午卷 试题一 阅读下列说明和图,回答问题1至问题4,将解答填入对应栏内。 [说明] 某医院欲开发病人监控系统。该系统通过各种设备监控病人的生命特征,并在生命特 征异常时向医生和护理人员报警。该系统的主要功能如下: 1本地监控:定期获取病人的生命特征,如体温、血压、心率等数据。 2格式化生命特征:对病人的各项重要生命特征数据进行格式化,然后存入日志文件 并检查生命特征。 3检查生命特征:将格式化后的生命特征与生命特征范围文件中预设的正常范围进行 比较。如果超出了预设范围,系统就发送一条警告信息给医生和护理人员。 4维护生命特征范围:医生在必要时(如,新的研究结果出现时)添加或更新生命特征 值的正常范围。 5提取报告:在医生或护理人员请求病人生命特征报告时,从日志文件中获取病人生 命特征生成特征报告,并返回给请求者。 6生成病历:根据日志文件中的生命特征,医生对病人的病情进行描述,形成病历存 入病历文件。 7查询病历:根据医生的病历查询请求,查询病历文件,给医生返回病历报告。 8生成治疗意见:根据日志文件中的生命特征和病历,医生给出治疗意见,如处方等, 并存入治疗意见文件。 9查询治疗意见:医生和护理人员查询治疗意见,据此对病人进行治疗。 现采用结构化方法对病人监控系统进行分析与设计,获得如图1-1所示的顶层数据流 图和图1-2所示的0层数据流图。
1、使用说明中的词语,给出图1-1中的实体E1~E3的名称。 2、使用说明中的词语,给出图1-2中的数据存储D1~D4的名称。 3、图1-2中缺失了4条数据流,使用说明、图1-1和图1-2中的术语,给出数据流的名称及其 起点和终点。 4、说明实体E1和E3之间可否有数据流,并解释其原因。 试题二 阅读下列说明,回答问题1至问题3,将解答填入对应栏内。 [说明] 某服装销售公司拟开发一套服装采购管理系统,以方便对服装采购和库存进行管理。 [需求分析] 5采购系统需要维护服装信息及服装在仓库中的存放情况。服装信息主要包括:服装 编码、服装描述、服装类型、销售价格、尺码和面料,其中,服装类型为销售分类,服装按 销售分类编码。仓库信息包括:仓库编码、仓库位置、仓库容量和库管员。系统记录库管员 的库管员编码、姓名和级别。一个库管员可以管理多个仓库,每个仓库有一名库管员。一个 仓库中可以存放多类服装,一类服装可能存放在多个仓库中。
6当库管员发现有一类或者多类服装缺货时,需要生成采购订单。一个采购订单可以 包含多类服装。每类服装可由多个不同的供应商供应,但具有相同的服装编码。采购订单主 要记录订单编码、订货日期和应到货日期,并详细记录所采购的每类服装的数量、采购价格 和对应的多个供应商。 7系统需记录每类服装的各个供应商信息和供应商生产服装的情况。供应商信息包括: 供应商编码、供应商名称、地址、企业法人和联系电话。一个供应商可以供应多类服装,一 类服装可由多个供应商供应。库管员根据入库时的服装质量情况,设定每个供应商所供应的 每类服装的服装质量等级,作为后续采购服装时,选择供应商的参考标准。 [概念模型设计] 根据需求阶段收集的信息,设计的实体联系图(不完整)如图2-1所示。 5 ,仓库位置,仓库容量) [逻辑结构设计] 根据概念模型设计阶段完成的实体联系图,得出如下关系模式(不完整): 库管员(库管员编码,姓名,级别) 仓库信息( 服装(服装编码,服装描述,服装类型,尺码,面料,销售价格) 供应商(供应商编码,供应商名称,地址,联系电话,企业法人) 6 ,服装质量等级) 供应情况( 采购订单( 7 采购订单明细( ) 8 ) 5、根据需求分析的描述,补充图2—1中的联系和联系的类型。 6、根据补充完整的图2-1,将逻辑结构设计阶段生成的关系模式中的空(1)~(4)补充完整, 并给出其主键(用下划线指出)。 7、如果库管员定期需要轮流对所有仓库中的服装质量进行抽查,对每个仓库中的每一类被 抽查服装需要记录一条检查结果,并且需要记录抽查的时间和负责抽查的库管员。请根据该 要求,对图2-1进行修改,画出修改后的实体间联系和联系的类型。 试题三 阅读下列说明和图,回答问题1至问题3,将解答填入对应栏内。 [说明] 一个简单的图形编辑器提供给用户的基本操作包括:创建图形、创建元素、选择元素 以及删除图形。图形编辑器的组成及其基本功能描述如下: 8图形由文本元素和图元元素构成,图元元素包括线条、矩形和椭圆。 9图形显示在工作空间中,一次只能显示一张图形(即当前图形,current)。 10编辑器提供了两种操作图形的工具:选择工具和创建工具。对图形进行操作时,一 次只能使用一种工具(即当前活动工具,accive)。 ①创建工具用于创建文本元素和图元元素。 ②对于显示在工作空间中的图形,使用选择工具能够选定其中所包含的元素,可以选 择一个元素,也可以同时选择多个元素。被选择的元素称为当前选中元素(selected)。 ③每种元素都具有对应的控制点。拖拽选定元素的控制点,可以移动元素或者调整元 素的大小。
现采用面向对象方法开发该图形编辑器,使用UML进行建模。构建出的用例图和类图 分别如图3-1和图3-2所示。
8、根据说明中的描述,给出图3-1中U1和U2所对应的用例,以及(1)和(2)处所对应的关系。 9、根据说明中的描述,给出图3-2中缺少的C1至C8所对应的类名以及(3)至(6)处所对应的多 重度。 10、图3-2中的类图设计采用了桥接(Bridge)设计模式,请说明该模式的内涵。 试题四 阅读下列说明和c代码,回答问题1至问题3,将解答写在对应栏内。 [说明] 某应用中需要对100000个整数元素进行排序,每个元素的取值在0~5之间。排序算法 的基本思想是:对每一个元素x,确定小于等于x的元素个数(记为m),将x放在输出元素序列 的第m个位置。对于元素值重复的情况,依次放入第m-1、m-2、…个位置。例如,如果元素 值小于等于4的元素个数有10个,其中元素值等于4的元素个数有3个,则4应该在输出元素序 列的第10个位置、第9个位置和第8个位置上。 算法具体的步骤为: 步骤1:统计每个元素值的个数。 步骤2:统计小于等于每个元素值的个数。 步骤3:将输入元素序列中的每个元素放入有序的输出元素序列。 [C代码] 下面是该排序算法的C语言实现。 11常量和变量说明 R:常量,定义元素取值范围中的取值个数,如上述应用中R值应取6。 i:循环变量。 n:待排序元素个数。 a:输入数组,长度为n。 b:输出数组,长度为n。 c:辅助数组,长度为R,其中每个元素表示小于等于下标所对应的元素值的个数。 12函数sort 1 void sort(int n, int a[], int b[]) 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 int c[R], i; for(i=0; i< 11 c[i]=0; } for(i=0; i<n; i++) c[a[i]]= } for(i=1; i<R; i++) c[i]= } for(i=0; i<n; i++) b[c[a[i]]-1]= 14 c[a[i]]=c[a[i]]-1; } ; i++) { ; { { 12 ; 13 ; { { } 11、根据说明和C代码,填充C代码中的空缺(1)~(4)。 12、根据C代码,函数的时间复杂度和空间复杂度分别为 (5) 和 (6) 示)。 13、根据以上C代码,分析该排序算法是否稳定。若稳定,请简要说明(不超过100字);若不 稳定,请修改其中代码使其稳定(给出要修改的行号和修改后的代码)。 (用O符号表 试题五 阅读下列说明和C++代码,将应填入 (n) 处的字句写在对应栏内。
[说明] 某饭店在不同的时段提供多种不同的餐饮,其菜单的结构图如图5-1所示。 现在采用组合(Composition)模式来构造该饭店的菜单,使得饭店可以方便地在其中 增加新的餐饮形式,得到如图5-2所示的类图。其中MenuComponent为抽象类,定义了添加(add) 新菜单和打印饭店所有菜单信息(print)的方法接口。类Menu表示饭店提供的每种餐饮形式 的菜单,如煎饼屋菜单、咖啡屋菜单等。每种菜单中都可以添加子菜单,例如图5-1中的甜 点菜单。类MenuItem表示菜单中的菜式。
[C++代码] #include<iostream> #include<list> #include<string> using namespace std; clas s MenuComponent protected: string name; public: MenuComponent(string name) String getName19{return name;} { {this->name=name; } 14 : //添加新菜单 //打印菜单信息 virtual void print19=0; }; clasS MenuItem: public MenuComponent private: double price; public: Menultem(string name, double price): MenuComponent(name){this-> { price=price;} double getPrice19{return price;} void add(MenuComponent* menuComponent) void print19 { cout<<" {return; } //添加新菜单 "<<getName19<<", "<<getPrice19<< end1;} }; clasS Menu: public MenuComponent private: list< 15 > menuComponents; pubiic: Menu(string name): MenuC0mponent(name){} void add(MenuComponent* menuComponent) { //添加新菜单
; 16 } { void print19{ cout<<"\n"<<getName19<<"\n-------------------------"<<end1; std::list<MenuC0mponent*>::iterator iter; for(iter=menuComponents.begin19; iter!=menuComponents. end19; iter++) 17 ->print19; } }; void main19{ MenuComponent* allMenus=new Menu("ALL MENUS"); MenuComponent* dinerMenu=new Menu("DINER MENU"); …//创建更多的Menu对象,此处代码省略 allMenus->add(dinerMenu); …//为餐厅增加更多的菜单,此处代码省略 //将dinerMenu添加到餐厅菜单中 18 ->print19; //打印饭店所有菜单的信息 } 试题六 阅读下列说明和Java代码,将应填入 (n) 处的字句写在对应栏内。 [说明] 某饭店在不同的时段提供多种不同的餐饮,其菜单的结构图如图6-1所示。 现在采用组合(Composition)模式来构造该饭店的菜单,使得饭店可以方便地在其中 增加新的餐饮形式,得到如图6-2所示的类图。其中MenuComponent为抽象类,定义了添加(add) 新菜单和打印饭店所有菜单信息(print)的方法接口。类Menu表示饭店提供的每种餐饮形式 的菜单,如煎饼屋菜单、咖啡屋菜单等。每种菜单中都可以添加子菜单,例如图6-1中的甜 点菜单。类MenuItem表示菜单中的菜式。
分享到:
收藏