题目详解与知识点解析
试题一:数据流图与结构化分析
问题1:识别实体E1-E4
- 解题思路:根据系统功能,外部参与者包括商户(发布餐品)、用户(订餐)、外卖平台(配送)和支付系统(处理支付)。
- 知识点 :
- 实体定义:与系统交互的外部角色。
- 上下文图作用:展示系统范围及与外部实体的数据交互。
问题2:数据存储D1-D4
- 解题思路 :功能模块对应存储数据:
- D1(用户/商户信息表) → 入驻管理存储的数据。
- D2(订单表) → 订餐生成的订单。
- D3(餐品表) → 餐品管理的数据。
- D4(评价表) → 订单评价的存储。
- 知识点 :
- 数据存储设计:根据模块需求定义数据库表结构。
问题3:补充数据流
- 解题思路 :
- 餐单流:D3→P3(订餐需读取餐单),P3→E3(用户浏览餐单)。
- 订餐请求:用户提交订单需流向订单处理(P3→P4)。
- 配送码:由配送模块生成并发送给用户(P5→E3)。
- 知识点 :
- 数据流一致性:确保父图与子图数据流完整,没有遗漏。
问题4:加工逻辑描述
-
结构化语言核心 :
plaintext收到订餐请求 → 发送配送请求 → IF 接单成功 THEN 发起支付 → IF 支付成功 THEN 更新为已接单 ELSE 更新为失败 ELSE 更新为失败
-
知识点 :
- 结构化语言规范:使用顺序、分支结构明确流程,逻辑清晰。
试题二:数据库设计与ER模型
问题1:补充ER图联系
- 解题思路 :
- 供货关系:供应商与医院多对多供应疫苗。
- 接种关系:用户可在多家医院接种,记录医院、供应商及时间。
- 知识点 :
- 多对多联系:需转换为关联表,并包含关联属性(如供货内容、接种时间)。
问题2:逻辑结构设计
- 主键与外键 :
- 供货表:主键(供应商名称, 医院名称);外键引用供应商和医院表。
- 接种表:主键(身份证号, 接种时间, 医院名称);外键引用用户、医院、供应商表。
- 知识点 :
- 符合第三范式:消除冗余,确保数据一致性。
问题3:扩展核酸检测
- 新增设计 :
- 增加实体"被检测者"(属性同接种者)。
- 检测联系包含医院、被检测者、检测日期和结果。
- 知识点 :
- ER图扩展性:新增实体不影响原有结构,体现模块化设计。
试题三:UML用例图与类图
问题1:用例识别
- 关键用例 :
- U1/U2:排序方式(按姓氏或邮编)。
- U3-U6:地址簿操作(创建、打开、修改、保存)。
- 知识点 :
- 用例粒度:确保每个用例代表独立功能点。
问题2:类设计
- AddressBook属性:部门标识、地址记录集合。
- 方法:添加、删除、排序、打印等。
- PersonAddress属性:姓名、地址、邮编等。
- 知识点 :
- 类的单一职责原则:管理地址记录的操作集中在AddressBook类。
问题3:用例关系
- 包含关系(include) :
- 如"打印地址"必须包含"生成邮件格式"。
- 扩展关系(extend) :
- 如"导出数据"可能扩展"加密处理"(可选功能)。
- 知识点 :
- 用例复用:Include用于必选子流程;Extend用于可选或条件分支。
试题四:动态规划与矩阵连乘
问题1:代码填空
- 关键步骤 :
- j = i + p(计算子链右边界)。
- k遍历分割点(k从i到j-1)。
- temp = 左子链代价 + 右子链代价 + 合并代价。
- 记录最优分割点tempTrace。
- 知识点 :
- 动态规划填表法:自底向上计算子问题,保存中间结果。
问题2:算法分析
- 时间复杂度:三层循环(n³)。
- 空间复杂度:二维数组存储代价和分割点。
问题3:实例计算
- 最优括号化 :
实际答案:最小次数为5375,正确顺序为A1*((A2*A3)*A4)。 - 知识点 :
- 递推计算:通过动态规划表反向追踪分割点,生成最优顺序。
试题五/六:备忘录模式
代码填空思路:
- Originator保存状态:返回Memento对象,将当前状态传入构造函数。
- 恢复状态:从Memento对象读取状态。
- Caretaker管理:add方法保存Memento,get方法按索引获取。
- 知识点 :
- 封装性:Memento内部状态私有,仅通过接口访问。
- 职责分离:Originator负责状态生成与恢复,Caretaker负责历史记录管理。
总结与复习建议
- 数据流图:重点识别外部实体、数据存储,确保数据流覆盖所有功能。
- 数据库设计:掌握ER模型到关系模式的转换,主外键设置,多对多处理。
- 面向对象设计:熟练绘制用例图、类图,区分用例关系(include/extend)。
- 动态规划:理解最优子结构,掌握矩阵连乘的递推公式与代码实现。
- 设计模式:重点掌握备忘录模式的结构与代码实现。
通过理解上述思路与知识点,结合真题练习,可系统化提升解题能力,轻松应对考试!