[计算机类试卷]软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷62及答案与解析.doc

上传人:figureissue185 文档编号:507232 上传时间:2018-11-29 格式:DOC 页数:14 大小:490.50KB
下载 相关 举报
[计算机类试卷]软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷62及答案与解析.doc_第1页
第1页 / 共14页
[计算机类试卷]软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷62及答案与解析.doc_第2页
第2页 / 共14页
[计算机类试卷]软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷62及答案与解析.doc_第3页
第3页 / 共14页
[计算机类试卷]软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷62及答案与解析.doc_第4页
第4页 / 共14页
[计算机类试卷]软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷62及答案与解析.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

1、软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷 62及答案与解析 一、必答题(共 4道大题,每道大题 15分) 0 阅读下列说明和数据流图,回答问题 1至问题 3,将解答填入答题纸的对应栏内。【说明】某供销系统接受顾客的订货单,当库存中某配件的数量小于订购量或库存量低于一定数量时,向供应商发出采货单;当某配件的库存量大于或等于订购量时,或者收到供应商的送货单时并更新了库存后,向顾客发出提货单。该系统还可随时向总经理提供销售和库存情况表。以下是经分析得到的数据流图及部分数据字典,有些地方有待填充,假定顶 层数据流图是正确的。图 1一 1是顶层数据流图,图 12是第 0层数据流图,图

2、13是第 1层数据流图,其中 (A)是加工 1的子图, (B)是加工 2的子图。【图 11】【图 1一 2】【图 1一 3】【数据字典】 (1)数据流条目订货单 =配件号 +配件名 +规格 +数量 +顾客名 +地址提货单 =订货单 +金额采货单 =配件号 +配件名 +规格 +数量 +供应商名 +地址送货单 =配件号 +配件名 +规格 +数量 +金额 (2)文件说明文件名:配件库存组成: 配件号 +配件名+规格 +数量 +允许的最低库存量 1 根据题意,图 12中哪个文件可不必画出。 2 根据题意,指出图 1一 3(A)中缺失的数据流的名称,并指出该数据流的起点和终点。 3 根据题意,指出图 1

3、一 3(B)中缺失的数据流的名称,并指出该数据流的起点和终点。 3 阅读下列说明和 ER图,回答问题 l至问题 3,将解答填入答题纸的对应栏内。【说明】某学校的教学系统描述如下:学生信息包括:学号 (SNo)、姓名 (Sname)、性别 (Sex)、年龄 (Age)、入学年份 (Year)、主修专业 (Major),其中学号是入学时唯一编定的。课程信息包括:课程号 (CNo)、课程名称 (CName)、学时 (Period)、学分(Credit),其中课程号是唯一编定的。一个学生可选多门课,每个学生选每门课有一个成绩。图 21是经分析得到的 ER图。【图 21】4 设基本表:Student(S

4、No, SName, Sex, Age, Year, Major), Course(CNo, Cname, Period,Credit), Grade(SNo, CNo, Grade)通过如下 SQL语句建立,请在 SQL语句空缺处填入正确的内容。 CREATE TABLE Student(SNo CHAR(6)NOT NULL, SName CHAR(20), Sex CHAR(1), Age INTEGER, Year CHAR(4), Maj or CHAR(20),(1); CREAT 5 若另有表 Teach(CName, TName)存储教师任课情况, Tname表示教师名。用SQ

5、L创建一个含有学号、姓名、课程名、成绩、任课教师名的 “主修专业为计算机CS”的学生成绩视图,并要求进行修改、插入操作时保证该视图只有计算机系的学生。请在 SQL语句空缺处填入正确的内容。 CREATE VIEw sG(1) SELECT Student.SNo, SName, Grade, Course CName, TName FROM Student, Grade, Teach, WHERE (2) A 6 如下的 SQL语句是用于查询 “每个学生的选修课程数、总成绩、平均成绩 ”的不完整语句,请在空缺处填入正确的内容。 SELECT studerLt SNo, (1), suM(Gra

6、de), AVG(Grade) FROM Student, Grade WHERE Student SNo=Grade SNo GR0up BY (2); 6 阅读下列说明和图 ,回答问题 1至问题 2,将解答填入答题纸的对应栏内。 【说明】 银行的自动柜员机 (ATM)的功能描述如下: (1)金融卡与信用卡识别:包含伪卡识别以及密码验证; (2)主菜单项:这是一台 ATM最主要的人机界面,提供各项功能给客户,具体有:提款、转帐、更改密码以及存款; (3)结束操作:客户执行完 “菜单项 ”的功能后,可以选择 “打印单据 ”或 “不打印单据 ”,选好后就结束此次交易。注意, ATM除了能处理本行

7、的银行卡外,其他银行的银行卡也应该能处理,通过 “金融中心 ”与其他银行主机进行数据交换。另外,为了方便, ATM还提 供快捷提款,并提供代交费功能 (代交费是以转帐的方式处理的 )。该系统采用面向对象方法开发,系统中的类以及类之间的关系用 UML类图表示。 7 图 3一 1是该系统的用例图,根据题意,用题中所述术语指出图 3一 1中参与者A、 B分别是什么,用例 C、 D分别是什么。 8 ATM机有如下状态:空闲、银行卡验证、业务选择等待、取款金额输入、密码修改、出钞、单据打印。 ATM机一般处于空闲状态,当有客户插入银行卡,则进行银行卡验证,若银行卡无效则结束服务,否则进入业务选择等待。业

8、务有取款、修改密码等,也可以选择退出结束服务, ATM返回空闲状态。选择取款业务后,等待取款金额输入,确认后判断余额是否足够,若余额不足,则给出提示信息,并进入业务选择等待;若余额充足,则出钞,若客户需要打印单据则进入单据打印状态,否则返回业务选择等待。选择任意一个业务后,可以取消返回业务选择等待。图 32 8 阅读下列说明和图,回答问题 1到问题 3,将解答填入答题纸的对应栏内。 【说明】 操作系统中,死锁 (Deadlock)是指多个进程在运行的过程中因争夺资源而造成的一种僵局。当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。面对死锁问 题有两个解决方案:预防死锁和避免死锁

9、。预防死锁是一种较简单和直观的事先预防方法。该方法是通过设置某些限制条件,去破坏产生死锁的四个必要条件中的一个或多个,以此来预防死锁的发生。预防死锁由于较易实现,已被广泛应用,但由于所施加的限制条件往往太严格,可能会导致系统资源利用率和系统吞吐量的降低。避免死锁同样是属于事先预防的策略,但它无须事先采取各种限制措施去破坏产生死锁的四个必要条件,而是在资源分配过程中,用某种方法去防止系统进入不安全状态,从而避免发生死锁。银行家算法 (Bankers algorithm)是 Dijkstra于 1965年提出的一个经典的避免死锁的算法。形象地描述银行发放贷款不能使有限可用资金匮乏而导致整个银行无法

10、运转的思路,也就是说每次请求贷款,银行要考虑他能否凭着贷款完成项目,并还清贷款使银行运转正常。令 Request(i)是进程P(i)请求向量,如果 Request(i)j=k则进程 P(i)希望请求 i类资源 k个。具体算法步骤如下: (1)如果 Request(i)Need(i)则出错 (请求量超过申报的最大量 ),否则转到 (2); (2)如果 Request(i)Available则 P(i)等待 ,否则转 (3); (3)系统对 P(i)所请求的资源实施试探分配,并更改数据结构中的数值; (4) Available=AvailableRequest(i); A110cation(i)=

11、A1location(i)+Request(i); Need(i)=Need(i)一 Request(i); (5)执行安全性算法,如果是安全的,则承认试分配,否则废除试分配,让进程 P(i)继续等待。所谓系统是安全的,是指系统中的所有进程能够按照某一种次序分配资源,并且依次运行完成,这种进程序列 P1, P2, , Pn就是 安全序列。如果存在这样一个安全序列,则系统是安全的;如果系统不存在这样一个安全序列,则系统是不安全的。 9 简述产生死锁的四个必要条件。 10 设系统中有三种类型的资源 (A, B, C)和五个进程 (P0, P1, P2, P3, P4),某时刻的资源分配状态如图 4

12、一 1所示。给出该时刻存在的一个安全序列。【图 4一1】 11 若系统中有同类资源 16个,有 4个进程共享该资源。已知 Pl、 P2、 P3、 P4所需总资源分别是 8、 5、 9、 6。各进程请求资源次序为 (序号,进程,申请量 ): (1, P1, 6)、 (2, P2, 4)、 (3, P3, 5)、 (4, P4, 1)、 (5, P1, 1)、 (6, P2,1)。若用银行家算法为它们分配资源,分析每一步请求以后,各个进程还需的资源数以及系统所剩资源数,并指出系统是否安全。注,当某序号的申请导致系统不安全时,跳过该请求 (拒绝该请求 )继续往下判断,相当于将该进程阻塞。从下列的 3

13、道试题 (试题五至试 二、选答题(共 3道大题,每道大题 15分) 从下列 3道试题中任选 1道解答,如果解答的试题数超过 1道,则仅题号小的 1道题解答有效。 12 阅读下列函数说明和 C+代码,将应填入 (n)处的字 句写在答题纸对应栏内。【说明】在某些系统中,存在非常复杂的对象,可以采用循序渐进的方式进行组合,将小对象组合成复杂的大对象。以下实例展示了 Builder(生成器 )模式。该实例用来建立 “文件 ”,文件内容包括:一个标题、一串字符以及一些有项目符号的项目。 Builder类规定组成文件的方法, Director类利用这个方法产生一份具体的文件。图 51显示了各个类间的关系。

14、【图 51】以下是 C+语言实现,能够正确编译通过。【 C+代码】 ClasS BuiiderpubliC: virtual void makeTitle(string title)=0; virtual void makeString(string str)=0; virtual void makeItems(1)items)=0; virtual string getResult()=0; ; ClasS Director private: (2)buiider; public: Director(Buiider*buiider) thiS一 buiider=buiIder; string

15、 construct() vector items; items.pushback(“早安 ”); items pushback(“午安 ”); buiider一 makeTitle(“Greeting”); bui Ider一 makeString(“从早上到白天结束 ”); buiider一 makeItems(items); buiIder一 makeString(“到了晚上 ”); (3)清空 items向量 items pushback(“晚安 ”); items pushback(”好梦 ”); buiIder一 makeItems(items); return buiider一

16、getResult(); ; class TextBuiider: public (4) private: String buffer; publiC: TextBuiider() buffer=*; void makeTitle(String title) buffer += ”=:= n”; buffer+=“+title+” n”; buffer+=“ n”; void makeString(string str)( buffer+=” +Str+“ n”; buffer+=“n”: void makeItems(vector items) vector: iterator it; fo

17、r(it=items begin();it!=items end(); it+) buffer+=“ ”+it+“ n”; buffer+=“ n”; string getResult() buffer+= “= n”; return buffer; ; int main() Director*director=new Director(new TextBuilder(); string result=(string)director一 (5); cout 13 阅读以下说明和 Java代码,将应填入 (n)处的字句写在答题纸对应栏内。【说明】在某些系统中,存在非常复杂的对象,可以采用循序渐进

18、的方式进行组合将小对象组合,成复杂的对象。以下实例展示了 Builder(生成器 )模式。该实例用来建立 “文件 ”,文件内容包括:一个标题、一 串字符以及一些有项目符号的项目。 Builder类规定组成文件的方法, Director类利用这个方法产生一份具体的文件。图 6 1显示了各个类间的关系。以下是 Java语言实现,能够正确编译通过。 Java代码 Builder java文件 public(1)class Builder public abstract void makeTitle(String title); public abstract void makeString(Stri

19、ng str); public abstract void makeltems(Stringitems); public abstract obj ect getResult(); Director Java文件 public Class Directorprivate (2) buiider; publ ic Director(Bui Ider bui ider)( this buiider: builder; publiC Obj ect construct()( buiider makeTitle(“Greeting”); buiider makeString(“从早上到白天结束 ”);

20、 buiider makeItems(new String“早安 ”, ”午安 ”, ); buiIder makeString(“到了晚上 ”); builder makeItems(new String(“晚安 ”, ”好梦 ”, ); return buiider getResult(); TextBui ider java文件 public Class TextBuiIder(3)Buiider private StringBuffer buffer=new StringBuffer(); public void makeTitle(String title) buffer appen

21、d(“ +title+” n n“); publ iC void makeString(String str) burfer append( +str+ “ n n”); public VOid makeltems(Stringitems) for(int i=0; ibuiider makeTitle(“Greeting”); director一 builder makeString(“从早上到白天结束 ”); directot一 buiider makeItems(items, 2); director一 builder makeString(“到了晚上 ”); strcpy(items0

22、, “晚安 ”); strcpy(items1, “好梦 ”); directot一 buiider makeItems(items, 2); return director一 buiider getResult(); void TXTmakeTitle(char*title) strcat(buffer, “ ”); Strcat(buffer, title); strcat(buffer, “ n n”); void TXTmakeString(char* str) strcat(buffer, “”); Strcat(burfer, str); Strcat(butter, “ n n”

23、); ) void TXTmakeItems(char items10, int N)将 items加入文件中 for(int i=0; i 软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷 62答案与解析 一、必答题(共 4道大题,每道大题 15分) 1 【正确答案】 采购订单 【试题解析】 分层数据流图中,只涉及单个加工的文件不必画出,可在子图中再画。依此标准,图 12中文件 “采购订单 ”只与加工采购有关,故不必画出。 2 【正确答案】 起点:库存配件,终点:确定顾客订单 起点:库存配件,终点:制 作的销售及库存情况表 提货单,起点:更新库存,终点:顾客 到货通知,起点:采购,

24、终点:缺到货对照 【试题解析】 分层数据流图时刻牢记父图与子图平衡原则。对这种数据流缺失题目,认真对照父图与子图就可得出答案。另外,还要注意与文件的交互,包括错误数据流大多也是出在此。根据题述,图 13A是加工 1的细化图,加工 1在图12中,认真对照其输入输出数据流。发现缺失数据流 “提货单 ”和 “到货通知 ”,进一步确定数据流的起点和终点。 “提货单 ”是输出数据流,起点应为加工 “更新库存 ”,其终点自然是 “客户 ”; “到货通知 ”是输入数据流,终点应为加工 “缺到货对照 ”,起点应为加工 “采购 ”。另外,确定顾客订单时,需要检查库存配件,因此应有文件 “配件库存 ”到加工 1

25、2的数据流。同理,也应有文件 “配件库存 ”到加工1 4的数据流。 3 【正确答案】 采购单,起点:按供应商汇总,终点:供应商 采购请求,起点:销售,终点:计算配件增量 【试题解析】 同问题 2的分析,仔细对照父图与子图的输入输出数据流,并确认与文件相关的数据流。 4 【正确答案】 (1)PRIMARY KEY(SNo) (2)PRIMARY KEY(Cno) (3)PRIMARY KEY(SNo, CNo) (4)FOREIGN KEY(SNo)REFERENCES Student(SNo) (5)FOREIGN KEY (CNo)REFERENCES Course(CNo) 【试题解析】

26、空 (1)处应该是完整性约束条件。在此为声明主键,据题述 Student表的主键应该是 SNo,故空 (1)应填 PRIMARY KEY(SNo)。同理, Course表的主键为 CNo,故空 (2)应填 PRIMARY KEY(CNo), Grade表的主键为 (Sno,CNo),故空 (3)应 填 PRIMARY KEY(Sno,CNo)。 Grade表的主键 (Sno,CNo)中, SNo是Student表的主键, CNo是 Course表的主键,这样,两者就是 Grade表的外健,空 (4)、 (5)是用来声明外健的,分别填 (4)FOREIGN KEY(SNo)REFERENCES

27、Student(SNo), (5)FOREIGN KEY(CNo)REFERENCES Course(CNo),顺序可以颠倒。 5 【正确答案】 (1)AS (2)Student SNo=Grade SNo (3)Course CName=Teach CName (4)WITH CHECK OPTION 【试题解析】 创建视图: CREATE VIEW视图名 (列表名 ) AS SELECT查询子旬 WITH CHECK OPTION 易得空 (1)为 AS。空 (2)、空 (3)处的条件应为学生和成绩中的学号相同,教师和课程中的教师名相同。为了保证 “进行修改、插入操作时保证该视图只有计算机

28、系的学生 ”,需要声明为 WITH CHECK OPTION,此即空 (4)内容。 6 【正确答案】 (1)COUNT(Grade CNo) (2)Student Sno 【试题解析】 该 SQL语句是用于查询 “每个学生的选修课程数、总成绩、平均成绩 ”,显然空 (1)应为课程数,对应函数应为 COUNT(Grade CNo),应该按照学号分组,故空 (2)应填 Student Sno。 7 【正确答案】 A: “客户 ” B: “金融中心 ” C: “提款 ” D: “转账 ” 8 【正确答案】 A: “金额是否足够 ” B: “银行卡无效 ” C: “打印单据 ” 9 【正确答案】 死锁

29、的发生必须具备四个必要条件:互 斥条件:进程对所分配到的资源进行排他性使用,即在一段时间内某资源只有一个进程占用;请求和保持条件:进程已经保持了至少一个资源但又提出了新的资源请求,若得不到满足则阻塞该进程,但其保持已获得的资源不释放;不剥夺条件:进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放;环路等待条件:在发生死锁时,必然存在一个进程一资源的环形链,即进程集合 P1, P2, , Pn中的 P1等待 P2占用的资源, P2等待 P3占用的资源, , Pn等待 P0占用的资源。 【试题解析】 问题 1是概念性,问题 2是对系统 安全的理解,问题 3就是银行家算法的一个具

30、体实现,按照银行家算法的详细描述可得。 10 【正确答案】 P1, P3, P0, P4, P2 11 【正确答案】 (1, P1, 6)余资源 10。此时 P1还需 2, P2还需 5, P3还需 9,P4还需 6。系统存在安全序列: P1, P2, P3, P4),故系统安全。 (2, P2, 4)余资源 6。此时 P1还需 2, P2还需 1, P3还需 9, P4还需 6。系统存在安全序列:Pl, P2, P3, P4,故系统安全。 (3, P3, 5)余资源 1。此时 Pl还需 2, P2还需1, P3还需 4, P4还需 6。系统存在安全序列: P2, P1, P3, P4,故系统

31、安全。 (4, P4, 1)余资源 0。此时 Pl还需 2, P2还需 1, P3还需 4, P4还需 5。系统不存在安全 二、选答题(共 3道大题,每道大题 15分) 从下列 3道试题中任选 1道解答,如果解答的试题数超过 1道,则仅题号小的 1道题解答有效。 12 【正确答案】 (1)vector (2)Builder* (3)items clear() (4)Builder (5)construct() 【试题解析】 首先来看空 (2),由名字可猜想 builder是一个 Builder类对象,由构造函数中的语句 this一 builder=builder;及形参声明 Builder*b

32、uilder,可判知空 (2)应填 Builder*。由注释可知空 (3)是用来清空 iterns向量的, items是一个vector对象,此处并未提供清空方法,应该是调用库函数,故应调用items clear()。现在来看空 (1),由语句 builder一 makeltems(iterns);及vectoritems;可知,空 (1)应填 vector。继续看空 (4),由类图知,TextBuilder是 Builder的子类,因此此处应填 Builder,声明继承关系。空 (5)是真正进行文件的构造,应填 construct()。事实上, Director类仅提供了该方法,自然是调用该

33、方法。 13 【正确答案】 (1)abstract (2)Builder (3)extends (4)items length (5)construct() 【试题解析】 Builder类含有多个 abstract方法,故应声明为 abstract,空 (1)应填 abstract。由构造函数中的语句 this builder=builder;及形参声NBuilderbuilder,可判知空 (2)应填 Builder。由类图知, TextBuilder是 Builder的子类,因此空 (3)应填 extends,声明继承关系。来看空 (4),此处 for循环是将items中的对象添加到 bu

34、ffer中,空 (4)处是循环终止条件:下标达到 items的长度,故应填 items length。空 (5)是真正进行文件的构造,应填 construct()。事实上, Director类仅提供了该方法,自然是 调用该方法。 14 【正确答案】 (1)*funl (2)funl (3)structDirector* (4)itemsi1 (5)buffer0 【试题解析】 先看空 (3),首先函数 construct的形参 director应该与 Director结构体相关,再根据函数体中的引用方式 “director一 builder makeTitle(“Greeting”);可知 d

35、irector是一个指针,因此空 (3)应填structDirector*。由语句 “char*result=construct(&director); ”也可进一步确认。函数 TXTmakeItems(charitems10, intN)是将 items加入文件中,因此语句strcat(buffer, (4);是将第 i个 items加入缓冲区 buffer中, strcat函数的原型为:char*strcat(char*strDestination, constchar*strSource);。因此空 (4)应填itemsi。由注释可知语句 “buffer0=(5)”是用来清除缓冲区的,其目的是使目前缓冲区中的内容不影响新生成的文件,就 一个语句,事实上不可能清除缓冲区中的所有内容,但纵观生成文件,关键语句就是 strcat,这样只要将缓冲区第一个单元的值置为 “ 0”(字符串结束标志 ),就能保证正确生成文件。故空 (5)应填buffer0。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1