




已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
46数据库开发技术实验指导书数据库开发技术实 验 指 导 书河南科技大学电子信息工程学院计算机系实验1 数据库建立实验目的:1 进一步熟练掌握数据库设计的过程。2 掌握一个数据库建立的方法和实现业务规则实现的方法。3 掌握利用SQL的DDL语言建表和交互式建表的方法。实验环境:SQL Server 2000以上数据库管理系统。实验学时: 2学时实验内容:给出一个数据库应用系统的需求规格陈述,要求根据此说明,进行概念结构的设计,概念结构的规范化,将概念结构转换为关系数据模型作为数据库的逻辑结构,然后进行数据库的物理结构设计。在SQL Server数据库管理系统上建立该数据库,并且实现需求中要求的业务规则。建立数据库关系图,检查数据库结构是否完整正确。选择合适的数据对建立好的数据库进行检查,确认是否满足设计要求。实验步骤:1 实验前首先进行数据库逻辑结构和物理结构的设计。逻辑结构设计应该包括各个表的结构、关键字、外部关键字、唯一索引,属性约束。物理结构包括查询优化的索引、触发器。2 在SQL Server查询分析器中利用DDL语言创建表结构,建立属性约束,建立触发器进行业务规则校验。操作步骤一:打开查询分析器(参见图1.1)输入SQL Server身份认证的用户名和密码,以超级用户SA的身份登陆,进入查询分析器主界面(参见图1.2)。操作步骤二:首先输入命令create databsae ,创建数据库,然后输入命令use 设置新创建的数据库作为当前数据库,下面就可以输入DDL语句建立数据库了。图1.1 查询分析器登陆SQL语句执行结果窗口SQL语句输入窗口图1.2 查询分析器主界面3 在查询分析器中利用Iinsert、Update或者Delete语句对建立好的库进行数据维护,检查表结构是否正确。4 检查业务规则是否对维护的数据进行了正确的校验。5 在SQL Server的企业管理器程序中,建立数据库的关系图,检查数据库的表之间的关联建立的是否正确。操作步骤一:打开企业管理器程序(参见图1.3),打开新建的数据库节点,图中为test1。图1.3 企业管理器主界面操作步骤二:右击关系图节点,选择新建数据库关系图,参见图1.4图1.3 企业管理器主界面操作步骤三:在图1.4 中单击下一步图1.4关系图向导操作步骤四:选择准备建立关系图的表,参见图1.5图1.5 选择添加相关的表操作步骤五:在图1.6中单机完成图1.6 向导确认完成操作步骤六:得到如图1.7所示的关系图,也可以在这个图所示的界面上进行关系的修改和添加。图1.7 关系图6. 利用触发器进行复杂业务规则处理。触发器是在对数据库的表进行操作时触发的SQL过程,用来进行复杂的业务规则处理,当不满足业务规则要求时,应通过触发器抛出异常。应用程序一方面要在出错处理中回滚事务,同时应该将具体的错误信息明确地报告给操作人员。(1) 创建触发器。为操作的表创建触发器,同时确定进行何种操作时激活触发器代码的执行。操作步骤一、打开某个表的触发器编辑窗口。右击表名称,选择所有任务,选择管理触发器。图2.1 选择管理触发器操作步骤二、打开某个表的触发器编辑窗口。右击表名称,选择所有任务,选择管理触发器。图2.2 触发器编辑窗口操作步骤三、输入校验代码。图中显示的是对一张销售单总数量的校验,同时违背规则抛出异常给应用程序。图2.3 录入触发器代码实验2 数据库应用程序开发(一)实验目的:1 数据库应用界面规划方法2 掌握ADO数据绑定操作的编程方法。3 掌握数据查询组件在标准候选项数据维护中的使用。实验环境:Borland C+ Builder 6.0 ,SQL Server 2000以上数据库管理系统。实验学时: 2学时实验内容:设计一个系统基本信息的维护界面,能够实现对数据的查询、浏览和修改。实验原理数据库应用系统运行必须有系统基本信息的支持,利用CBC提供的数据绑定组件进行数据库操作可以实现单一数据维护的快速编程,比如:单位字典维护、商品字典维护、人员信息维护等。编程的过程主要包括界面的规划、数据绑定控件的选择、属性设置、关联设置、运行测试等。实现数据绑定控件编程主要利用三类控件:第一类:ADO面板组。主要包括TADOConnection、TADODataSet、TADOTable等组件。利用这些组件产生操作的数据集对象;第二类:Data Access面板组。主要使用TDataSource组件。利用这个组件在数据集组件和Data Controls组件之间建立联动联系。第三类:Data Controls面板组。利用这组组件实现数据的可视化和与用户进行交互。实验步骤:一、界面规划这一部分主要是根据功能需求和界面设计的一般方法,规划界面的核心元素和界面布局。一般情况下,基本信息的维护主要包括信息浏览区、记录编辑区、功能提示区、命令按钮区等。比如:以NorthWind数据库中的Products表记录维护为例:提示区浏览区命令区编辑区提示:上图只是一个示意,不同的需求应该根据需要进行适当的布局设计。界面设计时主要利用Standar面板中的Panel组件进行区域划分,并设置其Align属性以适应窗体的变化。二、连接数据库1. 将ADO面板中的TADOConnection放到界面上,命名为connProduct2. 设置ConnectionString属性。操作步骤一:选中TADOConnection组件后,在Object Inspector中找到ConnectionString属性,双击,或者单击后面的【】按钮。操作步骤二: 选择Use Connection String,采用无源连接方式,单击【Build】按钮。操作步骤三: 根据不同的数据库管理系统选择相应的驱动程序。操作步骤四: 设定连接属性并选定数据库。操作步骤五: 单击【测试连接】成功后,就可以确定保存连接串了。3. 设置connected属性。程序运行时自动连接。4. 设置LoginPromt属性为false,连接时不再提示输入密码。三、生成记录集1. 将ADO面板上的TADODataSet放到界面上,命名为dtsProduct2. 设置Connection属性为connProdct,通过TADOConnection组件连接数据库。3. 设置CommandText属性select * from Products a,Suppliers b,Categories c where a.SupplierID =b.SupplierID and a.CategoryID = c.CategoryID4. 设置Active属性为true四、浏览方式显示记录集信息1. 将Data Access面板上的DataSource组件放到界面上,命名为dsProduct,并且将其DataSet属性设置为dtsProduct。2. 将Data Controls面板上的DBGrid组件放到界面上,命名为dbgrdProduct,并且将其DataSource属性设置为dsProduct。此时,就可以在DBGrid组件中看到记录集的数据了。但是表头字段名称仍然是数据库中表字段的名称,不利于用户使用。为此,需要设置表头字典名为汉字。3. 设置网格表头字段名称为汉字。操作步骤一:右击网格组件,选择Columns Editor菜单项。操作步骤二:右击字段编辑窗口,选择Add all Fields菜单项。操作步骤三 :选中一个字段,在Object Inspector中设置title属性中Caption子属性。五、编辑区设计一般情况下,不允许用户直接在网格中修改记录,而是在编辑区中进行。特别是对于标准字典信息通过组合框选择输入的字段,比如供应商,更应该放到编辑区中进行。1. 放置Standard中的Label组件。修改Caption属性为产品编号。2. 放置TDBEdit组件,用于关联某一个字段。设置其DataSource为dsProduct。设置DataField属性为ProductID。循环执行上述1、2两个步骤,将网格中的需要显示和编辑的字段全部设置好。此时,单击网格中的记录,编辑区中的组件显示将联动。修改编辑区中的信息,网格中的数据将同时被修改。六、标准候选项数据录入标准候选项是指这些数据单独放在一个表中并且进行了编码,其它表通过外键与这个表建立了关联。比如:Product表中的SupplierID建立了Product与Supplier之间的关联关系。用户为设置Product的供应商信息SupplierID时,不是直接手工录入的,而是从Supplier的名称列表中选择输入。在BCB中利用数据绑定控件实现这个功能时主要用到了TDBLookupCombo搜索组件和TADODataSet组件中的搜索字段。总的来说,利用搜索字段录入的目标是,用户从一个表(suppliers)中选择名称,而将名称对应的关键字值(productID)保存到另一个引用表(product)中。基本原理:在数据集中增加一个Lookup字段。这个字段一方面用来在网格中显示名称信息,另一方面和TDBLookupComboBox关联。TDBLookupComboBox字段用来显示所有标准候选项数据,同时,通过和数据集中的搜索字段关联,同步显示当前记录该字段的值,并且将用户新的选项选择提交给数据集进行保存。1. 增加数据候选项数据集。用来产生Supplier表的记录集作为输入候选项操作步骤一:在窗体上放一个TADOTable组件,命名为tblSupplier。操作步骤二:设置tblSupplier组件的Connection属性后,选择表名称为Supplier。2. 为数据集dsProduct增加搜索字段。操作步骤一:右击dstProduct数据集组件,选择Fields Editor,呼出下面的窗口操作步骤二:右击Fields Editor窗口,选择New Field3. 在网格中显示搜索字段。右击网格组件,选择Add Field,设置字段名为supplierLKFLD。4. 在网格中显示搜索字段。右击网格组件,选择Add Field,设置字段名为supplierLKFLD。5. 在编辑区中放置TDBLookupComboBox组件。设置如下重要属性: DataSource:网格显示的数据源dsProduct. DataField:网格显示的数据集的搜索字段dblckSupplier实验2 数据库应用程序开发(二)实验目的:1 CBC环境下ADO组件类的使用方法。2 以代码方式编程进行数据库操作的方法。3 数据库编程程序模块化的方法。实验环境:Borland C+ Builder 6.0 ,SQL Server 2000以上数据库管理系统。实验学时: 2学时实验内容:对数据库应用程序开发(一)进行修改,利用编码方式实现相同的功能。实验原理数据库应用程序开发(一)中数据维护的功能实现是通过设置组件属性,建立组件之间的关联,无编码的方式实现的。这种方式实现快捷,但是也有不利的地方,比如:程序的维护性差,不够灵活,难以实现程序的模块化结构等。为此,需要采取编码的方式进行组件属性的设置和关联的建立,另外数据的更新也要通过代码来实现,而不是通过数据绑定组件进行数据的自动提交。ADO面板中的每一个组件对应了一个VCL类库中的类,通过创建类的实例,并向其发消息实现数据的操作。完成数据操作主要的编码方法包括一下几种:1. 建立数据库连接对象TADOConnection * connToProduct;connToProduct=new TADOConnection(NULL); /构造对象connToProduct-ConnectionString=Provider=SQLOLEDB.1;Password=123;Persist Security Info=True;User ID=sa;Initial Catalog=Northwind;Data Source=.;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=FA1E648BA55B41F;Use Encryption for Data=False;Tag with column collation when possible=False; /设定连接串connToProduct-Open(); /打开连接 提示:连接串很长,没有必要死记硬背。利用组件的connectionString属性设置向导设置好,复制到代码中即可。2. 建立TADODataSet类对象,并产生记录集dtsProduct=new TADODataSet(NULL); dtsProduct-Connection =connToProduct; dtsProduct-CommandText=select productID, productName, a.supplierID, companyName from Products a,Suppliers b where a.SupplierID =b.SupplierID ; /赋值sql查询语句dtsProduct-Open(); /产生记录集3. 访问TADODataSet类对象产生的记录集int i=1;while(!dtsProduct-Eof) for(int j=1;jFieldCount ;j+)/遍历字段集合按顺序显示当前记录的所有字段值strngrdProduct-Cellsji=dtsProduct-Fields-Fieldsj-1-AsString; /移动光标到下一条记录dtsProduct-MoveBy(1); 提示:可以按照字段名称挑选字段显示,方法是:dtsProduct-FieldByName(productid)-AsString4. 利用TADOQuery类对象向DBMS提交DML语句以实现数据维护TADOQuery *qryProduct=new TADOQuery(NULL); /构造查询对象qryProduct-Connection=connToProduct; /关联连接对象qryProduct-SQL-Add(update products set ProductName=牙膏 where productID=1); /赋值DML语句qryProduct-ExecSQL(); /执行查询实验步骤:一、界面规划无论采取何种数据操作方法,都需要对界面进行规划和设计。与(一)不同的地方是,(一)中采取的是数据绑定组件,而本实验项目则是采用非数据绑定组件。比如:以NorthWind数据库中的Products表记录维护为例:提示区浏览区采用Additional面板中的StringGrid组件不自动提交了,编辑区增加了命令按钮编辑区,均采用非绑定组件:TEdit,TCombox等命令区 提示:编码方式下,也不需要往界面上放置ADO组件了。但是需要导入头文件:#include 二、显示产品记录到StringGrid中1、 模块级的TADOConnection连接对象创建一个TADOConnection对象,命名为connToProduct。为了保证窗体模块所有代码模块都能使用同一个连接对象,需要将connToProduct设置为窗体类TForm1的一个属性。操作步骤一:打开unit.h头文件,在Private区段增加TADOConnection连接对象指针变量connToProduct。操作步骤二: 打开Unit1.cpp文件,在窗体的构造函数中构造连接对象,并调用Open()打开连接。2、 建立Products表的TADODataSet数据集对象,操作步骤一:打开Unit1.cpp文件,在窗体的构造函数中,增加Proucts的操作代码3、 遍历DODataSet数据集对象中的记录,显示在StringGrid控件中。操作步骤一:打开Unit1.cpp文件,在窗体的构造函数中,增加数据集遍历代码。三、初始化下拉列表框cbbSupplier,用来编辑时选择输入供应商中在窗体构造的时候,就应该将供应商的下拉列表中的选项初始化好。下面的代码可以直接放入窗体构造函数中,也可以单独放到一个是有过程中,供窗体构造函数调用。/初始化Supplier下拉列表框TADODataSet * dtsSupplier=new TADODataSet(NULL);dtsSupplier-Connection=connToProduct;dtsSupplier-CommandText=select * from suppliers;dtsSupplier-Open();while(!dtsSupplier-Eof) cbbSupplier-Items-Add(dtsSupplier-FieldByName(companyName)-AsString);dtsSupplier-MoveBy(1);delete dtsSupplier; /释放堆内存四、显示产品记录到编辑区中要实现的功能是:当用户单击Grid中的一行,要将该行的字段信息显示到编辑区中。1、 捕捉网格的鼠标单击事件操作步骤一:在窗体上选中Grid控件操作步骤二在object inspector中找到Evnets页签,找到Onclick事件项,双击,产生代码框架2、 编写网格鼠标单击事件代码,读取Grid控件中的字符数据在写代码前,为了防止字段顺序的变化影响到代码,特地首先定一个枚举操作步骤一定义枚举,用来将字段的顺序值符号化。操作步骤二在Grid控件的单击事件中填写代码。void _fastcall TForm1:strngrdProductClick(TObject *Sender) int curRow=strngrdProduct-Row ; edtProductNO-Text=strngrdProduct-Cellsenm_productid+1curRow; edtProductName-Text=strngrdProduct-Cellsenm_productname+1curRow; cbbSupplier-Text=strngrdProduct-Cellsenm_company+1curRow;五、根据用户在编辑区输入的数据,更新表中产品的名称和供应商信息由于直通查询时根据编辑区中的ProductID进行更新的,并且是将用户选择输入的供应商名称转换为编号后,才能组成update sql语句去更新数据库。因此需要将根据供应商名称获得供应商编号做成一个子程序重用。1、 设计【供应商名称转编号】的通用函数AnsiString TForm1:transferCompanyNameToSupplierID(AnsiString companyName) TADODataSet *dtsSupplier=new TADODataSet(NULL); dtsSupplier-Connection=connToProduct; dtsSupplier-CommandText=select supplierid from suppliers where companyname=+cbbSupplier-Text +; dtsSupplier-Open(); AnsiString sid= dtsSupplier-FieldByName(supplierid)-AsString; delete dtsSupplier; return sid;2、 设计【修改记录】的click事件过程代码void _fastcall TForm1:btnMOdifyProductClick(TObject *Sender) AnsiString ssql=update products set ProductName= + edtProductName-Text + where productID=+transferCompanyNameToSupplierID(cbbSupplier-Text) +; TADOQuery *qryProduct=new TADOQuery(NULL); qryProduct-Connection=connToProduct; qryProduct-SQL-Add(ssql); qryProduct-ExecSQL(); 提示:禁止用户修改ProductID的值,方法是将edtProductID的Enabled属性设成False。为什么要禁止? 思考题:单击【修改记录】按钮后,虽然库中的记录已经做了修改,但是界面上网格中却没有变化。怎么解决这个问题?实验2 数据库应用程序开发(三)实验目的:1 数据库应用中事务处理界面规划方法2 掌握ADO数据库事务编程方法3 掌握异常处理机制4 掌握数据库业务规则校验产生的错误的捕捉方法。实验环境:Borland C+ Builder 6.0 ,SQL Server 2000以上数据库管理系统。实验学时: 2学时实验内容:编写一个数据库事务处理程序,实现多个表的同时操作,并利用数据库事务处理机制保证数据的一致性。(本指导书以餐厅开台为例)实验原理一、事务处理的确定数据库应用中最常用的功能是业务事件处理。网上选课系统的一次选课、图书馆系统的一次借阅或者还书、餐饮系统的一次收款都属于一次业务事件。业务事件在概念建模时当做实体来看待。应用程序除了创建事件实体之外,还要跟踪这个实体的运行状态,当事件实体消亡时要将其转移到历史记录中。事件处理的一个最大的特点是多个表同时操作,并且要保证这些操作同时成功或者全部撤销即数据库事务。二、事务的编程保证方法编程中保证事务特性的要求是:1. 操作数据的各个ADO数据对象,无论是TADODataSet还是TADOQuery等,都要设置成同一个TADOConnection对象。2. 执行事件数据保存前,必须调用TADOConnection对象的开启事务方法:BeginTrans();3. 当所有操作完成后,调用TADOConnection对象的提交事务方法:Commit();4. 如果任何一个数据操作发生了错误,必须调用TADOConnection组件的事务回滚方法:RollbackTrans(); 这要用到C+的的异常处理机制。事务处理代码结构如下所示:Try Try conn-BeginTrans(); /数据操作1 /数据操作2 conn-Commit();catch(Exception &e) /发生了任何错误,回滚事务 conn-RollbackTrans();_ finally /归还堆内存三、事务处理界面设计原则业务事件处理程序使用频率最高,是前台服务重要功能。界面设计应该简便易用,提示明确。对用户来说,软件界面就是软件的一切,良好的界面设计给人舒适和可信赖的感觉,也利于操作,防止无意失误,不容易产生疲劳。下面是几个商业软件的界面示意:1. 图书借阅界面。界面的核心要素是借阅者基本信息。书籍条码输入信息,当前已借书籍列表。这些要素是用户操作必须及时了解的信息,所以信息室完整的。同时支持多种书籍条码维护机制,通常情况下是扫描条码,当有故障发生时,也可以手工输入,确保业务事件处理的正常进行。二、显示产品记录到编辑区中2. 餐饮收款界面。界面的核心要素是消费基本信息,开台信息,点菜信息,并且区别零菜点单和套菜点单。不足的是本次营业消费列表放的位置不够合理。总的来说,界面内容丰富,操作方便。3. 开台界面以图示的方式,形象直观一目了然。要实现的功能是:当用户单击Grid中的一行,要将该行的字段信息显示4. 酒店管理界面以图示的方式,不仅形象直观一目了然,并且通过颜色或者背景图案区别房间的不同状态。四、全局对象的设计一个程序尽量减少使用全局变量,因为全局变量可以被多个模块所操作,造成程序维护困难,不容易调式。但是全局量也无法回避使用。比如:一次登陆后多个模块都要检查或者利用登录信息,这个登录信息就是一个全局的量。面向对象的编程环境下,全局数据往往都要封装在对象中,利用类静态成员保证单实例,从而实现全局的共享。这种处理模式被称为单态模式,即Singleton。实现用户登陆信息全局化的方法是:1. 建立一个用户类:User在User.h头文件中定义User类:#ifndef UserH#define UserH#include /-class Userprivate: AnsiString _userID; AnsiString _userName;public: User(AnsiString auserID,AnsiString auserName); AnsiString getUserID(); AnsiString getUserName();#endif在User.hpp头文件中定义方法实现:#pragma hdrstop#include User.h/-User:User(AnsiString aUserID,AnsiString aUserName) _userID=aUserID; _userName=aUserName;AnsiString User:getUserID() return _userID;AnsiString User:getUserName() return _userName;#pragma package(smart_init)2. 建立一个单态类:RestaurantSystem在RestaurantSystem.h头文件中定义User类:#ifndef RestaurantSystemH#define RestaurantSystemH/-#include user.hclass RestaurantSystemprivate: static RestaurantSystem * _restaurantSystem; /本类的一个静态实例 User * _currentUser;public: void setCurrentUser(User * user); /设置全局的登录用户对象 User* getCurrentUser(); /获得全局登录的用户对象 static RestaurantSystem * getInstance(); /本类的静态实例的构造方法;RestaurantSystem * RestaurantSystem:_restaurantSystem=0; /注意:变量前面的域说明符不能少! #endif在RestaurantSystem.hpp文件中定义方法实现:#pragma hdrstop#include RestaurantSystem.h/-RestaurantSystem * RestaurantSystem:getInstance() if(_restaurantSystem=0) _restaurantSystem=new RestaurantSystem(); return _restaurantSystem;User* RestaurantSystem:getCurrentUser() return _currentUser;void RestaurantSystem:setCurrentUser(User * user) _currentUser=user; #pragma package(smart_init)3. 设定全局登录用户对象用户登陆成功后,系统构造用户对象,并放入单态类RestaurantSystem中: /构造用户对象并存入全局对象RestaurantSystem:getInstance()-setCurrentUser(new User(edtUserID-Text,qry-FieldByName(userName)-AsString);4. 提取全局对象在预定事务处理界面启动的时候,要初始化操作者信息,代码如下: edtOperator-Text =RestaurantSystem:getInstance()-getCurrentUser()-getUserName();五、全局的ADO数据库连接管理器每次数据库操作都用到ADOConnection连接对象的,为此设计一个单态的DBManager类,用来产生数据库连接对象。 1. 定义一个DBManager类在头文件DBManager.h中定义:#ifndef DBManagerH#define DBManagerH/-#include class DBManagerprivate: static DBManager * _instance;public: DBManager(); static DBManager * getInstance(); TADOConnection * getConnection();DBManager * DBManager:_instance=0;#endif在头文件DBManager.hpp中定义方法实现:#pragma hdrstop#include DBManager.h/-DBManager:DBManager()DBManager * DBManager:getInstance() if(_instance=0) _instance=new DBManager(); return _instance; TADOConnection * DBManager:getConnection() try TADOConnection * conn=new TADOConnection(NULL); conn-ConnectionString=Provider=SQLOLEDB.1; Password=123;Persist Security Info=True;User ID=sa; Initial Catalog=restaurant;Data Source=.;Use Procedure for Prepare=1; Auto Translate=True;Packet Size=4096;Workstation ID=FA1E648BA55B41F; Use Encryption for Data=False;Tag with column collation when possible=False; conn-Open(); return conn; catch(Exception &e) /登记日志,抛出错误 throw e; #pragma package(smart_init)2. 使用DBManager类导入头文件:#include #include “DBManager.h”得到数据库连接:TDOConnection *conn=DBManger:getInstance()-getConnection();六、窗体之间数据传递在主界面上,用户双击一个餐台,系统将打开预定事务界面,主界面(frmTablePreserve)要将用户选择的餐台信息传递到事务界面(frmPreserveTrans)上,一个方法是:直接将数据填充到另一个窗体的控件中,如下代码: /设定餐台ID frmPreserveTrans-lblTableID-Caption=tableInfo.SubString(1,tableInfo.Pos( );frmPreserveTrans-lblTableInfo-Caption =tableInfo;另一个方法则是:在窗体类的public区,定义变量,也可以由别的窗体赋值。frmPreserveTrans类定义公共的数据成员:主界面frmTablePreserve赋值:frmPreserveTrans-lblTableID-.实验步骤:一、界面规划界面规划也是用户使用的方式和流程设计。应该与用户充分沟通,按照用户的习惯进行设计。作为一个系统,应该有一个登录界面,让用户输入登录信息,在事务中要登记具体的操作者,作为系统安全的追查。1. 界面组成序号界面名称功 能1frmLogin用户登陆界面2frmTablePreserve主界面。查看所有餐台资源。3frmPreserveTrans预订事务处理界面2. 界面处理流程frmLoginfrmTablePreservefrmPreserveTrans3. 界面布局及操作说明 登陆界面:frmLogin用户输入登录用户名和密码,单击【确定】按钮,系统检查登录信息的正确性,如果用户名存在,而且密码正确,则系统保存登录用户的信息,进入餐台预订主界面。否则保持这个界面。对餐台资源进行条件筛选 主界面:frmTablePreserve餐台资源显示区。显示筛选的结果。餐台状态统计区。这个界面的主要作用是让用户对餐台资源一目了然。并且方便发起事务处理请求。餐台资源显示区以网格的形式显示,一个单元格代表了一个餐台,用户可以双击一个单元格,呼出预订事务处理界面。餐台信息显示,包括当前状态。 预订事务处理界面:frmPreserveTrans预订信息输入区命令区用户在编辑区输入预订的相关信息,单击【确定】按钮,就可以完成预订事务处理。二、建立数据库1. 概念结构设计 提示:正常模型中应该建立职员实体,为了简单起见,将系统用户和职员合到一起了。2. 物理结构设计参见提供的数据库文件:restaurant_Data.MDF和restaurant_Data.LDF。 提示:打开sql server的企业管理器,右击数据库,所有任务-附加数据库,选择MDF文件就可以打开了。三、维护基础数据系统主要关注预定事务处理,所以没有提供基础数据的维护功能。基础数据包括: 人员:User。包括登录信息。 餐台状态:TableState 餐台特征类型:TableSpecialtyType 餐台特征:TableSpecialty 餐台:DinningTable 提示:这些数据属于静态数据,是运行的基础。在提供的数据库中已经有了一些,可以手工修改以适应不同的测试需求。这些数据可以利用实验二提供的方法进行维护就可以。四、用户登陆界面设计用户单击【确定】按钮,系统执行下列的代码:void _fastcall TfrmLogin:btnOKClick(TObject *Sender) /校验用户合法
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高级茶艺师试题库(含答案)
- 2025年物流园区发展模式与创新案例研究报告
- 2025年绿色金融可持续发展目标(SDGs)实践与绿色基金管理报告
- 2025年特色小镇产业培育社会稳定风险评估与区域发展报告
- 2025年教育游戏化在家庭教育中的应用与教学设计指南
- 2025年城市黑臭水体治理实施方案中的水环境治理与城市雨水收集利用报告
- 威海鑫山冶金有限公司校园招聘模拟试题附带答案详解完整
- 推拿治疗学练习题及答案详解(考点梳理)
- 护士企业编制面试题库含完整答案详解(历年真题)
- 2025低价股份转让协议及后续股权权益保障合同
- GB/T 45972-2025装配式建筑用混凝土板材生产成套装备技术要求
- 变频及伺服应用技术(郭艳萍 钟立)全套教案课件
- 2024新译林版英语八年级上单词汉译英默写表(开学版)
- 美的集团工作流程体系
- 港口和码头基本知识培训课件
- 美容外科安全应急预案范文(3篇)
- 水利工程拦水坝建设方案实例
- 新学期+心动力+课件-2025-2026学年高二上学期开学第一课主题班会
- (2025年标准)出资收车协议书
- 6G多维度切片QoS保障-洞察及研究
- 老年人能力评估师考试题能力模拟题及答案
评论
0/150
提交评论