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

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

1、软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷 49及答案与解析 一、必答题(共 4道大题,每道大题 15分) 0 说明 公司 IT部门决定开发一个计算机管理系统以记录期刊的传阅情况。 期刊在公司内部传阅,员工可以要求加入传阅队列。图书室登记公司收到的期刊,交给名单中的第一名员工。员工应在三个工作日内完成阅读,员工阅读完毕后通知系统,系统提醒下一位阅读者取书,下一个员工必须确认已收到期刊。当传阅名单中“下一位 ”员工出差在外时将无法进行传阅,此时将期刊传给再下一位,而将该员工作标记,再次传递此书时 优先考虑该员工。最后一位员工阅读完毕后,将期刊交还图书室以便共用。系统能在员工忘记传

2、递期刊时发出提醒信息。系统详细记录期刊传阅情况,当员工阅读完后通知系统,系统记录该员工员工号及日期,并在备注栏注明是传出;同样,当员工收到期刊后给系统确认,系统记录该员工员工号及日期,并在备注栏注明是收到。 公司的员工都有一个唯一的员工号。公司订阅了多种期刊,为每一本期刊 (有唯一期刊流水号 )产生一份传阅名单,并详细记录传阅情况。员工的出差情况存储在系统主机中。 该系统采用面向对象方法开发,系统中的类以及类之间的关系用 UML类 图表示,图 1-1是该系统的类图的一部分,图 1-2描述了成功传递期刊的序列图。 图 1-1 1 根据题意,给出类 “传阅记录 ”的主要属性。 2 根据题意,将图

3、1-2中的 (1) (5)处补充完整。 3 同一种期刊分不同的期,所以有多本同一种期刊。 “传阅名单 ”只需每一种期刊一份,还是应该每本期刊一份,为什么 ? 3 说明 某学校的教学系统描述如下: 学生信息包括:学号 (Sno)、姓名 (Sname)、性别 (Ssex)、年龄 (Sage)、入学年份 (Syear)、主修专业 (Smajor),其中学号是入 学时唯一编定的。 教师信息包括:教工号 (Tno)、姓名 (Tname)、性别 (Tsex)、年龄(Tage)、职称 (Title),其中教工号是唯一编定的。 课程信息包括:课程号 (Cno)、课程名称 (Cname)、学时 (Cpeiiod

4、)、学分 (Ccredit),其中课程号是唯一编定的。 每个专业每个年级只有一个班级,这样班级就可用入学年份标识。 每位教师只教授特定的一门的课程,每门课程可以有多个教师教授,各位老师的上课地点及上课时间有所不同。注意:一门课程至少有一位教师教授,否则这门课程就视为不存在。 每位学生可 以同时选修多门不同的课程,一门课程至少要有 10位学生选修,否则就取消这门课程的开设。注意:选修课程时要指定任课教师,不能重复选修同一门课程。课程结束后,任课教师给选修该课程的学生一个成绩 (Grade)。注意:教师不能给没有选修他所教授课程的学生成绩,即使选修了其他教师教授的同一门课也不行。 图 2-1是经分

5、析得到的 E-R图。 图 2-1 4 根据题意,给出联系的属性。实体间的联系有 “一对一 ”、 “一对多 ”和 “多对多 ”,指出各联系分别属于哪一种。 5 按照 “有关模式名 (属性,属性, )” 的格式,将此 E-R图转换为 5个关系模式,指出每个关系模式中的主码和外码,其中模式名根据需要取实体名或联系名。 6 若用 Student表存储学生信息, Teacher表存储教师信息, Course表存储课程信息, Study表存储学生选修课程情况。教务处想要 “查询 2006年入学的计算机专业(CS)的学生中平均成绩在 85分以上的学生信息 ”。请将以下 SQL语句补充完整。注:用对应英文表示

6、。 SELECT * FROM student WHERE Smajor = “CS“ AND Syear = “2006“ AND (1) (SELECT Sno FROM Study GROUP BY Sno HAVING (2) ) 6 说明 图 3-1描述某超市销售数据的部分处理流程。超市中有若干台收款机和若干名收款员。这里,我们把一个收款员开始使用一台收款机到离开这台收款机称为该收款员的一次作业。作业开始时,收款员先在收款机上输入收款员号和作业前金额。作业前金额是为了销售时的找零而在作业前预先放入钱柜的金额数。作业结束时,收款员要打开钱柜,取走全部现金,并把这些现金的金额数 (称为作

7、业后金额 )输入收款机 。当作业前金额 +本次作业售货总金额 -本次作业退货总金额 作业后金额时,表示这次作业存在金额差错。 本流程图已作简化,并作以下假定;该超市只有现金交易 (不用信用卡和礼券 );一个收款员因某种原因 (如吃饭 )在一天中可以有多个作业;销售方式只有售货和退货两种。 整个超市分成若干部门 (如食品部、服装部 ),系统按部门统计一个月中各类货物的销售数量和金额,最后根据月销售计划文件分析各部门完成销售计划的情况。系统还统计每个收款员的差错情况和退货情况。 图中处理 4和处理 8每月的最后一天执行一次 (营业结束后 ),其他处理每天执行 一次。 图中部分数据、文件的记录格式如

8、下: 日销售数据:收款机号 +收款员号 +作业前金额 +(售货标记 |退货标记 )+货号 +数量 +单价 +金额 +作业后金额 日销售文件记录: (作业开始标记 +收款机号 +收款员号 +作业前金额 ) |(售货标记 |退货标记 )+货号 +数量 +金额 ) |(作业结束标记 +收款机号 +收款员号 +作业后金额 ) 部门目销售文件记录:部门号 +(售货标记 |退货标记 )+货号 +数量 +金额 部门月销售计划文件记录:部门号 +月计划金额 收款员差错月报:月份 +收款员号 +差错作业数 +差错总金额 收款员退货月报:月份 +收 款员号 +退货次数 +退货总金额 其中 w表示 w重复出现多次;

9、 a|b表示 a或 b; a+b表示 a与 b。7 分别写出收款员日销售文件、商品文件、部门日销售汇总文件至少应包含哪些数据项。 8 “处理 1”能检查出日销售数据中的哪些错误。 9 处理 4对收款员月销售文件作何种操作。 10 阅读下列函数说明、图和 C代码,回答问题 说明 假定用一个整型数组表示一个长整数,数组的每个元素存储长整数的一位数字,则实际的长整数 m表示为: m=ak10k-2+ak-110k-3+a 310+a2 其中 a1保存该长整数的位数, a0保存该长整数的符号: 0表示正数、 1表示负数。 运算时先决定符号,再进行绝对值运算。对于绝对值相减情况,总是绝对值较大的减去绝对

10、值较小的,以避免出现不够减情况。注意,不考虑溢出情况,即数组足够大。 函数 int cmp(int *LA, int *LB); /*比较长整数 LA与 LB的绝对值大小 */ /*若 LA绝对值较大返回正值, LA较小返回负值,相等则返回 0*/ int ADD (int *LA, int *LB, int *LC) /*计算长整数 LA与 LB的和,结果存储于 LC中 */ /*注意:正数与负数的和相当于正数与负数绝对值的差 */ /*数据有误返回 0,正常返回 1*/ if(LA = NULL | LB = NULL | LC = NULL)return 0; int *pA, *pB,

11、 i, N, carry, flag; flag = LA0 + LB0; switch(flag) /*根据参与运算的两个数的符号进行不同的操 作 */ case 0: case 2: Lc0 = LA0;/*LA与 LB同号,结果符号与 LA(LB)相同 */ pA = LA; pB = LB; (1) ; break; case 1: /*LA与 LB异号 */ /*比较两者的绝对值大小,结果符号与较大者相同 */ flag = (2) ; if(flag 0) /*LA较大 */ LC0 = LA0; pA = LA; pB = LB; else if(flag LB1 ? LA1 :

12、 LB1; for(i = 0; i = pA1)/*LA计算完毕 */ carry += flag * pBi+2; else if(i = pB1)/*LB计算完毕 */ carry += pAi+2; else carry += pAi+2 + flag * pBi+2; LCi+2 = carry % 10; carry /= 10; if( (4) )/*需要借位,针对减法 */ LCi+2 += 10; carry-; /*for*/ if( (5) )/*最高进位,针对加法 */ LCi+2 = carry; i+; if(LCi+1 = 0) i-; /*若最高位为零,针对减法

13、 */ LC1 = i; return 1; ;/*ADD*/ 11 阅读下列函数说明和 C+代码,回答问题 说明 在某些系统中,存在非常复杂的对象,可以采用循序渐进的方式进行组合,将小对象组合成复杂的大对象。 以下实例展示了 Builder(生成器 )模式。该实例用来建立 “文件 ”,文件内容包括:一个标题、一串字符以及一些有项目符号的项目。 Builder类规定组成文件的方法,Director类利用这个方法产生一份具体的文件。图 5-1显示了各个类间的关系。 图5-1 以下是 C+语言实现,能够正确编译通过。 C+代码 class Builder public: virtual void

14、makeTitle(string title) = 0; virtual void makestring(string str) = 0; virtual void makeItems( (1) items) = 0; virtual string getResult() = 0; ; class Director private: (2) builder; public: Director(Builder *builder) this-builder = builder; string construct() vectoritems; items.push_back(“早安 “); item

15、s.push_back(“午安 “); builder-makeTitle(“Greeting“); builder-makeString(“从早上到白天结束 “); builder-makeItems(items); builder-makeString(“到了晚上 “); (3) ;/清空 items向量 items.push_back(“晚安 “); items.push_back(“好梦 “); builder-makeItems(items); return builder-getResult(); ; class TextBuilder : public (4) private:

16、string buffer; public: TextBuilder() buffer = “ “; void makeTitle(string title) buffer += “=n“; buffer += “ “ + title + “ n“; buffer += “n“; void makeString(string str) buffer += “ + str + “n“; buffer += “n“; void makeItems(vectoritems) vector:iterator it; for(it = items.begin(); it != items.end();

17、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) ; coutbuilder.makeTitle(“Greeting“); director-builder.makeString(“从早上到白天结束 “); director-builder.ma

18、keItems(items, 2); director-builder.makeString(“到了晚上“); strcpy(items0, “晚安 “); strcpy(items1, “好梦 “); director-builder.makeItems(items, 2); return director-builder.getResult(); void TXTmakeTitle(char* title) strcat(buffer, “ “); Strcat(buffer, title); strcat(buffer, “ nn“); void TXTmakeString(char*

19、str) strcat(buffer, “); Strcat(buffer, str); strcat(buffer, “nn“); void TXTmakeItems(char items 10, int N)/将 items加入文件中 for(int i = 0, i 85 SELECT ALL|DISTINCT,(目标列表达式 FROM , WHERE(条件表达式 GROUI BY HAVING ORDER BY ASC|DESC 子句顺序为 SELECT、 FROM、 WHERE、 GROUP BY、 HAVING、 ORDER BY,但 SELECT和 FROM是必须的, HAVIN

20、G子句只能与 GROUP BY搭配起来使用。 子查询的语意应为 “按学号分组、平均分大于 85的学生的学号 ”,可得空 (1)应填Sno IN,空 (2)应填 AVG(Grade)85。 7 【正确答案】 收款员 日销售文件:收款员号 +差错作业数 +差错金额 +退货次数 +退货金额 商品文件:货号 +部门号 +单价 部门日销售汇总文件:部门号 +货号 +销售数量 +销售总金额 8 【正确答案】 存在非法字符或非法数据 (如金额小于 0) 数量 单价 金额 货号 (或单价 )与商品文件中的货号 (或单价 )不一致 9 【正确答案】 删除其中的所有记录或初始化 10 【正确答案】 flag=1 cmp(LA,LB) carry=0 LCi+2 0 carry 11 【正确答案】 vector Builder* items.clear() Builder construct() 12 【正确答案】 abstract Builder extends items.length construct() 13 【正确答案】 *funl funl struct Director* itemsi buffer0

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

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

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