餐饮管理酒店客房餐饮管理系统实现.docx
- 文档编号:30103664
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:20
- 大小:505.28KB
餐饮管理酒店客房餐饮管理系统实现.docx
《餐饮管理酒店客房餐饮管理系统实现.docx》由会员分享,可在线阅读,更多相关《餐饮管理酒店客房餐饮管理系统实现.docx(20页珍藏版)》请在冰豆网上搜索。
餐饮管理酒店客房餐饮管理系统实现
酒店客房餐饮管理系统实现
酒店客房餐饮管理系统功能完善,能管理普通酒店的客房住宿和餐饮等服务。
本系统采用DELPHI和SQLSERVER工具开发,分为前台和后台管理。
前台与后台管理程序相对独立,均共用一个数据库。
下面对该系统的部份功能和模块以及代码进行分析。
一.前台管理
1.数据模块
该模块是整个程序数据的提供者,以及包括大部分的处理函数和实现功能。
单元文件名:
u_data.pas,数据模块名:
DM_main。
部分代码分析:
返回指表中某字段的最大值,返回值为整型。
因此该函数只能应用字段为整型的表。
functionTDM_main.GetMaxId(aTable,aField:
string):
integer;
var
sSql:
string;
begin
Result:
=0;
sSql:
='selectmax(%s)from%s';
withQ_getmaxdo
begin
SQL.Text:
=Format(sSql,[aField,aTable]);
Open;
ifnotIsEmptythen
Result:
=Fields[0].AsInteger+1;
Close;
end;
end;
接下来这个函数也是返回最大值,但是其为一个订单的最大编号为字符型。
functionTDM_main.GetMaxOrderId:
string;
var
id:
String;
count:
Integer;
begin
withQ_count_orderdo
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;
系统登陆函数:
在进行系统的操作处理时,必须登陆。
该函数对用户输入的用户名和密码数据库验证。
其密码是进行加密的(加密模块稍后分析)
functionTDM_main.Login(user,passwd:
String):
String;
var
Flag:
Boolean;
begin
ifDatabase.Connected=falsethen
Database.Connected:
=True;
passwd:
=Copy(passwd+passwd,1,10);//加密处理
passwd:
=Encrypt(passwd,111);
withQ_logindo
begin
Close;
Params.ParamValues['ID']:
=user;
Params.ParamValues['PASSWD']:
=passwd;
Open;//在用户请中查询该用户和密码是否存在
Flag:
=(notIsEmpty);
ifFlagthen
begin
Login:
=FieldValues['NAME'];
IsPass:
=Flag;
end
else
begin
Login:
='';
Application.MessageBox('请重新输入!
','登录失败',MB_OK);
end;
Close;
end;
end;
系统登出:
procedureTDM_main.Logout;
begin
Database.Connected:
=False;//断开数据库的连接
end;
2.加密模块:
单元文件名:
crypt.pas。
简单的加密算法。
const
C1=52845;
C2=22719;
functionEncrypt(S:
String;Key:
Word):
String;
//S:
加密的字符串;Key:
密钥
var
I:
Integer;
j:
Integer;
begin
Result:
=S;
forI:
=1toLength(S)do
begin
Result[I]:
=char(byte(S[I])xor(Keyshr8));
Key:
=(byte(Result[I])+Key)*C1+C2;
end;
s:
=Result;
Result:
='';
fori:
=1tolength(s)do
begin
j:
=Integer(s[i]);
Result:
=Result+Char(65+(jdiv26))+Char(65+(jmod26));
end;
end;
3.主模块
系统的主界面,包括系统登陆。
在没有进行登陆之前4个功能按钮为灰色。
第一个按钮为客房管理,其次是餐饮管理,再次是客户查询,最后是收费管理。
4.客房管理模块
客房管理包括客房预定,入住,调整。
其界面如下:
操作介绍:
预定:
首先在证件编号文体框中输入相关的证件编号,按回车键,显示如下窗口:
输入完整后单击添加则返回上一个界面,相关的数据将自动填写。
然后在右边选择相应的客房等级。
在网格中将显示该等级的所有空闲房号。
选择一个房间,再点击“新建”按钮,然后点击“添加”。
客房预定完毕。
入住:
在证件编号文体框中输入相关的证件编号,按回车键。
如果该客户已经预定则自动显示信息,否则将弹出上面的窗口要求输入信息。
5.餐饮管理
包括选菜、点菜、打单:
下面是其相代码说明:
procedureTF_foodorder.btnOkClick(Sender:
TObject);
var
id:
integer;
total:
single;
begin
ifsid=''then
begin
B_neworderClick(nil);
end;
//订单明细
id:
=DM_main.GetMaxId('order_detail','id');
withQ_foodetaildo
begin
Append;
Fields[0].AsInteger:
=id;
Fields[1].AsString:
=sid;
Fields[2].AsString:
=dbtext1.Caption;
Fields[3].AsString:
=edtNum.Text;
Fields[4].AsString:
=dbtext4.Caption;
Post;
DisableControls;
Close;
Open;
EnableControls;
end;
//更新总订单的总金额
withDM_main.T_foodorderdo
begin
Edit;
total:
=DM_main.GetSumPrice(sid);
Fields[3].AsFloat:
=total;
Post;
end;
end;
//撤销选择的一项菜目
procedureTF_foodorder.btnCancelClick(Sender:
TObject);
var
total:
Single;
begin
withQ_foodetaildo
begin
ifIsEmptythen
Exit;
ifnotActivethen
begin
ParamByName('sid').Value:
=sid;
Open;
end;
Delete;
end;
total:
=DM_main.GetSumPrice(sid);
withDM_main.T_foodorderdo
begin
ifnotActivethenOpen;
Locate('id',sid,[]);
Edit;
Fields[3].AsFloat:
=total;
Post;
end;
end;
procedureTF_foodorder.B_neworderClick(Sender:
TObject);
begin
//新建总订单
sid:
=DM_main.GetMaxOrderId;
withDM_main.T_foodorderdo
begin
Open;
Append;
Fields[0].AsString:
=sid;
Fields[1].AsString:
=DateTimeToStr(Now);
Fields[2].AsString:
=Trim(edtName.Text);
Post;
end;
withQ_foodetaildo
begin
Close;
ParamByName('sid').Value:
=sid;
Prepare;
Open;
end;
end;
打单:
票据示例如下。
二.后台管理
1.数据模块
该模块是整个程序数据的提供者,以及包括大部分的处理函数和实现功能。
单元文件名:
u_data.pas,数据模块名:
DM_main。
部分代码分析:
设置前台操作员的密码:
procedureTDM_main.SetOperatorPassword(password:
String);
begin
password:
=Copy(password+password,1,10);
password:
=Encrypt(password,111);//加密单元
withT_operatordo
begin
Edit;
FieldValues['PASSWD']:
=password;
end;
end;
根据客房ID筛选客房:
procedureTDM_main.SetModifyFilter(RoomID:
String);
begin
withT_room_modifydo
begin
Close;
iflength(RoomID)>0then
begin
Filter:
='ID='''+RoomID+'''';
Filtered:
=True;
end
else
Filtered:
=False;
Open;
end;
end;
获得客房级别:
procedureTDM_main.GetRoomLevel(RoomLevel:
TStrings);
begin
RoomLevel.Clear;
RoomLevel.Add('全部级别');
withQ_room_leveldo
begin
Open;
First;
whilenotEofdo
begin
RoomLevel.Add(FieldValues['DESCRIPT']);
Next;
end;
Close;
end;
end;
客房统计图实现函数:
//StarDate:
开始日期;EndDate:
结束日期;
procedureTDM_main.GetRoomStat(StartDate,EndDate:
TDate;
TimeStep,StatType:
Boolean;RoomLevel:
Integer;
BarSeries:
TBarSeries);
var
StatResult:
integer;
MidDate:
TDate;
StatLabel:
String;
begin
BarSeries.Clear;
whileStartDate begin MidDate: =GetNextDate(StartDate,TimeStep); ifStatTypethen StatResult: =SumTurnover(StartDate,MidDate) else StatResult: =SumUsedRoom(StartDate,MidDate,RoomLevel); ifTimeStepthen StatLabel: =FormatDateTime('dd',StartDate)+'日' else StatLabel: =FormatDateTime('mm',StartDate)+'月'; BarSeries.AddY(StatResult,StatLabel); StartDate: =MidDate; end; end; 换算下个月(日)日期: functionTDM_main.GetNextDate(StartDate: TDate;TimeStep: Boolean): TDate; var TimeYear,TimeMonth: String; begin ifTimeStepthen Result: =StartDate+1 else begin TimeYear: =FormatDateTime('yyyy',StartDate); TimeMonth: =FormatDateTime('mm',StartDate); ifTimeMonth='12'then begin TimeYear: =IntToStr(StrToInt(TimeYear)+1); TimeMonth: ='01'; end else TimeMonth: =IntToStr(StrToInt(TimeMonth)+1); Result: =StrToDate(TimeYear+'-'+TimeMonth+'-01'); end; end; 2.系统登陆模块 该系统登陆将连接数据库的管理员用户表进行验证: procedureTF_login.b_loginClick(Sender: TObject); var sSql: string; begin if(Trim(i_admin.Text)='')or(i_passwd.Text='')then begin MessageDlg('请输入管理员帐号和密码! ',mtWarning,[mbOK,mbHelp],6); i_admin.SetFocus; Exit; end; sSql: ='select*fromadmin_userwherename=''%s''andpasswd=''%s'''; withDM_main.Q_admindo begin SQL.Text: =Format(sSql,[Trim(i_admin.Text),i_passwd.Text]); Open; ifIsEmptythen begin MessageDlg('连接错误! 请确认管理员帐号和密码! ',mtWarning,[mbOK,mbHelp],6); i_admin.SetFocus; Exit; end else begin Close; self.Close; end; end; end; 登陆界面: 3.主控程序 后台管理主窗口如下: 后台管理程序采用MDI风格窗体。 并采用事件管理机制ActionList管理所有功能模块的点击事件: procedureTF_main.RoomAddExecute(Sender: TObject); begin Application.CreateForm(TF_add,F_add); RoomAdd.Enabled: =False; end; procedureTF_main.RoomModifyExecute(Sender: TObject); begin Application.CreateForm(TF_modify,F_modify); RoomModify.Enabled: =False; end; procedureTF_main.HelpAboutExecute(Sender: TObject); begin F_about.ShowModal; end; procedureTF_main.SystemExitExecute(Sender: TObject); begin Close; end; procedureTF_main.OtherOperatorExecute(Sender: TObject); begin Application.CreateForm(TF_operator,F_operator); OtherOperator.Enabled: =False; end; procedureTF_main.OtherCodeExecute(Sender: TObject); begin Application.CreateForm(TF_code,F_code); OtherCode.Enabled: =False; end; procedureTF_main.RoomStatExecute(Sender: TObject); begin Application.CreateForm(TF_stat,F_stat); RoomStat.Enabled: =False; end; 后台数据管理包括: 客房管理、餐饮管理、操作员管理,基础数据维护等。 4.客房统计表 该统计表能统计某个时间段的所有客房的营业额和使用频率,通过生成统计表以支持上层决策。 如下图: (其实现代码以上有介绍)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 餐饮 管理 酒店客房 系统 实现