logo资料库

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

第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
资料共11页,剩余部分请下载后查看
2013上半年软件设计师考试真题及答案-下午卷 试题一 某慈善机构欲开发一个募捐系统,已跟踪记录为事业或项目向目标群体进行募捐而组织的集 体性活动。该系统的主要功能如下所述。 1管理志愿者。根据募捐任务给志愿者发送加入邀请、邀请跟进、工作任务;管理志 愿者提供的邀请响应、志愿者信息、工作时长、工作结果等。 2确定募捐需求和收集所募捐赠(资金及物品)。根据需求提出募捐任务、将活动请求 和捐赠请求,获取所募集的资金和物品。 3组织募捐活动。根据活动请求,确定活动时间范围。根据活动时间,搜索场馆,即: 想场馆发送场馆可用性请求,获得场馆可用性。然后根据活动时间和地点推广募捐活动,根 据相应的活动信息举办活动,从募捐机构获取资金并向其发放赠品。获取和处理捐赠,根据 捐赠请求,提供所募集的捐赠;处理与捐赠人之间的交互,即: 录入捐赠人信息,处理后存入捐赠人信息表;从捐赠人信息表中查询捐赠人信息,向 捐赠人发送募捐请求,并将已联系的捐赠人存入已联系的捐赠人表。根据捐赠请求进行募集, 募得捐赠后,将捐赠记录存入捐赠表;对捐赠记录进行处理后,存入已处理捐赠表,向捐赠 人发送致谢函,根据已联系的捐赠人和捐赠记录进行跟踪,将捐赠跟进情况发送给捐赠人。 先采用结构化方法对募捐系统进行分析与设计,获得如图1、图2、和图3所示分层数 据流图。
1、使用说明中的词语,给出图1中的实体E1~E4的名称。 2、在建模DFD时,需要对有些复杂加工(处理)进行进一步精化,图2为图1中处理3的进一步 细化的1层数据流图,图3为图2中3.1进一步细化的2层数据流图。补全2中加工P1、P2和P3 的名称和图2与图3中缺少的数据流。 3、使用说明中的词语,给出图3中的数据存储D1~D4的名称。 试题二 某电视台拟开发一套信息管理系统,以方便对全台的员工、栏目、广告和演播厅等进行管理。 [需求分析] 系统需要维护全台员工的详细信息、栏目信息、广告信息和演播厅信息等。员工的信 息主要包括:工号、姓名、性别、出生日期、电话、住址等。栏目信息主要包括:栏目名称、 播出时间、时长的呢过。广告信息主要包括:广告编号、价格等。演播厅信息包括:房间号、 房间面积等。 电视台分局调度单来协调各档栏目、演播厅和场务。一销售档栏目只会占用一个演播
厅,但会使用多名场务来进行演出协调。演播厅和场务可以被多个栏目循环使用。 电视台根据栏目来插播广告。每档栏目可以插播多条广告,每条广告也可以在多档栏 目插播。 一档栏目可以有多个主持人,但一名支持人只能支持一档栏目。 一名编辑人员可以编辑多条广告,一条广告只能由一名编辑人员编辑。 [概念模型设计] 根据需求阶段收集的信息设计的实体联系图(不完整)如图所示。 [逻辑结构设计] 根据概念模型设计阶段完成的实体联系图,得出如下关系模式(不完整): 演播厅(房间号,房间面积) 栏目(栏目名称,播出时间,时长) 广告(广告编号,销售价格,______) 员工(工号,姓名,性别,出生日期,电话,住址) 主持人(主持人工号,______) 插播单(______,播出时间) 调度单(______) 4、补充图中的联系和联系的类型。 5、根据图,将逻辑结构设计阶段生成的关系模式的空补充完整,并用下划线指出空所在关 系模式的主键。 6、现需要记录广告商信息,增加广告商实体。一个广告商可以提供多条广告,一条广告只 由一个广告商提供。请根据该要求,对图进行修改,画出修改后的实体间联系和联系的类型。 试题三 某城市拟开发一个基于Web的城市黄页,公开发布该城市重要的组织或机构(一下统称为客户) 的基本信息,方便城市生活。该系统的主要功能描述如下: 7搜索信息:任何使用Internet的网络用户都可以搜索发布在城市黄页中的信息,例 如客户的名称、地址、联系电话等。 8认证:客户若想在城市黄页上发布信息,需通过系统的认证。认证成功后,该客户 成为系统授权用户。 9更新信息:授权用户登录系统后,可以更改自己在城市黄页中的相关信息,例如变 更联系电话等。 10删除客户:对于拒绝继续在城市黄页上发布信息的客户,有系统管理员删除该客户 的相关信息。 系统采用面向对象方法进行开发,在开发过程中认定出如下表所示的类。系统的用例 图和类图分别如图1和图2所示。 类列表
类名 InternetClient CustomerList Customer RegisteredClient Administrator 说明 网络用户 客户集.维护城市黄页上的所有客户信息 客户信息,记录单个客户的信息 授权用户 系统管理员 7、根据说明中的描述,给出图1中A1和A2出所对应的参与者,UC1和UC2所对应的用例以及处 的关系。 8、根据说明中的描述,给出图2中C1~C5所对应的类名(表中给出出的类名)和空格处所对应 的多重度。
9、认定类是面向对象分析中非常关键的一个步骤。一般首先从问题域中得到候选类集合, 在根据相应的原则从该集合中删除不作为类的,剩余的就是从问题域中认定出来的类。简要 说明选择候选类的原则,以及对候选类集合进行删除的原则。 试题四 设有m台完全相同的机器运行n个独立的任务,运行任务i所需要的时间为ti,要求确定一个 调度方案是的完成所有任务所需要的时间最短。 假设任务已经按照其运行时间从大到小排序,算法基于最长运行时间作业优先的策 略;按顺序先把每个1务分配到一台机器上,然后将剩余的任务一次放入最先空闲的机器。 [C代码] 下面是算法的C语言实现。 10常量和变量说明 m:机器数。 n:任务数。 t[]:输入数组,长度为n,其中每个元素表示任务的运行时间,下标从0开始。 s[][]:二维数组,长度为m*n,下标从0开始,其中元素s[i][j]表示机器i运行的任务 j的编号。 d[]:数组,长度为m其中元素d[i]表示机器i的运行时间,下标从0开始。 count[]:数组,长度为m,下标从0开始,其中元素count[i]表示机器i运行的任务数。 i:循环变量。 j:循环变量。 k:临时变量。 max:完成所有任务的时间。 min:临时变量。 11函数schedule void schedule12{ int i,j,k max=0; for(i=0;i<m;i++){ d[i]=0; for(j=0;j<n;j++){ s[i][j]=0; } } for(i=0;i<m;i++){ s[i][0]=i; //分配前m个任务 ______; count[i]=1; } for(______;i<n;i++){ int min=d[0]; k=0; for(j=1;j<n;j++){ if(rain>d[j]){ min=d[j]; k=j; //分配后n-m个任务 //确定空闲机器 //机器k空闲 } } ______; count[k]=count[k]+1; d[k]=d[k]+t[i]; for(i=0;i<m;i++){ //确定完成所有任务所需要的时间
if(______){ max=d[i]; } } } } 10、根据说明和C代码,填充C代码中的空。 11、根据说明和C代码,该问题采用了______算法设计策略,时间复杂度为______(用O符号 表示) 12、考虑实例m=3(编号0~2),n=7(编号0~6),各任务的运行时间为{16,14,6,5,4,3,2}。 则在机器0、1和2上运行的任务分别为______、______和______(给出任务编号)。从任务开 始运行到完成所需要的时间为______。 试题五 13、现要求实现一个能够自动生成求职简历的程序,简历的基本内容包括求职者的姓名、性 别、年龄及工作经历。希望每份简历中的工作经历有所不同,并尽量减少程序中的重复代码。 现采用原型模式(Prototype)来实现上述要求,得到如图1所示的类图。 [C++代码] # include<string> Using namespace std; Class Clonealole{ Public: ______, Class WorkExperience:public Cloneable{ Private: String workDate; String company; Public: Cloneable*Clone(){ ______ Obj->workDate=this->workDate; Obj->company=this->company; Return obj; } //其余代码省略 //经历
}; Class Resume:public Cloneable{ Private: String name; string sex; string age; WorkExperience*work; Resume(WorkExperience*work){ This->work=______; Public: Resume(string name){ Void SetPersonallnfo(string sex, string age){ /*实现省略*/ } //简历 /*实现省略*/ } Void setWorkExperience(string workDate,string company) { /*实现 省略*/ } Cloneable*Clone(){ ______; Obj->name=this->name; Obj->sex=this->sex; Obj->age=this->age; Return obj; } }; Int main(){ Resume*a=new Resrune("张三"); A->SetPersonalInfo("男", "29"); A->SetWorkExperience("1998~2000", "XXX公司"); Resume*b=______; B->SetWorkExperience("2001~2006","YYY公司"); Return 0; } 试题六 14、现要求实现一个能够自动生成求职简历的程序,简历的基本内容包括求职者的姓名、性 别、年龄及工作经历。希望每份简历中的工作经历有所不同,并尽量减少程序中的重复代码。 现采用原型模式(Prototype)来实现上述要求,得到如图所示的类图。 [Java代码]
Class WorkExperience ______ Cloneable{ //工作简历 Private String workDate; Private String company; Public Object Clone(){ ______; obj.workDate=this.workDate; Obj.company-this.company; Return obj; } } Class Resume ______ Cloneable{ String name; Private Private String sex; Private String age; Private WorkExperience work ; Public Resume(String name){ //简历 } } 代码略*/ } This.name=name; work=new WorkExperience(); Private Resume(WorkExperience work){ This.woek=______; Public void SetPersonallnfo( String sex , String age) { /* Public void SetWorkExperience(String workDate, String company) { /*代码省略*/ } Public Object Clone( ){ Resume obj=______; //其余代码省略 Return obj; } } Class WorkResume{ Public static void main(String[] args){ a=new Resume("张三"); Resume a.SetPersonallnfo("男", "29"); a.SetWorkExperience("1998~2000","XXX公司"); Resume b=______; b.SetWorkExperience("2001~2006","YYY公司"); } } 答案: 试题一 1、E1志愿者 E2捐赠人 E3募捐机构 E4场馆。 [解析] 该题以募捐系统为载体来考核考生对数据流图知识点的掌握程度。从题目的问答形
分享到:
收藏