VFP客房管理系统 第5页

VFP客房管理系统 第5页

1.表单设计

1)在客房管理系统的项目中,添加一个新表单,名称为Tsjz

2)在表单中添加Label控件、Combo控件、Text控件、Commandgroup控件。

3)重要控件属性如表3所示。

3                       重要控件的重要属性及值

控件名

属性

Combo1

RowSourceType

Style

6-字段

2-下拉列表

Text4

Format

InputMask

999999.99

2.代码设计

在表单的Resize事件中添加以下代码:

store .f. to thisform.combo1.enabled,thisform.combo2.enabled,thisform.combo3.enabled,;

thisform.combo4.enabled,thisform.combo5.enabled,thisform.text2.enabled,;

thisform.text3.enabled,thisform.text6.enabled,thisform.text7.enabled,;

thisform.text9.enabled,thisform.text10.enabled,thisform.text11.enabled,;

thisform.text12.enabled,thisform.text13.enabled,thisform.text14.enabled,;

thisform.text15.enabled,thisform.text16.enabled,thisform.text17.enabled,;

thisform.text18.enabled,thisform.text19.enabled,thisform.text20.enabled,;

thisform.text21.enabled,thisform.text22.enabled,thisform.text23.enabled    &&设置控件无效

在表单的Init事件中添加以下代码:

thisform.resize     &&执行表单的Resize事件

thisform.combo1.enabled=.f.

thisform.gzdw.visible=.f.    &&隐藏Gzdw

thisform.combo6.visible=.f.

thisform.commandgroup1.csave.enabled=.f.

thisform.commandgroup1.ccancel.enabled=.f.

thisform.commandgroup1.cadd.enabled=.t.

thisform.commandgroup1.cexit.enabled=.t.

combo2控件的KeyPress事件中添加以下代码:

select tabkflx

if nKeyCode=13

  thisform.text8.setfocus

  thisform.text8.value=价格

endif

Combo2控件的InteractiveChange事件中添加以下代码:

thisform.text8.value=tabkflx.价格

在“结帐”按钮的Click事件中添加以下代码:

store .t. to thisform.combo3.enabled,thisform.combo4.enabled,thisform.combo5.enabled,;

  thisform.combo6.enabled,thisform.text9.enabled,thisform.text11.enabled,;

  thisform.text13.enabled,thisform.text17.enabled,thisform.text22.enabled

store date() to thisform.text1.value,thisform.text9.value

store time() to thisform.text4.value,thisform.text11.value

thisform.text5.value=manager

store 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.value

thisform.text17.value=100

store '' 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,thisform.combo1.displayvalue,;

  thisform.combo2.displayvalue,thisform.combo3.displayvalue,;

  thisform.combo4.displayvalue,thisform.combo5.displayvalue

select *;

from roommanage!tabdjb;

where 是否结帐=.f.;

order by tabdjb.凭证号码;

into cursor lin

thisform.combo5.rowsource='lin.凭证号码'    &&赋数据源

thisform.combo5.setfocus   &&Combo5获得焦点

thisform.refresh    &&刷新表单

thisform.commandgroup1.cadd.enabled=.f.

thisform.commandgroup1.csave.enabled=.t.

thisform.commandgroup1.ccancel.enabled=.t.

thisform.commandgroup1.cexit.enabled=.f.

单击“保存”按钮,将结帐信息保存到退房单“Tabtfd”表中,同时修改客房信息表“Tabkfinfo”中该凭证号码的记录的房态为“空闲”和登记表“Tabdjb”中该凭证号码的记录的“是否结帐”为“.T.”,并判断“结帐方式”是否为“挂帐”,如果是再将该信息保存到挂帐明细表“Tabgzmx”中。具体代码如下:

pzno=alltrim(thisform.combo5.displayvalue)  &&获得输入信息

zsdate=thisform.text1.value

pznumber=alltrim(thisform.text14.value)

cname=alltrim(thisform.text2.value)

zjnumber=alltrim(thisform.text3.value)

zstime=alltrim(thisform.text4.value)

manager=alltrim(thisform.text5.value)

zsyy=alltrim(thisform.text6.value)

area=alltrim(thisform.text7.value)

price=thisform.text8.value

tfdate=thisform.text9.value

tftime=alltrim(thisform.text11.value)

zsday=thisform.text10.value

tel=alltrim(thisform.text12.value)

cmemo=alltrim(thisform.text13.value)

kflx=alltrim(thisform.combo2.displayvalue)

zjname=alltrim(thisform.combo1.displayvalue)

jkfs=alltrim(thisform.combo3.displayvalue)

fjno=alltrim(thisform.text15.displayvalue)

sjmoney=thisform.text16.value

zk=thisform.text17.value

ysmoney=thisform.text18.value

yfmoney=thisform.text19.value

jezj=thisform.text20.value

workdw=alltrim(thisform.text21.value)

thmoney=thisform.text23.value

dhf=val(thisform.dhf.caption)

zf=val(thisform.zf.caption)

hyf=val(thisform.hyf.caption)

ccf=val(thisform.ccf.caption)

pcf=val(thisform.pcf.caption)

gzdw=alltrim(thisform.combo6.value)

sfjz=.t.

cmessagetitle='退宿结帐'

cmessagetext='确定要保存吗?'

ndialogtype=4+32

nAnswer=messagebox(cmessagetext,ndialogtype,cmessagetitle)

if nAnswer=6

   if empty(pznumber)    &&判断证件号码是否为空

    messagebox('凭证号码不能为空',48,'操作失败!')

    thisform.combo5.setfocus

 else

    if alltrim(thisform.combo3.displayvalue)='挂帐'

       if empty(gzdw)

          messagebox('挂帐单位不能为空!',48,'操作失败!')

          thisform.combo6.setfocus

       else

                    select tabtfd

                    set order to 凭证号码

                    seek pznumber

                    insert into tabtfd values(pznumber,cname,zjname,zjnumber,area,workdw, zsyy,fjno,;

kflx,price,zsdate,zstime,zsday,sjmoney,jkfs,zk,ysmoney,zf,dhf,hyf,ccf,pcf,jezj,;

ysmoney,thmoney,tfdate,tftime,cmemo,tel,manager)   &&追加新记录

        update tabkfinfo set 房态='空闲' where 房间号=fjno      &&更新数据表

        update tabdjb set 是否结帐=.t. where 凭证号码=pzno

        if thisform.combo3.displayvalue='挂帐'

           zy='住宿时间:'+alltrim(dtoc(zsdate))+' 住宿天数:'+alltrim(str(zsday,8,2))

           qkmoney=ysmoney-yfmoney

           moneylj=qkmoney

           insert into tabgzmx values(tfdate,gzdw,zy,ysmoney,qkmoney,0,moneylj,;

            cname,zjname,zjnumber,pzno,tftime,kflx,price,.f.)

        endif

        messagebox('数据保存完毕',48,'操作成功!')

        thisform.Resize        &&执行表单的Resize事件

        thisform.combo6.enabled=.f.

        thisform.commandgroup1.cexit.enabled=.t.

        thisform.commandgroup1.ccancel.enabled=.f.

        thisform.commandgroup1.csave.enabled=.f.

        thisform.commandgroup1.cadd.enabled=.t.

     endif

  else

     select tabtfd

     set order to 凭证号码

     seek pznumber

     insert into tabtfd values(pznumber,cname,zjname,zjnumber,area,workdw,zsyy, fjno,kflx,;

price,zsdate,zstime,zsday,sjmoney,jkfs,zk,ysmoney,zf,dhf,hyf,ccf,pcf,jezj,ysmoney,;

thmoney,tfdate,tftime,cmemo,tel,manager)      &&追加新记录

         update tabkfinfo set 房态='空闲' where 房间号=fjno     &&更新数据表

         update tabdjb set 是否结帐=.t. where 凭证号码=pzno

         messagebox('数据保存完毕',48,'操作成功!')

         thisform.resize    &&执行表单的Resize事件

         thisform.commandgroup1.cexit.enabled=.t.

         thisform.commandgroup1.ccancel.enabled=.f.

         thisform.commandgroup1.csave.enabled=.f.

         thisform.commandgroup1.cadd.enabled=.t.

      endif

   endif

endif

thisform.refresh    &&刷新表单

在“取消”按钮的Click事件中添加以下代码:

thisform.Resize       &&执行表单的Resize事件

thisform.gzdw.visible=.f.

thisform.combo6.visible=.f.

thisform.refresh

thisform.commandgroup1.cadd.enabled=.t.

thisform.commandgroup1.csave.enabled=.f.

thisform.commandgroup1.ccancel.enabled=.f.

thisform.commandgroup1.cexit.enabled=.t.

text1控件的InteractiveChange事件中添加以下代码:

sf=thisform.text1.value

yf=thisform.text4.value

thisform.text5.value=yf-sf    &&求出未收金额赋给文本框text5

text9控件的InteractiveChange事件中添加以下代码:

thisform.text10.value=thisform.text9.value-thisform.text1.value

if thisform.text10.value=0

   thisform.text10.value=1

 endif

thisform.text16.value=thisform.text8.value*thisform.text10.value

thisform.text20.value=thisform.text16.value+val(thisform.dhf.caption)+val(thisform.zf.caption)+;

   val(thisform.hyf.caption)+val(thisform.ccf.caption)+val(thisform.pcf.caption)

thisform.text18.value=thisform.text20.value*thisform.text17.value/100

thisform.text23.value=thisform.text19.value-thisform.text18.value

text10控件的InteractiveChange事件中添加以下代码:

thisform.text16.value=thisform.text10.value*thisform.text8.value

根据用户选择的“结帐方式”自动计算应收宿费。如果选择的是“挂帐”将要求用户输入挂帐单位。

combo3控件的InteractiveChange事件中添加以下代码:

zk=thisform.text17.value

sjxf=thisform.text16.value

do case

   case thisform.combo3.displayvalue='招待'

        thisform.text17.enabled=.f.

        thisform.text19.enabled=.f.

        thisform.gzdw.visible=.f.

        thisform.combo6.visible=.f.

        thisform.text17.value=0

        thisform.text18.value=0

   case thisform.combo3.displayvalue='折扣'

        thisform.text17.enabled=.t.

        thisform.text19.enabled=.t.

        thisform.gzdw.visible=.f.

        thisform.combo6.visible=.f.    &&显示Combo6控件

        thisform.text18.value=thisform.text20.value*thisform.text17.value/100

        thisform.text23.value=thisform.text19.value-thisform.text18.value

   case thisform.combo3.displayvalue='挂帐'

        thisform.text17.enabled=.f.

        thisform.text17.value=100

        thisform.text18.value=thisform.text20.value

        thisform.gzdw.visible=.t.

        thisform.combo6.visible=.t.

        select tabgzdwinfo     &&选择Tabgzdwinfo工作区为当前工作区

        thisform.combo6.rowsource='tabgzdwinfo.单位全称'    &&赋数据源

endcase

text17控件的InteractiveChange事件中添加以下代码:

sjxf=thisform.text16.value

zk=thisform.text17.value

thisform.text18.value=thisform.text20.value*thisform.text17.value/100

thisform.text23.value=thisform.text19.value-thisform.text18.value

Text22控件的InteractiveChange事件中添加以下代码:

do case

   case thisform.combo4.displayvalue='电话费'

        thisform.dhf.caption=alltrim(str(thisform.text22.value,8,2))

   case thisform.combo4.displayvalue='杂费'

        thisform.zf.caption=alltrim(str(thisform.text22.value,8,2))

   case thisform.combo4.displayvalue='会议费'

        thisform.hyf.caption=alltrim(str(thisform.text22.value,8,2))

   case thisform.combo4.displayvalue='存车费'

        thisform.ccf.caption=alltrim(str(thisform.text22.value,8,2))

   case thisform.combo4.displayvalue='赔偿费'

        thisform.pcf.caption=alltrim(str(thisform.text22.value,8,2))

endcase

thisform.text20.value=thisform.text16.value+val(thisform.dhf.caption)+val(thisform.zf.caption)+;

         val(thisform.ccf.caption)+val(thisform.hyf.caption)+val(thisform.pcf.caption)

thisform.text18.value=thisform.text20.value*thisform.text17.value/100

thisform.text23.value=thisform.text19.value-thisform.text18.value

text20控件的InteractiveChange事件中添加以下代码:

thisform.text18.value=thisform.text20.value*thisform.text17.value/100

combo4控件的InteractiveChange事件中添加以下代码:

thisform.text22.value=0

combo5控件的InteractiveChange事件中添加以下代码:

pzno=alltrim(thisform.combo5.displayvalue)

thisform.text14.value=alltrim('T'+pzno)

select * from roommanage!tabdjb where 凭证号码=pzno order by tabdjb.凭证号码;

into cursor lindeping

thisform.combo1.displayvalue=lindeping.证件名称  &&赋值给Combo1

thisform.combo2.displayvalue=lindeping.客房类型

thisform.combo3.displayvalue=lindeping.结款方式

thisform.text2.value=lindeping.姓名

thisform.text3.value=lindeping.证件号码

thisform.text1.value=lindeping.住宿日期

thisform.text4.value=lindeping.住宿时间

thisform.text6.value=lindeping.住宿原由

thisform.text7.value=lindeping.详细地址

thisform.text8.value=lindeping.房间价格

  thisform.text9.value=date()

  thisform.text11.value=time()

thisform.text10.value=thisform.text9.value-thisform.text1.value

if thisform.text10.value=0

   thisform.text10.value=1

endif

thisform.text12.value=lindeping.联系电话

thisform.text13.value=lindeping.备注

thisform.text15.displayvalue=lindeping.房间号

thisform.text16.value=thisform.text8.value*thisform.text10.value

thisform.text17.value=lindeping.折扣

thisform.text19.value=lindeping.预付金额

thisform.text20.value=thisform.text16.value+val(thisform.dhf.caption)+val(thisform.zf.caption)+;

         val(thisform.hyf.caption)+val(thisform.ccf.caption)+val(thisform.pcf.caption)

thisform.text21.value=lindeping.工作单位

thisform.text22.value=0

thisform.text18.value=thisform.text20.value*thisform.text17.value/100

thisform.text23.value=thisform.text19.value-thisform.text18.value

if thisform.combo3.displayvalue='挂帐'

   thisform.gzdw.visible=.t.

   thisform.combo6.visible=.t.

   select tabgzdwinfo

   thisform.combo6.rowsource='tabgzdwinfo.单位全称'    &&赋数据源

endif

4.5  住宿查询设计

用户进入系统后,单击主菜单查询统计下的住宿查询子菜单选项,进入住宿查询界面,住宿查询界面主要提供了四种不同类型的查询方式。住宿查询表单运行结果如图6所示。 

上一页  [1] [2] [3] [4] [5] [6] [7] 下一页

  • 上一篇文章:
  • 下一篇文章:
  • Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有