2016年下半年软件设计师下午试卷真题解析

试题一

阅读下列说明,回答问题1至问题4,将解答填入答题纸的对应栏内。
【说明】
某证券交易所为了方便提供证券交易服务,欲开发一证券交易平台,该平台的主要功能如下:
(1)开户。根据客户服务助理提交的开户信息,进行开户,并将客户信息存入客户记录中,账户信息(余额等)存入账户记录中;
(2)存款。客户可以向其账户中存款,根据存款金额修改账户余额;
(3)取款。客户可以从其账户中取款,根据取款金额修改账户余额;
(4)证券交易。客户和经纪人均可以进行证券交易(客户通过在线方式,经纪人通过电话),将交易信息存入交易记录中;
(5)检查交易。平台从交易记录中读取交易信息,将交易明细返回给客户。
现采用结构化方法对该证券交易平台进行分析与设计,获得如图1-1所示的上下文数据流图和图1-2所示的0层数据流图。

 问题:1.1 (3分)

使用说明中的词语,给出图1-1中的实体E1-E3的名称。

问题:1.2 (3分)
使用说明中的词语,给出图1-2中的数据存储D1-D3的名称。

问题:1.3 (4分)
根据说明和图中的术语,补充图1-2中缺失的数据流及其起点和终点。

问题:1.4 (5分)
实际的证券交易通常是在证券交易中心完成的,因此,该平台的“证券交易”功能需将交易信息传递给证券交易中心。针对这个功能需求,需要对图1-1和图1-2进行哪些修改,请用200字以内的文字加以说明。

答案

问题:1.1

E1:客户服务助理,E2:客户,E3:经纪人。

本题要求识别E1-E3具体为哪个外部实体,通读试题说明,可以了解到适合充当外部实体的包括:客户、客户服务助理、经记人。具体的对应关系,可以通过将顶层图与题目说明进行匹配得知。如:从图中可看出E1会向交易平台发出数据流开户信息;;而从试题说明根据客户服务助理提交的开户信息,进行开户,并将客户信息存入客户记录中,账户信息存入账户记录中可以看出,E1对应是客户服务助理。E2、E3同理可得。

问题:1.2

D1:客户记录,D2:账户记录,D3:交易记录。

本题要求识别存储,解决这类问题,以图的分析为主,配合说明给存储命名,因为存储相关的数据流一般展现了这个存储中到底存了些什么信息,如从图中可以看到D1中有客户信息,而D2中有账户信息,题目说明中又有根据客户服务助理提交的开户信息,进行开户,并将客户信息存入客户记录中,账户信息存入账户记录中。自然D1应为客户记录,D2应为账户记录。同理,D3为交易记录。

问题:1.3

数据流名称:修改账户余额,起点:存款,终点:D2。
数据流名称:修改账户余额,起点:取款,终点:D2。
数据流名称:交易信息存入交易记录,起点:证券交易,终点:D3。

缺失数据流1
名称:修改账户余额,起点:存款,终点:D2。
理由:从试题说明客户可以向其账户中存款,根据存款金额修改账户余额可以看出,这个功能有操作根据存款金额修改账户余额。据此可以了解到从该功能应有数据流存款至D2,而0层图没有。
缺失数据流2:
名称:修改账户余额,起点:取款,终点:D2。
理由:从试题说明客户可以从其账户中取款,根据取款金额修改账户余额可以看出,这个功能有操作根据取款金额修改账户余额。据此可以了解到从该功能应有数据流取款至D2,而0层图没有。
缺失数据流3
名称:交易信息存入交易记录,起点:证券交易,终点:D3。
理由:从试题说明客户和经纪人均可以进行证券交易,将交易信息存入交易记录中可以看出,这个功能有操作将交易信息存入交易记录中。据此可以了解到从该功能应有数据流证券交易至D3,而0层图没有。

问题:1.4

增加外部实体证券交易中心,原来证券交易中的交易信息的数据流终点改为证券交易中心,数据流检测交易中的起点改为证券交易中心。

本题强调实际的证券交易通常是在证券交易中心完成,这个证券交易中心属于典型的外部实体,所以需要增加外部实体证券交易中心。由于该平台的证券交易功能需将交易信息传递给证券交易中心,因此将原来证券交易中的交易信息的数据流终点改为证券交易中心,数据流检测交易中的起点改为证券交易中心。

试题四

阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。
【说明】
模式匹配是指给定主串t和子串s,在主串t中寻找子串s的过程,其中s称为模式。如果匹配成功,返回s在t中的位置,否则返回-1 。
KMP算法用next数组对匹配过程进行了优化。KMP算法的伪代码描述如下:
1.在串t和串s中,分别设比较的起始下标i=j=0。
2.如果串t和串s都还有字符,则循环执行下列操作:
(1)如果j=-l或者t[i]=s[j],则将i和j分别加1,继续比较t和s的下一个字符;
(2)否则,将j向右滑动到next[j]的位置,即j =next[j]。
3.如果s中所有字符均已比较完毕,则返回匹配的起始位置(从1开始);否则返回-1.
其中,next数组根据子串s求解。求解next数组的代码已由get_next函数给出。
【C代码】
(1)常量和变量说明
t,s:长度为lt,ls的字符串
next:next数组,长度为ls
(2)C程序
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*求next[]的值*/
void get_next( int *next, char *s, int ls)
{
    int i=0,j=-1;
    next[0]=-1;/*初始化next[0]*/
    while(i < ls) /*还有字符*/
    {
        if(j==-1 ll s[i]==s[j]) /*匹配*/
        {
            j++;
            i++;
            if( s[i]==s[j])
                next[i] = next[j];
            else
                next[i] = j;
        }
        else
            j = next[j];
    }
}
int kmp( int *next, char *t,char *s, int lt, int ls )
{
    Int i= 0,j =0 ;
    while (i < lt && (1) )
    {
        if( j==-1 || (2) )
        {
            i ++ ;
            j ++ ;
        }
        else
            (3) ;
    }
    if (j >= ls)
        return (4) ;
    else
        return -1;
}
问题:4.1   (8分)
根据题干说明,填充C代码中的空(1)~(4).

问题:4.2   (2分)
根据题干说明和C代码,分析出kmp算法的时间复杂度为(5)(主串和子串的长度分别为lt和ls,用O符号表示)。

问题:4.3   (5分)
根据C代码,字符串“BBABBCAC”的next数组元素值为(6)(直接写素值,之间用逗号隔开)。若主串为“AABBCBBABBCACCD”,子串为“BBABBCAC”,则函数Kmp的返回值是(7)。

答案

(1):j<ls
(2):t[i]==s[j];
(3):get_next(next, s, ls),
            j=next[j]
(4):i+1-ls
(5):O(ls+lt)
(6):[-1,-1,1,-1,-1,2,0,0]
(7):6 

试题五

阅读下列说明和java代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
【说明】
某发票(lnvoice)由抬头(Head)部分、正文部分和脚注(Foot)部分构成。现采用装饰(Decorator)模式实现打印发票的功能,得到如图6-1所示的类图。

问题:6.1   【java代码】

class invoice
{
    public void printInvoice()
    {
        System.out.println ( "This is the content of the invoice!");
    }
}
class Decorator extends Invoice
{
    protected Invoice ticket;
    public Decorator(lnvoice t)
    {
        ticket = t;
    }
    public void printInvoice()
    {
        if(ticket != null)
            (1) ;
    }
}
class HeadDecorator extends Decorator
{
    public HeadDecorator(lnvoice t)
    {
        super(t);
    }
    public void printInvoice ()
    {
        System.out.println( "This is the header of the invoice! ");
        (2) ;
    }
}
class FootDecorator extends Decorator
{
    public FootDecorator(Invoice t)
    {
        super(t);
    }
    public void printlnvoice()
    {
        ( 3) ;
        System.out.println( "This is the footnote of the invoice! ");
    }
}
Class test
{
    public static void main(String[] args)
    {
        Invoice t =new Invioce();
        Invoice ticket;
        ticket= (4) ;
        ticket.printInvoice();
        System.out.println(“------------------“);
        ticket= (5) ;
        ticket.printInvoice();
    }
}

程序的输出结果为:
This is the header of the invoice!
This is the content of the invoice!
This is the footnote of the invoice!
----------------------------
This is the header of the invoice!
This is the footnote of the invoice!

答案

(1)ticket.printInvoice()
(2)super.printInvoice()
(3)super.printInvoice()
(4)new HeadDecorator(new FootDecorator(t))
(5)new HeadDecorator(new FootDecorator(null)) 
时间: 2024-10-11 13:06:57

2016年下半年软件设计师下午试卷真题解析的相关文章

2016年下半年软考网络工程师真题解析精编版

(最新)2017年下半年软考各科历年真题及答案解析

[徐朋出品,必属精品]作为51CTO学院的软考特级讲师,本着对广大学员负责的态度,在每年同学们参加完软考考试,我都会尽早的给大家发布各科的真题详细解析资料.一方面是为了帮助参加软考考试的同学对自己考试情况做一个准确评估:另一方面是为未来参加软考考试的学员展现软考最新的考题形式,考察要点,助其有重点的复习软考考试. 历时多载,是同学们的坚定支持,才使我更加坚定,勇往直前,做更好的课程回馈大家. 现将最新的软考各科资料整理如下,同学们可以自行下载学习,学习过程中有疑问,也可给我留言. [持续更新,未

2016年上半年软件设计师考试真题(下午题)

软件设计师考试作为软考中级资格中的一大热门,2016年上半年和下半年都开考.上半年软考已经结束,打算参加下半年考试的你,是不是很想要拿到上半年的真题?下面希赛软考学院就为你带来2016年上半年软件设计师考试下午真题,供你参考学习.  试题一(共15分) 阅读下列说明和图,回答问题1至问题4,将解答填入答题纸的对应栏内. [说明] 某会议中心提供举办会议的场地设施和各种设备,供公司与各类组织机构租用.场地包括一个大型报告厅.一个小型报告厅以及诸多会议室.这些报告厅和会议室可提供的设备有投影仪.白板

2016年下半年信息安全工程师考试真题含答案(下午题)

2016年下半年信息安全工程师考试真题含答案(下午题) https://www.moondream.cn/?p=328 试题一(共20分) 阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内. [说明] 研究密码编码的科学称为密码编码学,研究密码破译的科学称为密码分析学,密码编码学和密码分析学共同组成密码学.密码学作为信息安全的关键技术,在信息安全领域有着广泛的应用. [问题1](9分) 密码学的安全目标至少包括哪三个方面?具体内涵是什么? [问题2](3分) 对下列违规安全事件,

2016年上半年软件设计师考试试题上午卷(1-25题)

获得武功秘籍,修的一身好功夫,就能如鱼得水般行走于江湖中.获得软考真题,取得命题方向,成功通过考试就游刃有余.下面希赛软考学院为您整理了2016年上半年软件设计师考试真题上午卷,助你轻松备考. 2016年上半年软件设计师考试试题上午卷(1-25题) ●VLIW是(1)的简称. A.复杂指令系统计算机 B.超大规模集成电路 C.单指令流多数据流 D.超长指令字 ●主存与Cache的地址映射方式中,(2)方式可以实现主存任意一块装入Cache中任意位置,只有装满才需要替换. A.全相联 B.直接映射

2016年上半年软件设计师考试试题上午卷(26-50题)

获得武功秘籍,修的一身好功夫,就能如鱼得水般行走于江湖中.获得软考真题,取得命题方向,成功通过考试就游刃有余.下面希赛软考学院为您整理了2016年上半年软件设计师考试真题上午卷,助你轻松备考. 2016年上半年软件设计师考试试题上午卷(26-50题) ●进程P1.P2.P3.P4和P5的前趋图如下图所示: 若用PV操作控制进程P1.P2.P3.P4和P5并发执行的过程,则需要设置5个信号S1.S2.S3.S4和S5,且信号量S1-S5的初值都等于零.下图中a和b处应分别填(26):c和d处应分别

2016年上半年软件设计师考试试题上午卷(51-75题)

获得武功秘籍,修的一身好功夫,就能如鱼得水般行走于江湖中.获得软考真题,取得命题方向,成功通过考试就游刃有余.下面希赛软考学院为您整理了2016年上半年软件设计师考试真题上午卷,助你轻松备考. 2016年上半年软件设计师考试试题上午卷(51-75题) ●数据的物理独立性和逻辑独立性分别是通过修改(51)来完成的. A.外模式与内模式之间的映像.模式与内模式之间的映像 B.外模式与内模式之间的映像.外模式与模式之间的映像 C.外模式与模式之间的映像.模式与内模式之间的映像 D.模式与内模式之间的映

2016年下半年软考报名时间-各省报名时间【定期更新】

2016年下半年软考报名开始拉~以下 各省的小伙伴注意啦 浙江:2016年8月5日-9月20日 香港:2016年8月23日-9月9日 福建:2016年7月15日-9月20日 重庆:2016年7月14日-9月1日 陕西:2016年7月15日-9月20日 湖北:2016年7月8日-9月15日 江苏:2016年8月15日-9月22日 山东:8月25日9∶00-9月6日 湖南:2016年9月1日-9月19日 北京:2016年8月9日-8月23日 上海:8月11日10:00-8月31日 安徽:8月1日9:

2016年上半年网络管理员考试上午真题(1-25)

对于想参加下半年网络管理员考试的考生来说,2016年上半年网络管理员考试真题是宝贝,下面希赛软考学院为您整理了上午真题,供您参考学习. 2016年上半年网络管理员考试上午真题(1-25) ●在Windows系统中,若要将文件"D:\user\my.doc"设置成只读属性,可以通过修改该文件的()来实现.将文件设置为只读属性可控制用户对文件的修改,这一级安全管理称之为()安全管理. (1)A.属性 B.内容 C.文件名 D.路径名 (2)A.用户级 B.目录级 C.文件级 D.系统级 ●