1、试题一(15 分)阅读下列说明和图,回答问题 1 至 4,将答案填入答题纸的对应栏内。【说明】某公司拟开发一个共享单车系统,采用北斗定位系统进行单车定位,提供针对用户的APP 以及微信小程序,基于 Web 的管理与监控系统。该共享单车系统的主要功能如下。1)用户注册登录。用户在 APP 段端输入手机号并获取验证码后进行注册,将用户信息进行存储。用户登录后显示用户所在位置周围的单车。2)使用单车。扫码 /手动开锁。通过扫描二维码或手动输入编码获取开锁密码,系统发送开锁指令进行开锁,系统修改单车状态,新建单车行程。骑行单车。单车定时上传位置,更新行程。锁车结账。用户停止使用或手动锁车并结束行程后,
2、系统根据已设置好的计费规则及使用时间自动结算,更新本次骑行的费用并显示给用户,用户确认支付后,记录行程的支付状态,系统还将重置单车的开锁密码和单车状态。3)辅助管理。查询。用户可以查看行程列表和行程详细信息。保修。用户上报所在位置或单车位置以及单车故障信息并进行记录。4)管理与监控单车管理及计费规则设置。商家对单车基础信息,状态等进行管理,对计费规则进行设置并存储。单车监控。对单车,故障,行程等进行查询统计。用户管理。管理用户信用与状态信息,对用户进行查询统计。现采用结构化方法对共享单车系统进行分析与设计,获得如图 1-1 所示的上下文数据流图和图 1-2 所示的 0 层数据流图。【问题 1】
3、 (3 分)使用说明中的词语,给出图 1-1 中的实体 E1E3 的名称。【问题 2】 (5 分)使用说明中的词语,给出图 1-2 中的数据存储 D1D5 的名称。【问题 3】 (5 分)根据说明和图中术语及符号,补充图 1-2 中缺失的数据流及其起点和终点。【问题 4】 (2 分)根据说明中术语,说明“使用单车”可以分解为那些子加工?试题二(共 15 分)阅读下列说明,回答问题 1 至问题 4,将解答填入答题纸的对应栏内。【说明】M 公司为了便于开展和管理各项业务活动,提高公司的知名度和影响力,拟构建一个基于网络的会议策划系统。【需求分析结果】该系统的部分功能及初步需求分析的结果如下:(1)
4、M 公司旗下有业务部,策划部和其它部门。部门信息包括部门号,部门名,主管,联系电话和邮箱号。每个部门只有一名主管,只负责本部门的工作,且主管参照员工关系的员工号:一个部门有多名员工,每个员工属于且仅属于一个部门。(2)员工信息包括员工号,姓名,职位,联系方式和薪资。职位包括主管,业务员,策划员等。业务员负责受理用户申请,设置受理标志。一名业务员可以受理多个用户申请,但一个用户申请只能由一个业务员受理。(3)用户信息包括用户号,用户名,银行账号,电话,联系地址。用户号唯一标识用户信息中的每一个元组。(4)用户申请信息包括申请号,用户号,会议日期,天数,参会人数,地点,预算费用和受理标志。申请号唯
5、一标识用户申请信息中的每一个元组,且一个用户可以提交多个申请,但一个用户申请只对应一个用户号。(5)策划部主管为已受理的用户申请制定会议策划任务。策划任务包括申请号,任务明细和要求完成时间。申请号唯一标识策划任务的每一个元组。一个策划任务只对应一个已受理的用户申请,但一个策划任务可由多名策划员参与执行,且一名策划员可以参与执行多项策划任务。【概念模型设计】根据需求阶段收集的信息,设计的实体联系图(不完整)如图 2-1 所示。【关系模式设计】部门(部门号,部门名,部门主管,联系电话,邮箱号)员工(员工号,姓名, (a) ,联系方式,薪资)用户(用户名, (b) ,电话,联系地址)用户申请(申请号
6、,用户号,会议日期,天数,参会人数,地点,受理标志, (c ) )策划任务(申请号,任务明显, (d) )执行(申请号,策划员,实际完成时间,用户评价)【问题 1】 (5 分)根据问题描述,补充五个联系,完成图 2-1 的实体联系图,联系名可用联系 1,联系2,联系 3,联系 4 和联系 5 表示,联系的类型为 1:1,1: n 和 m:n(或 1:1,1:*和*:*)【问题 2】 (4 分)根据题意,将关系模式中的空(a)(d)补充完整,并填入答题纸的位置上。【问题 3】 (4 分)给出“用户申请” 和“ 策划任务 ”关系模式的主键和外键。【问题 4】 (2 分)请问“执行”关系模式的主键为
7、全码的说法正确吗?为什么?试题三(共 15 分)阅读下列说明,回答问题 1 至问题 3,将解答填入答题纸的对应栏内。【说明】某大学拟开发一个用于管理学术出版物(Publication)的数字图书馆系统,用户可以从该系统查询或下载已发表的学术出版物。系统的主要功能如下:1.登录系统。系统的用户(User)仅限于该大学的学生(Student ) ,教师(Faculty)和其它工作人员(Staff) 。在访问系统之前,用户必须使用其校园账号和密码登录系统。2.查询某位作者(Author)的所有出版物。系统中保存了会议文章(ConfPaper ) ,期刊文章(JournalArticle)和校内技术报
8、告(TechReport)等学术出版物的信息,如题目,作者以及出版年份等。除此之外,系统还存储了不同类型出版物的一些特有信息;(1)对于会议文章,系统还记录了会议名称,召开时间以及召开地点;(2)对于期刊文章,系统还记录了期刊名称,出版月份,期号以及主办单位;(3)对于校内技术报告,系统还记录了由学校分配的唯一 ID。3.查询制定会议集(Proceedings)或某个期刊特定期(Edition)的所有文章。会议集包含了发表在该会议(在某个特定时间段,特定地点召开)上的所有文章。期刊的每一期在特定时间发行,其中包含若干篇文章。4.下载出版物。系统记录每个出版物被下载的次数。5.查询引用了某篇出版
9、物的所有出版物。在学术出版物中引用他人或早期的文献作为相关工作或背景资料是很常见的现象。用户也可以在系统中为某篇出版物注册引用通知,若有新的出版物引用该出版物,系统将发送电子邮件通知该用户。现在采用面向对象方法对该系统进行开发,得到系统的初始设计类图如图 3-1 所示。【问题 1】 (9 分)根据说明中的描述,给出图 3-1 中 C1C9 所对应的类名。【问题 2】 (4 分)根据说明中的描述,给出图 3-1 中类 C6C9 的属性。【问题 3】 (2 分)图 3-1 中包含了那种设计模式?实现的是该系统的哪个功能?试题四(共 15 分)阅读下列说明和 C 代码,回答问题 1 至问题 2,将解
10、答写在答题纸的对应栏内【说明】一个无向连通图 G 上的哈密尔顿( Hamilton)回路是指从图 G 上的某个顶点出发,经过图上所有其他顶点一次且仅一次,最后回到该顶点的路径。一种求解无向图上的哈密尔顿回路算法的基本思想如下:假设图 G 存在一个从顶点 u0 出发的哈密尔顿回路 u0u1u2u3.u0un-1u0。 算法从顶点 u0 出发,访问该顶点的一个未被访问的领接顶点 u1 , 接着从顶点 u1 出发,访问u1 的一个未被访问的领接顶点 u2,.。对顶点 ui,重复进行以下操作:访问 ui 的一个为被访问的领接顶点 ui+1;若 ui 的所有领接顶点均已被访问,则返回到顶点 ui-1,考
11、虑 ui-1 的下一个未被访问的领接顶点,仍记为 ui;直到找到一个哈密尔顿回路或者找不到哈密尔顿回路,算法结束。【C 代码】下面是算法的 C 语言实现。(1)常量和变量说明n:图 G 中的顶点数c:图 G 的领接矩阵k:统计变量,当前已经访问的顶点数为 k+1xk:第 k 个访问的顶点编号,从 0 开始visitedxk:第 k 个顶点的访问标志, 0 表示未访问,1 表示已访问(2)C 程序#include#include#define MAX 4Void Hamilton(int n,int xMAX,int cMAXMAX)int i;int visitedMAX;int k;/*初始
12、化 x 数组和 visited 数组 */for(i=o;i0)xk=xk+1;while(xk#includeUsing namespace std;class matrix/各种格式的文件最终都被转化为像素矩阵/此处代码省略;class ImplementPublic:(1) ;/显示像素矩阵 m;class WinImp:public ImplementorPublic:Void doPaint(Matrix m)/*调用 Windows 系统的绘制函数绘制像素矩阵 */;class LinuxImp: public Implementorpublic:Void doPaint(Matr
13、ix m)/*调用 Linux 系统的绘制函数绘制像素矩阵*/;class Imagpublic:void setImp(Implementor *imp)this.imp=imp;virtual void parseFile(String fileName)=0;protected: Implenentor *imp;class BMPImage:public Image/此处代码省略;class GIFImage:public Imagepublic:void parseFile(String fileName)/此处解析 GIF 文件并获取一个像素矩阵对象 m(2) ;/显示像素矩阵 m
14、;class JPEGImage:public Image/此处代码省略;int main()public static void main(String args)/在 Linux 操作系统上查看 demo.gif 图像文件Imag imag= (3) ;Implementor imageImp= (4) ;(5) ;image.parseFile(“demo.gif”); 试题六共 15 分)阅读下列说明和 Java 代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】某图像预览程序要求能够查看 BMP,JPEG 和 GIF 三种格式的文件,且能够在Windows 和 Linux 两
15、种操作系统上运行。程序需具有较好的扩展性以支持新的文件格式和操作系统。为满足上述需求并减少所需生成的子类数目,现采用桥接 (Bridge)模式进行设计,得到如图 5.1 所示的类图。【Java 代码 】import Java。Util。*;class matrix/各种格式的文件最终都被转化为像素矩阵/此处代码省略;abstract class Implementpublic (1) ;/显示像素矩阵 m;class WinImp:public Implementorpublic Void doPaint(Matrix m)/*调用 Windows 系统的绘制函数绘制像素矩阵*/;class
16、LinuxImp: public Implementorpublic Void doPaint(Matrix m)/*调用 Linux 系统的绘制函数绘制像素矩阵 */;class Imagpublic void setImp(Implementor *imp)this.imp=imp;public virtual void parseFile(String fileName)=0;protected Implenentor *imp;class BMPImage:public Image/此处代码省略;class GIFImage:public Imagepublic Void parseF
17、ile(String fileName)/此处解析 GIF 文件并获取一个像素矩阵对象 m(2) ;/显示像素矩阵 m;class JPEGImage:public Image/此处代码省略;class main()public static void main(String args)/在 Linux 操作系统上查看 demo.gif 图像文件Imag imag= (3) ;Implementor imageImp= (4) ;(5) ;image.parseFile(“demo.gif”); 试题答案与解析试题一:【问题一】E1:用户;E2:商家;E3:单车【问题二】D1:用户信息文件;
18、D2:单车信息文件;D3:行程信息文件;D4:计费规则信息文件: D5:单车故障信息文件【问题三】【问题四】扫码/手动开锁,骑行单车,锁车结账【试题分析】本题考查面向结构化软件开发方法中需求分析阶段使用的数据流图(DFD 图) 。作答时,建议先看问题,划出关键词,然后边阅读文字描述边作答,每阅读一句都需仔细分析是否存在对应的数据流,检查相应的数据流图是否缺少相应的数据流。【问题一】需要填写外部实体,外部实体为不属于软件本身但是又与当前软件有交互关系的外部的人,软件,硬件,组织结构,数据库系统等。在做的是需仔细的对每一个阅读到的外部实体(一般为名词)高度重视。【问题二】考察数据存储文件,还需要对
19、阅读到的“.文件”或“.表”等能够存储数据的媒介词汇高度重视。【问题三】不仅仅通过阅读文字描述来作答,同时也要使用父图与子图的数据守恒原则进行作答。根据描述“用户在 app 端输入手机号并获取验证码后进行注册,将用户信息进行存储”并对照图 1-2 中 P1 加工和 E1 实体处可知 E1 为实体“用户 ”,D1 为数据存储文件“用户信息文件” 。根据描述“.通过扫描二维码或手动输入编码获取开锁密码,系统发送开锁指令进行开锁,系统修改单车状态,新建单车行程.”并对照图 1-2 的加工 P3 处可知缺少一条从 P3 至实体 E3 的数据了“开锁指令” ,且缺少一条从 P3 至 D2 的数据流“单车
20、状态” ;根据 P4 流入 D2 的数据流“单车基础信息”容易知道 D2 为“单车信息文件” ;根据 P3 流入D3 的数据流名称“单车行程/ 费用”可知 D3 为“行程信息文件 ”;根据描述“用户停止使用或手动锁车并结束行程后,系统根据已设置好的计费规则及使用时间自动结算,更新本次骑行的费用并显示给用户,用户确认支付后,记录行程的支付状态。系统还将重置单车的开锁密码和单车状态。 ”并对比 P3 加工处可知缺少一条由 D3 流向加工 P3 的数据流“计费规则”和 D3 流向 P4 的数据流“使用时间”以便 P3 计算行程费用,同时缺少一条由 P3流向实体 E1 的数据流 “行程及费用” 。根据
21、描述“查询。用户可以查看行程列表和行程详细信息。 ”并对比加工 P4 处可知D5 为“ 单车故障信息文件” ;根据描述“.商家对单车基础信息,状态等进行管理,对计费规则进行设置并存储。 ”并对比加工 P4 周边处可知 E2 为“商家” ,且缺少一条从 P4 流向D2 的数据流 “状态信息” ;根据“单车监控。对单车,故障,行程等进行查询统计。 ”值缺少一条由 D3 流向加工 P7 的数据流“行程信息” 。最后根据图 1-1 以及图 1-2 的对比,即子图和父图数据守恒原则,知图 1-2 中还缺少一条由加工 P3 流向 E1 的数据流 “开锁密码” 。根据“2)使用单车”下方的描述,使用单车可以
22、分解为“扫码/ 手动开锁,骑行单车,锁车结账”三个子加工。试题二:【问题一】其中粗线部分是答案。【问题二】 (a)部门号,职位(b)用户号,银行账号(c)预算费用,业务员(d)要求完成时间,主管【问题三】“用户申请”关系模式主键:申请号,外键:申请号,业务员,用户号;“策划任务”关系模式主键:申请号,外键:主管,申请号【问题四】“执行”关系模式的主键为全码是错误的,因为“申请号”与“策划员”的组合(申请号,策划员)即使唯一确定执行关系中的一个元组数据。【试题解析】此类题先阅读问题,画出关键字,再一边仔细阅读文字描述,一边看图,一边看关系模式一边作答。根据文字描述“每个部门只有一名主管,只负责本
23、部门的工作,且主管参照员工关系的员工号”可知图 2-1(后统称 E-R 图)中实体“部门”与“主管”之间应补充 1:1 的联系;根据“一个部门有多名员工,每名员工属于且仅属于一个部门”可知 E-R 中实体“部门”和“员工”之间缺少 1:* 的联系,且关系模式“员工”中空(a)处填写“部门号”字段作为外键以实现两表的参照完整性。根据描述“员工信息包括员工号,姓名,职位,联系方式和薪资。 ”可知(a)处还缺“职位”字段。根据“一名业务员可以受理多名用户申请,但一个用户申请只能由一个业务员受理。 ”可知 E-R 图中“业务员”与“用户申请”之间缺少 1:* 的联系,且应将 “1”端(业务端)的主键(
24、业务员)加入到“*”端(用户申请端)中,为了方便理解,加入的字段为“业务员”作为外键使用,故空(c)处应包括“业务员”。根据“用户信息包括用户号,用户名,银行账号,电话,联系地址。用户号唯一标识用户信息中的每一个元组。 ”可知(b)处应填“用户号”和“银行账号” ,且“用户号”是主键。根据“用户申请信息包括申请号,用户号,会议日期,天数,参会人数,地点,预算费用和受理标志。申请号唯一标识用户申请信息中的每一个元组,且一个用户可以提供多个申请,但一个用户申请只对应一个用户号。 ”可知 E-R 图中“用户”与“用户申请”之间缺 1:* 的联系,且空( c)处为“预算费用” ,该表主键为“申请号” 。根据“申请号” 。根据“策划任务包括申请号,任务明显和要求完成时间。申请号唯一标识策划任务的每一个元组。 ”可知“申请号”为“策划任务”的主键。根据“一个策划任务只对应一个已受理的用户申请,但一个策划任务可由多名策划员参与执行,且一名策划员可以参与执行多项策划任务。 ”可知 E-R 图中的“策划员”与“策划任务”之间缺少*:*的联系,此联系其实就对应关系模式“执行” 。在作答时,要注意概念模型(E-R 图)与逻辑模型(关系模式)的对应关系,在 E-R 图中的部门,员工,策划任务,用户,用户申请,策划员与策划任务之间的联系都有对应的