酒店客房餐饮管理系统实现
酒店客房餐饮管理系统功能完善,能管理普通酒店的客房住宿和餐饮等服务。本系统采用DELPHI和SQL SERVER工具开发,分为前台和后台管理。前台与后台管理程序相对独立,均共用一个数据库。下面对该系统的部份功能和模块以及代码进行分析。
一.前台管理
1. 数据模块
该模块是整个程序数据的提供者,以及包括大部分的处理函数和实现功能。
单元文件名:u_data.pas,数据模块名:DM_main。
部分代码分析:
返回指表中某字段的最大值,返回值为整型。因此该函数只能应用字段为整型的表。
function TDM_main.GetMaxId(aTable,aField:string):integer;
var
sSql:string;
begin
Result:=0;
sSql:='select max(%s) from %s';
with Q_getmax do
begin
SQL.Text:=Format(sSql,[aField,aTable]);
Open;
if not IsEmpty then
Result:=Fields[0].AsInteger+1;
Close;
end;
end;
接下来这个函数也是返回最大值,但是其为一个订单的最大编号为字符型。
function TDM_main.GetMaxOrderId:string;
var
id:String;
count:Integer;
begin
with Q_count_order do
begin
Open;
count:=Fields[0].Value;
Close;
end;
id:='000'+IntToStr(count);
id:=Copy(id, length(id)-3, 4);
id:='F'+FormatDateTime('yymmdd',now)+id;
Result:=id;
end;
系统登陆函数:在进行系统的操作处理时,必须登陆。该函数对用户输入的用户名和密码数据库验证。其密码是进行加密的(加密模块稍后分析)
function TDM_main.Login(user, passwd:String):String;
var
Flag:Boolean;
begin
if Database.Connected=false then
Database.Connected:=True;
passwd:=Copy(passwd+passwd, 1, 10); //加密处理
passwd:=Encrypt(passwd, 111);
with Q_login do
begin
Close;
Params.ParamValues['ID']:=user;
Params.ParamValues['PASSWD']:=passwd;
Open; //在用户请中查询该用户和密码是否存在
Flag:=( not IsEmpty);
if Flag then
begin
Login:=FieldValues['NAME'];
IsPass:=Flag;
end
else
begin
Login:='';
Application.MessageBox('请重新输入!', '登录失败', MB_OK);
end;
Close;
end;
end;
系统登出:
procedure TDM_main.Logout;
begin
Database.Connected:=False; //断开数据库的连接
end;
2. 加密模块:
单元文件名:crypt.pas。
简单的加密算法。
const
C1 = 52845;
C2 = 22719;
function Encrypt( S: String; Key: Word): String;
//S:加密的字符串;Key:密钥
var
I: Integer;
j: Integer;
begin
Result := S;
for I := 1 to Length(S) do
begin
Result[I] := char(byte(S[I]) xor (Key shr 8));
Key := (byte(Result[I]) + Key) * C1 + C2;
end;
s:=Result;
Result:='';
for i:=1 to length(s) do
begin
j:=Integer(s[i]);
Result:=Result + Char(65+(j div 26))+Char(65+(j mod 26));
end;
end;
3. 主模块
系统的主界面,包括系统登陆。在没有进行登陆之前4个功能按钮为灰色。