unitroomcheck.pas

来自「自己做过的工程」· PAS 代码 · 共 1,358 行 · 第 1/4 页

PAS
1,358
字号

unit unitroomcheck;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, Grids, DBGrids, DB, ADODB;

type

  Tformroomcheck = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    but_check: TButton;
    but_debt: TButton;
    but_cancel: TButton;
    ed_close: TButton;
    ed_roomid: TEdit;
    StaticText2: TStaticText;
    StaticText3: TStaticText;
    ed_username: TEdit;
    StaticText4: TStaticText;
    ed_intime: TEdit;
    StaticText5: TStaticText;
    ed_checktime: TEdit;
    StaticText6: TStaticText;
    ed_roomfee: TEdit;
    StaticText7: TStaticText;
    ed_employeeid: TEdit;
    StaticText8: TStaticText;
    ed_totalfee: TEdit;
    StaticText10: TStaticText;
    but_compute: TButton;
    but_viewinfo: TButton;
    StaticText9: TStaticText;
    cb_roomtype: TComboBox;
    ed_discount: TEdit;
    ed_remark: TEdit;
    StaticText14: TStaticText;
    StaticText15: TStaticText;
    ed_kalaok: TEdit;
    StaticText16: TStaticText;
    ed_ballroom: TEdit;
    StaticText17: TStaticText;
    ed_commercecenter: TEdit;
    ed_hairdressing: TEdit;
    StaticText18: TStaticText;
    ed_supsecond: TEdit;
    StaticText19: TStaticText;
    ed_suproom: TEdit;
    StaticText20: TStaticText;
    ed_roomthings: TEdit;
    StaticText1: TStaticText;
    TabSheet2: TTabSheet;
    ed_oldusername: TEdit;
    StaticText11: TStaticText;
    but_roomselect: TButton;
    DBGrid2: TDBGrid;
    StaticText12: TStaticText;
    ed_oldtotalfee: TEdit;
    Button9: TButton;
    Button11: TButton;
    StaticText22: TStaticText;
    StaticText23: TStaticText;
    TabSheet3: TTabSheet;
    TabSheet4: TTabSheet;
    ed_debtremark: TEdit;
    ed_debthairdressing: TEdit;
    ed_debtcommerce: TEdit;
    StaticText21: TStaticText;
    StaticText24: TStaticText;
    StaticText25: TStaticText;
    ed_debttotalfee: TEdit;
    ed_debtdiscount: TEdit;
    StaticText27: TStaticText;
    ed_debtsuproom: TEdit;
    StaticText28: TStaticText;
    ed_debtsupsecond: TEdit;
    ed_debtballroom: TEdit;
    ed_debtemployeeid: TEdit;
    ed_debtkalaok: TEdit;
    StaticText29: TStaticText;
    StaticText30: TStaticText;
    ed_customername: TEdit;
    Button4: TButton;
    StaticText32: TStaticText;
    StaticText33: TStaticText;
    ed_indebttime: TEdit;
    DBGrid1: TDBGrid;
    StaticText34: TStaticText;
    Button2: TButton;
    Button1: TButton;
    Button3: TButton;
    StaticText13: TStaticText;
    ed_oldcustomername: TEdit;
    Button5: TButton;
    DBGrid3: TDBGrid;
    StaticText26: TStaticText;
    StaticText31: TStaticText;
    ed_olddebttotalfee: TEdit;
    Button6: TButton;
    Button8: TButton;
    but_print: TButton;
    but_printdebt: TButton;
    StaticText35: TStaticText;
    cb_judge: TCheckBox;
    cb_customerjudge: TCheckBox;
    but_customerprint: TButton;
    StaticText36: TStaticText;
    StaticText37: TStaticText;
    Button12: TButton;
    Button10: TButton;
    StaticText38: TStaticText;
    but_allroomdebt: TButton;
    but_allcustomerdebt: TButton;
    Button7: TButton;
    but_changeroom: TButton;
    procedure ed_closeClick(Sender: TObject);
    procedure but_viewinfoClick(Sender: TObject);
    procedure but_computeClick(Sender: TObject);
    procedure but_checkClick(Sender: TObject);
    procedure but_debtClick(Sender: TObject);
    procedure but_cancelClick(Sender: TObject);
    procedure but_roomselectClick(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure but_printClick(Sender: TObject);
    procedure but_printdebtClick(Sender: TObject);
    procedure TabSheet2Show(Sender: TObject);
    procedure cb_judgeClick(Sender: TObject);
    procedure TabSheet3Show(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure cb_customerjudgeClick(Sender: TObject);
    procedure but_customerprintClick(Sender: TObject);
    procedure TabSheet4Show(Sender: TObject);
    procedure Button12Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure but_allroomdebtClick(Sender: TObject);
    procedure but_allcustomerdebtClick(Sender: TObject);
    procedure but_changeroomClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    //这个函数用来判断房间的输入及相应的提示
    function fun_roomidjudge(vroomid:string;var judgeid:string):string;
    function fun_roomstatusjudge(vroomid:string;vroomstatus1:string;vroomstatus2:string;vroomstatus3:string;vroomstatus4:string;var judgestatus:string):string;
  end;

var
  formroomcheck: Tformroomcheck;
  vcodeid:integer;
  roomfee: extended;
  roomthings:extended;
  roomid:integer;
implementation
   uses unitDMHotel,unitroom,unitinroom,unitroomrep,unitroomdebtrep,unitcustomerdebt,unitlogging,unitchangeroom;
{$R *.dfm}
//  这是自己定义函数的实现的地方,一定要注意这个函数中的var 这里定义了一个
function Tformroomcheck.fun_roomidjudge(vroomid:string;var judgeid:string):string;
begin
if vroomid='' then
     begin
      showmessage('你的输入的房间号为空,请重新输入!');
      judgeid:='pause';

  exit;
     end;
//首先必须先判断这个房间的状态,如果是禁用或使用中就不可以用来进行预定的操作
        DMHotel.ADODataSetroomstatus.Open;
    if  not DMHotel.ADODataSetroomstatus.Locate('roomid',vroomid,[])then
        begin
     showmessage('房间编号'+vroomid+'不存在!');
     ed_roomid.Text:='';
     judgeid:='pause';
     exit;
     end ;
end;


//房间状态函数的判断的地方
function Tformroomcheck.fun_roomstatusjudge(vroomid:string;vroomstatus1:string;vroomstatus2:string;vroomstatus3:string;vroomstatus4:string;var judgestatus:string):string;
var
vroomstatus:string;
begin
DMHotel.ADODataSet_roomstatus.Open;
  DMhotel.ADODataSet_roomstatus.Locate('roomid',vroomid,[]);
  vroomstatus:=DMHotel.ADODataSet_roomstatus.FieldByName('roomstatus').AsString;
   DMHotel.ADODataSet_roomstatus.Requery;
 //DMhotel.ADODataSet_roomstatus.Close;
  if (vroomstatus=vroomstatus1) or  (vroomstatus=vroomstatus2) or (vroomstatus=vroomstatus3)  then
 begin
  showmessage('该房间不在'+vroomstatus4+'状态,不可以进行结帐的处理') ;
  judgestatus:='pause';
  //ed_roomid:='';
  exit;
 end;
end;


procedure Tformroomcheck.ed_closeClick(Sender: TObject);
begin

close;
end;

procedure Tformroomcheck.but_viewinfoClick(Sender: TObject);
var
vroomid:string;
judgeid:string;
judgestatus:string;
vtest:integer;
//vroomstatus:string;
begin
  vroomid:=ed_roomid.Text;

   if vroomid='' then
   begin
        messagebox(handle,'你没有输入房间号,请重新输入!','错误',MB_OK OR MB_ICONERROR);
        exit;
   end;

  if not  trystrtoint(ed_roomid.Text,vtest)     then
        begin
          messagebox(handle,'你输入的住房间号不是个整数,请重新输入!','错误',MB_OK OR MB_ICONERROR);
          EXIT;
        end;

 //在进行各项操作之前是要进行判断的。这里一个自定义的函数

  formroomcheck.fun_roomidjudge(vroomid,judgeid);
 // showmessage(judgeid);
   if   judgeid='pause' then
  exit;

// 对房间的状态也要进行判断。这里最好也用一个函数的形式来实现
//就是要调用房间状态表,只要在使用中的房间才可以用来进行结帐处理
  {DMHotel.ADODataSet_roomstatus.Open;
  DMhotel.ADODataSet_roomstatus.Locate('roomid',vroomid,[]);
  vroomstatus:=DMHotel.ADODataSet_roomstatus.FieldByName('roomstatus').AsString;
  if (vroomstatus='停用') or  (vroomstatus='预定') or (vroomstatus='空闲')  then
  showmessage('该房间不在使用状态,不可以进行结帐的处理') ;
  exit;  }

  formroomcheck.fun_roomstatusjudge(vroomid,'停用','预定','空闲','使用',judgestatus);
  if judgestatus='pause' then
  exit;

  but_compute.Enabled:=true;
//在管理员在输入房间标号后就要点‘显示信息 ;按钮。然后就调用相应的数据库的信息
//vroomid:=ed_roomid.Text;
     DMHOtel.ADODataSet_roomin.Open;
     DMHotel.ADODataSet_roomin.Locate('roomid',vroomid,[]);
//定位后取出需要的信息
     ed_username.Text:=DMHotel.ADODataSet_roomin.FieldByName('username').AsString;
     cb_roomtype.Text:=DMHotel.ADODataSet_roomin.FieldByName('roomtype').AsString;
     ed_intime.Text:=DMhotel.ADODataSet_roomin.FieldByName('intime').AsString;
     ed_checktime.Text:=datetimetostr(date+time);
     //由于换房要加入的备注的信息
     ed_remark.Text:=DMhotel.ADODataSet_roomin.FieldByName('remark').AsString;
     DMHOtel.ADODataSet_roomin.Close;
     ed_roomid.ReadOnly:=true;

end;

procedure Tformroomcheck.but_computeClick(Sender: TObject);
var
vtotalfee:extended;
vtest:extended;
judgeid:string;
judgestatus:string;
vroomid:string;
begin

  vroomid:=ed_roomid.Text;
    //房间号判断
   formroomcheck.fun_roomidjudge(vroomid,judgeid);
 // showmessage(judgeid);
   if   judgeid='pause' then
  exit;
   //房间状态判断
  formroomcheck.fun_roomstatusjudge(vroomid,'停用','预定','空闲','使用',judgestatus);
  if judgestatus='pause' then
  exit;



  // 现要进行如果是空就要设置为零!!!!
  
if   ed_roomfee.Text='' then
     ed_roomfee.Text:=inttostr(0);
 //2
if   ed_roomthings.Text='' then
     ed_roomthings.Text:=inttostr(0);
//3
  if   ed_kalaok.Text='' then
     ed_kalaok.Text:=inttostr(0);
  //4
  if   ed_ballroom.Text='' then
     ed_ballroom.Text:=inttostr(0);
     //5
     if   ed_commercecenter.Text='' then
     ed_commercecenter.Text:=inttostr(0);
     //6
     if   ed_suproom.Text='' then
    ed_suproom.Text:=inttostr(0);
      //7
      if   ed_supsecond.Text='' then
     ed_supsecond.Text:=inttostr(0);
     //8
     if   ed_hairdressing.Text='' then
    ed_hairdressing.Text:=inttostr(0);




  //判断是不是实数
      //1
if not  trystrtofloat( ed_roomfee.Text,vtest)     then
begin
messagebox(handle,'你输入的住宿费用不是个实数,请重新输入','错误',MB_OK OR MB_ICONERROR);
EXIT;
end;
 //2
if not  trystrtofloat( ed_roomthings.Text,vtest)     then
begin
messagebox(handle,'你输入的房内费用不是个实数,请重新输入','错误',MB_OK OR MB_ICONERROR);
EXIT;
end;
//3
if not  trystrtofloat( ed_kalaok.Text,vtest)     then
begin

⌨️ 快捷键说明

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