专业软件设计师网站|培训机构|服务商(加客服微信:cnitpm或QQ:800184589进软件设计师学霸群)

软题库 培训课程
当前位置:信管网 >> 软件设计师 >> 案例分析 >> 文章内容
2004年上半年软件设计师下午案例分析真题文字版
来源:信管网 2021年05月17日 【所有评论 分享到微信

免费下载软件设计师历年真题:http://www.cnitpm.com/zhenti/rs.html
该套题在线考试:http://www.cnitpm.com/exam/examam.aspx?t1=2&sid=535557
1、 试题一

阅读下列说明和数据流图,回答问题1至问题4,将解答填入答题纸的对应栏内。
[说明]
某基于微处理器的住宅安全系统,使用传感器(如红外探头、摄像头等)来检测各种意外情况,如非法进入、火警、水灾等。
房主可以在安装该系统时配置安全监控设备(如传感器、显示器、报警器等),也可以在系统运行时修改配置,通过录像机和电视机监控与系统连接的所有传感器,并通过控制面板上的键盘与系统进行信息交互。在安装过程中,系统给每个传感器赋予一个编号(即 id)和类型,并设置房主密码以启动和关闭系统,设置传感器事件发生时应自动拨出电话号码。当系统检测到一个传感器事件时,就激活警报,拨出预置的电话号码,并报告关于位置和检测到事件的性质等信息。
[数据流图4-1]

[问题1]
数据流图4-1(住宅安全系统顶层图)中的a和b分别是什么?
[数据流图4-2]
[问题2]
数据流图4-2(住宅安全系统第0层dfd图)中的数据存储“配置信息”会影响图中的哪些加工?

[问题3]

将数据流图4-3(加工4的细化图)中的数据流补充完整,并指明加工名称、数据流的方向(输入/输出)和数据流名称。

[问题4]

试说明逻辑数据流图(logicaldata flow diagram)和物理数据流图(physicaldata flow diagram)之间的主要差别。
信管网参考答案:
查看解析:www.cnitpm.com/st/2450924774.html

2、 阅读下列说明和算法,回答问题1和问题2,将解答填入答题纸的对应栏内。
[说明]
算法2-1是用来检查文本文件中的圆括号是否匹配。若文件中存在圆括号没有对应的左括号或者右括号,则给出相应的提示信息,如下所示:
文件    提示信息
(1+2)
abc)                            缺少对应左括号:第2行,第4列
((def)8x))                            缺少对应左括号:第3行,第10列
(((h)
ij)(k
(1ml)                                缺少对应右括号:第5行,第4列;第4行,第1列
在算法2-1中,stack为一整数栈。算法中各函数的说明如表4-1所示。

[算法2-1]
将栈stack置空,置eof为false
ch←nextch();
while(not eof.
k←kind(ch);
if(k==  (1)  )
push(  (2)  );push(  (3)  );
elself(k==  (4)  )
if(not empty())
pop(),pop(),
else
显示错误信息(缺少对应左括号或右括号);
显示行号row;显示列号col;
endif
endif
ch←nextch();
endwhile
if(not empty())
显示错误信息(缺少对应左括号或右括号);
while(not empty())
row←pop();col←pop();
显示行号row;显示列号col
cndwhile
endif
为了识别更多种类的括号,对算法2-1加以改进后得到算法2-2。算法2-2能够识别圆括号,方括号和花括号(不同类型的括号不能互相匹配)。改进后,函数kinnd(char ch)的参数及其对应的返回值如表4-2所示。

表4-2  函数的参数及其返回值
[算法2-2]
将栈stack置空,置eof为false
ch←nextch();
while(not eof.
k←kind(ch);
if(k>0)
if(  判断条件1  )
push(  (5)  );push(  (6)  );push(  (7)  );
elseif(  判断条件2  and  判断条件3  )
pop();pop();pop();
else
显示错误信息(缺少对应左括号或右括号);
显示行号row;显示列号col;
endif
endif
ch←nexteh();
endwhile
if(not empty())
显示错误信息(缺少对应左括号或右括号);
while(not empty())
pop();row←pop();col←pop();
显示行号row;显示列号col;
endwhile
endif
[问题1]
试将[算法2-1)和[算法2-2]中(1)~(7)处补充完整。
[问题2]
从下面的选项中选择相应的判断逻辑填补[算法2-2]中的“判断条件1”至“判断条件 3”。注意,若“判断条件2”的逻辑判断结果为假,就无需对“判断条件3”进行判断。
(a)字符是括号(b)字符是左括号(c)字符是右括号(d)栈空(e)栈不空
(f)栈顶元素表示的是与当前字符匹配的左括号
(g)栈顶元素表示的是与当前字符匹配的右括号
信管网参考答案:
查看解析:www.cnitpm.com/st/2451014077.html

3、 试题三
阅读下列说明以及图4-4和图4-5,回答问题1、问题2和问题3,将解答填入答题纸的对应栏内。
[说明]
某电话公司决定开发一个管理所有客户信息的交互式网络系统。系统的功能如下。
1.浏览客户信息:任何使用因特网的用户都可以浏览电话公司所有的客户信息(包括姓名、住址、电话号码等)。
2.登录:电话公司授予每个客户一个账号。拥有授权账号的客户,可以使用系统提供的页面设置个人密码,并使用该账号和密码向系统注册。
3.修改个人信息:客户向系统注册后,可以发送电子邮件或者使用系统提供的页面,对个人信息进行修改。
4.删除客户信息:只有公司的管理人员才能删除不再接受公司服务的客户的信息。系统采用面向对象方法进行开发,在开发过程中确定的类如表4-3所示。
表4-3  开发过程中确定的类


[问题1]
在需求分析阶段,采用uml的用例图(use case diagram)描述系统功能需求,如图4-4所示。指出图中的a,b,c和d分别是哪个用例?
[问题2]
在uml中,重复度(multiplicity)定义了某个类的一个实例可以与另一个类的多个实例相关联。通常把它写成一个表示取值范围的表达式或者一个具体的值。例如,图4-5中的类internetclient和customerlist,internetclient端的“0...*”表示:1个 customerlist的实例可以与0个或多个internetclient的实例相关联;customerlist端的“1”表示:1个internetclient的实例只能与1个customerlist的实例相关。
指出图4-5中(1)~(4)处的重复度分别为多少?
[问题3]
类通常不会单独存在,因此当对系统建模时,不仅要识别出类,还必须对类之间的相互关系建模。在面向对象建模中,提供了4种关系:依赖(dependency)、概括(generaliza tion)、关联(association)和聚集(aggregation)。分别说明这4种关系的含义,并说明关联和聚集之间的主要区别。
信管网参考答案:
查看解析:www.cnitpm.com/st/2451120874.html

4、

9、[程序4]

start

prugbc    ld       gr0,data

lea      gr1,0

lea      gr3,48

loop1     cpl      gr0,wdt,gr1

jp2      loop2

st       gr3,btasc,gr1

lea      gr1,1,gr1

lea      gr2,-4,gr1

jn2      loop1

(1)

loop2     lea      gr2,48

loop3     cpl      gr0,wdt,gr1

jmi      next

(2)

lea      gr2,1,gr2

jmp      loop3

next (3)

lea      gr1,1,gr1

lea      gr2,-4,gr1

jnz       loop2

last (4) ;处理个位数

(5)

exit

c48      dc        48

wdt      dc        10000

dc    1000

dc   100

dc   10

btasc   ds    5

data   dc    #fa59h

end
信管网参考答案:
查看解析:www.cnitpm.com/st/2451221337.html

5、 10、[函数5]
int deletenode(bitree *r,int e){
bitree p=* r,pp,s,c;
while(  (1)  ){/ * 从树根结点出发查找键值为e的结点 * /
pp=p;
if(e<p->data) p=p->lchild;
else p=p->rchild
}
if(! p)return-1;/ * 查找失败 * /
if(p->lchild && p->rchild){/ * 处理情况③ * /
s=  (2)  ;pp=p;
while(  (3)  ){pp=s;s=s->rchild;}
p->dara=s->data;p=s;
}
/ * 处理情况①、② * /
if(  (4)  )c=p->lchild;
else c=p->rchild
if(p==*r)  *r=c;
else if(  (5)  )pp->lchild=c;
else pp->rchild=c;
free(p);
return 0;
}
信管网参考答案:
查看解析:www.cnitpm.com/st/2451318276.html

6、 试题六
11、[程序6]
#include<iostream.h>
template<class t>class array;
template<class t>class arraybody{
friend  (1)  ;
t* tpbody;
int irows,icurrentrow;
arraybody(int irsz,int icsz){
tpbody=  (2)  ;
irows=irsz,icolumns=icsz;icurrentrow=-1;
}
public:
t& operator[](int j) {
bool row_error,column_error;
row_error=column_error=false;
try{
if(icurrentrow<0||icurrentrow≥irows)
row_error=;
if(j<0|| j≥icolumns
column_error=;
if(row_error==true || column_error==true)
(3)  ;
}
eatch(char) {
if(row error==true)
cerr<<“行下标越界[“<<icurrentrow<<”]”;
if(column error==true)
cerr<<“列下标越界[“<<j<<”]”;
cout<<“\n”;
}
return tpbody[icurrentrow * icolumns+j];
}
~arraybody(){delere[]tpbody;}
};
template<class t>class array {
arraybody<t> tbody;
public:
arraybody<t> & operator[](int i){
(4)  ;
return tbody;
};


void main()
{
array<int> a1(10,20);
array<double> a2(3,5);
int b1;
double b2;
b1=a1[-5][10];         / * 有越界提示:行下标越界[-5] * /
b1=a1[10][15];         / * 有越界提示:行下标越界[10] * /
b1=a1[1][4];           / * 没有越界提示 * /
b2=a2[2][6];           / * 有越界提示:列下标越界[6] * /
b2=a2[10][20];         / * 有越界提示:行下标越界[10]列下标越界[20] * /
b2=a2[1][4];           / * 没有越界提示 * /
}
信管网参考答案:
查看解析:www.cnitpm.com/st/2451421879.html

扫码关注公众号

温馨提示:因考试政策、内容不断变化与调整,信管网网站提供的以上信息仅供参考,如有异议,请以权威部门公布的内容为准!

信管网致力于为广大信管从业人员、爱好者、大学生提供专业、高质量的课程和服务,解决其考试证书、技能提升和就业的需求。

信管网软考课程由信管网依托10年专业软考教研倾力打造,官方教材参编作者和资深讲师坐镇,通过深研历年考试出题规律与考试大纲,深挖核心知识与高频考点,为学员考试保驾护航。面授、直播&录播,多种班型灵活学习,满足不同学员考证需求,降低课程学习难度,使学习效果事半功倍。

相关内容

发表评论  查看完整评论  

推荐文章