毕业设计酒店客房餐饮管理系统实现.docx

上传人:b****5 文档编号:29274159 上传时间:2023-07-21 格式:DOCX 页数:20 大小:505.31KB
下载 相关 举报
毕业设计酒店客房餐饮管理系统实现.docx_第1页
第1页 / 共20页
毕业设计酒店客房餐饮管理系统实现.docx_第2页
第2页 / 共20页
毕业设计酒店客房餐饮管理系统实现.docx_第3页
第3页 / 共20页
毕业设计酒店客房餐饮管理系统实现.docx_第4页
第4页 / 共20页
毕业设计酒店客房餐饮管理系统实现.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

毕业设计酒店客房餐饮管理系统实现.docx

《毕业设计酒店客房餐饮管理系统实现.docx》由会员分享,可在线阅读,更多相关《毕业设计酒店客房餐饮管理系统实现.docx(20页珍藏版)》请在冰豆网上搜索。

毕业设计酒店客房餐饮管理系统实现.docx

毕业设计酒店客房餐饮管理系统实现

酒店客房餐饮管理系统实现

酒店客房餐饮管理系统功能完善,能管理普通酒店的客房住宿和餐饮等服务。

本系统采用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.客房统计表

该统计表能统计某个时间段的所有客房的营业额和使用频率,通过生成统计表以支持上层决策。

如下图:

(其实现代码以上有介绍)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1