2023年软件设计师下午试卷

上传人:时间****91 文档编号:166918019 上传时间:2022-11-01 格式:DOC 页数:27 大小:48.50KB
返回 下载 相关 举报
2023年软件设计师下午试卷_第1页
第1页 / 共27页
2023年软件设计师下午试卷_第2页
第2页 / 共27页
2023年软件设计师下午试卷_第3页
第3页 / 共27页
点击查看更多>>
资源描述
2023 年下半年 软件设计师 下午试卷 第 1 页 (共 1 页)全国计算机技术与软件专业技术资格(水平)考试2023 年下半年 软件设计师 下午试卷(考试时间 14:0016:30 共 150 分钟)请按下述规定对的填写答题纸1.在答题纸的指定位置填写你所在的省、自治区、直辖市、计划单列市的名称。 2.在答题纸的指定位置填写准考证号、出生年月日和姓名。 3.答题纸上除填写上述内容外只能写解答。 4.本试卷共 7 道题,试题一至试题四是必答题,试题五至试题七选答 1 道。每题 15 分,满分 75 分。 5.解答时笔迹务必清楚,笔迹不清时,将不评分。 6.仿照下面例题,将解答写在答题纸的相应栏内。 例题2023 年下半年全国计算机技术与软件专业技术资格(水平)考试日期是(1)月(2)日。 由于对的的解答是“11 月 4 日”,故在答题纸的相应栏内写上“11”和“4”(参看下表)。例题 解答栏(1) 11 (2) 4 2023 年下半年 软件设计师 下午试卷 第 2 页 (共 2 页) 试题一(共 15 分) 阅读以下说明以及数据流图,回答问题1至问题5,将解答填入答题纸的相应栏内。 说明 某银行已有一套基于客户机/服务器模式的储蓄系统 A 和一套建帐软件。建帐软件主要用于将储蓄所手工解决的原始数据转换为系统 A 所需的数据格式。该建帐软件具有以下功能: (1)分户帐录入:手工办理业务时建立的每个分户帐数据均由初录员和复录员分别录入,以保证数据的对的性; (2)初录/复录比对:将初录员和复录员录入的数据进行一一比较,并标记两套数据是否一致; (3)数据确认:当上述两套数据完全一致后,将其中任一套作为最终进入系统 A 的原始数据; (4)汇总核对和打印:对通过确认的数据进行汇总,并和会计账目中的相关数据进行核对,以保证数据的整体对的性,并打印输出通过确认的数据,为以后核查也许的错误提供依据; (5)数据转换:将通过确认的数据转换为储蓄系统 A 需要的中间格式数据; (6)数据清除:为加快初录和复录的解决速度,在数据确认之后,可以有选择地清除初录员和复录员录入的数据。 该软件的数据流图如图 1-1图 1-3 所示。图中部分数据流数据文献的格式如下: 初录分户帐 = 储蓄所号 + 帐号 + 户名 + 开户日 + 开户金额 + 当前余额 + 性质 复录分户帐 = 储蓄所号 + 帐号 + 户名 + 开户日 + 开户金额 + 当前余额 + 性质 初录数据 = 手工分户帐 + 一致性标志 复录数据 = 手工分户帐 + 一致性标志 会计账目 = 储蓄所号 + 总户数 + 总余额 操作结果 = 初录操作结果 + 比对操作结果 + 复录操作结果 试题一至试题四是必答题2023 年下半年 软件设计师 下午试卷 第 3 页 (共 3 页)1录入比对2数据确认 确认的数据3汇总核对6数据清除4打印清单5数据转换打印机建帐软件初录员/复录员 会计系统A会计账目操作结果核对结果手工分户帐中间格式数据分户帐清单操作结果手工分户帐中间格式数据分户帐清单会计账目核对结果图 1-1 建帐软件顶层数据流图 图 1-2 建帐软件第 0 层数据流图 初录员 复录员1.2复录1.3比对初录数据 复录数据1.1初录比对操作结果初录操作结果复录操作结果初录分户帐初录结果复录分户帐复录结果图 1-3 建帐软件第 1 层数据流图 2023 年下半年 软件设计师 下午试卷 第 4 页 (共 4 页)软件需要打印的分户帐清单样式如表 1-1 所示: 表 1-1 分户帐清单样式表 储蓄所 帐号 开户日 户名 其他分户帐数据 储蓄所 1 储蓄所 1 合计 共 XXX 户,总余额 9999999.99 元 储蓄所 2 储蓄所 2 合计 共 XXX 户,总余额 9999999.99 元 问题 1 (4 分) 请采用说明中的词汇,给出数据确认解决所需的数据流在第 1 层图中的所有可选起点(第 0 层图和第 1 层图中均未给出)。问题 2 (2 分) 不考虑数据确认解决(加工 2),请指出数据流图中存在的错误。问题 3 (2 分) 打印分户帐清单时,必须以下列哪一组数据作为关键字进行排序,才干满足需求?请从下面选项中选择,并将相应序号填入答题纸相应栏。 储蓄所 帐号 开户日 总户数和总余额问题 4 (4 分) 加工 1(录入比对解决)除可以检查出初录数据和复录数据不一致外,还应当检测出下列哪些错误,请将相应序号填入答题纸相应栏。 输入的无效字符 输入的半个汉字 显示器无法显示 初录员反复录入同一帐户 汇总数据与会计账目不符 打印机卡纸 问题 5 (3 分) 请使用数据字典条目定义形式,给出第 0 层 DFD 中的“手工分户帐”数据流和第 1 层DFD 中的“初录分户帐”、“复录分户帐”的关系。 2023 年下半年 软件设计师 下午试卷 第 5 页 (共 5 页)试题二(共 15 分) 阅读以下说明,回答问题 1 至问题 4,将解答填入答题纸的相应栏内。 说明 某宾馆需要建立一个住房管理系统,部分的需求分析结果如下: (1) 一个房间有多个床位,同一房间内的床位具有相同的收费标准。不同房间的床位收费标准也许不同。 (2) 每个房间有房间号(如 201、202 等)、收费标准、床位数目等信息。 (3) 每位客人有身份证号码、姓名、性别、出生日期和地址等信息。 (4) 对每位客人的每次住宿,应当记录其入住日期、退房日期和预付款额信息。 (5) 管理系统可查询出客人所住房间号。 根据以上的需求分析结果,设计一种关系模型如图 2-1 所示: 房间 住宿 客人m n图 2-1 住房管理系统的实体联系图问题 1(1 分) 根据上述说明和实体-联系图,得到该住房管理系统的关系模式如下所示,请补充住宿关系。 房间(房间号,收费标准,床位数目) 客人(身份证号,姓名,性别,出生日期,地址) 住宿( (1) ,入住日期,退房日期,预付款额) 问题 2(4 分) 请给出问题 1 中住宿关系的主键和外键。 问题 3(4 分) 若将上述各关系直接实现为相应的物理表,现需查询在 2023 年 1 月 1 日到 2023 年 12月 31 日期间,在该宾馆住宿次数大于 5 次的客人身份证号,并且按照入住次数进行降序排列。下面是实现该功能的 SQL 语句,请填补语句中的空缺。 SELECT 住宿.身份证号,count(入住日期) FROM 住宿,客人 WHERE 入住日期 = 20230101AND 入住日期 5 (4) 问题 4(6 分) 为加快 SQL 语句的执行效率,可在相应的表上创建索引。根据问题 3 中的 SQL 语句,除主键和外键外,还需要在哪个表的哪些属性上创建索引,应当创建什么类型的索引,请说明因素。2023 年下半年 软件设计师 下午试卷 第 6 页 (共 6 页)试题三(共 15 分) 阅读以下说明和图,回答问题 1 至问题 3,将解答填入答题纸的相应栏内。 说明 S 公司开办了在线电子商务网站,重要为各注册的商家提供在线商品销售功能。为更好地吸引用户,S 公司计划为注册的商家提供商品(Commodity)促销(Promotion)功能。商品的分类(Category)不同,促销的方式和内容会有所不同。 注册商家可发布促销信息。商家一方面要在自己所销售的商品的分类中,选择促销涉及的某一具体分类,然后选出该分类的一个或多个商品(一种商品仅仅属于一种分类),接着制定出一个比较优惠的折扣政策和促销活动的优惠时间,最后由系统生成促销信息并将该促销信息公布在网站上。 商家发布促销信息后,网站的注册用户便可通过网站购买促销商品。用户可选择参与某一个促销(Promotion)活动,并选择具体的促销商品(Commodity),输入购买数量等购买信息。系统生成相应的一份促销订单(POrder)。只要用户在优惠活动的时间范围内,通过网站提供的在线支付系统,确认在线支付该促销订单(即完毕支付),就可以优惠的价格完毕商品的购买活动,否则该促销订单失效。 系统采用面向对象方法开发,系统中的类以及类之间的关系用 UML 类图表达,图 3-1是该系统类图中的一部分;系统的动态行为采用 UML 序列图表达,图 3-2 是发布促销的序列图。 图 3-1 在线促销系统部分类图(1)(2) (3)(4)(5)(6)2023 年下半年 软件设计师 下午试卷 第 7 页 (共 7 页) 图 3-2 发布促销序列图 问题 1(6 分) 辨认关联的多重度是面向对象建模过程中的一个重要环节。根据说明中给出的描述,完毕图 3-1 中的(1)(6)。 问题 2(4 分) 请从表 3-1 中选择方法,完毕图 3-2 中的(7)(10)。 表 3-1 可选消息列表 功能描述 方法名 向促销订单中添加所选的商品 buyCommodities 向促销中添加要促销的商品 addCommodities 查找某个促销的所有促销订单信息列表 getPromotionOrders 生成商品信息 createCommodity 查找某个分类中某商家的所有商品信息列表 getCommodities 生成促销信息 createPromotion 生成促销订单信息 createPOrder 查找某个分类的所有促销信息列表 getCategoryPromotion 查找某商家所销售的所有分类列表 getCategories 查找某个促销所涉及的所有商品信息列表 getPromotionCommodities 问题 3(5 分) 关联(Association)和聚集(Aggregation)是 UML 中两种非常重要的关系。请说明关联和聚集的关系,并说明其不同点。 (7)(8)(9) (10)2023 年下半年 软件设计师 下午试卷 第 8 页 (共 8 页)试题四(共 15 分) 阅读以下说明和图,填补流程图中的空缺,将解答填入答题纸的相应栏内。 说明 某汽车制造工厂有两条装配线。汽车装配过程如图 4-1 所示,即汽车底盘进入装配线,零件在多个工位装配,结束时汽车自动完毕下线工作。 a0,0 a0,1 a0,2 a0,3 a0,n-2a1,0 a1,1 a1,2 a1,3 a1,n-2t0,0 t0,1 t0,2 t0,n-2x0t1,0 t1,1 t1,2 t1,n-2x1e0e1底盘 . 汽车S0,0 S0,1 S0,2 S0,3 S0,n-2 S0,n-1S1,0 S1,1 S1,2 S1,3 S1,n-2 S1,n-1a0,n-1a1,n-1. 图 4-1 汽车装配线 (1) e0和 e1表达底盘分别进入装配线 0 和装配线 1 所需要的时间。 (2) 每条装配线有 n 个工位,第一条装配线的工位为 S0,0, S0,1, , S0,n-1, 第二条装配线的工位为 S1,0, S1,1, , S1,n-1。其中 S0,k和 S1,k(0kn-1)完毕相同的任务,但所需时间也许不同。 (3) ai,j表达在工位 Si,j处的装配时间,其中 i 表达装配线(i=0 或 i=1),j 表达工位号(0jn-1)。 (4) ti,j表达从 Si,j处装配完毕后转移到另一条装配线下一个工位的时间。 (5) x0和 x1表达装配结束后,汽车分别从装配线 0 和装配线 1 下线所需要的时间。 (6) 在同一条装配线上,底盘从一个工位转移到其下一个工位的时间可以忽略不计。 图 4-2 所示的流程图描述了求最短装配时间的算法,该算法的输入为: n: 表达装配线上的工位数; ei: 表达 e1和 e2,i 取值为 0 或 1; aij:表达 ai,j,i 的取值为 0 或 1,j 的取值范围为 0n-1; tij:表达 ti,j, i 的取值为 0 或 1,j 的取值范围为 0n-1; xi: 表达 x0和 x1,i 取值为 0 或 1。 算法的输出为: fi:最短的装配时间; li:获得最短装配时间的下线装配线号(0 或者 1)。 算法中使用的 fij表达从开始点到 Si,j处的最短装配时间。 2023 年下半年 软件设计师 下午试卷 第 9 页 (共 9 页)开始结束(1)j = = = = 1j n ?f0nnnn-1+xxxx0=f1nnnn-1+xxxx1 ?(4) (5)(2) nextbrother; while (brotherptr) EnQueue(&tempQ,brotherptr); (2) ; /*end-while*/ while ( (3) ) (4) ; printf(%ct,ptr-data); if ( (5) ) continue; (6) ; brotherptr = ptr-firstchild-nextbrother; while (brotherptr) EnQueue(&tempQ,brotherptr); (7) ; /*end-while*/ /*end-while*/ return OK; /*LevelTraverse*/ 2023 年下半年 软件设计师 下午试卷 第 12 页 (共 12 页)试题六(共 15 分) 阅读以下说明和 C+代码,将应填入 (n) 处的字句写在答题纸的相应栏内。 说明 传输门是传输系统中的重要装置。传输门具有 Open(打开)、Closed(关闭)、Opening(正在打开)、StayOpen(保持打开)、Closing(正在关闭)五种状态。触发传输门状态转换的事件有 click、complete 和 timeout 三种。事件与其相应的状态转换如图 6-1 所示。Closed已关闭Closing正在关闭Opening正在打开Open打开StayOpen保持打开clickcompletecompletetimeoutclickclickclickclick图 6-1 传输门响应事件与其状态转换图下面的C+代码 1与C+代码 2分别用两种不同的设计思绪对传输门进行状态模拟,请填补代码中的空缺。 C+代码 1 const int CLOSED = 1; const int OPENING = 2; const int OPEN = 3; const int CLOSING = 4; const int STAYOPEN = 5; /定义状态变量,用不同整数表达不同状态 class Door private: int state; /传输门当前状态 void setState(int state) this-state = state; /设立当前状态 public: Door():state(CLOSED); void getState() /根据当前状态输出相应的字符串 switch(state) case OPENING: cout OPENING endl; break; case CLOSED: cout CLOSED endl; break; case OPEN: cout OPEN endl; break; case CLOSING: cout CLOSING endl; break; 2023 年下半年 软件设计师 下午试卷 第 13 页 (共 13 页) case STAYOPEN: cout STAYOPEN state = state; void getState() / 此处代码省略,本方法输出状态字符串, / 例如,当前状态为CLOSED时,输出字符串为“CLOSED” ; void click(); void timeout(); void complete(); ; 2023 年下半年 软件设计师 下午试卷 第 14 页 (共 14 页)Door:Door() CLOSED = new DoorClosed(this); OPENING = new DoorOpening(this); OPEN = new DoorOpen(this); CLOSING = new DoorClosing(this); STAYOPEN = new DoorStayOpen(this); state = CLOSED; void Door:click() (4) ; void Door:timeout() (5) ; void Door:complete() (6) ; class DoorState /定义一个抽象的状态,它是所有状态类的基类 protected: Door *door; public: DoorState(Door *door) this-door = door; virtual DoorState(void); virtual void click() virtual void complete() virtual void timeout() ; class DoorClosed :public DoorState /定义一个基本的 Closed 状态 public: DoorClosed(Door *door):DoorState(door) virtual DoorClosed () void click(); ; void DoorClosed:click() (7) ; / 其它状态类的定义与实现代码省略 int main() Door aDoor; aDoor.getState(); aDoor.click(); aDoor.getState(); aDplete(); aDoor.getState(); aDoor.timeout(); aDoor.getState(); return 0; 2023 年下半年 软件设计师 下午试卷 第 15 页 (共 15 页)试题七(共 15 分) 阅读以下说明以及 Java 程序,将应填入 (n) 处的字句写在答题纸的相应栏内。 说明 传输门是传输系统中的重要装置。传输门具有 Open(打开)、Closed(关闭)、Opening(正在打开)、StayOpen(保持打开)、Closing(正在关闭)五种状态。触发状态的转换事件有 click、complete 和 timeout 三种。事件与其相应的状态转换如图 7-1 所示。Closed已关闭Closing正在关闭Opening正在打开Open打开StayOpen保持打开clickcompletecompletetimeoutclickclickclickclick图 7-1 传输门响应事件与其状态转换图下面的Java 代码 1与Java 代码 2分别用两种不同的设计思绪对传输门进行状态模拟,请填补代码中的空缺。 Javaava Java 代码 1 public class Door public static final int CLOSED = 1; public static final int OPENING = 2; public static final int OPEN = 3; public static final int CLOSING = 4; public static final int STAYOPEN = 5; private int state = CLOSED; /定义状态变量,用不同的整数表达不同状态 private void setState(int state)this.state = state; /设立传输门当前状态 public void getState() / 此处代码省略,本方法输出状态字符串, / 例如,当前状态为 CLOSED 时,输出字符串为”CLOSED” public void click() /发生 click 事件时进行状态转换 if ( (1) ) setState(OPENING); else if ( (2) ) setState(CLOSING); else if ( (3) ) setState(STAYOPEN); 2023 年下半年 软件设计师 下午试卷 第 16 页 (共 16 页)/发生 timeout 事件时进行状态转换 public void timeout() if (state = OPEN) setState(CLOSING); public void complete()/发生 complete 事件时进行状态转换 if (state = OPENING) setState(OPEN); else if (state = CLOSING) setState(CLOSED); public static void main(String args) Door aDoor = new Door(); aDoor.getState(); aDoor.click(); aDoor.getState(); aDplete(); aDoor.getState(); aDoor.click(); aDoor.getState(); aDoor.click(); aDoor.getState(); return; Javaava Java 代码 2 public class Door public final DoorState CLOSED = new DoorClosed(this); public final DoorState OPENING = new DoorOpening(this); public final DoorState OPEN = new DoorOpen(this); public final DoorState CLOSING = new DoorClosing(this); public final DoorState STAYOPEN = new DoorStayOpen(this); private DoorState state = CLOSED; /设立传输门当前状态 public void setState(DoorState state) this.state = state; public void getState() /根据当前状态输出相应的状态字符串 System.out.println(state.getClass().getName(); public void click() (4) ;/发生 click 事件时进行状态转换 public void timeout() (5) ;/发生 timeout 事件时进行状态转换 public void complete() (6) ;/发生 complete 事件时进行状态转换 public static void main(String args) Door aDoor = new Door(); aDoor.getState(); aDoor.click(); aDoor.getState(); aDplete(); aDoor.getState(); aDoor.timeout(); aDoor.getState(); return; 2023 年下半年 软件设计师 下午试卷 第 17 页 (共 17 页) public abstract class DoorState /定义所有状态类的基类 protected Door door ; public DoorState(Door door) this.door = door; public void click() public void complete() public void timeout() class DoorClosed extends DoorState /定义一个基本的 Closed 状态 public DoorClosed(Door door) super(door); public void click() (7) ; /该类定义的其余代码省略 /其余代码省略
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!