计算机本科-VFP宾馆管理系统毕业论文.doc_第1页
计算机本科-VFP宾馆管理系统毕业论文.doc_第2页
计算机本科-VFP宾馆管理系统毕业论文.doc_第3页
计算机本科-VFP宾馆管理系统毕业论文.doc_第4页
计算机本科-VFP宾馆管理系统毕业论文.doc_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

目 录1.诸论21.1 VISUAL FOXPRO6.0概述22. 系统调研及可行性分析32.1系统调研32.2可行性分析33.系统的实施33.1系统功能分析33.2系统功能图43.3数据库设计43.4系统结构设计104.系统维护335. 总结34致 谢35参考文献36附录:部分源程序代码:371. 诸论1.1 VISUAL FOXPRO6.0概述 Visual FoxPro 是为数据库结构和应用程序开发而设计的功能强大的面向对象的环境。无论是组织信息、运行查询、创建集成的关系型数据库系统,还是为最终用户编写功能全面的数据管理应用程序,Visual FoxPro 都可以提供管理数据所需的工具,可以在应用程序或数据库开发的任何一个领域中提供帮助。Visual FoxPro 所具有的速度、能力和灵活性,是普通数据库管理系统无法比拟的,它把我们带入一个 Xbase 新时代.1)VISUAL FOXPRO6.0具有可视化的开发环境,用户可以不用了解WINDOWS和C编程技术,通过图形化的交互操作,就可以设计实现应用 系统,开发出美观、简洁的图形化界面来.2)VISUAL FOXPRO6.0具有强大的数据提取能力,它提供了功能强劲的数据窗口控制.数据窗口对象可以用于联接数据库,获得记录,以各种风格显示数据和更新数据库。经过五个版本的改进,数据窗口具有很灵活的能力,通过VFP函数,编程者可以在程序中动态地改变数据窗口的结构和显示模式。3)VISUAL FOXPRO6.0是基于客户机/服务器(Client/Sever)的体系结构,这种体系结构可以减少硬件平台的投资,并能完成大型主机的功能,而且可以集中数据的存储和管理,实现资源的共享,降低维护的难度,还能集中实施院校规则,实现教育信息的标准化。4)VISUAL FOXPRO6.0是一种面向对象的应用程序开发方法, 对象(OBJECT),是包含相关的数据(以变量的形式)以及用于操作这些数据的方法(子程序)的软件包。一个对象是一个类的具体表现,在功能上它与其它程序保持独立,一个定义良好的对象具有封装的数据和功能。5)VISUAL FOXPRO6.0是一种开放式数据库联接ODBC环境, 这种体系结构能更好地满足宾馆,旅店的实际需要,有利于应用系统的移植和扩充。目前 ,市场上流行的各种数据库系统软件,如Oracle,Informix等,各行其道 ,使用户无所适从。然而Visual FoxPro为这些数据库提供了公共的前端工具,提供了开放式数据库连接ODBC,不仅适用于各种数据库管理系统,具有很好的兼容性,而 且还能给已有的数据资源带来全新的图形界面。6)VISUAL FOXPRO6.0提供了大量的诸如“数据库设计器”、“表单设计器”、“菜单设计器”、“报表设计器”等开发设计工具和向导工具(Wizard),使以往费时费力的开发工作变得轻松自如。这些可视化的设计工具免除了开发者编写大量程序代码的工作。2. 系统调研及可行性分析2.1系统调研(1)明确用户的要求,以根据调查结果进行可行性分析,确认系统的开发是否可行。 (2)提出新系统的人员并不都是系统研究人员,有些人对于的功能和处理数据的方法没有明确的认识。它们只是根据自己业务工作的需要提出了要求,系统开发人员要对此进行详细的调查和分析,确认用户的要求可以通过现有的计算机技术实现,保证开发的管理信息系统的功能与用户提出的要求相吻合。(3)要详细地调查现行系统中信息处理的具体情况,系统内部功能结构,以便设计出一个合理的、好的新系统逻辑模型,为新系统的设计工作打好基础,保证整个系统开发的质量。2.2可行性分析(1) 操作可行性本系统运行在通用的Windows 98/2000/ME操作系统上,具有与Windows相似的操作界面,简单易学,使用方便,具有一些人性化的功能,工作人员不需经过专门的培训即可使用.(2) 开发方案的选择性研究Visual FoxPro6.0 是一种易学易用的面向对象的编程语言工具,它比Visual Basic6.0更易于掌握,易于使用,便于维护。由此,我选用Visual FoxPro6.0作为此次应用软件的开发工具。3.系统的实施3.1系统功能分析本系统开发的总体任务是实现宾馆各种信息的系统化、规范化和自动化。主要完成功能: 有关客房标准的制定、标准信息的输入,包括标准编号、标准名称、房间面积、床位数量、住房单价、是否有空调、电视机、电话以及单独卫生间等。 客房标准信息的修改、查询等。 客房基本信息的输入,包括客房编号、客房类型、客房位置、客房单价、备注等。 客房基本信息的查询、修改,包括客房编号、客房类型、客房位置、客房单价、备注等。 剩余客房信息的查询等。 订房信息的输入,包括客房编号、客房种类、客房位置、客房单价、顾客姓名、顾客身份证号码、入住日期、折扣、备注信息等。 订房信息的修改和查询,包括客房编号、客房种类、客房位置、客房单价、顾客姓名、顾客身份证号码、入住日期、折扣、备注信息等。结算信息的输入,包括客房编号、客房种类、位置、客房单价、顾客姓名、顾客身份证号码、入住日期、折扣、结算日期、备注信息等。 结算信息的修改和查询,包括客房编号、客房种类、客房位置、客房单价、顾客姓名、顾客身份证号码、入住日期、折扣、结日期、备注信息等。3.2系统功能图按结构化程序设计思想,分析得出如下系统功能图前台管理客房管理查询统计挂帐管理基础信息设 置系统初始化客房预定(KFYD.S CX)客房查询(KFQUERY.SCX)预定房查询(KFYDQUERY.SCX)挂帐查询(GZQUERY.SCX)客房信息(KFMANAGE.SCX)本单位定义(BDWDY.SCX)住宿登记(ZSDJ.S CX)房态查看(FANGTAIQUERY.SCX)住宿查询(ZSQUERY.SCX)客人结帐(KERENJZ.SCX)客房类型信息(KFLXMANAGE.SCX)业务部门定义(BMDY.SCX)调房登记(TIAOFANGDJ.SCX)退宿查询(TSQUERY.SCX)员工信息(YGMANAGE.SCX)操作员管理(MODIFYPASSWORD.SCX)追加押金(ZJYJ.S CX)宿费提醒(SFTX.SCX)挂帐单位信息(GZDWMANAG.SCX)权限设置(FPURVIEW.SCX)退宿结帐(TSJZ.SCX)退出(QUIT)图3.1系统的顶层图是用来表示整个系统的功能结构。随着需求分析活动的逐渐深入,较高抽象级别上的复杂转换可以进化为一系列的相互关联的数据流和子转换。在数据流方法中,对数据(数据流)的进化是伴随着对转换的进化而同步进行的。3.3数据库设计数据库设计步骤: 数据库需求分析 数据库概念结构设计 数据库逻辑结构设计(1)数据库需求分析分析调查有关客房管理信息需求的基础上得本系统所处理的数据流程客房标准设置基本信息输入客房登记基本信息录入客房信息管理顾客登记订房信息管理订房信息管理结算信息输入结算信息管理客房信息返回图3.2针对一般客房管理信息系统的需求,通过对客房管理过程的内容和流程分析,设计如下面所示的数据项和数据结构: 客房标准信息,包括的数据项有:标准编号、标准名称、房间面积、床位数量、住房单价、是否有空调、电视、电话等。 客房信息,包括的数据项有:客房编号、客房种类、客房位置、客房单价、备注等。 订房信息,包括的数据项有:订房编号、客房编号、客房种类、客房位置、客房备注信息、顾客姓名、顾客身份证号码、入住时间、折扣、备注等。 结算信息,包括的数据项有:订房编号、客房编号、客房种类、客房位置、客房备注信息、顾客姓名、顾客身份证号码、入住时间、折扣、结算时间、备注等。(2)数据库概念结构设计 本系统根据以上的设计规划出的实体有:客房标准信息实体、客房信息实体、订房信息实体、结算信息实体。各个实体具体的描述-图如下:客房标准信息实体标准编号标准名称床位数量客房单价客房标准信息实体-图客房信息实体客房标准客房编号客房位置客房单价客房信息实体-图订房信息实体客房信息顾客信息折 扣入住时间订房信息实体-图结算信息实体客房信息顾客信息结算时间结算金额结算信息实体-图客房标准信息客房登记客房信息管理订 房订房信息管理结算信息管理客房结算实体之间关系-图(3)数据库逻辑结构设计主要表结构如下:客房登记表:字段名类型宽度小数位数凭证号码字符型20姓名字符型20证件名称字符型20证件号码字符型20详细地址字符型50住宿原由字符型50房间号字符型20客房类型字符型10联系电话字符型20工作单位字符型50房间价格货币型8住宿日期日期型8住宿时间字符型8预住天数数值型80时间宿费货币型8折扣数值型80应收宿费货币型8预付金额货币型8提醒日期日期型8退宿日期日期型8备注字符型50是否结帐逻辑型1日期日期型8时间字符型8结款方式字符型10退宿时间字符型8提醒时间字符型8操作员字符型10客房类型:字段名类型宽度类型编号字符型10客房类型字符型10价格货币型8备注字符型50客房信息:字段名类型宽度房间号字符型10房间类型字符型10价格货币型8房态字符型50配置字符型50使用设置字符型10营业时间日期时间型8备注字符型50客房预定表:字段名类型宽度姓名字符型20证件名称字符型20证件号码字符型20联系电话字符型20详细地址字符型50工作单位字符型50客房类型字符型10房间价格货币型8预住日期日期型8预住天数数值型8预付金额货币型8备注字符型50日期日期型8操作员字符型10时间字符型8结帐信息表字段名类型宽度凭证号码字符型20姓名字符型20证件名称字符型20证件号码字符型20详细地址字符型50工作单位字符型50住宿原由字符型50房间号字符型10客房类型字符型10客房价格货币型8住宿日期日期型8住宿时间字符型8住宿天数双精度型8实际宿费货币型8结款方式字符型16折扣双精度型8应收宿费货币型8杂费货币型8电话费货币型8会议费货币型8存车费货币型8赔偿费货币型8金额总计货币型8预收宿费货币型8退还宿费货币型8退还日期日期型8退还时间字符型8备注字符型50联系电话字符型20操作员字符型103.4系统结构设计(一) 进入系统启动本系统时,将出现如图所示的登录界面,本系统是通过一个叫主程序文件进入的。用户可以直接双击主程序图标,首先出现的是一个用户登录的窗口,填好密码,再单击确定就能进入系统的主界面,也就是主要的操作控制窗口,这里主要是通过系统菜单进行操作的。管理员是整个系统拥有全部的控制权.1) 登录界面:确定按钮的CLICK代码:public manager &定义全局变量manager=alltrim(bo1.value)use databasetabpurview &打开数据表*获得输入信息cname=alltrim(thisform.Combo1.value)ppassword=alltrim(thisform.text1.value)set order to 操作员姓名 &指定操作员姓名为控制索引if empty(操作员姓名) thisform.resize &执行表单的Resize事件 manager=alltrim(bo1.displayvalue) store .t.to pqtgl,pkfgl,pcxtj,pgzgl,pjcinfo,psyscsh,psyswh thisform.releaseelse seek cname &快速查询 set exact on &设置字符精确比较*判断操作员是否正确 if alltrim(tabpurview.操作员姓名)!=cname &判断输入的操作员姓名是否存在 cn=cn+1 cMessagetitle=系统登录 cMessagetext=操作员错误,请重新输入! nDialogtype=4+32 nanswer=messagebox(cmessagetext,ndialogtype,cmessagetitle) do case case nanswer=6 &选择“是”时的操作 bo1.value= bo1.setfocus case nanswer=7 &选择“否”时的操作 messagebox(不要乱来!,48,系统登录) thisform.release &释放表单 endcase if cn=3 thisform.release endif else*判断密码是否正确 if alltrim(tabpurview.密码)!=ppassword cn=cn+1 cmessagetitle=系统登录 cmessagetext=密码错误,请重新输入! ndialogtype=4+32 nanswer=messagebox(cmessagetext,ndialogtype,cmessagetitle) do case case nanswer=6 thisform.text1.value= thisform.text1.setfocus case nanswer=7 messagebox(不要乱来!,48,系统登录) thisform.release endcase if cn=3 thisform.release endif else thisform.resize &执行表单的Resize事件 manager=alltrim(bo1.displayvalue) thisform.release endif endif endifset exact off &设置字符非精确比较(二) 主菜单:此模块提供菜单选择功能,供用户选择各模块;1) 主菜单界面:2) 前台管理:A.客房预定:登记按钮的CLICK代码:*设置控件有效bo1.enabled=.bo2.enabled=.t.thisform.text2.enabled=.t.thisform.text3.enabled=.t.thisform.text6.enabled=.t.thisform.text7.enabled=.t.thisform.text9.enabled=.t.thisform.text10.enabled=.t.thisform.text11.enabled=.t.thisform.text12.enabled=.t.thisform.text13.enabled=.t.thisform.text1.value=date()thisform.text2.value=thisform.text3.value=thisform.text4.value=time()thisform.text5.value=managerthisform.text6.value=thisform.text7.value=thisform.text8.value=0thisform.text9.value=/thisform.text10.value=0thisform.text11.value=0thisform.text12.value=thisform.text13.value=bo1.value=bo2.value=thisform.text2.setfocus &Text2获得焦点thisform.refresh &刷新表单mandgroup1.cadd.enabled=.mandgroup1.csave.enabled=.mandgroup1.ccancel.enabled=.mandgroup1.cexit.enabled=.f.B.住宿登记:保存按钮的CLICK代码:*获得输入信息cdate=thisform.text1.valuepznumber=alltrim(thisform.text14.value)cname=alltrim(thisform.text2.value)zjnumber=alltrim(thisform.text3.value)ctime=alltrim(thisform.text4.value)manager=alltrim(thisform.text5.value)zsyy=alltrim(thisform.text6.value)area=alltrim(thisform.text7.value)price=thisform.text8.valuezsdate=thisform.text9.valueyzday=thisform.text10.valuezstime=alltrim(thisform.text11.value)tel=alltrim(thisform.text12.value)cmemo=alltrim(thisform.text13.value)kflx=alltrim(bo2.displayvalue)zjname=alltrim(bo1.displayvalue)jkfs=alltrim(bo3.displayvalue)fjno=alltrim(thisform.text15.value)sjmoney=thisform.text16.valuezk=thisform.text17.valueysmoney=thisform.text18.valueyfmoney=thisform.text19.valuetxdate=thisform.text20.valuetxtime=alltrim(thisform.text21.value)tsdate=thisform.text22.valuetstime=alltrim(thisform.text23.value)workdw=alltrim(thisform.text24.value)sfjz=.f.cmessagetitle=住宿登记cmessagetext=确定要保存吗?ndialogtype=4+32nAnswer=messagebox(cmessagetext,ndialogtype,cmessagetitle)do case case nAnswer=6 if empty(cname) or empty(fjno) &判断名称和证件号码是否为空 messagebox(名称和房间号不能为空,48,操作失败!) thisform.text2.setfocus else select tabdjb set order to 凭证号码 &指定控制索引文件 seek pznumber &快速查询*追加新记录 insert into tabdjb values(pznumber,cname,zjname,zjnumber,area,zsyy,fjno,kflx,tel,workdw,price,zsdate,zstime,yzday,sjmoney,zk,ysmoney,yfmoney,txdate,tsdate,cmemo,sfjz,cdate,ctime,jkfs,tstime,txtime,manager) &将输入的挂帐单位信息存入表tabdjb update tabkfinfo set 房态=入住 where 房间号=fjno &更新数据表 messagebox(数据保存完毕,48,操作成功!) thisform.refresh &刷新表单 l=.f. thisform.Resize &执行表单的Resize事件 mandgroup1.cexit.enabled=.t. mandgroup1.ccancel.enabled=.f. mandgroup1.csave.enabled=.f. mandgroup1.cadd.enabled=.t. endif case nanswer=7 endcaseC.调房登记:取消按钮的CLICK代码:store .f. to bo1.enabled,bo2.enabled &设置控件无效mandgroup1.cexit.enabled=.mandgroup1.ccancel.enabled=.mandgroup1.csave.enabled=.mandgroup1.cadd.enabled=.t.D.追加押金:取消按钮的CLICK代码:thisform.releaseE.退宿结帐:结帐按钮的CLICK代码:store .t. to bo3.enabled,bo4.enabled,bo5.enabled,; bo6.enabled,thisform.text9.enabled,thisform.text11.enabled,; thisform.text13.enabled,thisform.text17.enabled,thisform.text22.enabledstore date() to thisform.text1.value,thisform.text9.valuestore time() to thisform.text4.value,thisform.text11.valuethisform.text5.value=managerstore 0 to thisform.text8.value,thisform.text10.value,thisform.text16.value,; thisform.text18.value,thisform.text19.value,thisform.text20.value,; thisform.text22.value,thisform.text23.valuethisform.text17.value=100store to thisform.text2.value,thisform.text3.value,thisform.text6.value,; thisform.text7.value,thisform.text12.value,thisform.text13.value,thisform.text14.value,; thisform.text15.displayvalue,thisform.text21.value,bo1.displayvalue,; bo2.displayvalue,bo3.displayvalue,; bo4.displayvalue,bo5.displayvalueselect *;from roommanage!tabdjb;where 是否结帐=.f.;order by tabdjb.凭证号码;into cursor bo5.rowsource=lin.凭证号码 &赋数据源bo5.setfocus &Combo5获得焦点thisform.refresh &刷新表单mandgroup1.cadd.enabled=.mandgroup1.csave.enabled=.mandgroup1.ccancel.enabled=.mandgroup1.cexit.enabled=.f.3) 客房管理:A.客房查询查询按钮的CLICK代码:cx=0set exact off &字符非精确比较cif=alltrim(bo1.displayvalue)ccif=alltrim(bo2.displayvalue)ctext=alltrim(thisform.text1.value)if empty(ccif) messagebox(请输入查询条件!,48,操作失败!) bo2.setfocuselse if empty(ctext) if ccif!=All messagebox(请输入查询条件!,48,操作失败!) thisform.text1.setfocus else select *; &选择所有字段 from roommanage!tabkfinfo; &指定查询的数据库文件 order by tabkfinfo.房间号; &查询结果升序排序 into cursor lindeping thisform.grid1.recordsource=lindeping &赋数据源 thisform.refresh endif else if bo2.displayvalue=like MySQL=cif+ +ccif+ +%+ctext+% else MySQL=cif+ +ccif+ +alltrim(thisform.text1.value)+ endif select * from roommanage!tabkfinfo where &MySQL.into cursor lindeping go top if eof() go bottom messagebox(客房不存在,48,信息窗口) thisform.grid1.recordsource=lindeping cx=1 else thisform.grid1.recordsource=lindeping thisform.refresh endif endifendifB.房态查看退出按钮的CLICK代码:thisform.visible=.f. &隐藏表单4) 查询统计A.客房预定查询按钮组中”第一个” 按钮的CLICK代码:if cx=1 go top &记录指针定位到第一条记录 mand1.enabled=.f. mand2.enabled=.f. mand3.enabled=.f. mand4.enabled=.f. mandgroup1.cmodify.enabled=.f. mandgroup1.cdel.enabled=.f.else go top mand1.enabled=.f. mand2.enabled=.f. mand3.enabled=.t. mand4.enabled=.t.endifthisform.resize &执行表单的Resize事件thisform.refresh &刷新表单按钮组中”上一个” 按钮的CLICK代码:if cx=1 messagebox(已是第一个记录,48,信息窗口) mand1.enabled=.f. mand2.enabled=.f. mand3.enabled=.f. mand4.enabled=.f. mandgroup1.cmodify.enabled=.f. mandgroup1.cdel.enabled=.f. thisform.resize &执行表单的Resize事件else skip-1 &记录指针向上移一条记录 thisform.resize &执行表单的Resize事件 if bof() messagebox(已是第一个记录,48,信息窗口) mand1.enabled=.f. mand2.enabled=.f. thisform.resize &执行表单的Resize事件 else mand1.enabled=.t. mand2.enabled=.t. endif mand3.enabled=.t. mand4.enabled=.t.endifthisform.refresh按钮组中”下一个” 按钮的CLICK代码:if eof() messagebox(已经是最后一条记录,48,管理窗口) skip-1 &记录指针向上移动一条记录 thisform.resize &执行表单的Resize事件 mand1.enabled=.f. mand2.enabled=.f. mand3.enabled=.f. mand4.enabled=.f. mandgroup1.cmodify.enabled=.f. mandgroup1.cdel.enabled=.f.else skip &记录指针向下移一条记录 thisform.resize &执行表单的Resize事件 if eof() messagebox(已经是最后一条记录,48,管理窗口) skip-1 &记录指针向上移动一条记录 thisform.resize &执行表单的Resize事件 mand3.enabled=.f. mand4.enabled=.f. else mand3.enabled=.t. mand4.enabled=.t. endif mand1.enabled=.t. mand2.enabled=.t.endifthisform.refresh按钮组中”最后一个” 按钮的CLICK代码:go bottom &记录指针移动到最后一条记录if cx=1 mand3.enabled=.f. mand4.enabled=.f. mand1.enabled=.f. mand2.enabled=.f. mandgroup1.cmodify.enabled=.f. mandgroup1.cdel.enabled=.f.else mand3.enabled=.f. mand4.enabled=.f. mand1.enabled=.t. mand2.enabled=.t.endifthisform.resize &执行表单的Resize事件thisform.refreshB.住宿查询:查询按钮的CLICK代码:do case case thisform.optiongroup1.option1.value=1 select *; from roommanage!tabdjb; where 是否结帐=.t.; order by tabdjb.凭证号码; into cursor lindeping thisform.grid1.recordsource=lindeping &赋数据源 if reccount()=0 messagebox(无符合条件的记录!,48,操作失败) endif case thisform.optiongroup1.option2.value=1 select *; from roommanage!tabdjb; where 是否结帐=.f.; order by tabdjb.凭证号码; into cursor lindeping thisform.grid1.recordsource=lindeping if reccount()=0 messagebox(无符合条件的记录!,48,操作失败) endif case thisform.optiongroup1.option3.value=1 select tabdjb select *; from databaseroommanage!tabdjb; order by tabd

温馨提示

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

评论

0/150

提交评论