第9章 面向对象数据库系统习题解答

合集下载

第9章 面向对象的分析设计方法

第9章  面向对象的分析设计方法

第9章 面向对象的分析设计方法
9.1 面向对象的分析与设计方法概 述
面向对象技术是当前的热门话题,也是软件开发方法 的潮流和方向。面向对象方法的形成最初是从面向对象程 序设计语言开始的,随后才逐渐形成了面向对象的分析和 设计。面向对象是近几十年来国内外IT行业最为关注的技 术之一,面向对象技术是一种按照人们对现实世界习惯的 认识论和思维方式来研究和模拟客观世界的方法学。它将 现实世界中的任何事物都视为“对象”,将客观世界看成 是由许多不同种类的对象构成的,每一个对象都有自己的 内部状态和运动规律,不同对象之间的相互联系和相互作 用就构成了完整的客观世界。面向对象方法(Object Oriented,简称OO方法)克服了传统的功能分解方法只能 单纯反映管理功能的结构状态、数据流程模型只侧重反映 事物的信息特征和流程、信息模拟只能被动地迎合实际问 题需要等缺点,构成以系统对象为研究中心,为信息管理 系统的分析与设计提供了一种全新的方法。
第9章 面向对象的分析设计方法
面向对象方法就是以对象为中心、以对象为出发点的方 法。在应用领域中有意义的、与所要解决的问题有关系的任 何人或事物(即我们说的实体)都可以作为对象,它既可以 是具体的物理实体的抽象,也可以是人为的概念,或者是任 何有明确边界和意义的事物或东西。在面向对象方法中,对 象是一组数据(属性)和施加于这些数据上的一组操作代码 (操作)构成的独立类体。换言之,对象是一个有着各种特 殊属性(数据)和行为方式(方法)的逻辑实体。对象是一 个封闭体,它向外界提供一组接口界面,外界通过这些接口 与对象进行交互,这样对象就具有较强的独立性、自治性和 模块性,从而为软件的重用奠定了坚实的基础。
第9章 面向对象的分析设计方法
第9章 面向对象的分析设计方法 章

数据库系统原理课后答案 第九章

数据库系统原理课后答案 第九章

9.1 名词解释(1)OODBS:是指面向对象数据库系统,它既具数据库管理的基本功能,又能支持面向对象的数据模型。

(2)ORDBS:基于对象关系数据模型的DBS称为对象关系数据库系统(ORDBS)。

(3)平面关系模型:传统的关系模型称为“平面关系模型”,它要求关系模式具有第一范式(1NF)性质,关系具有规范化的结构。

也就是规定属性值是不可分解的,即不允许属性值具有复合结构(元组或关系)。

(4)嵌套关系模型:是从平面关系模型发展而成的。

它允许关系的属性值又可以是一个关系,而且可以出现多次嵌套。

嵌套关系突破了1NF的定义框架,是“非1NF关系”。

(5)复合对象模型:在嵌套关系模型上进一步放宽要求。

在关系定义上,集合与元组不再有交替出现的严格限制,此时的关系中,属性类型可以是基本数据类型、结构类型(元组类型)或集体类型(即关系类型)。

(6)数据的泛化/细化:是对概念之间联系进行抽象的一种方法。

当在较低层上的抽象表达了与之联系的较高层上抽象的特殊情况时,就称较高层上抽象是较低层上抽象的"泛化",而较低层上抽象是较高层上抽象的"细化"。

(7)对象关系模型:在传统关系数据基础上,提供元组、数组、集合等更为丰富的数据类型及处理新数据类型操作的能力而形成的数据模型。

(注:传统关系模型只支持字符、数值、字串,布尔值等等基本数据类型及其处理功能)(8)类型级继承性:当继承性发生在类型级时,子类型继承了超类型的属性。

也就是说,超类型所具有的属性,在子类上也具有。

(9)表级继承性:继承性也可发生在表级,(就是元组集合上发生继承),子表继承超表全部属性,超表中每个元组最多可以与子表中一个元组对应,而子表中的每个元组在超表中恰有一个元组对应,并在继承的属性值上具有相同的值。

(10)引用类型:数据类型可以嵌套定义,在嵌套引用时,不是引用对象本身,而是个用对象标识符(即指针),这种指针被称为引用类型。

《实用软件工程》第9章 面向对象设计

《实用软件工程》第9章 面向对象设计

• 信息隐藏:对于类而言,其内部信息如属性的表示方法和操作的实现算法,对 外界是隐藏的。外界通过有限的接口来访问类的内部信息。
17
9.3.2 面向对象设计的原则
• 低耦合:在面向对象设计中,耦合主要指对象之间相互关联的紧密程度,低耦 合有利于降低一个模块改变对其他模块的影响。
• 高内聚:内聚与耦合密切相关,低耦合往往意味着高内聚,高内聚有助于提高 系统独立性。
但随着需求理解的加深,以及对系统认识程度的逐步 提高,设计人员还要对模型进行修正和完善。 • 设计任务管理子系统包括确定任务,分配任务,还包 括权衡一致性、成本、性能等因素以及未来可扩充性。 • 设计数据管理子系统,需要设计数据格式以及相应的 服务,设计数据格式的方法与所用的数据存储管理模 式密切相关,不同数据存储管理模式时,属性和服务 的设计方法是不同的。
9.2 面向对象设计与面向对象分析的关系
• 设计阶段的任务是及时把分析阶段得到的需求转变成符合各项要求的 系统实现方案。与传统的软件工程方法不同的是,面向对象的方法不强调 需求分析和软件设计的严格区分。实际上,面向对象的需求分析和面向对 象的设计活动是一个反复迭代的过程,从分析到设计的过渡,是一个逐渐 扩充、细化和完善分析阶段所得到的各种模型的过程。严格的意义上来讲, 从面向对象分析到面向对象设计不存在转换问题,而是同一种表示方法在 不同范围的运用。面向对象设计也不仅仅是对面向对象分析模型进行细化。
• (2)人机交互子系统包括有效的人机交互所需的显示和输入,这些类在很大程度上 依赖于所用的图形用户界面环境,例如Windows、Delphi、C++,而且可能包括“窗 口”、“菜单”、“滚动条”、“按钮”等针对项目的特殊类。
25
9.5.1 系统分解

面向对象数据库系统考试

面向对象数据库系统考试

面向对象数据库系统考试(答案见尾页)一、选择题1. 面向对象数据库系统的基本特征是什么?A. 高并发读写能力B. 数据共享C. 多态性D. 封装性2. 在面向对象数据库系统中,什么是类和实例?A. 类是对象的蓝图,实例是类的具体实现B. 类是对象的集合,实例是类的实例化结果C. 类是对象的模板,实例是类的具体表现D. 类是对象的继承,实例是类的实例化3. 面向对象数据库系统中,什么是继承?A. 类之间的层次关系B. 类之间的成员变量共享C. 类之间的方法重写D. 类之间的代码复用4. 在面向对象数据库系统中,什么是多态性?A. 同一个操作作用于不同的对象时可以有不同的结果B. 同一个操作作用于不同的对象时可以有不同的结果,但结果必须相同C. 同一个操作作用于不同的对象时可以有不同的结果,且结果可以不同D. 同一个操作作用于不同的对象时可以有不同的结果,且结果必须不同5. 面向对象数据库系统中,什么是封装性?A. 对象的状态只能通过对象的方法访问B. 对象的状态只能通过类的方法访问C. 对象的状态只能通过类的属性访问D. 对象的状态只能通过类的事件访问6. 在面向对象数据库系统中,什么是关联?A. 类之间的层次关系B. 类之间的成员变量共享C. 类之间的方法重写D. 类之间的代码复用7. 面向对象数据库系统中,什么是聚合?A. 类之间的层次关系B. 类之间的成员变量共享C. 类之间的方法重写D. 类之间的代码复用8. 在面向对象数据库系统中,什么是消息传递?A. 类之间的层次关系B. 类之间的成员变量共享C. 类之间的方法重写D. 类之间的代码复用9. 面向对象数据库系统中,什么是多线程?A. 类之间的层次关系B. 类之间的成员变量共享C. 类之间的方法重写D. 类之间的代码复用10. 在面向对象数据库系统中,什么是反射?A. 类之间的层次关系B. 类之间的成员变量共享C. 类之间的方法重写D. 类之间的代码复用11. 面向对象数据库系统(OODBS)是一种基于对象的数据库管理系统,它使用对象的概念来表示数据和管理数据。

面向对象的数据库管理系统考试

面向对象的数据库管理系统考试

面向对象的数据库管理系统考试(答案见尾页)一、选择题1. 什么是面向对象的数据库管理系统(ODBMS)?A. ODBMS是基于关系模型的数据库管理系统B. ODBMS是基于对象模型的数据库管理系统C. ODBMS是基于逻辑模型的数据库管理系统D. ODBMS是基于Web模型的数据库管理系统2. 在面向对象的数据库管理系统中,对象通常指的是什么?A. 数据项B. 数据库中的表C. 实体D. 数据类型3. 面向对象的数据库管理系统与关系数据库管理系统的主要区别是什么?A. 数据模型B. 数据存储方式C. 查询语言D. 应用程序接口4. 在面向对象的数据库管理系统中,类和对象之间的关系是什么?A. 类是对象的蓝图,对象是类的实例B. 类是对象的集合,对象是类的成员C. 类是对象的分类,对象是类的实例D. 类是对象的模板,对象是类的实例5. 在面向对象的数据库管理系统中,继承是一种什么关系?A. 类与类之间的关系B. 类与对象之间的关系C. 对象与对象之间的关系D. 属性与属性之间的关系6. 在面向对象的数据库管理系统中,封装是一种什么关系?A. 类与类之间的关系B. 类与对象之间的关系C. 对象与对象之间的关系D. 属性与属性之间的关系7. 在面向对象的数据库管理系统中,多态是一种什么关系?A. 类与类之间的关系B. 类与对象之间的关系C. 对象与对象之间的关系D. 属性与属性之间的关系8. 在面向对象的数据库管理系统中,什么是泛化?A. 类与类之间的关系B. 类与对象之间的关系C. 对象与对象之间的关系D. 属性与属性之间的关系9. 在面向对象的数据库管理系统中,什么是封装?A. 类与类之间的关系B. 类与对象之间的关系C. 对象与对象之间的关系D. 属性与属性之间的关系10. 在面向对象的数据库管理系统中,什么是多态?A. 类与类之间的关系B. 类与对象之间的关系C. 对象与对象之间的关系D. 属性与属性之间的关系11. 在面向对象的数据库管理系统中,继承是如何实现的?A. 继承是通过在类之间定义共享属性和方法来实现的B. 继承是通过在类之间定义共享属性和方法,并且子类可以覆盖或扩展父类的方法来实现的C. 继承是通过在类之间定义共享属性和方法,并且子类可以覆盖或添加新的方法来实现的D. 继承是通过在类之间定义共享属性和方法,并且子类可以修改父类的方法来实现的12. 在面向对象的数据库管理系统中,多态性是如何实现的?A. 多态性是通过在类之间定义共享属性和方法来实现的B. 多态性是通过在类之间定义共享属性和方法,并且子类可以覆盖或扩展父类的方法来实现的C. 多态性是通过在类之间定义共享属性和方法,并且子类可以修改父类的方法来实现的D. 多态性是通过在类之间定义共享属性和方法,并且子类可以添加新的方法来实现的13. 在面向对象的数据库管理系统中,封装性是如何实现的?A. 封装性是通过在类之间定义共享属性和方法来实现的B. 封装性是通过在类之间定义共享属性和方法,并且子类可以覆盖或扩展父类的方法来实现的C. 封装性是通过在类之间定义共享属性和方法,并且子类可以修改父类的方法来实现的D. 封装性是通过在类之间定义共享属性和方法,并且子类可以添加新的方法来实现的14. 面向对象的数据库管理系统与关系数据库管理系统在数据一致性和完整性方面的主要区别是什么?A. 面向对象的数据库管理系统通常提供更强的数据一致性B. 面向对象的数据库管理系统通常提供更好的数据完整性C. 面向对象的数据库管理系统通常提供更强的数据安全性D. 面向对象的数据库管理系统通常提供更好的数据独立性15. 在面向对象的数据库管理系统中,什么是多态性?A. 多态性是指在多个对象中重复使用相同的属性和方法B. 多态性是指在多个对象中重复使用相同的类C. 多态性是指在多个对象中重复使用相同的对象D. 多态性是指在多个对象中重复使用相同的操作16. 面向对象数据库管理系统的优势包括哪些?A. 更好的数据完整性。

《MySQL数据库原理、设计与应用》第9章课后习题答案

《MySQL数据库原理、设计与应用》第9章课后习题答案

第九章一、填空题1.数据库2.原子3.START TRANSACTION4.AUTOCOMMIT5.READ UNCOMMITTED二、判断题对1.对2.对3.错4.对5.对三、选择题1. C2.B、C、D3. B4. B5. D四、简单题1.请简述什么是事务。

答:在MySQL中,事务就是针对数据库的一组操作,它可以由一条或多条SQL语句组成,且每个SQL语句是相互依赖的。

只要在程序执行过程中有一条SQL语句执行失败或发生错误,则其他语句都不会执行。

也就是说,事务的执行要么成功,要么就返回到事务开始前的状态,这就保证了同一事务操作的同步性和数据的完整性。

2.请简述什么是事务的ACID特性。

答:①原子性是指一个事务必须被视为一个不可分割的最小工作单元。

②一致性是指在事务处理时,无论执行成功还是失败,都要保证数据库系统处于一致的状态,保证数据库系统从不返回到一个未处理的事务中。

③隔离性是指当一个事务在执行时,不会受到其他事务的影响。

④持久性是指事务一旦提交,其对数据库的修改就是永久性的。

五、实训题1.请利用事务实现在用户下订单时,检查商品库存是否充足。

START TRANSACTION;1# 查询id为1的商品的库存SELECT stock FROM sh_goods WHERE id = 1;# 根据结果回滚或提交COMMIT;2.请利用事务在用户下订单前,检测当前用户是否已被激活,若未激活,则需激活此用户后,才能再次下订单。

START TRANSACTION;# 查询id为1的用户是否激活SELECT is_active FROM sh_user WHERE id = 1;# 根据结果回滚或提交COMMIT;2。

面向对象的系统分析与设计(山东联盟)智慧树知到答案章节测试2023年山东财经大学

面向对象的系统分析与设计(山东联盟)智慧树知到答案章节测试2023年山东财经大学

第一章测试1.下面关于功能分解法的优点描述错误的是A:与模块化编程结合使用后,使开发效率有很大提高B:以系统需要提供的功能为中心组织系统C:删除了GoTo语句,使软件能得到有效维护D:具有较强的应对需求变化的能力答案:D2.下面的开发方法能够兼顾功能和数据的是A:面向对象方法B:信息建模法C:结构化方法D:功能分解法答案:A3.结构化方法采用数据流、加工进行建模,需求变化极易引起两者的变动,进而引起其他数据流和加工的变化A:错B:对答案:B4.功能分解法以功能作为系统的构造块,数据组织能力强。

A:错B:对答案:A5.面向对象方法学的出发点和基本原则是尽可能模拟人类习惯的思维方式,分析、设计和实现一个软件系统的方法和过程,尽可能接近于人类认识世界解决问题的方法和过程。

因此面向对象方法有许多特征,如软件系统是由对象组成的;();对象彼此之间仅能通过传递消息互相联系;层次结构的继承。

A:强调需求分析重要性B:把对象划分成类,每个对象类都定义一组数据和方法C:对既存类进行调整D:开发过程基于功能分析和功能分解答案:B第二章测试1.下列关于UML叙述正确的是()。

A: UML仅是一组图形的集合B: UML仅适用于系统的分析与设计阶段C: UML是一种语言,也是系统设计的方法D:在信息系统开发过程方面,UML是一种建模语言,不是对开发过程的细节进行描述的工具答案:D2.UML的最终产物就是最后提交的可执行的软件系统和()。

A: 类图B: 动态图C: 用户手册D: 相应的软件文档资料答案:D3.UML提供了4种静态图用于对系统的静态方面进行可视化、详述、构造和文档化。

其中()是面向对象系统建模中最常用的图,用于说明系统的静态设计视图。

A: 部署图B: 组件图C: 对象图D: 类图答案:D4.UML提供了4种结构图用于对系统的静态方面进行可视化、详述、构造和文档化。

其当需要显示代码物理结构,并用于实际的编程时,应该选择()。

面向对象数据库考试

面向对象数据库考试

面向对象数据库考试(答案见尾页)一、选择题1. 什么是面向对象数据库?A. 一种数据库,其数据结构以对象为单位进行组织B. 一种关系型数据库C. 一种非关系型数据库D. 一种基于Web的数据库2. 面向对象数据库与传统数据库的主要区别是什么?A. 数据模型B. 存储机制C. 操作语言D. 应用领域3. 在面向对象数据库中,什么是类?A. 一种数据类型B. 一种对象C. 一种属性D. 一种方法4. 面向对象数据库中的继承是如何实现的?A. 封装B. 多态C. 继承D. 抽象5. 在面向对象数据库中,什么是多态?A. 一种数据类型B. 一种对象C. 一种属性D. 一种方法6. 面向对象数据库中的封装是什么意思?A. 将数据隐藏在对象内部B. 将数据暴露给外部使用C. 一种数据类型D. 一种对象7. 面向对象数据库中的抽象是什么?A. 一种数据类型B. 一种对象C. 一种属性D. 一种方法8. 在面向对象数据库中,什么是关联?A. 两个对象之间的直接联系B. 两个对象之间的间接联系C. 一种数据类型D. 一种对象9. 面向对象数据库中的枚举是一种什么类型的对象?A. 数据类型B. 对象C. 属性D. 方法10. 在面向对象数据库中,什么是序列化?A. 一种数据类型B. 一种对象C. 一种属性D. 一种方法11. 面向对象数据库(OODB)与关系型数据库的主要区别是什么?A. OODB支持多种数据类型B. OODB具有更好的数据完整性C. OODB使用面向对象的查询语言(OQL)D. OODB更适合于处理大量复杂数据12. 在面向对象数据库中,什么是类和实例?A. 类是对一组具有相同属性的对象的抽象描述B. 实例是类的具体实现C. 类和实例共同定义了对象的行为D. 类是对象的蓝图,实例是根据蓝图创建的13. 在面向对象数据库中,什么是封装?A. 将数据隐藏在对象内部B. 将数据转换为公共APIC. 将数据与操作数据的代码捆绑在一起D. 将数据与对象的状态分开14. 面向对象数据库中的多态性是什么意思?A. 不同的类可以共享接口B. 同一个接口可以被不同的对象以不同的方式实现C. 对象可以继承多个接口D. 对象可以拥有自己的数据15. 在面向对象数据库中,什么是多线程?A. 同一进程内的多个线程B. 数据库中的多个用户同时进行的操作C. 数据库管理系统的一个特性D. 以上都不是16. 面向对象数据库中的关联关系有哪些类型?A. 一对一关联B. 一对多关联C. 多对多关联D. 依赖关系17. 在面向对象数据库中,什么是抽象类?A. 包含所有字段的类B. 包含所有方法的类C. 包含部分字段和方法的类D. 用于定义接口的类18. 面向对象数据库中的持久化是指什么?A. 将数据存储在磁盘上B. 将数据存储在内存中C. 将数据转换为可存储的形式D. 将数据与对象的状态分开19. 在面向对象数据库中,什么是集合?A. 一种数据结构,用于存储同类对象B. 一种数据结构,用于存储不同类型的对象C. 一种数据结构,用于存储对象的引用D. 一种数据结构,用于存储对象的索引20. 在面向对象数据库中,对象之间的关系可以通过什么来定义?A. 类与类之间的关系B. 属性与属性之间的关系C. 方法与方法之间的关系D. 继承与继承之间的关系21. 面向对象数据库的体系结构通常包括哪些层次?A. 存储层B. 操作层C. 对象类层D. 对象实例层22. 面向对象数据库中,什么是封装?A. 将数据与操作数据的函数放在一起B. 将数据与操作数据的函数分别放置C. 将数据与操作数据的函数分别放置在不同的组件中D. 将数据与操作数据的函数分别放置在不同的层次中23. 面向对象数据库中的继承有哪些类型?A. 单继承B. 多继承C. 接口继承D. 抽象继承24. 在面向对象数据库中,什么是动态聚类?A. 自动根据数据内容将对象分组B. 根据查询需求动态创建新的对象类C. 根据历史数据预测未来数据的内容D. 根据历史数据预测未来数据的内容,并自动创建新的对象类25. 面向对象数据库的查询语言通常是什么?A. SQLB. OQL(Object Query Language)C. NoSQLD. DQL(Database Query Language)26. 在面向对象数据库中,什么是泛化?A. 将数据与操作数据的函数放在一起B. 将数据与操作数据的函数分别放置C. 将数据与操作数据的函数分别放置在不同的组件中D. 将数据与操作数据的函数分别放置在不同的层次中27. 面向对象数据库中的多态性如何实现?A. 继承B. 封装C. 抽象D. 多态性28. 什么是面向对象数据库中的关联?A. 数据之间的直接联系B. 数据之间的间接联系C. 数据之间的依赖关系D. 数据之间的平等关系29. 在面向对象数据库中,什么是聚合?A. 数据对象之间的组合B. 数据对象之间的聚集C. 数据对象之间的关联D. 数据对象之间的依赖关系30. 面向对象数据库中的继承有几种类型?A. 一级继承B. 二级继承C. 三级继承D. 四级继承31. 在面向对象数据库中,什么是抽象数据类型(ADT)?A. 一种数据库的数据模型B. 一种数据库的操作接口C. 一种数据库的数据结构D. 一种数据库的数据访问方法32. 什么是面向对象数据库的四层模式结构?A. 表模式、用户模式、存储模式和概念模式B. 表模式、用户模式、局部模式和全局模式C. 表模式、视图模式、存储模式和概念模式D. 表模式、用户模式、全局模式和存储模式33. 在面向对象数据库中,什么是对象类?A. 数据对象的抽象B. 数据对象的实例C. 数据对象的组织D. 数据对象的定义34. 什么是继承在面向对象数据库中的含义?A. 子类可以继承父类的属性和方法B. 子类可以覆盖父类的属性和方法C. 子类可以添加新的属性和方法D. 子类可以限制父类的属性和方法35. 什么是泛型在面向对象数据库中的用途?A. 为了增加数据库的灵活性B. 为了增加数据库的可扩展性C. 为了增加数据库的性能D. 为了增加数据库的复杂性36. 什么是聚合在面向对象数据库中的含义?A. 两个或多个对象之间的直接联系B. 两个或多个对象之间的间接联系C. 两个或多个对象之间的弱联系D. 两个或多个对象之间的强联系37. 在面向对象数据库中,什么是动态绑定?A. 在运行时确定对象的方法调用B. 在编译时确定对象的方法调用C. 在运行时确定对象的数据成员访问D. 在编译时确定对象的数据成员访问38. 什么是反射在面向对象数据库中的用途?A. 为了增加数据库的灵活性B. 为了增加数据库的可扩展性C. 为了增加数据库的性能D. 为了增加数据库的复杂性二、问答题1. 什么是面向对象数据库?2. 面向对象数据库与传统数据库的区别是什么?3. 如何实现面向对象数据库中的对象持久化?4. 面向对象数据库的优势和劣势是什么?5. 什么是对象关系数据库?它与面向对象数据库有什么区别?6. 什么是数据库事务?它为什么重要?7. 什么是数据库索引?它有什么作用?8. 什么是数据库备份和恢复?它为什么重要?参考答案选择题:1. A2. A3. B4. C5. D6. A7. D8. A9. A 10. B11. C 12. A 13. A 14. B 15. A 16. ABCD 17. D 18. C 19. A 20. D21. ACD 22. A 23. ABCD 24. B 25. B 26. C 27. D 28. A 29. B 30. A31. B 32. A 33. A 34. A 35. A 36. A 37. A 38. A问答题:1. 什么是面向对象数据库?面向对象数据库(Object-Oriented Database,简称OODB)是一种采用面向对象方法论和关系模型相结合的数据库管理系统。

面向对象课后题答案

面向对象课后题答案
C. 使用内联函数,可以加快程序执行的速度,但会增加程序代码的大小
D. 使用内联函数,可以减小程序代码大小,但使程序执行的速度减慢
【结果分析】
内联函数主要是解决程序的运行效率问题。在程序编译时,编译系统将程序中出现内联函数调用的地方用函数体进行替换,进而减少了程序运行的时间,但会增加程序代码的大小。它是以空间换取时间,因此内联函数适用于功能不太复杂,但要求被频繁调用的函数。
B. 对象实际是功能相对独立的一段程序
C. 各个对象间的数据可以共享是对象的一大优点
D. 在面向对象的程序中,对象之间只能通过消息相互通信
【结果分析】
对象是计算机内存中的一块区域。在对象中,不但存有数据,而且存有代码,使得每个对象在功能上相互之间保持相对独立。对象之间存在各种联系,但它们之间只能通过消息进行通信。
C. C++对C语言进行了一些改进 D. C++和C语言都是面向对象的
【结果分析】
C语言是面向过程的。C++语言是一种经过改进的更为优化的C语言,是一种混合型语言,既面向过程也面向对象。
(6) 面向对象的程序设计将数据结构与( A )放在一起,作为一个相互依存、不可分割的整体来处理。
A. 算法 B. 信息 C. 数据隐藏 D. 数据抽象
四、 判断题
(1) 在高级程序设计语言中,一般用类来实现对象,类是具有相同属性和行为的一组对象的集合,它是创建对象的模板。( √ )
(2) C++语言只支持面向对象技术的抽象性、封装性、继承性等特性,而不支持多态性。( × )
【结果分析】
C++语言不仅支持面向对象技术的抽象性、封装性、继承性等特性,而且支持多态性。

数据库技术与应用(第二版)课后答案

数据库技术与应用(第二版)课后答案

第1章习题参考答案1.思考题(1)什么是数据库、数据库管理系统、数据库系统?它们之间有什么联系?答:数据库是存贮在计算机内的有结构的数据集合;数据库管理系统是一个软件,用以维护数据库、接受并完成用户对数据库的一切操作;数据库系统指由硬件设备、软件系统、专业领域的数据体和管理人员构成的一个运行系统。

(2)当前,主要有哪几种新型数据库系统?它们各有什么特点?用于什么领域,试举例说明?答:主要有:分布式数据库、面向对象数据库、多媒体数据库、数据仓库技术、空间数据库。

(3)什么是数据模型?目前数据库主要有哪几种数据模型?它们各有什么特点?答:数据模型是一组描述数据库的概念。

这些概念精确地描述数据、数据之间的关系、数据的语义和完整性约束。

很多数据模型还包括一个操作集合。

这些操作用来说明对数据库的存取和更新。

数据模型应满足3方面要求:一是能真实地模拟现实世界;二是容易为人们理解;三是便于在计算机上实现。

目前在数据库领域,常用的数据模型有:层次模型、网络模型、关系模型以及最近兴起的面向对象的模型。

(4)关系数据库中选择、投影、连接运算的含义是什么?答:1)选择运算:从关系中筛选出满足给定条件的元组(记录)。

选择是从行的角度进行运算,选择出的记录是原关系的子集。

2)投影运算:从关系中指定若干个属性(字段)组成新的关系。

投影是从列的角度进行运算,得到的新关系中的字段个数往往比原关系少。

3)连接运算:将两个关系按照给定的条件横向拼接成新的关系。

连接过程是通过两个关系中公有的字段名进行的。

(5)关键字段的含义是什么?它的作用是什么?答:一个关系中可以确定一个字段为关键字段,该字段的值在各条记录中不能有相同的值。

(如:门牌号码);关键字段的作用主要是为建立多个表的关联和进行快速查询。

(6)什么是E-R图?E-R 图是由哪几种基本要素组成?这些要素如何表示?答:E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。

数据库技术与应用SQLServer2008第9章习题参考答案

数据库技术与应用SQLServer2008第9章习题参考答案

数据库技术与应用SQLServer2008第9章习题参考答案第9章习题解答1.思考题(1)VB对象的3要素是指什么?它们的作用是什么?答:对象的属性、方法、事件就称为对象的三要素。

1)属性属性描述对象的性质或特征,即该对象是什么样的。

2)方法方法反映对象的行为,即该对象会干什么。

3)事件事件指明对象在什么条件下发生什么事情,即在什么条件下执行哪段代码。

(2)什么是变量的作用域?作用域有哪些类型?什么是变量的生存期?生存期有哪些类型?答:1)变量的作用域是指变量的有效范围。

2)根据作用域,变量可分为局部变量、窗体级变量、模块级变量、全局变量。

局部变量:在过程体内部定义,其作用域是从定义起到所在语句块或过程结束为止的局部范围,其他地方不能使用。

窗体级变量:是在窗体代码的通用声明区用Dim或Private关键字定义的变量,它不属于该窗体的任何过程,可以被本窗体内的所有过程访问,而不能为其他窗体或模块使用。

窗体级变量与窗体的生存期一样,只要窗体不消失,它就不消失。

模块级变量:与窗体级变量同级别,它是在模块的“通用声明”区用Dim或Private 关键字定义的变量。

它不属于该模块的任何过程,可以被本模块内的所有过程访问,而不能用在其他模块或窗体中。

全局变量:是在窗体或模块的通用声明区用Public关键字进行定义的变量,它在整个工程的所有过程中均可使用,且在应用程序运行过程中一直存在。

3)变量的生存期表示它可以存储值的时间周期。

在生存期内变量的值可以更改,但变量总是存储某些值。

即指在程序执行的动态过程中,变量在哪个阶段是存在的。

4)局部变量根据生存期分为动态局部变量和静态局部变量,两者的区别是:(a)动态局部变量的生存期是:程序执行到定义该变量的Dim 语句时,在内存建立起该变量,此时该变量“诞生”了;程序继续往下执行到该变量所在的程序块(或过程)结束时,该变量“死亡”,其代表的值也不复存在。

如果该变量所在过程再次执行,再次执行到定义该变量的Dim语句则一个新的变量“诞生”,与上次已“死亡”的同名的变量毫无关系。

数据库系统原理教程课后习题及答案(第九章)

数据库系统原理教程课后习题及答案(第九章)

第9章数据库恢复技术1.试述事务的概念及事务的4 个特性。

答:事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。

事务具有4 个特性:原子性(Atomicity )、一致性(consistency )、隔离性( Isolation )和持续性(Durability )。

这4 个特性也简称为ACID 特性。

原子性:事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。

一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。

隔离性:一个事务的执行不能被其他事务干扰。

即一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。

持续性:持续性也称永久性(Perfnanence ) ,指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。

接下来的其他操作或故障不应该对其执行结果有任何影响。

2 .为什么事务非正常结束时会影响数据库数据的正确性,请列举一例说明之。

答:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。

如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是不一致的状态。

例如某工厂的库存管理系统中,要把数量为Q 的某种零件从仓库1 移到仓库2 存放。

则可以定义一个事务T , T 包括两个操作;Ql = Ql 一Q , Q2= Q2 + Q。

如果T 非正常终止时只做了第一个操作,则数据库就处于不一致性状态,库存量无缘无故少了Q 。

3 .数据库中为什么要有恢复子系统?它的功能是什么?答:因为计算机系统中硬件的故障、软件的错误、操作员的失误以及恶意的破坏是不可避免的,这些故障轻则造成运行事务非正常中断,影响数据库中数据的正确性,重则破坏数据库,使数据库中全部或部分数据丢失,因此必须要有恢复子系统。

面向对象的数据库系统设计考试

面向对象的数据库系统设计考试

面向对象的数据库系统设计考试(答案见尾页)一、选择题1. 在面向对象的数据库系统中,什么是对象-关系模型?A. 对象和关系都可以表示数据B. 对象是数据的实例,关系是数据的组织方式C. 关系可以表示对象之间的关系D. 对象和关系都是数据的表示方式2. 面向对象数据库系统(ODBMS)与传统的关系数据库系统(RDBMS)的主要区别是什么?A. ODBMS支持面向对象的数据模型B. ODBMS支持复杂查询C. ODBMS更适合处理大量数据D. ODBMS更易于维护3. 在面向对象的数据库中,类(Class)和实例(Instance)有什么不同?A. 类是对一组具有相同属性的对象的抽象描述,而实例是类的具体实现B. 类是数据的抽象,实例是数据的实例化结果C. 类定义了一组方法,实例用于执行这些方法D. 类和实例没有直接关系4. 面向对象数据库中的继承是如何实现的?A. 继承是通过在类之间定义共享属性来实现的B. 继承是通过在类之间定义共享方法来实现的C. 继承是通过在类之间定义共享代码块来实现的D. 继承是通过在类之间定义共享接口来实现的5. 在面向对象的数据库中,什么是封装(Encapsulation)?A. 将数据隐藏在对象内部,只通过公共方法访问B. 将数据隐藏在对象内部,不提供任何访问方法C. 将数据放在对象外部,通过公共方法访问D. 将数据放在对象外部,不提供任何访问方法6. 面向对象数据库系统中的多态性是指什么?A. 不同的对象可以对同一消息做出不同的响应B. 不同的对象可以对同一操作做出不同的响应C. 不同的对象可以被同一方法调用D. 不同的对象可以被同一事件触发7. 在面向对象的数据库中,什么是多维数据模型?A. 一种数据模型,其中数据以表格的形式组织B. 一种数据模型,其中数据以树状图的形式组织C. 一种数据模型,其中数据以图形的形式组织D. 一种数据模型,其中数据以网络的形式组织8. 面向对象数据库系统中的泛化(Generalization)是什么意思?A. 泛化是一种将子类对象视为父类对象的行为B. 泛化是一种将父类对象视为子类对象的行为C. 泛化是一种在多个类之间共享属性或方法的行为D. 泛化是一种在多个类之间共享对象的行为9. 在面向对象的数据库中,什么是关联(Association)?A. 两个或多个类之间的关系,其中一个类对另一个类有某种属性B. 两个或多个类之间的关系,其中一个类对另一个类有某种操作C. 两个或多个类之间的关系,其中一个类对另一个类有相同的属性D. 两个或多个类之间的关系,其中一个类对另一个类有相同的方法10. 面向对象数据库系统中的聚合(Aggregation)是什么意思?A. 两个或多个类之间的关系,其中一个类完全包含在另一个类中B. 两个或多个类之间的关系,其中一个类部分包含在另一个类中C. 两个或多个类之间的关系,其中一个类对另一个类有某种属性D. 两个或多个类之间的关系,其中一个类对另一个类有某种操作11. 面向对象数据库系统(OOSD)与传统的关系数据库系统在数据模型上有何主要区别?A. OOSD使用面向对象的数据模型,而传统关系数据库使用关系数据模型。

面向对象数据库(ODBMS)考试

面向对象数据库(ODBMS)考试

面向对象数据库(ODBMS)考试(答案见尾页)一、选择题1. 面向对象数据库(ODBMS)是一种基于对象概念的数据库管理系统,它使用对象及其之间的关系来表示和存储数据。

请问下列哪一项不是面向对象数据库的核心特性?A. 封装B. 多态C. 继承D. 抽象2. 在面向对象数据库中,类可以被实例化为对象。

以下哪个选项描述了面向对象编程中的类与对象的关系?A. 类是对象的蓝图或原型。

B. 类是对象的实例。

C. 类是对象的集合。

D. 类是对象的祖先。

3. 面向对象数据库中的继承允许我们定义一个类作为另一个类的子类。

这种机制有助于实现代码重用。

在面向对象数据库中,类之间的继承关系是如何表示的?A. 使用属性和方法的定义。

B. 使用接口的定义。

C. 使用类的层次结构。

D. 使用类的具体实例。

4. 在面向对象数据库中,封装是指将数据(属性)和操作数据的函数(方法)结合在一起,形成一个独立的单元。

这种机制有助于保护数据的完整性。

请问封装的主要目的是什么?A. 防止数据泄露B. 提高数据访问效率C. 确保数据一致性D. 保证数据安全性5. 在面向对象数据库中,多态是指允许不同的对象对同一消息做出响应的能力,即同一个接口可以被不同的对象以不同的方式实现。

这种机制有助于提高程序的灵活性。

请问多态在面向对象数据库中的应用主要体现在哪些方面?A. 不同的类可以使用相同的接口进行交互。

B. 类的实例化可以隐藏实现细节。

C. 对象的继承可以实现代码重用。

D. 类的封装可以隐藏实现细节。

6. 面向对象数据库中的关联关系是指两个或多个类之间的关系,这种关系描述了一个类与另一个类之间是否存在某种联系。

请问关联关系主要有哪几种类型?A. 一对一B. 一对多C. 多对多D. 依赖7. 在面向对象数据库中,继承和多态都是用来实现代码重用的机制。

它们的区别在于:A. 继承允许一个类继承另一个类的所有属性和方法,而多态只允许一个接口被不同的对象以不同的方式实现。

UML面向对象设计与分析 课后习题答案

UML面向对象设计与分析 课后习题答案

等。并使用建模活动图的五个步骤,逐步为用例建模活动图。
<<include>> OvertimeProcess
Librarian
Return Book <<include>>
DisplayLoans
图 4-33 还书用例
用户
系统
输入图书信息
显示过期信息 确定归还
查找该图书的借阅关系
查看是否有过 期的借阅关系
2.请求打印文件 17.出钞请求
5.控制打印
3.1.队列是否为空 3.2.添加到队列 4.返回打印文件
1.打印文件
Computer
PrintServer
Printer
Queue
3.根据 ATM 机上取款工作流的顺序图,为其建立通信图模型。
1.插入IC卡
读卡机
5.输入密码 10.输入取款请求 14.输入取款金额
Instructor
Tutor
1
1
Student
UnderGraduate
Graduate
Teacher
Professor
1 1
1 n
TeacherAssistant
2.根据用例图和系统需求描述创建类图。本练习将根据如下所示的系统需求和如图 3-63 所 示的用例图建模一个类图。
系统需求描述: (1)系统允许管理员通过从磁盘加载存货数据来运行存货清单报告。 (2)管理员通过从磁盘加载存货数据、向磁盘保存存货数据来更新存货清单。 (3)售货员做销售记录。 (4)电话操作员是处理电话订单的特殊售货员。 (5)任何类型的销售都需要更新存货清单。 (6)如果交易使用了信用卡,那么售货员需要核实信用卡。 (7)如果交易使用了支票,那么售货员需要核实支票。

面向对象数据库系统考试

面向对象数据库系统考试

面向对象数据库系统考试(答案见尾页)一、选择题1. 面向对象数据库系统的基本特性是什么?A. 高并发读写能力B. 丰富的面向对象操作C. 数据库的可扩展性D. 数据库的分布式处理2. 在面向对象数据库系统中,什么是类和实例?A. 类是一种数据结构,实例是类的具体实现B. 类是一种数据结构,实例是类的实例化结果C. 类是一种程序设计语言中的类,实例是类的运行时对象D. 类是一种数据结构,实例是类的原型3. 面向对象数据库系统与关系数据库系统的区别主要体现在哪些方面?A. 数据模型B. 数据操作C. 数据存储D. 数据管理4. 在面向对象数据库系统中,什么是继承?A. 类之间的属性继承B. 类之间的方法继承C. 类之间的状态继承D. 类之间的所有特性继承5. 面向对象数据库系统中的封装性是指什么?A. 对象的状态只能通过对象的方法进行访问B. 对象的状态只能通过对象的属性进行访问C. 对象的状态只能通过类的方法进行访问D. 对象的状态只能通过类的属性进行访问6. 在面向对象数据库系统中,什么是多态?A. 不同的对象可以对同一消息做出不同的响应B. 不同的对象可以对同一消息做出相同的响应C. 同一对象可以对不同消息做出不同的响应D. 同一对象可以对同一消息做出相同的响应7. 面向对象数据库系统中的多继承是指什么?A. 一个类可以有多个父类B. 一个类可以有多个子类C. 一个类可以有多个父类和子类D. 以上都不正确8. 在面向对象数据库系统中,什么是抽象类?A. 包含抽象方法的类B. 包含抽象属性的类C. 包含抽象操作的类D. 包含抽象实体的类9. 面向对象数据库系统中的关联类是什么?A. 用来表示实体之间的关系B. 用来表示实体之间的属性C. 用来表示实体之间的方法D. 用来表示实体之间的所有关系10. 在面向对象数据库系统中,什么是泛化?A. 一种特殊的类,包含所有的对象B. 一种特殊的类,不包含任何对象C. 一种特殊的类,包含所有的抽象类D. 一种特殊的类,包含所有的子类11. 面向对象数据库系统中的继承是如何实现的?A. 基于类之间的继承关系B. 基于类之间的接口实现C. 基于类之间的属性继承D. 基于类之间的方法继承12. 在面向对象数据库系统中,什么是封装?A. 将数据隐藏在对象内部,只通过对象的方法访问B. 将数据隐藏在对象内部,通过公共方法访问C. 将数据放在对象外部,通过公共方法访问D. 将数据放在对象外部,通过私有方法访问13. 面向对象数据库系统中的多态性如何体现?A. 子类可以覆盖父类的方法,实现不同的功能B. 子类可以重写父类的方法,实现相同的功能C. 子类可以添加新的方法,实现不同的功能D. 子类可以修改父类的方法,实现相同的功能14. 在面向对象数据库系统中,什么是关联?A. 两个或多个表之间的关系,其中一个表是另一个表的外键B. 两个或多个表之间的关系,其中一个表包含另一个表的所有数据C. 两个或多个表之间的关系,其中一个表是另一个表的一部分D. 两个或多个表之间的关系,其中一个表包含另一个表的部分数据15. 面向对象数据库系统中的抽象类和接口有什么区别?A. 抽象类不能被实例化,接口可以被实例化B. 抽象类和接口都不能被实例化C. 抽象类可以被实例化,接口不能被实例化D. 抽象类和接口都可以被实例化16. 在面向对象数据库系统中,什么是聚合?A. 两个或多个表之间的关系,其中一个表是另一个表的外键B. 两个或多个表之间的关系,其中一个表包含另一个表的所有数据C. 两个或多个表之间的关系,其中一个表是另一个表的一部分D. 两个或多个表之间的关系,其中一个表包含另一个表的部分数据17. 面向对象数据库系统中的复合对象是如何定义的?A. 将多个对象组合在一起形成一个更复杂对象B. 将多个对象组合在一起形成一个单一对象C. 将多个对象组合在一起形成一个独立的对象D. 将多个对象组合在一起形成一个新的对象类型18. 在面向对象数据库系统中,什么是反射?A. 对象的状态和行为的一种表示B. 对象的属性和方法的一种表示C. 对象的配置信息的一种表示D. 对象的元数据的一种表示19. 面向对象数据库系统的基本特征是什么?A. 存储对象B. 高并发读写C. 对象类和继承D. 数据库事务20. 在面向对象数据库系统中,什么是对象类?A. 数据对象B. 数据对象的集合C. 具有相同属性和操作的类的集合D. 数据对象的状态21. 面向对象数据库系统对对象关系的建模是通过什么实现的?A. 关系模型B. 面向对象模型C. 对象关系模型D. 数据库模式22. 面向对象数据库系统中的多态性是如何表现的?A. 类可以实现多个接口B. 类可以有多个属性C. 类可以有多个方法D. 类可以有不同的状态23. 在面向对象数据库系统中,什么是动态查询?A. 根据输入动态生成查询语句B. 根据用户输入动态修改查询语句C. 根据统计信息动态生成查询语句D. 根据查询条件动态生成查询语句24. 面向对象数据库系统中的泛化是什么?A. 将子类对象当作父类对象处理B. 将子类对象当作不同的对象处理C. 将子类对象当作相同的对象处理D. 将子类对象当作特殊的父类对象处理25. 面向对象数据库系统中的持久化是指什么?A. 将数据存储在文件中B. 将数据存储在内存中C. 将数据存储在数据库中D. 将数据存储在缓存中26. 面向对象数据库系统的核心特性是什么?A. 对象持久性B. 类继承C. 多态性D. 动态查询27. 在面向对象数据库系统中,什么是类?A. 数据结构的抽象B. 数据库中的表C. 对象的蓝图或模板D. 数据库中的列28. 面向对象数据库系统中的对象可以包括哪几种类型?A. 实体类B. 操作类C. 控制类D. 维护类29. 在面向对象数据库系统中,什么是多态性?A. 同一个操作可以作用于不同的对象上产生不同的结果B. 不同的对象可以对同一消息做出响应C. 对象的操作可以具有不同的参数D. 对象的状态可以改变30. 面向对象数据库系统如何处理数据完整性?A. 通过约束条件B. 通过存储过程C. 通过触发器D. 通过视图31. 面向对象数据库系统与关系数据库系统的查询语言有何不同?A. 面向对象数据库系统的查询语言更接近于自然语言B. 面向对象数据库系统的查询语言更注重数据的结构和关系C. 面向对象数据库系统的查询语言更侧重于操作的原子性D. 面向对象数据库系统的查询语言更类似于关系数据库系统的查询语言32. 面向对象数据库系统的基本特点是什么?A. 高并发读写能力B. 数据库管理系统提供类定义语言(DDL)C. 支持封装、继承和多态D. 所有以上特性33. 在面向对象数据库系统中,什么是对象关系模型?A. 数据库中的关系表B. 一种对象类型与关系表之间的映射C. 一种对象的集合D. 一种数据结构34. 面向对象数据库系统与传统数据库系统的区别主要体现在哪些方面?A. 数据模型B. 查询语言C. 并发处理D. 数据存储方式35. 面向对象数据库系统中的类可以表示现实世界中的什么?A. 实体类B. 控制类C. 数据类D. 以上所有36. 面向对象数据库系统中的多态性如何实现?A. 封装B. 继承C. 抽象D. 多态性是面向对象编程的一个固有特性,无需特别实现37. 面向对象数据库系统中的多继承是如何实现的?A. 封装B. 继承C. 抽象D. 多态性38. 面向对象数据库系统中的封装是指什么?A. 将数据与操作数据的代码封装在一起B. 将数据与操作数据的代码分别封装在不同的类中C. 将数据与操作数据的代码封装在同一个类中39. 面向对象数据库系统中的关系模型与纯关系数据库模型的主要区别是什么?A. 数据模型B. 查询语言C. 并发处理D. 数据存储方式二、问答题1. 什么是面向对象数据库系统(OODBS)?请简述其核心特性。

Access数据库与VBA面向对象程序设计课后答案

Access数据库与VBA面向对象程序设计课后答案

Access数据库与VBA面向对象程序设计课后答案第1章数据库系统概述1. 什么是数据库?什么是数据库系统?请问:数据库(database)就是存放数据的仓库,严苛的讲,数据库就是长期存储在计算机内,存有非政府的,可以共享资源的大量数据子集。

数据库系统(database systems),是由数据库及其管理软件组成的系统。

它是为适应数据处理的需要而发展起来的一种较为理想的数据处理的核心机构。

它是一个实际可运行的存储、维护和应用系统提供数据的软件系统,是存储介质、处理对象和管理系统的集合体。

2. 什么就是数据库管理系统?它存有哪些主要功能?答:数据库管理系统(database management system)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称dbms。

它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。

数据库管理系统的主要功能存有:数据定义、数据操作方式、数据库的运转管理、数据组织、数据库的维护、数据库的保护和通信。

3. 说出几种常用的数据模型。

请问:层次模型、网状模型、关系模型。

4. 什么是关系模型?请问:关系模型就是用二维表的形式则表示实体和实体间联系的数据模型。

5. 简述数据库设计的步骤。

请问:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库的创建和测试、数据库运行和维护。

第2章 SQL 语言简介1. 什么就是SQL语言?SQL语言具备哪些特点和功能?答:SQL是一种数据库查询和程序设计语言,用于存取数据以及查询更新和管理关系数据库系统。

SQL的特点和功能存有:查阅,操作方式,定义和掌控四个方面,SQL语言具备高度的非过程化,语言简约,语义显著,语法结构直观,直观易懂的特点。

SQL语言即为可以做为单一制语言采用,用户可以在终端键盘上轻易键入SQL命令对数据库展开操作方式,也可以做为嵌入式语言,内嵌至其他高级语言中。

2. SQL语言包含哪几个部分?请问:SQL语言涵盖4个部分:数据定义语言(DDL-Data Definition Language)、数据查询语言(DQL-Data Query Language)、数据压低语言(DML-Data Manipulation Language)、数据掌控语言(DCL-Data Control Language)3. 在联接查询中,包含哪几类联接?请问:联结可以分成3类:(1)内部联接(典型的联接运算,使用类似于 = 或 <> 的比较运算符)。

(完整版)数据库系统基础教程第九章答案

(完整版)数据库系统基础教程第九章答案

9.3.1a)In the following, we use macro NOT_FOUND as defined in the section.void closestMatchPC() {EXEC SQL BEGIN DECLARE SECTION;char manf, SQLSTATE[6];int targetPrice, /* holds price given by user */float tempSpeed, speedOfClosest;char tempModel[4], modelOfClosest[4];int tempPrice, priceOfClosest;/* for tuple just read from PC & closest price found so far */EXEC SQL END DECLARE SECTION;EXEC SQL DECLARE pcCursor CURSOR FORSELECT model, price, speed FROM PC;EXEC SQL OPEN pcCursor;/* ask user for target price and read the answer into variabletargetPrice *//* Initially, the first PC is the closest to the target price.If PC is empty, we cannot answer the question, and so abort. */EXEC SQL FETCH FROM pcCursorINTO :modelOfClosest, :priceOfClosest, :speedOfClosest;if(NOT_FOUND) /* print message and exit */ ;while(1) {EXEC SQL FETCH pcCursor INTO :tempModel, :tempPrice,:tempSpeed;if(NOT_FOUND) break;if(/*tempPrice closer to targetPrice than is priceOfClosest */){modelOfClosest = tempModel;priceOfClosest = tempPrice;speedOfClosest = tempSpeed;}}/* Now, modelOfClosest is the model whose price is closest totarget. We must get its manufacturer with a single-row select */EXEC SQL SELECT makerINTO :manfFROM ProductWHERE model = :modelOfClosest;printf("manf=%s, model=%d, speed=%d\n",manf, modelOfClosest, speedOfClosest);EXEC SQL CLOSE CURSOR pcCursor;}b)void acceptableLaptop() {EXEC SQL BEGIN DECLARE SECTION;int minRam, minHd, minScreen; /* given by user */float minSpeed;char model[4], maker,float speed;int ram, hd, screen, price;EXEC SQL END DECLARE SECTION;EXEC SQL PREPARE query1 FROM‘ SELECT model, speed, ram, hd, screen, price, maker FROM Laptop l, Product pWHERE speed >= ?AND ram >= ? ANDhd >= ? ANDscreen >= ? ANDl.model = p.model’EXEC SQL DECLARE cursor1 CURSOR FOR query1;/* ask user for minimum speed, ram, hd size, and screen size */EXEC SQL OPEN cursor1 USING :minSpeed, :minRam, :minHd, :minScreen;while(!NOT_FOUND) {EXEC SQL FETCH cursor1 INTO:model, :speed, :ram, :hd, :screen, :price, :maker;if(FOUND){printf("maker:%s, model:%d, \nspeed:%.2f, ram:%d, hd:%d, screen:%d, price:%d\n",maker, model, speed, ram, hd, screen, price);}}EXEC SQL CLOSE CURSOR cursor1;}c)void productsByMaker() {EXEC SQL BEGIN DECLARE SECTION;char maker, model[4], type[10], color[6];float speed;int ram, hd, screen, price;EXEC SQL END DECLARE SECTION;EXEC SQL PREPARE query1 FROM‘ SELECT * FROM PCWHERE model IN (SELECT model FROM ProductWHERE maker = ? ANDtype =‘ pc’ );EXEC SQL PREPARE query2 FROM‘ SELECT * FROM LaptopWHERE model IN (SELECT model FROM ProductWHERE maker = ? ANDtype =‘ laptop’ );EXEC SQL PREPARE query3 FROM‘ SELECT * FROM PrinterWHERE model IN (SELECT model FROM ProductWHERE maker = ? ANDtype =‘ printer’ );EXEC SQL DECLARE cursor1 CURSOR FOR query1;EXEC SQL DECLARE cursor2 CURSOR FOR query2;EXEC SQL DECLARE cursor3 CURSOR FOR query3;/* ask user for manufacturer */Printf(“ maker:%s n” , ma ker);/* get PCs made by the manufacturer */EXEC SQL OPEN cursor1 USING :maker;Printf( “ product type: PC n” );while(!NOT_FOUND) {EXEC SQL FETCH cursor1 INTO:model, :speed, :ram, :hd, :price;if(FOUND){n” , model, speed, ram, hd, price);}}/* get Laptops made by the manufacturer */EXEC SQL OPEN cursor2 USING :maker;Printf(“ product type: Laptop n” );while(!NOT_FOUND) {EXEC SQL FETCH cursor2 INTO:model, :speed, :ram, :hd, :screen, :price;if(FOUND){printf("model:%d, speed:%.2f, ram:%d, hd:%d, screen:%d,price:%d\n", model, speed, ram, hd, screen, price);}}/* get Printers made by the manufacturer */EXEC SQL OPEN cursor3 USING :maker;Printf(“ product type: Printer n”);while(!NOT_FOUND) {EXEC SQL FETCH cursor3 INTO:model, :color, :type, :price;if(FOUND){printf("model:%d, color:%s, type:%s, price:%d\n",model, color, type, price);}}EXEC SQL CLOSE CURSOR cursor1;EXEC SQL CLOSE CURSOR cursor2;EXEC SQL CLOSE CURSOR cursor3;}d)void withinBudget() {EXEC SQL BEGIN DECLARE SECTION;int total_budget, rest_budget, pc_price, printer_price;char pc_model[4], printer_model[4], color[6];float min_speed;EXEC SQL END DECLARE SECTION;EXEC SQL PREPARE query1 FROM‘ SELECT model, price FROM PCWHERE speed >= ? AND price <= ?ORDER BY price’;EXEC SQL PREPARE query2 FROM‘ SELECT model, price FROM PrinterWHERE price <= ? AND color = ?ORDER BY price’;EXEC SQL DECLARE cursor1 CURSOR FOR query1;EXEC SQL DECLARE cursor2 CURSOR FOR query2;/* ask user for budget & the minimum speed of pc *//* get the cheapest PC of the minimum speed */EXEC SQL OPEN cursor1 USING :min_speed, :total_budget;EXEC SQL FETCH cursor1 INTO :pc_model, :pc_price;if (NOT_FOUND)Printf( “ no pc f n” );else{Printf( “ pc model: %s n” , pc_model);}/* get Printer within the budget–pc_price;*/ rest_budget = total_budgetcolor = “ true ”;EXEC SQL OPEN cursor2 USING :rest_budget, :color;EXEC SQL FETCH cursor2 INTO :printer_model;if(NOT_FOUND) {EXEC SQL CLOSE CURSOR cursor2;color =“ false”;EXEC SQL OPEN cursor2 USING :rest_budget, :color;if(NOT_FOUND)n” );printf(“ no printer found within the budgetelse {EXEC SQL FETCH cursor2 INTO :printer_model;printf(“ printer model: %s n” , printer_model);}}else {printf( “ printer model: %s n” , printer_model);}EXEC SQL CLOSE CURSOR cursor1;EXEC SQL CLOSE CURSOR cursor2;}e)void newPCproduct() {EXEC SQL BEGIN DECLARE SECTION;char pmaker, pmodel[4], ptype[6];float pspeed;int pram, phd, pscreen, pprice;int pcount;EXEC SQL END DECLARE SECTION;EXEC SQL PREPARE stmt1 FROM‘ SELECT COUNT(*) INTO :countFROM PCWHERE MODEL = ?;EXEC SQL PREPARE stmt2 FROM‘ INSERT INTO Product VALUES(?, ?, ?) ’;EXEC SQL PREPARE stmt3 FROM‘ INSERT INTO PC VALUES(?, ?, ?, ?, ?) ’;/* ask user for manufacturer, model, speed, RAM, hard-disk,& price of a new PC*/EXEC SQL EXECUTE stmt1 USING :pmodel;IF (count > 0)Printf( “ Warnning: The PC model already exists n” );ELSE{EXEC SQL EXECUTE stmt2 USING :pmaker, :pmodel, :ptype;EXEC SQL EXECUTE stmt3 UINGNG :pmodel, :pspeed, :pram,:phd, :pprice }}9.3.2a)void largestFirepower() {EXEC SQL BEGIN DECLARE SECTION;char cclass[20], maxFirepowerClass[20];int cnumGuns, cbore;float firepower, maxFirepower;EXEC SQL END DECLARE SECTION;EXEC SQL DECLARE cursor1 CURSOR FORSELECT class, numGuns, bore FROM Classes;EXEC SQL OPEN cursor1;EXEC SQL FETCH FROM cursor1 INTO :cclass, :cnumGuns, :cbore;if(NOT_FOUND) /* print message and exit */ ;maxFirepower = cnumGuns * (power (cbore, 3));strcpy(maxFirepowerClass, cclass);while(1) {EXEC SQL FETCH cursor1 INTO :cclass, :cnumGuns, :cbore;if(NOT_FOUND) break;firepower = cnumGuns * (power (cbore, 3));if( firepower > maxFirepower ){maxFirepower = firepower;strcpy(maxFirepowerClass, cclass);}}printf("Class of maximum firepower :%s\n", maxFirepowerClass);EXEC SQL CLOSE CURSOR cursor1;}b)void getCountry() {EXEC SQL BEGIN DECLARE SECTION;char ibattle[20], iresult[10], ocountry[20];char stmt1[200], stmt2[200];EXEC SQL END DECLARE SECTION;strcpy(stmt1,“ SELECT COUNTRY FROM Classes CWHERE C.class IN (SELECT S.class FROM Ships SWHERE IN (SELECT ship FROM OutcomesWHERE battle = ?))” );Strcpy(stm2,“ SELECT country FROM ClassesWHERE class = ( SELECT MAX(COUNT(class))FROM Ships s, Outcomes oWHERE = s.ship ANDs.result =‘ ?’ )” );EXEC SQL PREPARE query1 FROM stmt1;EXEC SQL PREPARE query2 FROM stmt2;EXEC SQL DECLARE cursor1 CURSOR FOR query1;EXEC SQL DECLARE cursor2 CURSOR FOR query2;/* ask user for battle *//* get countries of the ships involved in the battle */EXEC SQL OPEN cursor1 USING :ibattle;while(!NOT_FOUND) {EXEC SQL FETCH cursor1 INTO :ocountry;if(FOUND)n” , ocoutry);}EXEC SQL CLOSE CURSOR cursor1;/* get the country with the most ships sunk */strcpy(iresult,“ sunk” );EXEC SQL OPEN cursor2 USING :iresult;/* loop for the case there ’ s the same max# of ships sunk */While(!NOT_FOUND) {EXEC SQL FETCH cursor2 INTO :ocountry;If(FOUND)Printf(}/* get the country with the most ships damaged */strcpy(iresult, “ damaged ” ); EXEC SQL OPEN cursor2 USING :iresult;/* loop for the case there ’ s the same max# of ships damaged */While(!NOT_FOUND) {EXEC SQL FETCH cursor2 INTO :ocountry;If(FOUND)Printf(}} c)void addShips() {EXEC SQL BEGIN DECLARE SECTION; char iclass[20], itype[3], icontry[20], iship[20]; int inumGuns, ibore, idisplacement, ilaunched; char stmt1[100], stmt2[100]; EXEC SQL END DECLARE SECTION;strcpy(stmt1,“ INSERT INTO Classes VALUES (?, ?, ?, ?, ?, ?)” );strcpy(stmt2,“ INSERT INTO Ships VALUES (?, ?, ?)” );/* ask user for a class and other info for Classes table */EXEC SQL EXECUTE IMMEDATE :stmt1USING :iclass, :itype, :icontry,:inumGuns, :ibore, :idisplacement;/* ask user for a ship and launched */WHILE(there_is_input){“ country with the most ships damaged: %s, ocountry);“ country with the most ships sunk: %s, ocountry);EXEC SQL EXECUTE IMMEDATE :stmt2USING :iship, :iclass, ilaunched;/* ask user for a ship and launched */}}d)void findError() {EXEC SQL BEGIN DECLARE SECTION;char bname[20], bdate[8], newbdate[8];char sname[20], lyear[4], newlyear[4];char stmt1[100], stmt2[100];EXEC SQL END DECLARE SECTION;strcpy(stmt1, strcpy(stmt2, “ UPDATE Battles SET date = ? WHERE name = ?“ UPDATE Ships SET launched = ? WHERE name = ?” );” );EXEC SQL DECLARE C1 CURSOR FORSelect , b.date, , unchedFROM Battles b, Outcomes o, Ships sWHERE = o.battle ANDo.ship = ANDYEAR(b.date) < unched;EXEC SQL OPEN C1;while(!NOT_FOUND) {EXEC SQL FETCH C1 INTO :bname, :bdate, :sname, :lyear;/* prompt user and ask if a change is needed */if(change_battle){/* get a new battle date to newbdate */EXEC SQL EXECUTE IMMEDATE :stmt1USING :bname, :newbdate;}if(change_ship){/* get a new launched year to newlyear */EXEC SQL EXECUTE IMMEDATE :stmt2USING :sname, :newlyear;}}}9.4.1a)CREATE FUNCTION PresNetWorth(studioName CHAR[15]) RETURNS INTEGER DECLARE presNetWorth INT;BEGINSELECT netWorthINTO presNetWorthFROM Studio, MovieExecWHERE = studioName AND presC# = cert#;RETURN(presNetWorth);END;b)CREATE FUNCTION status(person CHAR(30), addr CHAR(255)) RETURNS INTEGERDECLARE isStar INT;DECLARE isExec INT;BEGINSELECT COUNT(*)INTO isStarFROM MovieStarWHERE = person AND MovieStar.address = addr;SELECT COUNT(*)INTO isExecFROM MovieExecWHERE = person AND MovieExec.address = addr;IF isStar + isExec = 0 THEN RETURN(4) ELSE RETURN(isStar +2*isExec)END IF;END;c)CREATE PROCEDURE twoLongest(IN studio CHAR(15),OUT longest VARCHAR(255),OUT second VARCHAR(255))DECLARE t VARCHAR(255);DECLARE i INT;DECLARE Not_Found CONDITION FOR SQLSTATE = '02000';DECLARE MovieCursor CURSOR FORSELECT title FROM Movies WHERE studioName = studioORDER BY length DESC;BEGINSET longest = NULL;SET second = NULL;OPEN MovieCursor;SET i = 0;mainLoop: WHILE (i < 2) DOFETCH MovieCursor INTO t;IF Not_Found THEN LEAVE mainLoop END IF;SET i = i + 1;END WHILE;CLOSE MovieCursor;END;d)CREATE PROCEDURE earliest120mMovie(IN star CHAR(30),OUT earliestYear INT)DECLARE Not_Found CONDITION FOR SQLSTATE = '02000'; DECLARE MovieCursor CURSOR FORSELECT MIN(year) FROM MoviesWHERE length > 120 ANDtitle IN (SELECT movieTitle FROM StarsInWHERE starName = star);BEGINSET earliestYear = 0;OPEN MovieCursor;FETCH MovieCursor INTO earliestYear;CLOSE MovieCursor;END;e)CREATE PROCEDURE uniqueStar(IN addr CHAR(255),OUT star CHAR(30))BEGINSET star = NULL;IF 1 = (SELECT COUNT(*) FROM MovieStar WHERE address = addr) THENSELECT name INTO star FROM MovieStar WHERE address = addr; END;f)CREATE PROCEDURE removeStar(IN star CHAR(30))BEGINDELETE FROM Movies WHERE title IN(SELECT movieTitle FROM StarsIn WHERE starName = star); DELETE FROM StarsIn WHERE starName = star;DELETE FROM MovieStar WHERE name = star;END;9.4.2a)CREATE FUNCTION closestMatchPC(targetPrice INT) RETURNS CHAR DECLARE closestModel CHAR(4);DECLARE diffSq INT;DECLARE currSq INT;DECLARE m CHAR(4);DECLARE p INT;DECLARE Not_Found CONDITION FOR SQLSTATE '02000'; DECLARE PCCursor CURSOR FORSELECT model, price FROM PC;BEGINSET closestModel = NULL;SET diffSq = -1;OPEN PCCursor;mainLoop: LOOPFETCH PCCursor INTO m, p;IF Not_Found THEN LEAVE mainLoop END IF;SET currSq = (p - targetPrice)*(p - targetPrice);IF diffSq = -1 OR diffSq > currSqTHEN BEGINSET closestModel = m;SET diffSq = currSq;END IF;END LOOP;CLOSE PDCursor;RETURN(closestModel);END;b)CREATE FUNCTION getPrice(imaker CHAR(1), imodel CHAR(4))RETURNS INTEGERDECLARE ptype VARCHAR(10);DECLARE pprice INT;DECLARE Not_Found CONDITION FOR SQLSTATE '02000';BEGINSELECT type INTO ptype FROM ProductWHERE maker = imaker AND model = imodel;IF ptype =‘ pc’ THENSELECT price INTO pprice FROM PCWHERE model = imodel;ELSE IF ptype =‘ laptop’ THENSELECT price INTO pprice FROM LaptopWHERE model = imodel;ELSE IF ptype =‘ printer’ THENSELECT price INTO pprice FROM PrinterWHERE model = imodel;ELSEpprice = NULL;END IF;RETURN (pprice);END;c)CREATE PROCEDURE addPC(IN imodel INT,IN ispeed DECIMAL(3,2),IN iram INT,IN ihd INT,IN iprice INT)DECLARE Already_Exist CONDITION FOR SQLSTATE '02300';BEGININSERT INTO PC VALUES(imodel, ispeed, iram, ihd, iprice); WHILE (Already_Exist) DOSET imodel = imodel + 1;INSERT INTO PC VALUES(imodel, ispeed, iram, ihd, iprice); END WHILE;END;d)CREATE PROCEDURE getNumOfHigherPrice(IN iprice INT,OUT NumOfPCs INT,OUT NumOfLaptops INT,OUT NumOfPrinters INT)BEGINSET NumOfPCs = 0;SET NumOfLaptops = 0;SET NumOfPrinters = 0;SELECT COUNT(*) INTO NumOfPCs FROM PCWHERE price > iprice;SELECT COUNT(*) INTO NumOfLaptops FROM Laptop WHERE price > iprice;SELECT COUNT(*) INTO NumOfPrinters FROM PrinterWHERE price > iprice;END;9.4.3a)CREATE FUNCTION getFirepower(iclass VARCHAR(10)) RETURNS INTEGER DECLARE firepower INT;DECLARE nguns INT;DECLARE nbore INT;BEGINSELECT numGuns, bore INTO nguns, nbore FROM ClassesWHERE class = iclass;SET firepower = nguns * (nbore * nbore * nbore);RETURN(firepower);END;b)CREATE PROCEDURE twoCountriesInBattle(IN ibattle VARCHAR(20),OUT firstCountry VARCHAR(20),OUT secondCountry VARCHAR(20))DECLARE i INT;DECLARE ocountry VARCHAR(20);DECLARE classCursor CURSOR FORSELECT country FROM ClassesWHERE class IN(SELECT class FROM ShipsWHERE name IN(SELECT ship FROM OutcomesWHERE battle = ibattle));BEGINSET firstCountry = NULL;SET secondCountry = NULL;SET i = 0;IF 2 = (SELECT COUNT(*) count FROM ClassesWHERE class IN(SELECT class FROM ShipsWHERE name IN(SELECT ship FROM OutcomesWHERE battle = ibattle)))THENOPEN classCursor;WHILE (i < 2) DOFETCH classCursor INTO ocountry;IF (i = 0) THENSET firstCountry = ocountry;ELSESET secoundCountry = ocountry;END IF;END WHILE;END IF;CLOSE calssCursor;END;c)CREATE PROCEDURE addClass(IN iship VARCHAR(20),IN iclass VARCHAR(20),IN itype CHAR(2),IN icountry VARCHAR(20),IN inumGuns INT,IN ibore INT,IN idisplacement INT)BEGININSERT INTO Classes VALUES(iclass, itype, icountry,inumGuns, ibore, idisplacement); INSERT INTO Ships VALUES(iship, iclass, NULL);END;d)CREATE PROCEDURE checkLaunched(IN ship VARCHAR(20))DECLARE bname VARCHAR(20);BEGINIF EXIST (SELECT INTO bnameFROM Battles b, Outcomes o, Ships sWHERE = o.battle ANDo.ship = ANDYEAR(b.date) < unched)THENUPDATE Ships SET launced = 0 WHERE name = iship;UPDATE Battles SET date = 0 WHERE name = bname; END IF;END9.4.49.5.1a)#include sqlcli.hSQLHENV myEnv;SQLHDBC mycon;SQLHSTMT execStat;SQLRETURN errCode1, errCode2, errCode3;SQLCHAR manf, tempModel[4];SQLFLOAT tempSpeed;SQLINTEGER tempPrice;SQLINTEGER colInfo;Int targetPrice;char modelOfClosest[4];float speedOfClosest;int priceOfClosest;/* ask user for target price and read the answer into variabletargetPrice*/errCode1 = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &myEnv);if(errCode1) {printf( ” Error for SQL_HANDLE_ENV. n” );exit(1);}errCode2 = SQLAllocHandle(SQL_HANDLE_DBC, myEnv, &myCon);if(errCode2) {printf( ” Error for SQL_ HANDLE_DBC. n” );exit(1);}errCode3 = SQLAllocHandle(SQL_HANDLE_STMT, myCon, &execStat);if(errCode3) {printf( ” Error for SQL_ HANDLE_STMT. n” );exit(1);}SQLExecDirect(execStat, “ SELECT model, price, speed FROM PC ” , SQL_NTS);SQLBindCol(execStat, 1, SQL_CHAR, tempModel,sizeof(tempModel), &colInfo);SQLBindCol(execStat, 2, SQL_INTEGER, tempPrice,sizeof(tempPrice), &colInfo);SQLBindCol(execStat, 3, SQL_FLOAT, tempSpeed,sizeof(tempSpeed), &colInfo);priceOfClosest = NULL;while(SQLFetch(execStat) != SQL_NO_DATA) {if( /* the 1st fetch or tempPrice closer to targetPrice */modelOfClosest = tempModel;priceOfClosest = tempPrice;speedOfClosest = tempSpeed;}}/* Now, modelOfClosest is the model whose price is closest totarget. We must get its manufacturer with a single-row select*/if (priceOfClosest == NULL ) /* no data fetched *//* print error message and exit */SQLPrepare (execStat,“ SELECT maker FROM Product WHERE model = ? ” , SQL_NTS); SQLBindParameter(execStat, 1,⋯,modelOfClosest,⋯);SQLExecute(execStat);SQLBindCol(execStat, 1, SQLCHAR, &manf, sizeof(manf), &colInfo);/* print manf */b)#include sqlcli.hSQLHENV myEnv;SQLHDBC mycon;SQLHSTMT execStat;SQLRETURN errCode1, errCode2, errCode3;SQLCHAR model[4], maker;SQLFLOAT minSpeed;SQLINTEGER minRam, minHd, minScreen;SQLFLOAT speed;SQLINTEGER ram, hd, screen;SQLINTEGER colInfo;/* ask user for minimum speed, ram, hd size, and screen size */errCode1 = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &myEnv);if(errCode1) {printf( ” Error for SQL_HANDLE_ENV. n” );exit(1);}errCode2 = SQLAllocHandle(SQL_HANDLE_DBC, myEnv, &myCon);if(errCode2) {printf( ” Error for SQL_ HANDLE_DBC. n” );exit(1);}errCode3 = SQLAllocHandle(SQL_HANDLE_STMT, myCon, &execStat);if(errCode3) {printf( ” Error for SQL_ HANDLE_STMT. n” );exit(1);}SQLPrepare(execStat,“ SELECT model, speed, ram, hd, screen, price, maker“ FROM Laptop l, Product p”||“ WHERE speed >= ? AND ” ||“ ram >= ? AND”||“ hd >= ? AND”||“ screen >= ? AND”||“ l.model = p.model”,”||SQL_NTS);SQLBindParameter(execStat, 1, SQL_FLOAT, ⋯ , minSpeed, ⋯ ); SQLBindParameter (execStat, 2, SQL_INTEGER, ⋯ , minRam, ⋯ );SQLBindParameter (execStat, 3, SQL_ SQLBindParameter (execStat, 4, SQL_ INTEGER,INTEGER,⋯ , minHd, ⋯ );⋯ , minScreen, ⋯ );SQLExecute(execStat);SQLBindCol(execStat, 1, SQL_CHAR, model, sizeof(model), &colInfo); SQLBindCol(execStat, 2, SQL_FLOAT, speed,sizeof(speed), &colInfo);SQLBindCol(execStat, 3, SQL_INTEGER, ram,sizeof(ram), &colInfo);SQLBindCol(execStat, 4, SQL_INTEGER, hd,sizeof(hd), &colInfo);SQLBindCol(execStat, 5, SQL_INTEGER, screen,sizeof(screen), &colInfo);SQLBindCol(execStat, 6, SQL_INTEGER, price,sizeof(price), &colInfo);SQLBindCol(execStat, 7, SQL_CHAR, maker,sizeof(maker), &colInfo);while(SQLFetch(execStat) != SQL_NO_DATA) {if( FOUND )/* print fetched info */}c)#include sqlcli.hSQLHENV myEnv;SQLHDBC mycon;SQLHSTMT execStat;SQLRETURN errCode1, errCode2, errCode3;SQLCHAR maker, model[4], type[10], color[6];SQLFLOAT speed;SQLINTEGER ram, hd, screen, price;SQLINTEGER colInfo;/* ask user for minimum speed, ram, hd size, and screen size */errCode1 = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &myEnv); if(errCode1) {printf( ” Error for SQL_HANDLE_ENV. n” );exit(1);}errCode2 = SQLAllocHandle(SQL_HANDLE_DBC, myEnv, &myCon);if(errCode2) {printf( ” Error for SQL_ HANDLE_DBC.n” );exit(1);}errCode3 = SQLAllocHandle(SQL_HANDLE_STMT, myCon, &execStat);if(errCode3) {printf( ” Error for SQL_ HANDLE_STMT.n” );exit(1);}/* get PCs made by the manufacturer */SQLPrepare(execStat,“ SELECT * FROM PC WHERE model IN ( ” ||“ SELECT model FROM Product ” ||“ WHERE maker = ? AND ” ||“ type = ‘ pc’”, SQL_NTS);SQLBindParameter(execStat, 1, SQL_CHAR,⋯, maker,⋯); SQLExecute(execStat);SQLBindCol(execStat, 1, SQL_CHAR, model, sizeof(model), &colInfo); SQLBindCol(execStat, 2, SQL_FLOAT, speed,sizeof(speed), &colInfo);SQLBindCol(execStat, 3, SQL_INTEGER, ram,sizeof(ram), &colInfo);SQLBindCol(execStat, 4, SQL_INTEGER, hd,sizeof(hd), &colInfo);SQLBindCol(execStat, 5, SQL_INTEGER, price,sizeof(price), &colInfo);while(SQLFetch(execStat) != SQL_NO_DATA) {if( FOUND )/* print fetched info */}/* get Laptops made by the manufacturer */SQLPrepare(execStat,“ SELECT * FROM Laptop WHERE model IN ( ” ||“ SELECT model FROM Product ” ||“ WHERE maker = ? AND ” ||“ type = ‘ laptop ’”, SQL_NTS);SQLBindParameter(execStat, 1, SQL_CHAR,⋯, maker,⋯); SQLExecute(execStat);SQLBindCol(execStat, 1, SQL_CHAR, model, sizeof(model), &colInfo);SQLBindCol(execStat, 2, SQL_FLOAT, speed,sizeof(speed), &colInfo);SQLBindCol(execStat, 3, SQL_INTEGER, ram,sizeof(ram), &colInfo);SQLBindCol(execStat, 4, SQL_INTEGER, hd,sizeof(hd), &colInfo);SQLBindCol(execStat, 5, SQL_INTEGER, screen,sizeof(screen), &colInfo);SQLBindCol(execStat, 6, SQL_INTEGER, price,sizeof(price), &colInfo);while(SQLFetch(execStat) != SQL_NO_DATA) {if( FOUND )/* print fetched info */}/* get Printers made by the manufacturer */SQLPrepare(execStat,“ SELECT * FROM Printer WHERE model IN (”||“ SELECT model FROM Product”||“ WHERE maker = ? AND ” ||“ type =‘printer’”,SQL_NTS);SQLBindPara meter(execStat, 1, SQL_CHAR,⋯, maker,⋯);SQLExecute(execStat);SQLBindCol(execStat, 1, SQL_CHAR, model, sizeof(model), &colInfo);SQLBindCol(execStat, 2, SQL_CHAR, color, sizeof(color), $colInfo);SQLBindCol(execStat, 3, SQL_CHAR, type, sizeof(type), $colInfo);SQLBindCol(execStat, 4, SQL_INTEGER, price, sizeof(price), &colInfo);d)#include sqlcli.hSQLHENV myEnv;SQLHDBC mycon;SQLHSTMT execStat;SQLRETURN errCode1, errCode2, errCode3;SQLINTEGER total_budget, rest_budget, pc_price, printer_price;SQLCHAR pc_model[4], printer_model[4], color[6];SQLFLOAT min_speed;errCode1 = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &myEnv);if(errCode1) {printf( ” Error for SQL_HANDLE_ENV.n” );exit(1);}errCode2 = SQLAllocHandle(SQL_HANDLE_DBC, myEnv, &myCon);if(errCode2) {printf( ” Error for SQL_ HANDLE_DBC.n” );exit(1);}errCode3 = SQLAllocHandle(SQL_HANDLE_STMT, myCon, &execStat);if(errCode3) {printf( ” Error for SQL_ HANDLE_STMT. n” );exit(1);}SQLPrepare(execStat,“SELECT model, price FROM PCWHERE speed >= ? AND price <= ? ORDERBY price ”,SQL_NTS);/* ask user for budget & the minimum speed of pc *//* get the cheapest PC of the minimum speed */SQLBindParameter(execStat, 1, SQL_FLOAT , ⋯ ,min_speed , ⋯ ); SQLBindParameter(execStat, 2, SQL_INTEGER, ⋯ , total_budget, ⋯ );SQLExecute(execStat);SQLBindCol(execStat, 1, SQL_CHAR, pc_model, sizeof(pc_model),&colInfo);SQLBindCol(execStat, 2, SQL_INGETER, pc_price,sizeof(pc_price),&colInfo);SQLFetch(execStat);if (NOT_FOUND) {p rintf(“no pc found within the budget n” );}else {p rintf( “ pc model: %s n” , pc_model);}/* get Printer within the budget */–pc_price;rest_budget = total_budgetcolor =“true”;SQLPrepare(execStat,“SELECT model, price FROM PrinterWHERE price <= ? AND color = ?ORDER BY price ” , SQL_NTS);SQLBindParameter(execStat, 1, SQL_INTEGER , ⋯ , rest_budget , ⋯ ); SQLBindParameter(execStat, 2, SQL_CHAR, ⋯ , color , ⋯ );SQLExecute(execStat);SQLBindCol(execStat, 1, SQL_CHAR, print_model,sizeof(print_model),&colInfo);SQLBindCol(execStat, 2, SQL_INGETER, print_price,sizeof(print_price),&colInfo);SQLFetch(execStat);if(NOT_FOUND) {color =“false”;SQLBindParameter(execStat, 1, SQL_INTEGER,⋯, rest_budget,⋯);SQLBindParameter(execStat, 2, SQL_CHAR,⋯, color,⋯);SQLExecute(execStat);SQLBindCol(execStat, 1, SQL_CHAR, print_model,sizeof(print_model),&colInfo);SQLBindCol(execStat, 2, SQL_INGETER, print_price,sizeof(print_price),&colInfo);SQLFetch(execStat);if(NOT_FOUND)printf( “ no printer found within the budget n” );elseprintf( “ printer model: %s n” , printer_model);}elseprintf( “ printer model: %s n” , printer_model);}e)#include sqlcli.hSQLHENV myEnv;SQLHDBC mycon;SQLHSTMT execStat;SQLRETURN errCode1, errCode2, errCode3;SQLCHAR pmodel[4], pmaker, ptype[6];SQLFLOAT pspeed;SQLINTEGER pram, phd, pscreen, pprice, count;SQLINTEGER colInfo;/* ask user for minimum speed, ram, hd size, and screen size */errCode1 = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &myEnv);if(errCode1) {printf( ” Error for SQL_HANDLE_ENV.n” );exit(1);}errCode2 = SQLAllocHandle(SQL_HANDLE_DBC, myEnv, &myCon);if(errCode2) {printf( ” Error for n” );exit(1);}errCode3 = SQLAllocHandle(SQL_HANDLE_STMT, myCon, &execStat);if(errCode3) {printf( ” Error for SQL_ HANDLE_STMT. n” );exit(1);}/* ask user for manufacturer, model, speed, RAM, hard-disk, *//* & price of a new PC */SQLPrepare(execStat,“ SELECT COUNT(*) FROM PC WHERE model = ?”, SQL_NTS);SQLBindParameter(execStat, 1, SQL_CHAR,⋯, pmodel,⋯);SQLExecute(execStat);SQLBindCol(execStat, 1, SQL_INTEGER, count, sizeof(count), &colInfo);SQLFetch(execStat);if (count >0){ Printf( “ Warnning: The PC model already exists n” ); }else {” , SQLPrepare(execStat,“ INSERT INTO Product VALUES(?, ?, ?)SQL_NTS);SQLBindParame ter(execStat, 1, SQL_CHAR,⋯, pmaker,⋯);SQLBindParameter(execStat, 2, SQL_CHAR,⋯, pmodel,⋯);SQLBindParameter(execStat, 3, SQL_CHAR,⋯, ptype,⋯); SQLExecute(execStat);” , SQLPrepare(execStat,“ INSERT INTO PC VALUES(?, ?, ?, ?, ?)SQL_NTS);SQLBindParameter(execStat, 1, SQL_CHAR,⋯, pmodel,⋯);SQLBindParameter(execStat, 2, SQL_FLOAT,⋯, pspeed,⋯);SQLBindParameter(execStat, 3, SQL_INTEGER,⋯, pram,⋯); SQLBindParameter(e xecStat, 4, SQL_INTEGER,⋯, phd,⋯);SQLBindParameter(execStat, 5, SQL_INTEGER,⋯, pprice,⋯); SQLExecute(execStat);}9.5.2a)#include sqlcli.hSQLHENV myEnv;SQLHDBC mycon;SQLHSTMT execStat;SQLRETURN errCode1, errCode2, errCode3;SQLCHAR cclass[20], maxFirepowerClass[20];SQLFLOAT firepower, maxFirepower;SQLINTEGER cnumGuns, cbore;。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

矿产资源开发利用方案编写内容要求及审查大纲
矿产资源开发利用方案编写内容要求及《矿产资源开发利用方案》审查大纲一、概述
㈠矿区位置、隶属关系和企业性质。

如为改扩建矿山, 应说明矿山现状、
特点及存在的主要问题。

㈡编制依据
(1简述项目前期工作进展情况及与有关方面对项目的意向性协议情况。

(2 列出开发利用方案编制所依据的主要基础性资料的名称。

如经储量管理部门认定的矿区地质勘探报告、选矿试验报告、加工利用试验报告、工程地质初评资料、矿区水文资料和供水资料等。

对改、扩建矿山应有生产实际资料, 如矿山总平面现状图、矿床开拓系统图、采场现状图和主要采选设备清单等。

二、矿产品需求现状和预测
㈠该矿产在国内需求情况和市场供应情况
1、矿产品现状及加工利用趋向。

2、国内近、远期的需求量及主要销向预测。

㈡产品价格分析
1、国内矿产品价格现状。

2、矿产品价格稳定性及变化趋势。

三、矿产资源概况
㈠矿区总体概况
1、矿区总体规划情况。

2、矿区矿产资源概况。

3、该设计与矿区总体开发的关系。

㈡该设计项目的资源概况
1、矿床地质及构造特征。

2、矿床开采技术条件及水文地质条件。

相关文档
最新文档