⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c_main.pas

📁 经典的酒店管理系统
💻 PAS
📖 第 1 页 / 共 5 页
字号:
procedure TMainForm.N85Click(Sender: TObject);
var
  AKrbh: string;
begin
  if not HotelData.CheckYgqx(CZY.CzyBh,'预定') then Exit;
  AKrbh := YdxxSel;
  if AKrbh<>'' then
  begin
    YdcyskNew(AKrbh);
    ShowYdcy(FSjdm);
  end;
end;

//团队预定餐饮
procedure TMainForm.N86Click(Sender: TObject);
var
  AKrbh: string;
begin
  if not HotelData.CheckYgqx(CZY.CzyBh,'预定') then Exit;
  AKrbh := YdxxSel;
  if AKrbh<>'' then
  begin
    YdcytdNew(AKrbh);
    qryCyTdMaster.Close;
    qryCyTdMaster.Open;
  end;
end;

//散客预定客房
procedure TMainForm.N87Click(Sender: TObject);
begin
  if not HotelData.CheckYgqx(CZY.CzyBh,'预定') then Exit;
  YdkfskNew;
  ShowYdkf;
end;

//团队预定客房
procedure TMainForm.N88Click(Sender: TObject);
var
  AKrbh: string;
begin
  if not HotelData.CheckYgqx(CZY.CzyBh,'预定') then Exit;
  AKrbh := YdxxSel;
  if AKrbh<>'' then
  begin
    YdkftdNew(AKrbh);
    ShowYdkf;
  end;
end;

//预定清理
procedure TMainForm.A18Click(Sender: TObject);
var
  s: string;
begin
  if not HotelData.CheckYgqx(CZY.CzyBh,'预定') then Exit;
  s := 'delete from YDHC where (D_SYRQ<:D)and(D_RZBZ="F")';
  with HotelData.qryUserData do
  begin
    if Active then Active := False;
    SQL.Clear;
    SQL.Add(s);
    Params[0].DataType := ftDate;
    Params[0].Value := Date;
    ExecSQL;
    Close;
  end;

  s := 'delete from YDCY where D_SYRQ<:D';
  with HotelData.qryUserData do
  begin
    if Active then Active := False;
    SQL.Clear;
    SQL.Add(s);
    Params[0].DataType := ftDate;
    Params[0].Value := Date;
    ExecSQL;
    Close;
  end;
  s := 'delete from YDKF where D_DDRQ<:D';
  with HotelData.qryUserData do
  begin
    if Active then Active := False;
    SQL.Clear;
    SQL.Add(s);
    Params[0].DataType := ftDate;
    Params[0].Value := Date;
    ExecSQL;
    Close;
  end;

  s := 'delete from YDXX '
      +'where (D_KRBH not in (select D_KRBH from YDHC))'
      +'and(D_KRBH not in (select D_KRBH from YDCY))'
      +'and(D_KRBH not in (select D_KRBH from YDKF))';
  with HotelData.qryUserData do
  begin
    if Active then Active := False;
    SQL.Clear;
    SQL.Add(s);
    ExecSQL;
    Close;
  end;
  ShowYdhc;
  ShowYdcy(FSjdm);
  ShowYdkf;
end;

//客人留言
procedure TMainForm.N33Click(Sender: TObject);
begin
//  if not HotelData.CheckYgqx(CZY.CzyBh,'查询') then Exit;
  Krly;
end;

//电话号码
procedure TMainForm.N81Click(Sender: TObject);
begin
//  if not HotelData.CheckYgqx(CZY.CzyBh,'查询') then Exit;
  Dhhm;
end;

//列车时刻
procedure TMainForm.N34Click(Sender: TObject);
begin
//  if not HotelData.CheckYgqx(CZY.CzyBh,'查询') then Exit;
  Lcsk;
end;

//航班时刻
procedure TMainForm.N35Click(Sender: TObject);
begin
//  if not HotelData.CheckYgqx(CZY.CzyBh,'查询') then Exit;
  Hbsk;
end;

//员工开房报表
procedure TMainForm.N57Click(Sender: TObject);
begin
  if not HotelData.CheckYgqx(CZY.CzyBh,'报表') then Exit;
  Ygkf;
end;

//电话计费系统
procedure TMainForm.N80Click(Sender: TObject);
begin
  if not HotelData.CheckYgqx(CZY.CzyBh,'电话计费系统') then Exit;
  WinExec('LfHotelJf.exe',SW_SHOWNORMAL);
end;

//关于
procedure TMainForm.H13Click(Sender: TObject);
begin
  About;
end;

//数据备份
procedure TMainForm.G19Click(Sender: TObject);
begin
  if not HotelData.CheckYgqx(CZY.CzyBh,'系统') then Exit;
  BakDbfData;
end;

//贵宾卡管理系统
procedure TMainForm.N15Click(Sender: TObject);
begin
  if not HotelData.CheckYgqx(CZY.CzyBh,'贵宾卡管理系统') then Exit;
  WinExec('LfHotelIc.exe',SW_SHOWNORMAL);
end;

//口令设置
procedure TMainForm.G21Click(Sender: TObject);
begin
  Klsz(CZY.CzyBh);
end;

//登录
procedure TMainForm.FormShow(Sender: TObject);
begin
  if not CzyDl then
    Application.Terminate;
  Caption := HOTEL_NAME + '(操作员:' + CZY.CzyXm+')';
end;

//重新登录
procedure TMainForm.G22Click(Sender: TObject);
begin
  if not Czydl then
    Application.Terminate;
  Caption := HOTEL_NAME + '(操作员:' + CZY.CzyXm+')';
end;

//电话费报表
procedure TMainForm.N52Click(Sender: TObject);
begin
  if not HotelData.CheckYgqx(CZY.CzyBh,'报表') then Exit;
  DhfBrow;
end;

//信息导出
procedure TMainForm.B21Click(Sender: TObject);
var
  F: TextFile;
  s: string;
begin

  if SaveDialog1.Execute then
  begin
  WaitForm := TWaitForm.Create(Application);
  try
    WaitForm.FTitle := '正在信息导出';
    WaitForm.Show;
    WaitForm.Update;

    AssignFile(F,SaveDialog1.FileName);
    ReWrite(F);
    s := '';
    with HotelData.tblXxdc do
    begin
      try
        Open;
      except
        On E:Exception do
        begin
          ShowWarning('打开数据库出错,请检查网络连接是否正常!'
                      +#13#10
                      +'错误信息:'
                      +E.Message);
          raise;
        end;
      end;

      //事务启动
      HotelData.DatabaseUser.StartTransaction;

      try
        First;
        while not Eof do
        begin
          s := '';
          s := s + '"' +FieldByName('D_KRXM').AsString+ '"'+Chr(9);
          s := s + '"' +FieldByName('D_XB').AsString +  '"'+Chr(9);
          s := s + '"' +FieldByName('D_MZ').AsString +  '"'+Chr(9);
          s := s + '"' +FieldByName('D_CSNY').AsString +'"'+Chr(9);
          s := s + '"' +FieldByName('D_ZJLX').AsString +'"'+Chr(9);
          s := s + '"' +FieldByName('D_ZJHM').AsString +'"'+Chr(9);
          s := s + '"' +FieldByName('D_GZDW').AsString +'"'+Chr(9);
          s := s + '"' +FieldByName('D_JTDZ').AsString +'"'+Chr(9);
          s := s + '"' +FieldByName('D_DDRQ').AsString +'0800"'+Chr(9);
          s := s + '"' +FieldByName('D_KFBH').AsString +'"'+Chr(9);
          s := s + '"' +FieldByName('D_ZY').AsString +'"'+Chr(13);
          WriteLn(F,s);
          Next;
        end;
        HotelData.ExecSql('delete from XXDC where D_LDRQ<>""');
        //事务提交
        HotelData.DatabaseUser.Commit;
      except
        //事务回滚
        HotelData.DatabaseUser.Rollback;
        raise;
      end;

      Close;
    end;
    CloseFile(F);
  finally
    WaitForm.Hide;
    WaitForm.Free;
  end;
  ShowMessage('信息导出完成!');
  end;
end;

//散客取消房间
procedure TMainForm.N38Click(Sender: TObject);
begin
  if not HotelData.CheckYgqx(CZY.CzyBh,'散客取消') then Exit;
  Skqx;
end;

//帮助
procedure TMainForm.H11Click(Sender: TObject);
begin
  Application.HelpCommand(HELP_CONTENTS,0);
end;

//客房状态初始化
procedure TMainForm.KfztInit;
begin
  PageControl1.ActivePageIndex := 0;
  dtpYdrq.Date := Date;
  dtpCyyd.Date := Date;
  
  try
    tblKfzt.Open;
    qryXxbd.Open;
    qryTd.Open;
    qryYdhc.Close;
    qryYdhc.SQL.Clear;
    qryYdhc.SQL.Add('select * from YDHC where (D_SYRQ>=:RQ)and(D_JSBZ="1") order by D_SYRQ,D_SYSJ');
    qryYdhc.ParamByName('RQ').AsDate := Date;
    qryYdhc.Open;
    qryYdcy.Open;
    qryYdkf.Open;
    qryCyTdMaster.Open;

  except
    On E:Exception do
    begin
      ShowWarning('打开数据库出错,请检查网络连接是否正常!'
                  +#13#10
                  +'错误信息:'
                  +E.Message);
      raise;
    end;
  end;

  ShowKfzt;
  ShowRzl;
  ShowYdhc;
  ShowYdcy(FSjdm);
  ShowYdkf;
end;

//获取团队信息 包含消费、押金等
procedure TMainForm.GetTdInfo;
var
  I     : Integer;
  //ADtfj : Currency;
  s     : string;
  //AKfxx : TKfxx;
begin
  //团队信息刷新
  with qryTd1 do
  begin
    Close;
    SQL.Clear;
    s := 'select * from krxx where (d_krlx="T") and (d_krbh in (select d_krbh from kfzt))';
    SQL.Add(s);
    Open;
    FTdNum := RecordCount;
    SetLength(FTdInfo,FTdNum);

    i := 0;
    First;
    while not Eof do
    begin
      FTdInfo[i].ATdxx := HotelData.GetTdxx(FieldByName('D_KRBH').AsString);
      //ADtfj := 0;

      {FTdInfo[i].AYfje := HotelData.SumJe('select sum(D_YFJE) from KRYJ where (D_YJBH="'
                               +FTdInfo[i].ATdxx.AYjbh+'")and(D_FKFS="'+FKFS_RMB+'")');

      FTdInfo[i].AXfje := HotelData.SumJe('select sum(D_XFJE) from KRZD where (D_ZDBH="'
                               +FTdInfo[i].ATdxx.AZdbh+'")and(D_JZBZ<>"'+JZ_YX+'")and(D_HH<>0)') + ADtfj;
      }
      Next;
      Inc(i);
    end;
  end;

      //太慢
      {
      if qryKfzt.Active then qryKfzt.Active := False;
      qryKfzt.ParamByName('KRBH').AsString := FTdInfo[i].ATdxx.AKrbh;


      try
        qryKfzt.Open;
      except
        On E:Exception do
        begin
          ShowWarning('打开数据库出错,请检查网络连接是否正常!'
                      +#13#10
                      +'错误信息:'
                      +E.Message);
          raise;
        end;
      end;

      qryKfzt.First;
      while not qryKfzt.Eof do
      begin
        AKfxx := HotelData.GetKfxx(qryKfzt.FieldByName('D_KFBH').AsString);
        //获取当天房价
        ADtfj := ADtfj + GetDtfj(AKfxx.ADdsj,Time,AKfxx.AKfbz,AKfxx.ASjfj);
        qryKfzt.Next;
      end;
      qryKfzt.Close;
      }
end;

//当天是否有预定客房
function TMainForm.IsYdkf(const AKfbh: string): Boolean;
begin
  Result := False;
  if qryYdkf.Locate('D_KFBH',AKfbh,[]) then
    if qryYdkf.FieldByName('D_DDRQ').AsString=DateToStr(Date) then
      Result := True;
end;
{
//判断散客押金催交
function TMainForm.IsYjcj(const AKfbh: string): Boolean;
var
  AKfxx : TKfxx;
  ADtfj,AYfje,AXfje : Currency;
begin
  Result:= False;
  AKfxx := HotelData.GetKfxx(AKfbh);
  ADtfj := GetDtfj(AKfxx.ADdsj,Time,AKfxx.AKfbz,AKfxx.ASjfj);

  AYfje := HotelData.SumJe('select sum(D_YFJE) from KRYJ where (D_YJBH="'
                           +AKfxx.AYjbh+'")and(D_FKFS="'+FKFS_RMB+'")');
  AXfje := HotelData.SumJe('select sum(D_XFJE) from KRZD where (D_ZDBH="'
                           +AKfxx.AZdbh+'")and(D_HH<>0)');
  if (AYfje<>0)and((AXfje+ADtfj)>(AYfje-100)) then
    Result := True;
end;
}
//刷新客房状态
procedure TMainForm.RefreshKfzt;
begin
  WaitForm := TWaitForm.Create(Application);
  try
    WaitForm.FTitle := '刷新客房房态';
    WaitForm.Show;
    WaitForm.Update;
    ShowKfzt;
    ShowRzl;
  finally
    WaitForm.Hide;
    WaitForm.Free;
  end;
end;

//显示单个客房状态
procedure TMainForm.ShowOneKfzt(const AKfbh: string);
var
  i,j : Integer;
begin
  tblKfzt.Refresh;
  if tblKfzt.Locate('D_KFBH',AKfbh,[]) then
  begin
    i := FindKfbhId(AKfbh);
    if i<0 then raise Exception.Create('刷新房态发生错误!请重新运行程序。');
    FKfzt[i].AKfbh := tblKfzt.FieldbyName('D_KFBH').AsString;
    FKfzt[i].AKfzt := tblKfzt.FieldByName('D_KFZT').AsString;
    FKfzt[i].AKrbh := tblKfzt.FieldByName('D_KRBH').AsString;
    FKfzt[i].AKrxm := tblKfzt.FieldByName('D_KRXM').AsString;
    FKfzt[i].ASjfj := tblKfzt.FieldByName('D_SJFJ').AsCurrency;
    FKfzt[i].AYjbh := tblKfzt.FieldByName('D_YJBH').AsString;

    //判断是否被预定
    {if IsYdkf(FKfzt[i].AKfbh) then
      FKfzt[i].AYdbz := '★'
    else
      FKfzt[i].AYdbz := '';}

    if tblKfzt.FieldByName('D_KFZT').AsString=KFZT_OK then
    begin
      FKfzt[i].AColor := COLOR_OK;
      FKfzt[i].AImage := 0;
      FKfzt[i].ACjbz  := '';
    end;

    if tblKfzt.FieldByName('D_KFZT').AsString=KFZT_BF then
    begin
      FKfzt[i].AColor := COLOR_BF;
      FKfzt[i].AImage := 1;
      {if IsYjcj(FKfzt[i].AKfbh) then
        FKfzt[i].ACjbz := '¥'
      else
        FKfzt[i].ACjbz := '';}
    end;

    if tblKfzt.FieldByName('D_KFZT').AsString=KFZT_TD then
    begin
      FKfzt[i].AColor := COLOR_TD;
      FKfzt[i].AImage := 2;
      for j:=0 to FTdNum - 1 do
        if FTdInfo[j].ATdxx.AKrxm = FKfzt[i].AKrxm then
        begin
          FKfzt[i].AColor := (MainForm.FindComponent('lblTdmc'+IntToStr(j+1)) as TStaticText).Color;
          {if (FTdInfo[j].AYfje<>0)and(FTdInfo[j].AXfje>(FTdInfo[j].AYfje-100)) then
            FKfzt[i].ACjbz := '¥'
          else
            FKfzt[i].ACjbz := '';}
          Break;
        end;
    end;

    if tblKfzt.FieldByName('D_KFZT').AsString=KFZT_WX then
    begin
      FKfzt[i].AColor := COLOR_WX;
      FKfzt[i].AImage := 3;
      FKfzt[i].ACjbz  := '';
    end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -