问答题

阅读下列说明,回答问题1至问题3。
【说明】
某医院的门诊管理系统实现了为患者提供挂号、处方药品收费的功能。具体的需求及设计如下:
1.医院医师具有编号,姓名,科室,职称,出诊类型和出诊费用,其中出诊类型分为专家门诊和普通门诊,与医师职称无关;各个医师可以具有不同的出诊费用,与职称和出诊类型无关。
2.患者首先在门诊挂号处挂号,选择科室和医师,根据选择的医师缴纳挂号费(医师出诊费)。收银员为患者生成挂号单,如表10-1所示,其中,就诊类型为医师的出诊类型。
                         表10-1 ××医院门诊挂号单
                    收银员:13011          时间:2007年2月1日 08:58

就诊号 姓名 科室 医师 就诊类型 挂号费
20070205015 叶萌 内科 杨玉明 专家门诊 5元

  3.患者在医师处就诊后,凭借挂号单和医师手写处方到门诊药房交费买药。收银员根据就诊号和医师处方中开列的药品信息,查询药品库(如表10-2所示)并生成门诊处方单(如表10-3所示)。
                         表10-2 药品库
 

药品编码 药品名称 类型 库存 货架编号 单位 规格 单价
12007 牛蒡子 中药 51590 B1401 G 0.0340
11090 百部 中药 36950 B1523 G 0.0313

                         表10-3 ××医院门诊处方单
                                     时间:2007年2月1日 10:31


就诊号 20070205015 病人姓名 叶萌 医师姓名 杨玉明
金额总计 0.65 项目总计 2 收银员 21081
药品编码 药品名称 数量 单位 单价 金额(元)
12007 牛蒡子 10 G 0.0340 0.34
11090 百部 10 G 0.0313 0.31


  4.由于药品价格会发生变化,因此,门诊管理系统必须记录处方单上药品的单价。
  根据需求阶段收集的信息,设计的实体联系图和关系模式(不完整)如下所示:
  1.实体联系图
   
  2.关系模式
  挂号单(就诊号,病患姓名,医师编号,时间, (5) )
  收银员(编号,姓名,级别)
  医师(编号,姓名,科室,职称,出诊类型,出诊费用)
  门诊处方( (6) ,收银员,时间)
  处方明细(就诊号, (7) )
  药品库(药品编码,药品名称, (8) )

 

【问题2】
图10-3中还缺少几个联系请指出每个联系两端的实体名,格式如下。
实体1:实体2
例如,收银员与门诊处方之间存在联系,表示为:
收银员:门诊处方 或
门诊处方:收银员

【参考答案】

缺少的联系数:3
挂号单:收银员
挂号单:医师
挂号单:门诊处方

热门 试题

问答题
【说明】 在一个分布网络中,资源(石油、天然气、电力等)可从生产地送往其他地方。在传输过程中,资源会有损耗。例如,天然气的气压会减少,电压会降低。我们将需要输送的资源信息称为信号。在信号从信源地送往消耗地的过程中,仅能容忍一定范围的信号衰减,称为容忍值。分布网络可表示为一个树型结构,如图10-9所示。信号源是树根,树中的每个节点(除了根)表示一个可以放置放大器的子节点,其中某些节点同时也是信号消耗点,信号从一个节点流向其子节点。 每个节点有一个d值,表示从其父节点到该节点的信号衰减量。例如,在图10-9中,节点w、p、q的d值分别为2、1、3,树根节点表示信号源,其d值为0。 每个节点有一个M值,表示从该节点出发到其所有叶子的信号衰减量的最大值。显然,叶子节点的M值为0。对于非叶子节点j,M(j)=max{M(k)+d(k)|k是j的孩子节点}。在此公式中,要计算节点的M值,必须先算出其所有子节点的M值。 在计算M值的过程中,对于某个节点i,其有一个子节点k满足d(k)+M(k)大于容忍值,则应在k处放置放大器,否则,从节点i到某叶子节点的信号衰减量会超过容忍值,使得到达该叶子节点时信号不可用,而在节点i处放置放大器并不能解决到达叶子节点的信号衰减问题。 例如,在图10-9中,从节点p到其所有叶子节点的最大衰减值为4。若容忍值为3,则必须在s处放置信号放大器,这样可使得节点p的M值为2。同样,需要在节点小v处放置信号放大器,如图10—10阴影节点所示。若在某节点放置了信号放大器,则从该节点输出的信号与信号源输出的信号等价。 函数placeBoosters(TreeNode*root)的功能是:对于给定树型分布网络中各个节点,计算其信号衰减量的最大值,并确定应在树中的哪些节点放置信号放大器。 全局变量Tolerance保存信号衰减容忍值。 树的节点类型定义如下: typedef struct TreeNode{ int id; *当前节点的识别号* int ChildNum; *当前节点的子节点数目* int d; *父节点到当前节点的信号衰减值* struct TreeNode **childptr; *向量,存放当前节点到其所有子节点的指针* int M; *当前节点到其所有子节点的信号衰减值中的最大值* bool boost; *是否在当前节点放置信号放大器的标志* }TreeNode; 【C语言函数】 void placeBoosters(TreeNode *root) { * 计算root所指节点处的衰减量,如果衰减量超出了容忍值,则放置放大器* TreeNode *p; int i,degradation; if( (1) ){ degradation = 0;root->M = 0; i = 0; if (i>=root->ChildNum) return; p= (2) ; for(;i<root->ChildNum && p; i++,p = (3) ){ p->M = 0; (4) ; if (p->d+p->M>Tolerance) { *在p所指节点中放置信号放大器* p->boost=true; p->M = 0; } if (p->d + p->M > degradation) degradation = p->d + p->M; } root->M = (5) ; } }