• 网络学院
  • IT资讯
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
04年下半年软件设计师(高级程序员)下午试题
  站点:
  • 首 页
  • 最新软件
  • 文章教程
  • 国内软件
  • 国外软件
  • 绿色软件
  • 源码下载
  • 字体下载
04年下半年软件设计师(高级程序员)下午试题
软件发布 04年下半年软件设计师(高级程序员)下午试题
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件 绿软下载
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回文章教程首页 >> 文章首页 >> 认证考试 >> 程序员 >> 04年下半年软件设计师(高级程序员)下午试题

04年下半年软件设计师(高级程序员)下午试题

添加时间: 2007-4-8 5:26:53  作者: 程序员认证参考  阅读次数:47   来源: http://www.d9soft.com

       

试题一(15分)
  阅读下列说明和数据流图,回答问题1至问题3,将解答填入答题纸的对应栏内。 某图书 管理 系统的主要功能是图书管理和信息查询。对于初次借书的读者,系统自动生成读者号,并与读者基本信息(姓名、单位、地址等)一起写入读者文件。 系统的图书管理功能分为四个方面:购入新书、读者借书、读者还书以及图书注销。
  1、购入新书时需要为该书编制入库单。入库单内容包括图书分类目录号、书名、作者、价格、数量和购书日期,将这些信息写入图书目录文件并修改文件中的库存总量(表示到目前为止,购入此种图书的数量)。
  2、读者借书时需填写借书单。借书单内容包括读者号和所借图书分类目录号。系统首先 检查 该读者号是否有效,若无效,则拒绝借书;若有效,则进一步检查该读者已借图书是否超过最大限制数(假设每位读者能同时借阅的书不超过5本),若已达到最大限制数,则拒绝借书;否则允许借书,同时将图书分类目录号、读者号和借阅日期等信息写入借书文件中。
  3、读者还书时需填写还书单。系统根据读者号和图书分类目录号,从借书文件中读出与该图书相关的借阅记录,标明还书日期,再写回到借书文件中,若图书逾期,则处以相应的罚款。
  4、注销图书时,需填写注销单并修改图书目录文件中的库存总量。 系统的信息查询功能主要包括读者信息查询和图书信息查询。其中读者信息查询可得到读者的基本信息以及读者借阅图书的情况;图书信息查询可得到图书基本信息和图书的借出情况。
  图书管理系统的顶层图如图1-1所示;图书管理系统的第0层dfd图如图1-2所示 其中,加工2的细化图如图1-3所示。
 【数据流图1-1】

图1-1图书管理系统顶层图

【数据流图1-2】

图1-2图书管理系统第0层dfd图

【数据流图1-3】

 【问题1】(2分)
  数据流图1-2中有两条数据流是错误的,请指出这两条数据流的起点和终点。
 【问题2】(6分)
  数据流图1-3中缺少三条数据流,请指出这三条数据流的起点和终点。
 【问题3】(7分)
  根据系统功能和数据流图填充下列数据字典条目中的(1)和(2):
  查洵请求信息=[查询读者请求信息查询图书请求信息]
  读者情况=读者号+姓名+所在单位+{借书情况}
  管理工作请求单=__(1)__
  入库单=__(2)__

试题二(15分)
  阅读下列说明和e-r图,回答问题1至问题3,将解答填入答题纸的对应栏内。
 【说明】
  某网上订书系统的e-r图(已消除了不必要的冗余)如图2-1所示(图中没有标出主码)。图中实体的说明如表2-1所示。相关属性说明如表2-2所示。

表2-1

实体
 说明
 
 books
  书店内的书
 
 gustomers
  与书店有业务的顾客
 
 orders
  顾客向书店下的购书单
 

表2-2

主要属性
 说明
 
 qty_in_stock
  图书库存量
 
 year_published
  出版日期
 
 ordernum
  购书单编号
 
 cid
  顾客编号
 
 bid
  惟一表示每种图书的编码
 
 cardnum
  顾客信用卡号码
 
 orderdate
  填购书单日期
 
 qty
  订购某种图书的数量
 
 ship_date
  发货日期
 

  一个顾客可以在同一天填写多张购书单,每张购书单上可填写多种图书,每种图书可以订购多本,bid相同的图书在同一张购书单上不能出现多次。
  注:为简化起见,不考虑信用卡号码泄漏所带来的 安全 性等问题。
 【图2-1】

 【问题1】(9分)
  根据e-r图中给出的 词汇 ,按照“有关模式名(属性,属性,...)”的格式,将此e-r图转换为4个关系模式,并指出每个关系模式中的主码和外码,其中模式名根据需要取实体名或联系名。
  [问题2](2分)
  创建customers表时,cid使用integer数据类型,cname使用char(80)数据类型,address使用char(200)数据类型,cardnum使用char(16)数据类型并且要求此列值惟一。请在下列用于创建表customers的sql语句空缺处填入正确的内容。
  create table customers(cid integer not null,
  cname  char(80) not null,
  address char(200),
  cardnum char(16) not null,
  __(1)__,
  __(2)__
 【问题3】(4分)
  如下的sql语句是书店用于查询“所有订购了bid为‘123-456’图书的用户订购其他图书的情况”的不完整语句,请在空缺处填入正确的内容。
  select bid
  from orderlist a
  where not exists(select * from orders b

  where a. ordernum = b.ordernum and b.cid __(3)__
  (select bid from orderlist c,orders d
  where __(4)__.bid='123-456'
  and __(5)__=d.ordernum))

试题三(15分)
  阅读下列说明和数据流图,回答问题1和问题3,将解答填入答题纸的对应栏内。
 【说明】
  某指纹门禁系统结构如图3-1所示,其主要部件有:主机(mainfrname)、锁控器(lockcontroller)、指纹采集器(fingerreader)和电控锁(lock)。
  (1) 系统中的每个电控锁都有一个惟一的编号。锁的状态有两种:“已锁住”和“未锁住”。
  (2) 在主机上可以设置每把锁的 安全 级别以及用户的开锁权限。只有当用户的开锁权限大于或等于锁的安全级别并且锁处于“已锁住”状态时,才能将锁打开。
  (3) 用户的指纹信息、开锁权限以及锁的安全级别都保存在主机上的数据库中。
  (4) 用户开锁时,只需按一下指纹采集器。指纹采集器将发送一个中断事件给锁控器,锁控器从指纹采集器读取用户的指纹并将指纹信息发送到主机,主机根据数据库中存储的信息来判断用户是否具有开锁权限,若有且锁当前处于“已锁住”状态,则将锁打开;否则系统报警。
  该系统采用面向对象方法开发,系统中的类以及类之间的关系用uml类图表示,图3-2是该系统类图的一部分;系统的动态行为采用uml序列图表示,图3-3是用户成功开锁的序列图。

 【问题1】(6分)
  图3-2是该系统类图的一部分,依据上述说明中给出的术语,给出类look的主要属性。
 【问题2](5分)
  依据上述说明中给出的词语,将图3-3中的(1)~(5)处补充完整。
 【问题3】(4分)
组装(composition)和聚集(aggregation)是uml中两种非常重要的关系。请说明组装和聚集分别表示什么含义?两者的区别是什么?

试题四(15分)
  阅读下列说明和数据流图,回答问题1和问题3,将解答填入答题纸的对应栏内。
 【说明】
  在并发系统设计中,通过对信号量s的p、v操作实现进程的同步与互斥控制。
  p(s):s:=s-1,若s≥0,则执行p操作的进程继续执行;若s<0,则置该进程为阻塞状态,并将其插入阻塞队列。
  v(s):s:=s+1,若s>0,则执行v操作的进程继续执行;若s≤0,则从阻塞队列唤醒一个进程,并将其插入就绪队列,然后执行v操作的进程继续执行。
 【问题1】(4分)
  在某并发系统中,有一个发送进程a、一个接收进程b、一个环形缓冲区buffer、信号量s1和s2。发送进程不断地产生消息并写入缓冲区buffer,接收进程不断地从缓冲区buffer取消息。假设发送进程和接收进程可以并发地执行,那么,当缓冲区的容量为n时,如何使用p、v操作才能保证系统的正常工作。发送进程a和接收进程b的工作流程如图4-1所示。请在图4-1中的空(1)~(4)处填入正确的内容。

 【问题2】(5分)
  若系统中有多个发送进程和接收进程,进程间的工作流程如图4-2所示,其中空(1)~(4)的内容与图4-1相同。发送进程产生消息并顺序地写入环形缓冲区buffer,接受者进程顺序地从buffer中取消息,且每条消息只能读取一次。为了保证进程间的正常通讯,增加了信号量sa和sb。
  ① 请说明信号量sa和sb的物理意义,并在图4-2中的空(5)和空(6)处填入正确的内容。
  ② 请从图4-2的(a)~(1)中选择四个位置正确地插入p(sa)、v(sa)、p(sb)、v(sb)。
 【图4-2]】

 【问题3】(6分)
  设系统中只有进程a和进程b,除了互斥地使用cpu和打印机r外,进程a和b不使用其他资源。另外,进程b的优先级比a高,而进程a先于b准备好。进程a和b的执行情况如图4-3所示,其中粗实线表示进程在执行中,细实线表示打印机r在使用中。(每个进程具有三种状态:运行,就绪和阻塞)
  请说明进程a和b在图4-3所示的t1、t2、t3、t4时刻所处的状态;若是阻塞状态,请说明阻塞原因。
 【图4-3】

试题五(15分,每空3分)
  阅读下列函数说明和c代码,将应填入(n)处的字句写在答题纸的对应栏内。
 【说明】
  函数int toplogical (linkedwdigraph g)的功能是对图g中的顶点进行拓扑排序,并返回关键路径的长度。其中图g表示一个具有n个顶点的aoe-网,图中顶点从1~n依次编号,图g的存储结构采用邻接表表示,其数据类型定义如下:
  typedef struct gnode{     /*邻接表的表结点类型*/
   int adjvex;        /*邻接顶点编号*/
   int weight;        /*弧上的权值*/

   struct gonde*nextare;    /*指示下一个弧的结点*/
  }gnode;

  typedef struct adjlist{    /*邻接表的头结点类型*/
   char vdata;          /*顶点的数据信息*/
   struct gnode*firstadj;   /*指向邻接表的第一个表结点*/
  }adjlist;

  typedef struct linkedwdigraph{  /*图的类型*/
   int n ,e;          /*图中顶点个数和边数*/
   struct adjlist head;     /*指向图中第一个顶点的邻接表的头结点*/
  }linkedwdigraph;
  例如,某aoe-网如图5-1所示,其邻接表存储结构如图5-2所示。

 【函数】
  int toplogical(linkedwdigraph g)
  {gnode *p;
      int j,w,top=0;
      int stack,ve,*indegree;
      ve=(int )mallloc(g.n+1)*sizeof(int));
      indegree=(int*)malloc((g.n+1)*sizeof(int)); /*存储网中个顶点的入度*/
      stack=(int*)malloc((g.n+1)*sizeof(int));   /*存储入度为0的顶点的编号*/
      if (!ve!indegree!stack)            exit(0);
      for (j=1;j<=g.n;j++){
     ve[j]=0;indegree[j]=0;
    }                /*for*/
    for (j=1;j<=g.n;j++) {      /*求网中各顶点的入度*/
       p=g.head[j].firstadj;
       while (p) {
      __(1)__;          p=p->nextarc;
     }               /*while*/
    }         /*for*/
    for (j=1;j<=g.n;j++)                         /求网中入度为0的顶点并保存其编号*/
    if (!indegree[j]) stack[++top]=j;
    while (top>0){
     w=__(2)__;
     printf(“%c”,g.head[w].vdata);
     p=g.head[w].firstadj;
     while (p) {
      __(3)__;
      if (!indegree[p->adjvex])
       stack[++top]=p->adjvex;
      if(__(4)__)
       ve[p->adjvex]=ve[w]+p->weight;
      p=p->nextarc;
     }/*while*/
     return(5);
    }       /*toplogical*/

试题六(15分,每空3分)
  阅读下列函数说明和c++代码,将应填入(__n__)处的字句写在答题纸的对应栏内。
 【说明】
  通常情况下,用户可以对应用系统进行配置,并将配置信息保存在配置文件中,应用系统在启动时首先将配置文件加载到内存中,这些内存配置信息应该有且仅有一份。
  下面的代码应用了单身模式(singleton)以保证configure类只能有一个实例。这样,configure类的使用者无法定义该类的多个实例,否则会产生编译错误。
 【c++代码】
  #include <iostream.h>
  class configure {
   __(1)__;
   configure() {};            //构造函数
   public;
   static configure*instance();
   public;
   int getconfiguredata() {return data;} //获取配置信息
   int setconfiguredate(int m_data)
   { data=m_data;       return data; }   //设置配置信息
   private:
   static configure*_instance;
   int data;                          //配置信息
  };
  __(2)__=null;
  configure * configure;;instance() {
   if (_instance= =null) {
    _instance=__(3)__;
   //加载配置文件并设置内存配置信息,此处省略
   }
   return__(4)__;
  }
  void main() {
   configure*t=null;
   t=__(5)__;
   int d=t->getconfiguredata();
   //获取配置信息后进行其它工作,此处省略

试题七(15分,每空3分)
 【说明】
  类queue表示队列,类中的方法如下表所示。

isempty()
 判断队列是否为空。如果队列不为空,返回true;否则,返回false。
 
enpueue(object newnode)
 入队操作。
 
dequeue()
 出队操作。如果队列为空,则抛出异常。
 

  类node表示队列中的元素;类emptyqueueexception给出了队列操作中的异常处理操作。
 【java代码】
  public class testmain { //主类
   public static viod main (string args[]){
    queue q= new queue;
    q.enqueue(“first!”);
    q.enqueue(“second!”);
    q.enqueue(“third!”);
    __(1)__  {
     while(true)
     system.out.println(q.dequeue());
    }
    catch(__(2)__){}
   }

   public class queue {   //队列
    node m_firstnode;
    public queue(){m_firstnode=null;}
    public boolean isempty(){
    if (m_firstnode= =null) return true;
    else return false;
    }
    public viod enqueue(object newnode){  //入队操作
    node next = m_firstnode;
    if (next = = null) m_firstnode=new node(newnode);
    else {
     while(next.getnext()!=null) next=next.getnext();
     next.setnext(new node(newnode));
    }
   }
   public object dequeue() __(3)__ {      //出队操作
    object node;
    if (is empty())
    __(4)__;                 //队列为空,抛出异常
    else {
     node =m_firstnode.getobject();
     m_firstnode=m_firstnode.getnext();
     return node;
    }
   }
  }

  public class node{
   object m_data;
   node m_next;
   public node(object data)     {m_data=data;  m_next=null;}
   public node(object data,node next)   {m_data=data;  m_next=next;}
   public void setobject(object data)   {m_data=data; }
   public object getobject(object data)  {return m_data;}
   public void setnext(node next)   {m_next=next;}
   public node getnext()     {return m_next;}
  }
  public class emptyqueueexception extends   (5)  {
   public emptyqueueexception() {
     system.out.println(“队列已空!”);

 

上下文章:

 

上一篇文章: VC++动态链接库(DLL)编程深入浅出(一) 下一篇文章: 04年上半年软件设计师级答案

相关文章:

  • 卡巴斯基全功能安全软件2009白皮书
  • Linux之父:最烦安全人士大肆宣扬软件漏洞
  • 趋势科技:杀毒软件不可能永远免费
  • 金山软件7.28毒报:匿名下载器下载木马
  • 金山软件7.15毒报:脚本下载器下载远程病毒

相关软件:

  • 光华反手机病毒软件 S60智能手机(英文版) E60
  • 光华反手机病毒软件 S80/90智能手机 C80
  • 光华反手机病毒软件 S80智能手机(英文版) E80
  • LSC企业监控软件 3.0
  • 佳宜采购管理软件 2.08 SQL网络版
  • 佳宜采购管理软件 2.08 企业版

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

认证考试分类导航

  • 微软认证
  • 计算机等级考试
  • 软件水平考试
  • 思科认证
  • Oracle认证
  • Linux认证
  • JAVA认证
  • 网络工程师
  • 系统工程师
  • 程序员

本类经典文章推荐

  • 软考系统分析师考试须知
  • C++箴言:绝不在构造或析构期调用...
  • 数据结构:判别是否为二叉排序树的...
  • 一个程序员的成长的六个阶段
  • 程序员英语试题常见硬件名和设备名
  • 从一个程序出发详细研究DataReader
  • 如何判断程序处于运行环境还是调试...
  • 程序高手必读:写好C程序的10条秘...
  • 程序员介绍:程序员的“素质”是什...
  • C++箴言:让=返回一个*this的引用

程序员阅读排行

  • 数据结构:判别是否为二叉排序树的...
  • VC++动态链接库(DLL)编程深入浅出...
  • VC++动态链接库(DLL)编程深入浅出...
  • 程序员考试:证书样本
  • 补码加、减运算规则及溢出判断
  • 数据结构:栈和递归求两顶点所有简...
  • DirectX8.0简介(8)
  • 水滴石穿·C语言之代码检查工...
  • 数据结构:打印线索二叉树的中序遍...
  • DirectX8.0简介(3)

认证考试阅读总排行

  • 全国计算机等级考试一级模拟试题01
  • 全国计算机等级考试一级模拟试题10
  • 全国计算机等级考试一级模拟试题08
  • MCSD简介
  • 全国计算机等级考试一级考试最新模...
  • 全国计算机等级考试一级模拟试题07
  • 全国计算机等级考试一级模拟试题02
  • 全国计算机等级考试一级模拟试题06
  • 全国计算机等级考试一级模拟试题03
  • 一级(WINDOWS)试题解析-Word篇

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有