unitroomcheck.~pas
来自「自己做过的工程」· ~PAS 代码 · 共 1,283 行 · 第 1/3 页
~PAS
1,283 行
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;
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);
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;
implementation
uses unitDMHotel,unitroom,unitinroom,unitroomrep,unitroomdebtrep,unitcustomerdebt,unitlogging;
{$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);
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
messagebox(handle,'你输入的卡拉OK费用不是个实数,请重新输入','错误',MB_OK OR MB_ICONERROR);
EXIT;
end;
//4
if not trystrtofloat( ed_ballroom.Text,vtest) then
begin
messagebox(handle,'你输入的歌舞厅费用不是个实数,请重新输入','错误',MB_OK OR MB_ICONERROR);
EXIT;
end;
//5
if not trystrtofloat( ed_commercecenter.Text,vtest) then
begin
messagebox(handle,'你输入的商务中心费用不是个实数,请重新输入','错误',MB_OK OR MB_ICONERROR);
EXIT;
end;
//6
if not trystrtofloat( ed_supsecond.Text,vtest) then
begin
messagebox(handle,'你输入的散座费用不是个实数,请重新输入','错误',MB_OK OR MB_ICONERROR);
EXIT;
end;
//7
if not trystrtofloat( ed_hairdressing.Text,vtest) then
begin
messagebox(handle,'你输入的美容中心费用不是个实数,请重新输入','错误',MB_OK OR MB_ICONERROR);
EXIT;
end;
//8
if not trystrtofloat( ed_suproom.Text,vtest) then
begin
messagebox(handle,'你输入的包间费用不是个实数,请重新输入','错误',MB_OK OR MB_ICONERROR);
EXIT;
end;
//9折扣
if not trystrtofloat( ed_discount.Text,vtest) then
begin
messagebox(handle,'你输入的包间费用不是个实数,请重新输入','错误',MB_OK OR MB_ICONERROR);
EXIT;
end;
vtotalfee:=(strtofloat(ed_roomfee.Text)+strtofloat(ed_roomthings.Text)+
strtofloat(ed_kalaok.Text)+strtofloat(ed_ballroom.Text)+
strtofloat(ed_commercecenter.Text)+strtofloat(ed_suproom.Text)+
strtofloat(ed_supsecond.Text)+strtofloat(ed_hairdressing.Text))*strtofloat(ed_discount.Text)/10;
ed_totalfee.Text:=floattostr(vtotalfee);
// showmessage('a');
ed_roomid.ReadOnly:=true;
end;
procedure Tformroomcheck.but_checkClick(Sender: TObject);
var
itemtype:string;
coderoom:integer;
vroomid:string;
vintime:string;
vchecktime:string;
judgestatus:string;
judgeid: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;
//收银的过程其实就是将这个数据写到数据库的过程。以为了以后的查找
//先要判断一下这个总的费用是否为0或为空
if (ed_totalfee.Text='') or (ed_totalfee.Text=inttostr(0)) then
begin
showmessage('请认真确定是否住宿费用为零!');
exit;
end;
if MessageDlg('您确定要进行收银操作吗?',mtConfirmation,[mbYes,mbNo],0)= mrNO then
exit;
// 开始对数据库的一个事件
Dmhotel.ADOConnection1.BeginTrans;
//这个也可以写成一个函数的形式
itemtype:='roomcheckmanagecode';
DMHotel.ADODataSet_itemnumber.Open;
DMHotel.ADODataSet_itemnumber.Locate('itemtype',itemtype,[]);
coderoom:=DMHotel.ADODataSet_itemnumber.FieldValues['itemno'];
coderoom:=coderoom+1;
DMHotel.ADODataSet_itemnumber.Edit;
DMHotel.ADODataSet_itemnumber.FieldValues['itemno']:=coderoom;
DMHotel.ADODataSet_itemnumber.Post;
// //showmessage(inttostr(coderoom));
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?