数据库课程设计宾馆客房信息管理系统_第1页
数据库课程设计宾馆客房信息管理系统_第2页
数据库课程设计宾馆客房信息管理系统_第3页
数据库课程设计宾馆客房信息管理系统_第4页
数据库课程设计宾馆客房信息管理系统_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、设计内容与设计规定

1.设计内容:

数据库系统原理的课程设计规定学生综合运用本课程的有关知识,在教师的指导下,运用特定

的数据库设计环境,针对具体的问题,完毕从系统的需求分析、数据库的概念设计、数据库的逻辑设

计,到数据库实现等设计过程,最终实现一个较为完整的反映应用需求的数据库系统。因此,在设计

中,规定学生应当全面考虑各个设计环节以及它们之间的互相联系。

下面是各个设计阶段的具体内容。

1.系统需求分析

需求分析是数据库系统设计的一个重要的环节。本阶段应当对整个应用情况作全面的、具体的

调杏.拟定特定数据库应用环境下的设计目的.收集该应用环境下针对系统设计所需要的基础数据

以及对这些数据的具体存储规定,从而拟定用户的需求。用户对数据库的需求涉及:

⑴解决需求。即用户要完毕什么解决功能等。学生在设计中应根据具体的课题规定必定系统应

当实现的功能,一些基本的功能通常是必须具有的,如用户的管理与维护,基本数据的维护,灵活的

信息查询等。

⑵信息需求。即在数据库中需要存储哪些数据。学生应当根据具体的课题,认真分析有关的规

定,拟定本设计的信息需求.

⑶安全性和完整性功能。实践中这是•个需要与用户不断交流才干逐步拟定的需求。本课程设

计规定学生在自己的设计中能反映出基本的安全性和完整性功能。

本阶段的设计结果(即系统需求分析)应当在课程设计报告中进行具体描述,画出系统的数据

流图,写出较为具体的数据字典,作为本课程设计的验收依据之一。

2.数据库的概念设计

数据库的概念设计是在需求分析的基础上,运用与用户双方都能理解的形式,设计出数据库的

概念模型。本课程设计规定学生采用E-R方法进行数据库的概念设计。本设计阶段可分为:

•数据抽象。即根据需求分析的结果,抽取出与本课程设计相关的特性。设计局部蹴念模式。

运用E-R方法,设计出系统的各个局部ER模型。

・设计全局概念模式。通过对局部E-R模型的操作,解决各个E-R模型关于对象定义不一致问

题,以及对各个E-R模型进行合并优化等,最终形成数据库的全局概念模式。

本阶段的设计结果(局部和全局图、具体数据库设计工具中概念结构设计图)应当在课程

设计报告中进行具体描述,应当可以反映该设计的对的性,作为本课程设计的验收依据之一。

3.数据库的逻辑设计

数据库逻辑设计的目的是将概念设计阶段设计好的E-R图转换成与具体机器上的DBMS(如

Oracle)所支持的数据模型(如关系模型)相符合的逻辑结构。

鉴于本课程设计的具体环境规定,学生在进行数据库的逻辑结构设计时应当充足考虑特定的数

据库环境。

规定学生在本阶段的设计中分两步进行:

•形成初始的关系模式。将概念设计阶段产生的全局概念模式(E-R图)转换成初始的关系模

式。

•关系模式的规范化解决。为了减少或消除关系模式中存在的数据冗余和操作异常,根据设计

所规定的规范级别,按照本课程所学知识,逐个分析各个关系模式是否满足规定的范式。

在课程设计报告中应当提供本设计阶段的相关内容,作为本课程设计的验收依据之一。

4.创建数据库

在某一数据库管理系统环境中创建数据库,根据需要也可建立相关数据视图和存储过程。

在课程设计报告中应当提供相关的内容,涉及数据库及各个数据库对象的定义的SQL语

句,作为本课程设计的验收依据之一。

2.设计规定:

鉴于数据库选题原理课程设计的具体内容,对课程设计提出如卜规定:

1.选题原则

课程设计题目以选用学生相对比较熟悉的业务模型为宜,规定通过本实践性教学环节,能较好

地巩固数据库的基本概念、基本原理、关系数据库的设计理论、设计方法等重要相关知识点,针对

实际问题设计概念模型,并应用现有的工具完毕小型数据库的设计与实现。

2.选题规定

在后面的课题表中列出了儿个设计课题,每个课题都有相应的规定或说明。各课题的难易度有

一定的差异,因此,参与课程设计的学生一方面要了解设计的任务,仔细阅读各个课题的设计规定,

3人一组(按学号顺序分组),为了避免多组选同一题,所做课题限组号相应课题。一般来说,选择

课题应以在规定的时间内能完毕,并能得到应有的锻炼为原则。

若学生对课题表以外的相关课题较感爱好,希望选作课程设计的课题时,应征得指导教师的认

可,并写出明确的设计规定和说明。

设计时要严格按照题意规定进行设计,不能随意更改。若确因条件所限,必须要改变课题规定期,

应在征得指导教师批准的前梃下进行。

3.参考选题

工资管理系统

人事管理系统

仓库管理系统

学生管理系统

图书馆管理信息系统

宾馆客房管理信息系统

学籍管理系统

机票预定系统

学生成绩管理系统

课程管理子系统

通讯录子系统

教室管理子系统

宿舍管理子系统

个人事务管理子系统

库房管理系统

小商店俏售管理系统

其它管理子系统数据库设计.

4.课程设计报告规定

课程设订的设il报告是学生对本次课程设计的全面总结,应当反映每个设汁阶段的设“思绪和

设计内容。该设计报告,应作为整个课程设计评分的书面依据和存档材料。设计报告一般要以固定

规格的纸张(如A4)书写或打印(双面)并装订,笔迹及图形要清楚,工整,规范。内容及规定如

下:

⑴设计任务、规定及所用软件环境或工具介绍。

⑵课程设计内容中规定的设计结果。

⑶总结

⑷验收情况

二进度安排

第16周完毕数据库设计

第17周完毕系统功能模块

第18周完毕系统测试并能运营、答辩(18周周日上机时间)、提交设计报告

附:

课程设计报告装订顺序:封面、任务书、目录、正文、评分、附件(A4

大小的图纸及程序清单)。

正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用

小四号宋体;行距为22。

正文的内容:一、课题的重要功能;二、课题的功能模块的划分(规定

画出模块图);三、重要功能的实现(至少要有一个重要模块的流程图);

四、程序调试;五、总结;六、附件(所有程序的原代码,规定对程

序写出必要的注释)。

正文总字数规定在3000字以上(不含程序原代码)。

目录

一.系统需求分析

1.1设计前调查

1.2用户需求分析

1.3核心数据流图

1.4核心数据字典

二、概念设计

2.1局部E・R图

2.2全局E-R图

三、逻辑设计

3.1开发环境

3.2关系模式形成以及规范

3.2.1有以下关系模式:

3.2.2分解分析:

四、创建数据库

五、程序以及调试和使用说明

5.1程序登陆界面

5.2主面板

5.3具体介绍

5.3.1房态查看

5.3.2入住登记和预定房间

5.3.3调房,住宿、退宿查询

5.3.4挂帐,结帐,日报表,追加押金

5.3.5报修和维修

5.3.6添加用户,添加员工,修改密码

六、总结

七、部分代码

7.1模块

7.2添加员工

7.3来宾入住

参考文献

附录:计算机与信息工程学院课程设计评分表

一.系统需求分析

1.1设计前调查

近年来,宾馆业迅猛发展,市场的竞争日趋剧烈,全面提高宾馆的软件管理水准,

已成为宾馆业发展的当务之急。特别是对于星级宾馆,既需要完毕前台的一些服务工作,

还需要完毕后台的管理工作。然而,传统的人工管理模式已经远远不能满足有效、快捷

地解决经营中产生的大量信息数据的需要,从而使得公司决策层无法及时、准确地掌握

一线资料,继而影响对市场进行对的地分析和预测。像沿海城市三星级以上宾馆引进外

方管理,使小部分宾馆管理水准几乎接近或达成国际水平。但对占80%以上的广大中小

型宾馆来说,是难以做到的。因此,欲在竞争中甩开对手,取得优势,必须在经营、管理、

产品、服务等方面具有独到之处。而对宾馆的经营状况起决定作用的是客房的管理。简

朴的服务标准已不是制胜的锦囊,只有管理做到最细微之处,才干让顾客体会到宾馆服

务的高标准、高质量,而准确、快速、周全往往就是最基本的成功要素。

传统的管理方法已经不能适应现代社会的需要,因此采用电脑管理业务、财务等诸

多环节已成为推动宾馆业迅速发展的先决条件,宾馆客房管理信息系统是各大中小型

宾馆所需要使用的一个管理系统。

1.2用户需求分析

一、建立一套功能完善的管理信息系统,既能满足业务人员平常解决的需要,增强公司经

营全过程的数字化管理水平:又能满足管理人员决策分析的需要,提高公司管理层对公司

经营反馈信息的响应速度。从而大幅度提高工作效率,提高实行管理的准确性、科学性,使

担负管理的工作人员从繁杂的手工劳作中解脱山求。因而程序需要实现的功能有如下重要

六大功能:

二、客房管理:客房登记,入住情况查询,客房)犬态查看。

三、来宾入住管理:客房预定,登记入住,房间调整,退房结帐

四、物资管理:物品登记,物品杳询,报修和维修,定期提醒。

五、财务管理:追加押金,增删财务,日报表

员工管理:增改员工,查删员工

六、系统管理:增删管理员,修改密码,以及预留的基于SQL的数据库管理(该程序考虑

七、作为课程设计和信息系统不是很大,使用了单机版的ACCESS,以求方便写

程序)

其他功能:界面管理(提供两套外观:经典外观和春天里)

1.3核心数据流图

入住信息

部分数据流图

数据流名称:客人信息

来源:客人

去向:入住登记

包含的数据项:姓名、身份证号、性别、入住房间、房间类型、房间价格、入住状态等

(宾馆客房管理系统的数据流一一客人信息)

数据流名称:入住登记

来源:客人产生入住登记

去向:入住

包含的数据项:订单编号、姓名、性别、身份证号、客户编号、客房类型、抵房时间、入住

人数、预定人、电话、住几天等信息

(宾馆客房管理系统的数据流一一入住登记)

数据流名称:客房信息

来源:客人产生入住登记

去向:入住

包含的数据项:客房编号、客房类型、客房价格、客房状态

(宾馆客房管理系统的数据流一一客房信息)

数据流名称:房间状态

来源:退房

去向:房间

包含的数据项:客房号码、房间状态

(宾馆客房管理系统的数据流一一房间状态)

数据流名称:帐务信息

来源:退房

去向:财务

包含的数据项:帐单编号、姓名、消费金额、入住时间、退房时间、押金

(宾馆客房管理系统的数据流一一帐务信息)

1.4核心数据字典

[来宾入住信息表:Cmanage]数据类型及长度说明

数据项名称(库中字段名)

客人电话(ctel)Char(20)

客人姓名(cname)Char(12)Notnull

客人性别(csex)Char(4)

客人身份证号(cidnum)Char(20)

客人住址(caddrcss)Char(50)

订单编号(cnumber)Char(15)Notnull.primarykey

入住人数(cmemeber)int

客房编号(croom)Char(20)Notnull

客房类型(ctype)Char(lO)

客房价格(cprice)money

客房状态(cstatue)Char⑵Notnull

抵店时间(cindale)短日期型date

退房时间(couldale)短日期型dateNotnull

入住类别(cintype)Char(4)[预定/现开]

押金(cya)money

调整房间(cchange)Char(20)

原由(creason)Char(80)

应付款(cmshould)Money

实收(cmpay)money

[客房

登记表:Roomlogin]

数据项名称(库中字段名)数据类型及长度说明

房间编号(Rid)Char(12)Notnull

房间名称(Rname)Char(20)Notnull,primarykey

房间描述(Rdescribe)Char(lOO)

房间价格(Rprice)moneyNotnull

房间状态(Rsta(ue)Char(8)Notnull

操作员(ruser)Char(l2)Notnull

[管理员表::pw]

数据项名称(库中字段名)数据类型及长度说明

用户(user)Char(12)Notnull,primarykey

密码(pwd)Cha«8)Notnull

权限(power)Char(I)Notnull

[财务

管理表:Smanage]

数据项名称(库中字段名)数据类型及长度说明

财务ID(Sid)Char(l5)Notnull,primarykey

事由(Sreason)Char(20)Notnull

收入(Sin)money

支出(Sout)moneyNotnull

总收入(ssum)moneyNotnull

操作时间(Sdale)daleNotnull

结帐人(sman)Char(12)Notnull

挂帐单位(scomp)Char(12)

操作员(suser)Char(l2)Notnull

[维修/报修表:fix]

数据项名称(库中字段名)数据类型及长度说明

登记ID(Fid)自动编号Notnull,primarykey

登记日期(Fdate)dateNotnull

物品名称(Fname)Char(50)Notnull

所属房间(Froom)Char(20)Notnull

维修状态(Fstatue)Char(8)Notnull

维修日期(Ffdate)date

登记操作员(Fman)Char(l2)Notnull

维修员(Ffman)Char(l2)

所需费用(Fpay)money

[提醒表:Reminder]

数据项名称(库中字段名)数据类型及K度说明

提醒ID(RcmlD)自动编号Notnull,primarykey

提醒日期(Remdate)dateNotnull

提醒类别(remtype)Char(20)Notnull

提醒状态(remstatue)Cha«4)Notnull

操作员(remuser)Char(l2)Notnull

二、概念设计

2.1局部E-R图

2.2全局E-R图

[全局E-R图]

三、逻辑设计

3.1开发环境

开发语言:VisualBasic

开发平台:windowsxp,1G内存.集成显卡。

开发工具:VisuaIBasic6.0公司版,SQLServer2023,Access2023

3.2关系模式形成以及规范

3.2.1有以下关系模式:

PW(user,pwd,power);

Empl(eid,ename,eage,esex,eaddress,etel,ejob,ejtime,ejage);

Fix(Fid,fname,froom,fstatue,ffdate,fpay,fman,fuser);

Gmanage(Gid,gname,gtype,gnum,gprice,guse,gsum,gdate,guser,gdw);

Roomlogin(Rid,rname,rtype,rdescribe,rprice,rstatue,ruser);

Reminder(remid,remname,remdate,remtype,remstatue,remuser);

Smanage(Sid,sreason,sin,sout,ssum,sdate,sman,scomp,suser);

Gmanage(cnumber,cname,cictype,cicnum,csex,caddress,cteI,cmember,croom,ctype,cprice,

cindate,cintype,coutdate,cya,cyaadd,cstaTue,cchange,creason,cmteI,cmmeeting,

cmcar,cmdamage,cmother,cmshouId,cmpay,cmoack,cuser);

1)3.2.2分解分析:

2)各分量都是不可分割的数据项。满足第一范式;

3)每一个关系中的非码属性都完全函数依赖于码,符合第二范式;

4)每个关系中的主属性不传递依赖关系中的每个关系键,符合第三范式;

关系中所有非主属性对每个码都是完全依赖.且所有主码对于每个不包含它的码也是完全函数依赖,没有任

何属性完全函数依赖非码的任何一组属性

四、创建数据库

1)创建数据库,让数据库可以动态增长

createdatabasehotsI

on

(name=hotel_data,

fiIename='E:\hoteI.mdf,,

size=5mB,maxsize=20mb,fiIegrowth=10%)

Iogon

(name=hotel_log,

fiIename='E:\hoteI.Idf",

size=2mb,maxsize=5mb,fiIegrowth=1mb)

go

2)创建PW用户表

usehoteI

go

createtabIepw

(userchar(12)notnulIprimarykey,

Pv/dchar(8)notnull,

Powerchar(1)notnulI)

go

3)创建客房登记表RoomLogin

createtabIeroomlogin

(ridchar(12)notnull,

Rnamechar(20)notnuIIprimarykey,

Rtypechar(10)notnulI

Rdescribechar(100),

Rpricemoneynotnull,

Rstatuechar(8)notnull,

Ruserchar(12)notnulI,)

go

4)同上创建提醒表Reminder、物品表Gmanage、维修表fix、员工表Empl、帐务表Smanage、客户

如住表Cmanage

五、程序以及调试和使用说明

5.1程序登陆界面

[说明:进入音陆界面后.系统会自动加载已有的用户.让用户选择自己的帐户进行音陆.密码

输入三次后关闭窗口;用控件属性设立来实现用户定义的完整性:密码最大长度为8o

用户名错误,或密码错误,系统都会对其进行提醒,以达成对的输入,本程序设立一超级用户:

admin,权限为1,其他用户的权限均为0。超级用户能对押金进行追加,其他用户必须在超级用户

协助下才干完毕押金追加]

5.2主面板

[说明:主界面用VB中的MDIForm,多入口提供应用户操作,涉及菜单栏、工具栏(可选择显

示和不显示)、侧边栏(可隐藏)、主面板Pancl(提供操作员最常用的操作,节约时间),在状态栏可以

显示系统时间和当前用户以及需要维修的房间数。实现了所有规定的功能]

[说明:提供两种风格供用户选择。在vb模块里有一函数change。,一变■保存当前

风格类型,当每次show一窗口时,就会调用该函数通过变■判断是显示那种风格]

5.3具体介绍

5.3.1房态查看

[说明:在主面板上的快速入口上点击房态查询,显示当前房间入住图形界面。直观、方便。点击

房间能显示在该房间入住过的客户。嵌入的查询语句为:"select

cnumber,cname,cictype,cicnuni,csex,caddress,ctel,cniember,crooni,ctype,cpnce,cindate,coutdate,cstat

uefromcmanagewherecroom=,M&Commandl(Indcx).Caption&

Commandl(Index).Caption为当前按下的要查询的房间按钮的名称]

5.3.2入住登记和预定房间

[说明:点”登记二系统自动在roomlogin表中rstatue='空闲,的房间名字添加到房间号码的下拉列表

中,供客户选择房间,用户可以选择”现开/预定”当用户选择下拉列表中的一个房间时\系统自动将

roomlogin中该房间的标准类型,价格自动加载显示,房间状况一目了然。其他用户自定义完整性约

束都通过对控件的属性设立来完毕,当用户输入数据破坏完整性时,系统会发出警告,以保持数据

库的完整性]

5.3.3调房,住宿、退宿查询

[说明:通过入口可以打开窗体。当客户需要调整房间时,点登记后,系统自动加载已入住客户的房

间和空闲的房间号码,当用户选择要调房的客户时,系统自动加载客户的信息。选择目的房间时候,

系统自动加载房间信息。用户拟定调房后,系统修改数据库:原房间状态改为空闲,目的房间改为入

向.0.E.包.O®

1TF59善房畅务物费告理员工莒整便再不就递出不统

提示:

浦逸舟停用同号亢自行摩同母,然后进行调愿.

I证件号切I性别I神住址I电话I入住人引入住由日I岛自英型I詹同价蛤仄住日国I退宿日期I星舌IE箱

X:3<30T09Jr的同工性彳心4R1AT8

湖商工用1234561A1021*»2OH->1T2011-3-190

45363463436M6346461A703千房20J20»242OH23]]

X户1名户姓名I3户证件]怔件号BI度别[入住寓目|鹰间奏出席伺价格|入住日即[遑宿日限1座城|押金|€话/1台议皆]伸车施|陪偷秀|

201131716SS9份证I?-r>?<?A703比房2802011-3-H20M-3-191000000,

201131716(fi*im证12M56WM02*鹰302011-3-H2011-3-1900000

201132417由制❷份正<53634634A703参摩⑼201—011771U030c

住。原住房产生的费用将加在新入住房间上,而提醒表中原房间改为现房间。因而需要修改三个表:

Cmanage,rooinlogin,reminder.而查询入住信息的嵌入sql语句为:"select

cnumber,cname,cictype,cicnum,csex^caddress,ctel,cmember,croom,ctype,cprice,cindate,coutdate,cstat

uefromcmanage”,其他查询语句雷同,此后不在赘述。在文本框里输入要查询的姓名,MSFIexGrid

空间将会显示查询结果,嵌入的查询语句为:"select

cnumber;cname,cictype,cicnum,csexvcaddress,ctel,cmember,croom,ctype,cprice,cindate,coutdate,cstat

uefromcinanagewherecnamelike&Text1.Text&

5.3.4挂帐,结帐,日报表,追加押金

[说明:追加押金窗体.系统自动加载已入住客户号码,当用户选择客户号码时候,系统自动加载客户

信息,用户添加押金后,保存时系统对cmanage表进行修改,保存数据;结帐窗体。系统自动加载己

入住还没退房的房间号,用户选择要退房的房间号,系统加载客户信息以需付款和明细供核对,拟

定结帐后,系统将对cmanage表,smanage,reminder,roomlogin进行修改,以保持数据库的参照完

整性。假如是挂帐,用户可以选择挂帐,在客户结帐的时候,调出挂帐结帐窗体,系统自动加载挂帐

的单位,用户选择挂帐单位,系统自动加载需还金额。挂帐结帐只对smanage表操作。而日报表显

示smange里的信息,提供按日期查找的方法,打印当天的帐务明细。查询的嵌入sql语句为:“select

sreason,sin,sout,ssum,sdate^man,scomp^userfromsmanagewheresdate=#'*&DTPickerl.Value

&*'#•'o在该处开始一直调试不出,后来发现在sql语句中对日期要加来格式说明是日期型的。

5.3.5报修和维修

[说明:打开该窗体,左边有一组option选项。当选报修时候,系统自动加载空闲的房间号。假如为

入住的房间报修,则需先调房退房后才干报修,总不能让客户住在需维修的房间中吧。拟定报修后。

系统将在reminder表中增长一条需提醒事项,即需维修事项,传递房间号和维修状态给

reminder表做为关键字。在主窗体中便会有提醒需要维修的房间,可以通过房态查询,查看需要维

修的房间号。维修完后要进行登记,选择登记后,系统加载当前状态为维修的房间,记录维修费用

和维修员,拟定后,系统将操作roomlogin和reminder表,保持数据库系统的参照完整性]

5.3.6添加用户,添加员工,修改密码

[说明:只有管理员,即超级用户才干添加操作员和员工,但是普通拥护可以修改臼己的密码。添加操

作员的代码为:IfText1.Text<>""AndText2.Text<>'M,AndText2.Text=Puser.Fields("pwd")Then

IfText3.Tcxt<>""Then

Puscr.Edit

Puscr.FicldsC'pwd")=Tcxt3.Tcxt

MsgBox("密码修改成功,退出操作员密码修改!”)

Puser.Update

main.Enabled=True

UnloadMe

Else

MsgBoxC请输入新密码!!”)

EndIf

Else

IfText1.Text=""Then

MsgBox(“请输入掾作员!”)

Text1.SetFocus

Else

11'TextI.Text<>Puser.Fields("user")Then

lexti.SetFocus

Textl.Text=""

MsgBox("无此操作员.请重新输入!”)

EndIf

EndIf

Iflext2.1ext=-n)en

MsgBox("时输入操作仍惊密的巧

Tcx(2.SctF<x:us

Else

H"Tcxt2.Tcxt<>Puscr.FicldsC'pwd")Then

MsgBox("原密码错误,请用新输入原密码巧

Tcxt2.SctFocus

EndIf

EndIf

EndIf这是才用DAO3.6对象未对数据库进行掾作,这是另一种力法对数据库噪作

cr='*insertintopwvalues('"&text1.tcxt&"'/"&tcxt2.tcxt&"',"0')"

mydb.Exccutccr这是直接用嵌入sql语句来插入记录。两种效果都同样

]

六、总结

两周的日日夜夜的奋战,终于达成了预定的效果,完毕了该信息系统

的设计和程序编写。

前面学期曾学过VB语言,也开发过很多程序,所以vb语言成为首选。虽然其编写的应用程序

在不同的机器上需要解释器,需要随带很多ocx控件和其他,但是在编写信息管理系统这方面还是很

有优势的。(I)可视画编程,丰富的控件,随用随拖,对控件对象编程,很方便。(2)可以方便的运

用API函数实现窗体的各种效果。有丰富的api接口。(3)语言简朴,实现功能很方便。在对数据库

操作方面,引用了DAO3.6对象,使用DAO编程连接和操作。所以很自然选择了VB语言。在数据

库方面,考虑编程方便,采用从sql中导出成access文献来进行操作。

选定课题后,开始收集相关资料和设计软件架构。到宾馆调查和到网上收集信息,以及参

考了其他信息管理系统,心里就有了轮廓。设计好软件的几大模块,采用自顶向下的经典设计方法,

拟定实现的功能,开始设计数据库。运用相关的数据库知识,设计好数据表,拟定字段。并通过模式

分解,拟定其是无损的连接,有了数据库作为整个设计的底层,就好象盖房子有了骨架,而软件就象

是砖瓦,只是将骨架填充完善,给客户一个好的外观。因而数据库的设计尤为重要,但是在设计之初,

往往会有很多情况不能考虑周全,再加之一个人编写,所以进度一度很慢,后来通过列出所有也许

的情况,以及同同学老师等交流,总结并重新设计了数据库,终于是能有一个比较好的效果。通过将

所有和客户相关的财务信息都加到客户信息里,避免了对多表的操作,避免了有也许会出现的参照

完整性不一致的问题。继而是软件的设计,由于对vb还是算比较熟悉,因而有了数据库的支撑,就

得心应手了。考虑到用户使用的方便性,软件主界面提供J'很多入口,以及直•观的图形显示,方便用

户操作,因而也给客户带来方便,免去了客户的很多等待时间,提高宾馆的形象。同时提供了两套外

观,春天里这套外观可以避免用户的审美疲劳。整个程序完毕了,又花了大量的时间对其进行调试。

通过白盒黑盒测试,程序能正常的显示结果和准确报错•,达成了单机运营的效果。接着在不同机环境

器上测试,有些控件由于没有带走,所以报错,后来带上控件后都能正常运营,在xp和win7上都能

正常运营。

由于公司规模和业务量大,因而信息系统不也许只在单机上运营,所以才用C/S,或B/S结构比

较合适。因时间关系所以没能完毕,只预留了接口,供以后开发扩展用。当然这次课程设计由于是数

据库的课程设计,重点在数据库的设计,所以对于软件体系结构风格,没有考虑,只求能达成目的!

在本次课程设计中,要感谢各位老师的指导,也要感谢提供意见和建议的同学,才得以大体完

毕该设计。本欲来让老师答辩的,但因个人因素,在答辩那天赶回家了,所以没得完毕最终的答辩。

但这不要紧.编程最大的喜事莫过于完毕所有程序的那一刻,虽然后续尚有很多维护和修改任务,

但是心里忽然轻松下来那一刻的心情是无与伦比的。再次感谢老师的指导!

七、部分代码

7.1模块

PublicNowUserAsString'当前用户名

PublicnowpowerAsString'当前用户权限

PublicniydbAsDAO.Dalabasu'定义数据库

PublicbgiAsInteger,判断背景风格

PublicSubLoadAccess()

Setmydb=D/XO.OpcnDatabasc(App.Path&"\hotcl.mdb')

EndSub

PublicSubbground()

Ifbgi=IThen

main.Picture=panel.Image1.Picture

panel.Picture=panel.IniageI.Picture

panel.Picture1.Picture=panel.Image1.Picture

main.Picturel.Picture=panel.Imagel.Picture

main.Picture2.Picture=panel.Imagel.Picture

UnloadfindEin:Unloadfindlogin:UnloadfingG:UnloadInLogin:UnloadLogoutBG:Unload

managekf:Unloadpayoff:UnloadView

Unloadchangelogin:UnloadfindLogout:Unloadfind:panel.resizeme

Else

Ifbgi=0Then

main.Picture=Nothing

panel.Picture=Nothing

panel.Picture1.Picture=Nothing

main.Picture1.Picture=Nothing

main.Piclure2.Picture=Nothing

UnloadfindEm:Unloadfindlogin:UnloadfingG:UnloadInLogin:UnloadLogoutBG:Unload

managckf:Unloadpayoff:UnloadView

Unloadchangelogin:UnloadfindLogout:Unloadfind:panel.resizeme

EndIf

EndIf

EndSub

7.2添加员工

PrivateDeclareFunctionReleaseCaptureLib"user32"()AsLong,获取“变动”

信息

PrivateDeclareFunctionSendMessageLib"user32"Alias"SendMessageA"(ByVaihwndAsLong,

ByVaiwMsgAsLong,ByVaiwParamAsLong,1ParamAsAny)AsLong

PrivateConstWM_SYSCOMMAND=&HI12

PrivateConstSC.MOVE=&HF010&

PrivateConstHTCAPTION=2

DimEmpAsRecordset

PrivateSubDTPicker1_Change()

Text7.Text=Year(Date)-Year(DTPickerl.Value)

EndSub

PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

IfButton=1Then

,假如按卜鼠标左健

DimReturnVaiAsLong

X=ReleaseCapture()

ReturnVai=SendMessage(addEm.hwnd,WM_SYSCOMMAND,SC_MOVE+

HTCAPTION,0)

EndIf

EndSub

PrivateSubForm_Loa(l()

LoadAcccss

SetEmp=mydb.OpenRecoidset("select*fromempl")

TextI.Text=Year(Date)&Monlh(Date)&Day(Date)&Hour(Time)&Minule(Time)

Text7.Text=Year(Date)-Year(DTPickerl.Value)

EndSub

PrivateSubCommandl_Click()

================================================itimmiummmnmi

'缺少判断员工号是否存在的信息

IfText1.Text=""OrText2.Text=OrText4.Text=""Then

msg$=MsgBox("请确认员工号、员工姓名、职务已经输入”,48,"Error”)

Else

Emp.AddNew

Emp.Fields("emid")=TextI.Text

Emp.Fields("ename")=Text2.Text

Emp.Fields(Mesex")=Combo1.Text

Emp.Fields("ejob")=Text4.Text

Emp.Ficlds("cagc")=Val(Tcxt5.Tcxt)

Emp.Fields("etel")=Texc6.Text

Emp.Fields("ej(ime")=DTPickerl.Value

Emp.Fields("ejage")=Text7.Text

Emp.Update,更新记录

Emp.Close

msg$=MsgBoxM添加成功”,64,"Success!")

UnloadMe

EndIf

EndSub

PrivateSubCommand2_Click()

Text1.Text=Text2.Text=ComboI.Text=""

Tcxt4.Tcxt=",r:Tcxt5.Tcxt='M,:Tcxt6.Tcxt=""

EndSub

PrivateSubCommand3_Click()

main.Enabled=True

UnloadMe

EndSub

7.3来宾入住

DimiAsInteger'定义一个整型变量

DimInLogAsRecordset

DimRoomAsRecordset

DimRemindAsRecordset

PrivateSubCombo4_Click()

SetRoom=mydb.OpenRecordset("select*fromroomloginwherername="'&Combo4.Text&

ZSDJ(4).Text=Room.Fields("rtype"):ZSDJ(5).Text=Room.Fields("rprice")

EndSuh

PrivateSubCombo5_click()

Label11.Caption=Combo5.Tcxt

EndSub

PrivateSubDTP3_Change()

ZSDJ(6).Text=DTP3.Value-DTP1.Value

EndSub

PrivateSubForm_Load()

Ifbgi=IThenMe.Piclure=panel.ImageI.Picture

Ifbgi=0ThenMe.Piclure=Nothing

DTPI.Value=Date:DTP2.Value=Date:DTP3.Valuc=Date'初始化口期及时间

czy.Text=NowUser,赋值给czy

LoadAccess

EndSub

PrivateSubForm_Unload(CancelAsInteger)

main.Enabled=True,设立主窗体有效

EndSub

PrivateSubCombo2_Click()

IfCombo2.Text="折扣"Then

ZSDJ的.Enabled=True般立ZSDJ(8)有效

ZSDJ(8).SetFocusZSDJ⑻获得焦点

EndIf

IfCombo?Text二"招待“Then

ZSDJ⑻.Enabled=True般立ZSDJ(8)有效

ZSDJ(8).Text=0'赋值给ZSDJ(8)

EndIf

EndSub

PrivateSubZSDJ_Change(IndexAsInteger)

SelectCaseIndex

Case6

ZSDJ(7).Text=Forniat(Val(ZSDJ(6).Text)*Val(ZSDJ(5).Text),"().(X)")'计算折前宿费

ZSDJ(9).Tcxt=ZSDJ⑺.Text,赋值给ZSDJ⑼

ZSDJ(8).Text=100

DTP3.Value=DTPI.Value+Val(ZSDJ(6).Text)计算退宿日期

Case8

ZSDJ⑼.Text=Format(Val(ZSDJ(7).Tcxt)*Val(ZSDJ(8).Tcxt)/100,"0.00")'计算实际宿

Case10

IfZSDJ(IO).Texl<>,M,Then

ZSDJ(10).Texl=Val(ZSDJ(10).Text),用val函数将字符串转换为数字

DTP2.Value=DTPI.Value+Int(Val(ZSDJ(10).Tcxt)/Val(ZSDJ(5).Text))'计算提醒口期

EndIf

EndSelect

EndSub

PrivateSubZSDJ_KcyDown(IndcxAsInteger,KcyCodcAsInteger,ShiftAsInteger)

SelectCaseIndex

Case0

IfKeyCcxle=vbKeyReturnThenCombo1.SetFocus'按回车键Combol获得焦点

Case1

IfKeyCode=vbKeyReturnThenZSDJ(2).SetFocus,按回车键ZSDJ(2)获得焦点

Case2

IfKeyCode=vbKeyReturnThenZSDJ(3).SetFocus,按回车键ZSDJ(3)获得焦点

Case3

IfKeyCode=vbKeyReturnThenDBCombo1.SetFocus‘按回车键ZSDJ(2)获得焦点

Case4

IfKeyCode=vbKeyReturnThenZSDJ(5).SetFocus'接回车键ZSDJ(5)获得焦点

Case5

IfKeyCode=vbKeyReturnThenZSDJ(6).SetFocus'按回车键ZSDJ(6)获得焦点

Case6

IfKeyCode=vbKeyReturnThenZSDJ(10).SetFocus

Case8

IfKcyCodc=vbKcyRcturnThenZSDJ(10).SctFocus'按回车键ZSDJ(IO)获得焦点

Case10

IfKeyCode=vbKeyReturnThenZSDJ(il).SetFocusZSDJ(U)获得焦点

Case11

IfKcyCodc=vbKcyRcturnThenComok.SctFocus'按回车键Comok获得焦点

EndSelect

EndSub

PrivateSubCombol_KcyDown(KcyCodcAsInteger,ShiftAsInteger)

IfKeyCode=vbKeyRerurnThenZSDJ(l).SetFocus'按回车键ZSDJ⑴获得焦点

EndSub

PrivateSubDBComboI_KcyDown(KcyCodcAsInteger,ShiftAsinteger)

IfKcyCodc=vbKcyRccurnThenZSDJ(5).SctFocus'ZSDJ(5)获得焦点

EndSub

PrivateSubcomdj_Click()

'杳询空闲房间信息

SetRoom=mydb.OpcnRccordsctC'sclcct*fromroomloginwhererstatue士空闲'")

,OnErrorGoTou

Room.MoveFirst

Cornbo4.Text=Room.Fields("rname")

ZSDJ(4).Text=Room.Fields("rtypc")

ZSDJ(5).Text=Rooni.Fields("rprice")

SetRoom=mydb.OpenRecordset("select*fromroomlogin")

WhileNotRoom.EOF

IfRoom.Ficlds("rstatuc")="空闲"ThenCombo4.AddltcmRoom.Fields(',mameM)

Room.MoveNext

Wend

bh.Text=Year(Date)&Month(Date)&Day(Date)&Hojr(Time)&Minute(Time)&Second(Time)'

设立编号

ZSDJ(8).Text="":ZSDJ(10).Text=""

'设立控件有效或无效

Comok.Enabled=True:Comdj.Enabled=False:Comprint.Enablcd=False:ZSDJ(8kEnablcd=

True

ZSDJ(10).Enabled=True:Combo1.Enabled=True:DTP3.Enabled=True

Combo2.Enablcd=True:ZSDJ(O).Enablcd=True:ZSDJ(0),SctFocus

Label11.Caption=Combo5.Tcxt

ExitSub

'u:h$=MsgBox("没有空闲房间,客房已满",48,"Error"):Comok.Enablcd=False:

Comprint.Enabled=False:Comcancel.Enabled=False:Comend.Enabled=True:Comdj.Enabled=True

EndSub

PrivateSubcomok_Click()'=========================!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!11

SetInLog=mydb.OpenRecordset("select*fromcmanage")

IfZSDJ(O).Tcxt<>""AndZSDJ(l).Text<>""AndText1.Text<>""AndZSDJ(6).Tcxt<>""Then

InLog.AddNew

Ifbh.Text<>"""rhcnInLog.FieldsC^number")=bh.Text

IfZSDJ(O).Text<>""ThenInLog.Fields("cname")=ZSDJ(O).Text

IfComboI.Text<>""ThenInLog.Fields("cictype")=Combol.Text

IfZSDJ(l).Text<>…rhcnInL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论