收藏 分享(赏)

数据库及应用课程设计示例.doc

上传人:dzzj200808 文档编号:4030607 上传时间:2018-12-05 格式:DOC 页数:26 大小:1.86MB
下载 相关 举报
数据库及应用课程设计示例.doc_第1页
第1页 / 共26页
数据库及应用课程设计示例.doc_第2页
第2页 / 共26页
数据库及应用课程设计示例.doc_第3页
第3页 / 共26页
数据库及应用课程设计示例.doc_第4页
第4页 / 共26页
数据库及应用课程设计示例.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

1、课程设计示例客房管理系统设计一、课程设计的目的和意义在当今经济和商务交往日益频繁的状况下,宾馆服务行当正面临客流量骤增的压力。越来越多的宾馆饭店都认识到传统的管理方法已经不能适合当今社会的需要,必须借助先进的计算机信息技术对宾馆服务进行管理。 “客房管理系统”可以说是整个宾馆计算机信息管理系统的中心子系统,因为宾馆最主要的功能就是为旅客提供客房。设计客房管理这样一个系统,可以涉及到大多数 SQL Server 数据库的重要数据库对象、重要功能和特性,比如:视图、触发器和存储过程等。由此,通过这个课程设计可以加深对这些SQL Server 数据库知识的学习、理解,积累在实际工程应用中运用各种数据

2、库对象的经验,使学生掌握使用应用软件开发工具开发数据库管理系统的基本方法。在实用性方面,客房管理系统是很普遍的一种应用,选择该系统作为课程设计也可以为学生以后可能遇到的实际开发提供借鉴。二、系统功能设计系统功能是在实际开发设计过程中经过调研、分析用户需求,和用户一起共同确定下来的,是系统为满足用户需求所应完成的功能。本课程设计模拟一个小型客房管理系统。本系统要求实现以下主要功能:1、 数据录入功能:在本系统中提供客人信息登记功能。可以录入客人的姓名、性别、年龄、身份证号码、家庭住址、工作单位、来自地的地名、入住时间、预计入住天数、客房类别、客房号、离店时间以及缴纳押金金额等信息。在客人退房时,

3、系统根据输入的离店时间以及客房单价自动计算客人住宿费金额。2、 数据查询功能系统需要提供以下查询功能:1) 查某类客房的入住情况及空房情况,显示所有该类客房空房数目和客房号。2) 根据客人姓名、来自地的地名、工作单位或家庭住址等信息查询客人信息;根据客房号查询入住客人的信息。3) 查询某个客人住宿费用情况,显示客人缴纳押金金额、实际入住天数、客房价格、实际住宿费、住宿费差额及余额等信息。4) 查询所有入住时间达到或超过预计入住天数的客人。3、数据统计功能1)统计一段时间内各类客房的入住情况。2)统计全年各月份的客房收入。3)统计一段时间内各类客房的入住率。三、数据库设计 数据库设计是根据系统功

4、能的要求和数据规模规划数据库服务器选型、数据表结构定义、分配数据库服务器端的功能实现以及创建数据库对象。1、数据库与数据表设计分析前面的系统功能要求,需要一个表来存储和管理客人信息,使系统能够接受客人入住时输入的各项数据,以实现数据录入、查询或统计客人信息等功能。客人是本系统的第一个实体。为了能实现查询和统计客房入住情况等功能,必须有一个表来存储和管理所有客房的信息,包括客房的类型、客房号、是否入住客人等。客房是本系统的第二个实体。一般来说,客房价格是以客房的类型来制定的。为了保证系统数据库最小的数据冗余和数据完整性,需要建立一个表来记录各种客房类型的信息。它主要为各种查询和统计功能提供客房价

5、格数据。它与客房表是一对多的关系,在客房价格变动时,只需要在客房类型表中更改。综上所述,在客房管理(KFGL)数据库中需要建立 3 个数据表:客人信息数据表、客房信息数据表和客房类型数据表。(1)客人信息数据表定义根据系统功能要求,客人信息表需要能接受客人登记入住和离店时输入的所有信息.还必须包括客人最终的住宿费金额,因为住宿费金额是统计客房收入的基本数据。客人信息表的结构定义如表 1 所示。表 1 客人信息数据表定义列名 数据类型 大小 空 值 键 说明cId int 4 主键(标识列) 序号cName char 8 姓名cSex bit 1 性别cAge tinyint 1 年龄cPNum

6、 char 18 身份证号码cAdd varchar 50 家庭住址cWork varchar 50 工作单位cFrom char 10 来自地的地名cInTime smalldatetime 4 入住时间cDay Tinyint 1 预计入住天数rNum char 5 客房号cOutTimesmalldatetime 4 离店时间cDeposit smallmoney 4 押金金额cCost smallmoney 4 住宿费 其中,cId (序号)是表的主键,唯一标识一个入住的客 人。设计时定义它为标识列,系统自动地产生连续的永不重复的序列号。rNum(客房号)在客人信息 表中是外键,它是客

7、房信息表的主键,唯一标识一个房间。通过它,系统将引用到客房类型、客房单价等信息。客人信息表取名为 tblClient。(2)客房信息数据表定义客房信息表中应该记录每一个客房的信息和状态,系统查询这些信息并决定客人能否入住。每个客房的类型决定了客房的价格,可供客人入住时选择房间及离店时结算住宿费用。客房数据表的定义如表2 所示。表 2 客房信息数据表定义列名 数据类型 大 小 空 值 键 说明rNumrStatsrTypecIDchar 5 主键 客房号char 1 客房状态char 2 客房类型编号char 9 入住客人序号其中,rNum(客房号)是该表的主 键,唯一标识一个客房房间。它将作为

8、客人信息表的外键,保证客人信息表的参照完整性。rStats 表示房间的状态,设定其值为 “N”时,表示客房没有入住客人;值为“F”时,表示客房以有客人入住;值为“P”时,表示客房被预定。rType 表示客房的类型,它是该表的一个外键,来自下面将 要说明的客房类型数据表。cId 将记录入住客人的序号,在客房信息表中增加这一列时,虽然增加了数据冗余,但可以在查询房间中入住客人信息时,提高系统的性能。因为客房信息表的记录数相对固定,相比之下,增加这个冗余的列对于整个系统来说是有利的。客房信息表取名为 tblRoom。(3)客房类型数据表定义客房类型主要描述客房的服务标准和收费价格,这些信息如果包含进

9、每个客房的记录中,将会使客房信息表产生较大的数据冗余,特别在客房数量大的情况下。此外,如果客房信息表的每条记录都包括价格信息,那当某种类型的客房价格变动时,用户就不得不对客房信息表中的记录逐一进行修改。客房类型数据表的定义如表 3-3 所示。表 3-3 客房类型数据表定义列名 数据类型 大 小 空 值 键 说明 rTyperNamerPricechar 2 主键 客房类型编号char 10 客房类型名称smallmoney 4 该类型客房价格其中,rType 表示客房类型的编号,作为该表的主键,唯一标识某一类客房。它将作为客房信息表的外键,保证客房信息表数据的完整性。客房类型数据表取名为tbl

10、RoomTyp e。(4)根据上面三个数据表的设计,可执行下面的步骤创建数据表1)在服务器计算机上安装 MS SQL Serve r 2000。2)打开企业管理器,在本地服务器上创建新的数据库 KFGL。3)展开 KFGL 数据库,单击“表” ,按照设计,创建表 tblClient、tblRo om 和tblRoomType2、数据完整性设计设计好表的结构后,需要根据实际应用和操作规则为表制定一系列约束和规则,从而达到保证数据完整性原则的目的。约束(1)主键约束、非空值约束在三个表的设计中已经规定了每个表的主键列、非空列,这些规定都是在实际应用环境中所必需的。比如 tblRoom 表中定义了房

11、间号 rNum 为主键,则在表 tblRoomr 中Num必须是唯一的一个饭店不可能出现两个房间号码相同的客房;客房类型 Type和客房状态 rStats 不能为空值,因为 rType 是辨别客人入住客房中类、住宿费用结算的依据,所以不能 为空值;rStat s 是辨别客人能否入住的依据,所以也不能为空值。(2)CHECK 约束对于 tblClient 表,应该建立一个检查约束,即所有客人的离店时间都不可能小于入住时间。按下列步骤创建这个约束:1) 打开企业管理器,展开服务器,展开“数据库” ,展开“KFGL”数据库,单击“表” 。2) 用鼠标右键单击“tblClent”表,选择“设计表” ,

12、系统将弹出“设计表”对话窗口。3) 用鼠标右键单击此窗口的上方窗格,单击“CHECK约束” ,单击“新建”按钮,在“约束表达式”文本框中输入表达式:(cOutTime=cInTime ) 。4) 选择“对 INSERT 和 UPDATE 操作强制约束”复选框,单击 “关闭”按钮,完成CHECK 约束创建操作。(3)使用缺省值可以将三个数据表中所有货币类型的列都定义为缺省值,特别是指定了“非空”约束的列。tblCl ient 表的预住天数cDay 的默认值可定义为 1,而客人入住时间 cInTime 的缺省值应该就是添加客人记录的时间(除非是客房预定,在本系统中暂不考虑客房预定) ,所以可以设定

13、缺省值为“(GETDATE) ”。(4)唯一约束除了每个表的主键需定义为唯一外,对于 tblRoomType 的客房类型名 rName,也应该定义为唯一的名称。因为在系统功能需求中,要求按客房类型对数据进行统计,如果在统计结果中只显示客房类型编号,用户就必须记忆那种类型是什么编号,这样很不直观。所以应按照相关的 SQL Server 数据库教 材中建立唯一约束的方法进行创建。(5)外键约束在数据表设计中已经讨论了各个表的外键,这里以 tblClient 为例说明创建步骤,tblRoom 和 tblroomType 表可以按照相同的步骤进行操作。1)打开企业管理器,展开服务器,展开“数据库” ,

14、展开“KFGL”数据库,单击“表” 。2)用鼠标右键单击此“tblClient”表,选择“设计表” ,系统将弹出“设计表”对话窗口。3)用鼠标右键单击此窗口的上方窗格,单击“关系” ,在“主键表”下拉框中选择“tblRoom”4)在“外键表”中选择“tblClient” 。5) 在“主键表”和“外键表”下方的窗格中都选择列名“rNum” ,表明 tblRoom 表中的主键“rNum”就是 tubClient 表中的外键。选择“对 INSERT 和 UPDAET 操作强制约束”复选框,表明以后对tblClient 表中的 rNum 所有的添加和更新操作都会检查在 tblRoom 表中是否存在与此

15、相应的 rNum。单击“关闭”按钮,完成创建操作。(6)规则为了检查 tblClinent 表中输入的身份证号码 cPNum 是有效位数(我国身份证号码有旧的15 位数字和 18 位数字两种) ,可以创建一个规则邦定到该列,在数据操作时进行检查。规则的定义语句为:(LEN(CardNum)=15) OR (LEN(CardN um)=18)创建和绑定的方法及步骤请参见教材中的相关内容。(7)标识列在设计客人信息表 tblClient 时,我们把客人序号 cId定义为标识 列,使其在添加记录时自动产生序列号,并且每个序号唯一地标识一次客人入住信息。完成数据完整性设计后,登入模拟数据。3、视图、触

16、发器和存储过程设计定义了系统需要的数据库和表的结构后,下面进一步分析整个客房管理系统中的业务流程。在这里,需要确定哪些业务处理和数据处理的功能使用MS SQL Server 来实现,那些数据处理的功能由应用程序实现,从而设计特定的视图、触发器或存储过程。下面将讨论系统需要设计并创建的视图、触发器和存储过程。(1)客人选择客房处理客人来到饭店入住前要做的第一件事是选择合适的房间,客人将告知饭店服务员自己需要的客房类型,服务员在系统中选择指定的客房类型后系统将显示所有的空余的该类型房间,并显示该类型客房价格供客人参考选择。这个过程可以通过一个存储过程来实现。在这个存储过程中,需要的输入参数是客房类

17、型,输出的结果集是所有这种客房类型的空房记录和价格。定义这个存储过程为 SelRoom,定义输入的参数名为 RoomType,定义输出的价格参数名为 RoomPrice。根据存储过程的创建语法,编写 SelRoom 的实现代码如下:CREATE PROCEDURE SelRoomRoomType char(2)RoomPrice smallmoney OUTPUTASSELECT rNUM FROM tblRoomWHERE(rType=RoomType) AND(rStats= N)SELECT RoomPrice=rprice FROM tblRoomTypeWHERE rType=Roo

18、mTypeGO在上面的代码中包含了两个 SELECT 语句,第一个 SELECT 语句从 tblRoom 表中选择了所有客房类型为输入参数指定类型并且客房状态为“空” (N)的客房号,并将所有记录作为结果集返回;第二个 SELECT 语句从 tblRoomType 中取得了指定客房类型的价格,作为输出参数 RoomType 返回。(2)客人入住登记处理客人入住登记操作完成后,入住的客房状态应该及时做相应的改变,并记录客人的序号供以后查询。这一功能可以使用触发器来自动进行:因为进行客人入住登记操作是在客人信息表 tblClient 中添加一条新的记录,所以可以为tblClient 设计一个 In

19、sert 触发器,当tblClient执行 Insert 操作后自动更改tblRoom 相应客房记录的数据。定义这个触发器名称为client-insert 。其实现代码如下:CREATE TRIGGER client-insert ON dbo.tblClentFOR INSERTASUPDATE tblRoomSET rStats=F,cId=b.cIdFROM tblRoom a,inserted bWHERE a.rNum=b.rNum(3) 客人离店退房处理客人在离店退房时,服务员输入客人的退房时间,然后要计算出客人的住宿费用,以便于客人结帐。同时,系统应该将客人所退客房的状态更改为“

20、空” ,以便于接待下一个客人入住。这一功能也可以通过一个触发器来实现。为 tblClient表设计一个名为 client-update的 UPDATE 触发器,当系统对 tblClient 的 cOutTime(退房时间)进行 UPDATE 操作后,将会自动触发它。该触发器将自动取得当前所退房的单价,并根据客人入住天数计算出客人的住宿费用,把费用值写入 cCost 列,最后触发器将 tb1Room 相应客房记录的rStats 和 cId更新,即将客房状态置为空房,并清除对应于该客人的入住标识信息。下面是 client-update 触发器的定义代码:CREATE TRIGGER client-

21、update ON dbo.tblClientFOR UPDATEASIF UPDATE(cOutTime) /*只有对 cOutTime 列进行更改时才处理*/BEGIN/*求出当前客人诉诸客房的单价 */DECLARE price smallmoneySET price=(SELEC T rPrice FROM tblRoomType RIGHT JOIN tblRoomON tblRoom.rType=tblRoomType.rTypeRIGHT JOIN tblClientON tblClient.rNum=tblRoom.rNumWHERE tblClient.cIdIN(SELEC

22、T cIdFROM inserted)/*求客人住宿费并更改 cCost 列*/UPDATE tblClientSET cCost=price*DATEDIFF(DAY,b.cInTime,b.cOutTime)FROM tblClient a,insereted bWHERE a.cId=b.cId/*更新 tblRoom 相应客房的状态*/UPDATE tblRoomSET rStats=N,cId=FROM tblRoom a,instered bWHERE a.cId=b.cIdEND在上面的代码中,首先定义了一个变量price ,然后通过一个右连接直接得到当前客人所住客房的单价。在第

23、二段语句中,使用 SQL函数 DATEDIFF求得客人入住时间和退房时间之差,求出入住天数,乘以price 变量就得到了客人最终的住宿费用。值得注意的是:UPDATE 触发器可以使用 inserted 表和 deleted表,这里必须使用 inserted 表,它的cOutTime才是最新更改的退房时间,如果使用 deleted 表,将得不到正确的结果。最后,触发器对 tblRoom 表中的 cId 为当前客人 cId的记录的 rStats烈和 cId列进行了更新。(4)客人信息查询处理在实际应用中,经常会有这样的要求:服务员需要通过客人的部分资料查询客人的全部信息以及客人住在哪一个客房。由于

24、需要通过输入查询条件,才能得到结果集,所以可以设计一个带输入参数的存储过程来实现。定义一个名为 spClientInfo 的存储过程,该存储过程以客人姓名(ClientName ) 、单位(ClientWork )、家住地址( ClientAdd),及来自地的地名(ClientForm)等作为输入参数,存储过程返回查询到的结果集。spClientInfo 的定义代码 如下:CREATE PROCEDURE spClientInfoClientName varchar(8)=%,ClientWork varchar(50)=%,ClientAdd varchar(50)=%,ClientFrom

25、 varchar(10)=%,ASSELECT * FROM tblClientWHERE(cName LIKE ClientName+%)AND(cWork LIKE %+ClientWork+%)AND(cAdd LIKE %+ClientAdd+%)AND(cFrom LIKE ClientFrom+%)GO在上面的代码中,向 spClientInfo 传入四个参数,依次是:客人姓名、客人工作单位、客人家庭住址和客人来自地的地名。在 WHERE 子句中使用 LIKE,并在参数前、后添加“%”,使得该存储过程具有模 糊查询的功能。比如,Clien tName参数中输入客人的姓,就可以查询到

26、所有该姓氏的客人信息。4 个参数可以同时给出,也可以只输入一个参数,但是参数的位置顺序不能改变。(5)查询客人住宿费用的处理在本系统的功能需求中要求能够查询客人住宿费用的详细情况,包括客人入住时交付的押金金额、客人住宿天数、客房价格、客人住宿费金额、住宿费与押金差额等信息。实现该功能可以通过一个存储过程,以客人序号为输入参数,输出上面要求的各种信息数值。设计一个名为 spClientCost 的存 储过程,定义代码如下:CREATE PROCEDURE spClientCostClientId char(9)ASDECLARE ClientPrice smallmoneyDECLARE Cli

27、entDays smallintDECLARE ClientCost smallmoneyDECLARE ClientBalance smallmoneySELECTClientPrice=(SELECT rPrice FROM tblRoomType RIGHT JONE tblRoomON tblRoom.rType=tblRoomType.rTypeRIGHT JOIN tblClientON tblClient.rNum=tblRoom.rNumWHERE tblClient.cId=ClientId),ClientDays=(DATEDIFF(DAY,cInTime,GETDATE(

28、)ClientCost=(ClientPrice*ClientDays),ClientBalance(cDeposit-ClientCost)FORM tblClientWHERE cId=ClientSELECT cDeposit,ClientPrice as cRoomPrice,ClientDay as cDays,ClientCost as cCCost,ClientBalance as cBalanceFROM tblClientWHERE cId=ClientIdGO在上面的代码中,首先定义了4 个变量,分别是:ClientPrice、 ClientDaysClientCost、C

29、lientBalance,它们分别表示:客人入住房间的单价、客人入住的时间、客人的住宿费用和客人所缴纳押金与住宿费用的差额。第一个SELECT 语句起赋值作用,分别把各个表达式的结果赋值给各个变量。第二个 SELECT 语句是一个选择,将 tblClient表的 cDeposit以及前面求得的各个变量值作为存储过程的结果集返回。(6)查询住宿时间到期的客人客房管理服务员通常根据客人入住时登记的预住天数收取相应的押金,当客人住宿时间达到预住天数时就应该通知客人,以便客人补交押金或退房。系统为管理服务员提供这样的查询功能,可以显示出所有入住时间达到预住日期的客人信息。完成这个功能只需要在表中选择入

30、住天数大于等于预住天数的记录,而不需要输入参数,所以,可以使用一个视图来实现这一查询功能。定义视图的名称为 vClient_Day,定义代码如下:CREATE VIEW dbo.vClient_DayASSELECT cid,cName,rNum,cFrom,cDay,cInTime,DAYEDIFF(DAY,cInTime,GETDATE()As cPDayFORM dbo.tblClientWHERE(cOutTime IS NULL) AND (DATEDIFF(DAY,cInTime,GETDATE()=cDay)代码中使用DATED IFF 函数求得 cInTime 与当前日期之间的

31、天数,即客人实际住宿天数。所有住宿天数大于或等于预住天数cDay ,并且离店时间 cOutTime 为NULL 的客人记录都将成为结果集中的记录。(7)客房销售统计作为一个简单的客房管理系统,应该提供给管理者一定的统计数据。系统中最基本的统计数据就是各种类型客房在一定时间段内的销售收入情况。设计一个存储过程,以管理人员输入的统计起始日期和终止日期作为输出参数,在这段时间内所有类型客房的销售收入、销售次数(客人入住次数)为结果集。这个存储过程名为 spRoomSale,两个输入参数分别为StartDate 和EndDate。设计代码如下:CREATE PROCEDURE spRoomSaleSt

32、artDate smalldatetime,EndDate smalldatetimeASSELECT rtype,rname(SELECT SUM(cCost)FROM tblClientLEFT JOIN tblRoom ON tblClient,rnum=tblRoom.rnumWHERE(tblClient.cInTime BETWEEN StartDate AND EndDate)AND(tblRoomType.rtype=tblRoom.rtype) AS sale(SELECT COUNT(tblClient.cId) FROM tblClientLEFT JOIN tblRoo

33、m ON tblClient.r.num=tblRoom.rnumWHERE(tblClient.cInTime BETWEENStartDate AND EndDate)AND (tblRoomType.rtype=tblRoom.rtype) AS salenumFROM tblRoomType代码中使用了两个 SELECT 子查询,分别求得起始日期与终止日期之间、客房类型为当前客房类型的所有住宿费用总和(客房销售收入 sale)及客房销售次数 salenum。然后这两个值作为新的列与 tblRoomType 的 rType、rName列一起作为结果集。注意 BETWEEN的用法。(8)统

34、计某年份每月的客房销售数据饭店管理人员常常需要比较一年中各个月份的客房销售收入,并把它制作成表格。实现这一功能可以使用一个存储过程,以输入一个年度作为参数,产生该年度12 个月份的销售收入统计。定义该存储过程名为 spMonthSum,输入参数为This Year。实现代码如下:CREATE PROCEDURE spMonthSumThis Year CHAR(4)ASSELECT DATEPART(mm,cInTime) AS cMonth,SUM(cCost) AS cAmountFROM tblClientWHERE DATEPART(mm,cInTime)=ThisYearGROUP

35、BY DATEPART(mm,cInTime)GO注意上面的代码中如何使用 GROUP BY 字句来实现统计功能。代码中还使用了日期函数 DATEPART 和求和函数 SUM。(9)统计一段时间内各类客房的入住率饭店经营决策最关心的数据之一就是客房的入住率,他们以一段时间内各类型客房的入住情况为依据,从而调整饭店的经营策略。客房的入住率通过下面的公式来计算:入住率=该类客房时间段内有客人的天数之和 / 时间段总天数 / 该类客房数若要实现统计入住率这一系统功能,就需要设计一个比较复杂的存储过程。将这个存储过程命名为spRoomFullRate,使用输入参数StartDate 、EndDate

36、作为统计的开始时间和结束时间。存储过程实现代码如下:CREATE PROCEDURE spRoomFullRateStartData smalldatetime,EndData smalldatetimeASSELECT b.rName,a.rTypeNum,b.rFullDays,(CAST( (CAST(b.rFullDays as decimal(5,2)/(CAST(a.rTypeNum as decimal(5,2)/(CAST(DATEDIFF(day,StartDate,EndDate) AS decimal(5,2)*100)AS decimal(5,2) )AS rFullR

37、ateFROM( SELECT COUNT(tblRoom.rNum) AS rTypeNum,tblRoom.rTypeFROM tblRoomGROUP BY tblRoom.rType) a,( SELECT tblRoomType.rName,tblRoomType,(SUM(DATEDIFF(day,tblClient.cInTime,tblClient.cOutTime) AS rFullDaysFROM tblClient,tblRoom,tblRoomType.rType,WHERE (tblClient.cInTime between StartDate and EndDat

38、e) AND(tblClient.rNum=tblRoom.rNum)AND(tblClient.rType=tblRoomType.rType)GROUP BY rName,tblRoomType.rType)bWHERE a.rType=b.rTypeGO这是个比较复杂的设计,第一个 SELECT 语句查询到 4个列,其中 rName 表示客房类型名称,rTypeNum 表示该类型的客房总数量,rFullDays 表示统计时间段内该类客房有客人入住的天数,rFullRate 表示该类客房在统计时间段内的入住率。rType Num 需要从子查询中得到,rFullDays 则需要从第二个子查询

39、中的聚合函数SUM 得到。另一点值得注意的是,在计算 rFullRate 时,需要把各个参加计算的项转换为小 数类型,这样才能得到正确的结果。CAST 函 数为数据类型转换函数。 到目前为止,基本完成了所有数据库对象的设计和创建工作,余下的工作就是使用VB 与 SQL Server 数据库连接,正确组织、处理和显示 这些内容,使其成为真正的系统。四、 “客房管理系统”应用程序结构设计设计客房管理系统的应用程序结构,需要从该管理系统的用户需求入手,根据系统功能和实际应用业务流程设计科学、合理的程序流程和操作流程。这里的设计工作可以分为功能模块设计和用户界面设计。1、 功能模块设计功能模块设计是根

40、据系统功能的需求,合理地将各类相关的功能分解成相对独立的功能模块。划分功能模块有利于提高系统开发效率,便于设计代码的维护和更新,并且使系统更加结构化。根据系统功能的要求,把程序分为信息录入、查询和统计3 个模块。(1)入住登记与离店结帐模块此模块主要处理系统中所有的数据输入,包括客人入住登记以及客人离店结帐。(2)查询模块此模块是接受用户输入的各种条件,对数据库进行各种查询并返回查询结果,组织结果的显示。(3)统计模块此模块是接受用户输入的参数,按要求统计各类数据。2、用户界面设计用户界面是用户控制和使用系统的工具和手段。友好易用的操作界面可以使用户更快地熟悉系统、更加规范的操作系统,使系统为

41、用户提供更大的帮助,并且可以相对减少用户的错误操作,增强系统的稳定性。在这个简单的事例系统中,根据功能模块的设计,系统的主界面为一个 MDI 窗口,所有的功能模块窗口都将作为 MDI 子窗口中显示。主窗口提供 系统菜单,用户可通过菜单选择调用各个功能模块并进行操作。(1)系统主窗口主窗口设计样式如图 3-1 所示。图 3-1 系统主窗口系统菜单根据功能模块设计为“登记” “查询”和“统计”3 项, “退出系统”菜单将关闭运行中的系统。“登记”菜单中包含“客人登记/结账”和“浏览所有记录”两个菜单项。 “客人登记/结账”将调用系统中用于客人信息登记和结账的模块, “浏览所有记录”将显示系统中所有

42、客人的信息记录。“查询”菜单中包含“客房查询” “客人信息查询” “客人住宿费查询”和“客人入住天数查询”等 4 个菜单项。分别调用查询功能模块中相应的客房状态查询、客人信息查询、客人住宿费用情况查询和客人入住天数情况查询的处理窗口。 “查询”菜单内容如图 3-2 所示。图 3-2“查询“(左)和“统计 ”(右)“统计”菜单中包含“客房销售统计” 、 “客房月销售统计”和“入住统计率”3 个菜单项。 “客房销售统计”将显示统计一段时间内客房销售情况的窗口;“客房月销售统计”将显示统计一个年度中各个月份客房销售情况的窗口;“入住统计率”将显示统计一段时间内各类型客房入住率的窗口。(2) “客人登

43、记和结账”窗口系统处理客人信息登记和客人离店结账将通过这个窗口进行操作,窗口设计如图 3-3所示。图 3-3 中的“新客人资料 ”区域放置了若干文本输 入框用于输入新的客人信息, “现有客人信息”表格中将显示系统数据库中当前入住的客人信息,这些客人都没有退房。 “入住登记”按钮将把“新客人资料”区域中所有的资料写入数据库,而“离店结账”按钮将对“现有客人信息”表格中被选中的客人进行结账处理。图 3-3 客人登记和结帐窗口界面设计(3) “查询空余客房”窗口该窗口用于客房信息查询,用于查询指定类型的客房情况,显示该类型空余的客房。窗口设计如图 3-4 所示。图 3-4 用于客房查询的窗口设 计窗

44、口中一个下拉框中包含系统中所有客房类型,从此下拉框选择要查询的客房类型,单击“查询”按钮将开始查询指定类型的客房,并将该类型客房的价格显示在“客房价格”文本框中,所有空房的客房号将显示在“现余空房”表格中。(4) “客人信息查询窗口”将在查询客人信息时显示,用于接受用户输入查询条件和显示查询结果。窗口设计如图 3-5 所示。图 3-5 用于客人费用查询的窗 口设计窗口中“客人姓名” 、 “工作单位” 、 “家庭住址”和“来自何地”文本输入框用于输入各种相应的查询条件, “查询”按钮将启动查询处理,查询的结果将显示在“查询结果”数据表格中。(5) “客人费用查询”窗口该窗口将在进行客人费用查询时

45、显示,窗口设计如图 3-6 所示。在该窗口中“客人序号”输入框中输入需要查询的客人序号, “查询”按钮用于启动查询过程。产旬得到的客人姓名将显示在“客人”标签上;在“0000 房间”处显示客房号码。在“押金金额” 、 “客房房价” 、 “入住天数” 、 “住宿费”和“差额”等文本框中将显示查询结果中的相应内容。图 3-6 用于客人费用查询的窗口设计另外,该窗口也用于显示在对客人进行“结账”处理以后客人应付款金额或者饭店应退还给客人的金额。(6) “客人入住天数”窗口该窗口用于显示客人客人入住天数查询得到结果,窗口设计如图 3-7 所示。图 3-7 “客人入住天数”窗口(7) “统计”窗口图 3

46、-8 用于统计功能的窗口设计该窗口将用于系统中 3个统计功能,接受用户输入统计参数,显示统计结果。窗口设计如图 3-8 所示。窗口中“统计时间段”区域中有一个输入框和两个日期选择框,在执行按年份统计各类客房销售情况的统计功能时,输入框用于输入年份,而在执行按时间段统计客房销售情况和客房入住率时,两个日期选择框用于输入日期。由于 3 个统计功能共用这个窗口进行处理,所以在代码设计阶段将根据具体的统计功能显示或隐藏输入框和日期选择框。“统计结果”表格将显示统计的结果数据。五、使用 VB 创建工程并编写代码在这一节里,将具体讨论VB 与 SQL Server 数据库的连接方法以及如何在 VB 处理S

47、QL Server 的数据库 对象和数据 。为了更好、更熟练的掌 握 VB 中 ADO 数据对象的知识,本结的内容中将涉及几种不同的运用 ADO 对象的方法,便于读者参考。在本结的内容里将首先创建一个 VB 工程,然后根据功能模块的设计以及用户界面的设计一步一步地编写各个窗口中相应的代码。1、 创建工程首先在 VB中创建一个数据工程。在 VB 菜单中选择“文件” ,单击“新建工程”菜单项,在“新建工程”窗口中选择“数据工程” ,并单击“确定”按钮。这时,VB 将自动产生一个窗体、一个数据环境对象和一个数据报表以及其它的相关文件,同时系统自动为工程装入了 Adodc 等几个数据对象组件。 这几个自动产生的对象是 VB 的默认数据工程对象。由于在本客房管理系统中不需要数据报表,而其它的功能模块将另外创建窗体,所以可以把自动产生的窗体和数据报表从工程中删除。在删除窗体之前需要另外创建一个主窗体:选择“工程”菜单中“添加 MDI窗体”菜单项,在“添加 MDI窗体”中选择“MDI 窗体” ,单击“确定”按钮,完成“MDI 窗体”的创建。此时工程中添加一个名为“MDIForm1”的 MDI 窗体,更改窗体名称为“frmMain”。在“工程”菜单中选择“DataProject 属性” ,打开工程属性对话框。更改工程

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 课程设计

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报