专业课程设计报告范文-Delphi餐饮管理系统(共61页).doc
-
资源ID:13599168
资源大小:1.31MB
全文页数:61页
- 资源格式: DOC
下载积分:20金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
专业课程设计报告范文-Delphi餐饮管理系统(共61页).doc
精选优质文档-倾情为你奉上南京审计学院信息科学学院课程设计报告书课程名称: 信息系统开发工具课程设计 课题名称: 餐 饮 管 理 系 统 专 业:信息管理与信息系统 班 级: 08级信息管理1班 学 号: 姓 名: 孙晓刚 成 绩: 2010年 12月 26 日目 录 4.5.2客户放弃开台设计. 374.5.3客户点菜完毕返回设计.37摘要近几年来,随着我国国民经济的稳定增长,餐饮业的竞争也越来越激励,想在这样竞争激励的环境下生存,就必须运用科学的管理思想与先进的管理方法,使用点餐与管理一体化。这样不仅提高了工作效率,也避免了以前手工作业的麻烦,从而使得管理者能够准确,有效的管理餐饮。因此,餐饮业的管理者更需要一种综合实时的管理模式,希望从更科学的管理中取得竞争的优势,在竞争激烈的商业市场中取胜。结合管理信息系统的开发方法及步骤,以此为理论根据,开发出一个信息管理系统餐饮管理系统。它采用国际通用的先进餐饮管理模式,并结合中国的管理实际特点开发而成。通过本系统功能模块,可为各种大小不同的餐饮管理所使用。为管理者提供高效的管理手段,本系统有着人性理的设置理念,流程清晰、易懂。具有独特的功能对于开台管理、点菜、菜谱设置等为管理人员带来很大的方便,减少人为因素的错误,提高服务水平,提升企业形象。关键字:餐饮管理系统、提高服务水平、提高工作效率第一章 系统需求分析1.1系统功能需求分析随着现在连锁餐饮店的不断崛起,作为餐饮业不可缺少的一部分餐饮管理系统,它的内容对于餐饮业的决策者和管理者来说都非常重要。本系统基于餐饮管理系统之下的一个子系统,可以把整个餐饮店的日常经营管理信息化,包括点餐、库存管理、员工信息等日常经营的一些统计功能。现在此系统还不够完善,将来使此系统会集成更多的功能,例如:餐饮管理系统的开发成功,实现了餐饮业的现代化,表明了餐饮管理正与国际化接轨,有了更为深入的发展。餐软管理系统采用国际通用的先进餐饮管理模式,并结合中国的管理实际特点开发而成。通过本系统功能模块,可为各种大小不同的餐饮管理所使用。为管理者提供高效的管理手段,本系统有着人性理的设置理念,流程清晰、易懂。具有独特的功能对于开台管理、点菜、菜谱设置等为管理人员带来很大的方便,减少人为因素的错误,提高服务水平,提升企业形象。根据实际情况的需要,系统主要功能如下: 前台管理:开台管理、客户结账、退出系统。 系统管理:权限管理、系统管理、帮助。 基础信息管理:酒水信息查询、菜谱信息查询及设置。1.2 系统数据流图根据实际情况要求,系统数据流图如图1.2.1所示图1.2.1数据流图1.3数据字典在这定义的酒店餐饮数据字典,主要对数据流程图中的数据流、数据存储和处理过程进行说明。(1)主要的数据流定义1)数据流名称:客户信息 位置:客户P2 定义:客户信息=房间台号+所点菜+酒水+开单时间+服务员编号 数据流量: 说明:客人点菜时可以进行特色菜和酒水信息的查询,买单时要核对消费名目是否属实。2)数据流名称:菜谱信息位置:菜谱P2定义:菜谱信息=编号+房间台号+菜名+单位+价格+菜系类别+口味说明数据流量:说明:编号不能有重复的。3)数据流名称:桌台状况 位置:桌台P1 定义:桌台状况=编号+房台名称+类型说+餐饮部门+服务费+简要说明+状态 数据流量:说明:只有状态为空闲的房台才能开台。4)数据流名称:开台人 位置:服务员定义:开台人编号姓名员工类别密码数据流量:说明:不同的员工类别具有不同的权限,管理员具有所有权限,服务员不具备系统维修等权限。5)数据流名称:员工信息位置:定义:员工信息员工编号姓名性别出生日期联系电话联系地址聘用日期工作部门员工类别身份证号备注数据流量:说明:员工编号不可相同。6)数据流名称:管理员情况位置:管理员定义:管理员姓名口令数据流量:平均流量为每年传输50次。说明:通过管理员来不断的更新和维护这个系统。7 )数据流名称:开台信息 位置:P1P4 定义:开台信息=房间台号+服务费 数据流量: 说明:服务费可以省去。8)数据流名称:点菜信息 位置:P2P4 定义:点菜信息=房间台号+类别+编号+名称+类型+数量+价格+合计+点但日期+结单日期+服务员编号+服务员姓名+结帐编号 数据流量: 说明:房间台号是根据开台而来的。(2)主要的数据存储定义)数据存储编号:数据存储名称:桌台信息输入:输出:数据结构:桌台信息=编号+房台名称+类型说+餐饮部门+服务费+简要说明+状态存取方式:检索和更新处理,以检索为主。说明:编号具有唯一性,状态只能是空闲或者营业。)数据存储编号:D2数据存储名称:员工信息输入:P1输出:P3数据结构:员工信息=员工类别+口令存取方式:主要是检索。说明:根据员工类别的不同,在后面的操作中具有不同的权限。3)数据存储编号:D3数据存储名称:菜谱信息输入:P2输出:P2数据结构:菜谱信息=菜名+单位+价格+菜系类别+口味说明存取方式:检索说明:在点菜时对菜谱进行查询。(3)主要处理过程1)处理过程编号:P1 处理过程名:开台 输入:服务员权限,桌台状况 输出:开台信息 处理说明:综合各方面信息,进行客人消费前最基本的准备。2)处理过程编号:P2处理过程名:点菜 输入:D1,D3,D4 输出:点菜信息 处理说明:客人根据菜谱信息,酒水信息,特色菜信息,选择自己中意的项目进行。3)处理过程编号:P3 处理过程名:权限管理 输入:员工类型,口令 输出:相应的操作权限 处理说明:输入员工类别和口令获得相应的操作权限,管理员比服务员具有更多的操作权限。第二章 系统概要设计2.1系统总体框架设计根据业务情况,该系统共分为开台管理、客人买单、菜谱信息设置、客户点菜、酒水信息设置等模块,系统结构图如图2.1所示。图2.1 餐饮管理系统结构图2.2各模块功能分析(1)系统登录窗口主要功能:1)以图标形式显示数据库中操作员,并凭口令登入到主界面。2)操作员输入错误密码提醒错误并返回,三次输入错误口令则退出系统。3)实现权限登录:系统管理员拥有一切权利,其他操作员则被限制一些操作权限。(2)系统主界面主要功能1)根据操作员权限设置相应权限的菜单和工具栏功能。2)可通过菜单或快捷键进入相应子界面。3)显示了系统当前时间和相应操作员。(3)系统菜谱信息设置界面主要功能:实现对菜谱信息的添加、修改、删除、查询的功能。(4)系统开台管理界面主要功能:1)以图标模式显示空台、营业台,点击台号图标则自动显示相应台号信息。2)通过输入台号检索符合条件的台号。3)点击空房自动弹出与昂查询窗口从而自动开台。(5)系统点菜界面主要功能:1)实现菜谱,酒水查询的链接。2)点击“开始点菜”按钮台号状态自动变为开台,并聚焦到编号栏。3)在编号栏输入菜编号按回车自动录入菜的信息,。4)自动生成结账编号,输入菜数量自动计算合计消费金额。5)可实现挂单、读单、放弃开台和点菜完毕返回的功能。第三章 数据库设计3.1系统E-R图的设计系统E-R图如图3.1所示图3.1 系统E-R图3.2数据库结构设计数据库结构设计是总体设计阶段非常重要的环节,好的数据库结构可以简化开发过程,使系统功能更加清晰明确。因为数据库结构的变化会造成编码的改动,所以必须认真设计数据库后再进行编码,从而避免了无谓的重复的工作。本系统采用了SQL Server数据库,数据库名称为。该数据库包含4个表,分别是:开台表,点菜表,菜谱费用信息表,台号信息表。下面分别介绍数据表的结构。1、 开台表开台表用于保存开台的相关信息。开台表的结构见表3-2-1所示。表3-2-1 开台表结构字段名称数据类型字段大小允许为空否编号int4设置为主键房台名称char30允许为空类型说明char20允许为空餐饮部门char20允许为空服务费money8允许为空简要说明char30允许为空状态char20允许为空2、 点菜表点菜表用于保存点菜信息和相应的消费信息。点菜表的结构见表3-2-2所示。表3-2-2 点菜表结构字段名称数据类型字段大小是否允许为空idchar16设置为主键房间台号int4允许为空类别Char 10允许为空编号int4允许为空名称char50允许为空类型char20允许为空单位char10允许为空数量int4允许为空价格money8允许为空合计Money8允许为空点单日期datetime8允许为空结单日期datetime8允许为空服务员编号int8允许为空服务员姓名char12允许为空状态char10允许为空结账编号int4允许为空是否结单char10允许为空3、菜谱费用信息表用于查询餐饮店所有的菜的信息。菜谱费用信息表的结构如图3-2-3所示。表3-2-3 菜谱费用信息结构字段名称数据类型字段大小是否允许为空编号int4设为主键菜名char50允许为空单位char10允许为空价格money8允许为空菜系类别char20允许为空口味说明char30允许为空4、台号信息表用于台号信息的查询,方便了消费者选台,开台及其他的作用。台号信息表的结构如图3-2-4示。表3-2-4台号信息表结构字段名称数据类型字段大小是否允许为空编号int4设为主键房台名称char30设为主键类型说明Char20允许为空餐饮部门Char20允许为空服务费money 8允许为空简要说明char30允许为空状态char10允许为空容纳人数Int4允许为空第四章 系统详细设计及实现4.1系统登陆界面设计1.实现目标 程序启动后,首先登陆此界面验证操作员的密码。主要实现的功能如下: 1)以图标形式显示数据库中操作员,并凭口令登入到主界面。2)操作员输入错误密码提醒错误并返回,三次输入错误口令则退出系统。3)实现权限登录:系统管理员拥有一切权利,其他操作员则被限制一些操作权限。系统登录界面如图4.1.1所示。图4.1.1 系统登录界面2.实现过程 (1)添加窗体设置窗体caption属性为“登录窗口”,保存窗体为u79in.pas。 (2)向窗体中添加Datasource、Query、Edit、Listview、ImageList、Image、Time、Label等控件。主要控件对象的属性如表4-2-1所示。表4-2-1主要控件对象的属性列表控件名属性值功能Query1Databasename SQLSelect * from 员工信表权限查询Database1DatasetQuery1设置数据源3.程序主要代码如下: 单击“登陆”按钮,将判断操作员、操作密码是否正确,如果正确进入主界面并根据操作员权限设置菜单和工具是否可用。如果输入密码错误将提醒并返回,三次错误输入则自动退出系统。procedure TUser.BitBtn1Click(Sender: TObject);begin MainForm.ToolButton1.Enabled:=True; MainForm.ToolButton2.Enabled:=True; MainForm.ToolButton5.Enabled:=True; MainForm.ToolButton6.Enabled:=True; MainForm.N1.Enabled:=True; MainForm.N2.Enabled:=True; MainForm.N4.Enabled:=True; MainForm.N3.Enabled:=True; MainForm.N5.Enabled:=True; MainForm.N6.Enabled:=True; MainForm.N7.Enabled:=True; MainForm.N8.Enabled:=True; MainForm.N9.Enabled:=True; MainForm.N17.Enabled:=True; MainForm.N19.Enabled:=True;if Query1.FieldByName('编号').AsString='controller' then /如果是系统管理员 begin if Edit1.Text<>Query1.FieldByName('密码').AsString then begin ShowMessage(''+Query1.FieldByName('姓名').AsString+'的口令错误.'); /口令错误 Edit1.SetFocus; End Else begin MainForm.StatusBar1.Panels1.Text:='用户'+Query1.FieldByName('姓名').AsString+'' MainForm.User1:=Query1.FieldByName('姓名').AsString; User_Close:=3; Timer1.Enabled:=False; Close; end; End Else begin MainForm.ToolButton1.Enabled:=False; MainForm.ToolButton2.Enabled:=False; MainForm.ToolButton5.Enabled:=False; MainForm.N1.Enabled:=False; MainForm.N2.Enabled:=False; MainForm.N4.Enabled:=False; MainForm.N3.Enabled:=False; MainForm.N5.Enabled:=False; MainForm.N6.Enabled:=False; MainForm.N7.Enabled:=False; MainForm.N8.Enabled:=False; MainForm.N9.Enabled:=False; MainForm.N17.Enabled:=False; MainForm.N19.Enabled:=False; if Edit1.Text<>Query1.FieldByName('密码').AsString then begin ShowMessage(''+Query1.FieldByName('姓名').AsString+'的口令错误.'); Edit1.SetFocus; End Else begin Name:=Query1.FieldByName('权限').AsString; MainForm.EnabledKey(Name); /设置操作员权限 MainForm.StatusBar1.Panels1.Text:='用户'+Query1.FieldByName('姓名').AsString+'' User_Close:=3; Timer1.Enabled:=False; Close; end; end; END;窗体启动,关闭钥匙,后将所有操作员添加到操作员列表。procedure TUser.FormShow(Sender: TObject);var List:Array0.1of TListItem;begin Timer1.Enabled:=True; User_Close:=0; /打开关闭钥匙 Query1.Close; Query1.Open; ListView1.Items.Clear; While not Query1.Eof do begin List0:=ListView1.Items.Add; List0.Caption:=Query1.FieldByName('姓名').AsString; if Query1.FieldByName('编号').AsString='controller' then begin List0.ImageIndex:=0; End Else begin List0.ImageIndex:=1; end; Query1.Next; end;end;选择操作员,点击其中一个则将员工的姓名和类型添加到了相应位置。procedure TUser.ListView1Click(Sender: TObject);var List:Array0.1of TListItem;begin List0:=ListView1.Selected; if List0<>Nil then begin Query1.Locate('姓名',List0.Caption,loCaseInsensitive);/查询姓名,但是如果有从名的按第一个算. end;end;4.2主界面设计1、程序启动后。系统在“登陆界面”验证操作员密码后,将进入此界面。系统主界面主要功能:根据操作员权限设置相应权限的菜单和工具栏功能。可通过菜单或快捷键进入相应子界面。显示了系统当前时间和相应操作员。主程序界面如图4.2.1所示。图4.2.1主程序界面2.实现过程 (1)启动Delphi,设置窗体名为mainfrom,设置窗体caption 为“餐饮管理系统”,保存为u791.pas。 (2)向窗体中添加Imagelist、mainmenu、image、toolbutton、stausbar、panel、time、label等控件主要属性为:控件名属性值功能Toolbar1imagesImagelist1设置工具栏图标stausbar 1Panel1用户登录【管理员】显示程序状态、参数 (3)主要程序代码如下:使应用项目的提示信息挂钩程序。 procedure TMainForm.FormCreate(Sender: TObject);beginApplication.OnHint:=DisPlayHint; /与应用项目的提示信息挂钩end;先调用系统登陆窗口,再设置窗体状态参数程序。procedure TMainForm.FormShow(Sender: TObject);var Year,Month,Day: Word;begin Close_1:=1; User.ShowModal; /调用系统登陆窗口 If Close_1 = 0 Then Close Else begin Application.MainForm.WindowState:=wsMaximized; Application.MainForm.WindowState:=wsNormal; DecodeDate(StrToDate(DateTOStr(Date),Year,Month,day); /分解日期 StatusBar1.Panels2.Text:='系统日期:'+IntToStr(Year)+'年'+IntToStr(Month)+'月'+IntToStr(day)+'日' end;end;调入开台界面程序。procedure TMainForm.N8Click(Sender: TObject);beginIf Assigned(KTGL) ThenbeginDataModule1.THXX.Open;/打开台号信息表DataModule1.cybmb.Open;/ 打开餐饮部门表DataModule1.JZBH.Open;/打开结帐编号表KTGL:=TKTGL.Create(Self);KTGL.ShowModal;end;end;设置“B”类权限有系统管理和系统维护操作权,“A”类权限即系统管理员的操作享有一切操作权限。如图4.2.2所示。图4.2.2 B类权限主程序界面代码如下:Function TMainForm.EnabledKey(key:String):Boolean;/声明操作权限函数 EnabledKeybegin if Pos('A',key)>0 then /具有"A"类权限 begin MainForm.ToolButton1.Enabled:=True; MainForm.ToolButton2.Enabled:=True; MainForm.ToolButton5.Enabled:=True; MainForm.ToolButton6.Enabled:=True; MainForm.N1.Enabled:=True; MainForm.N2.Enabled:=True; MainForm.N4.Enabled:=True; MainForm.N3.Enabled:=True; MainForm.N8.Enabled:=True; MainForm.N9.Enabled:=True; MainForm.N17.Enabled:=True; MainForm.N19.Enabled:=True; End Else if Pos('B',key)>0 then /具有"B"类权限 begin MainForm.ToolButton1.Enabled:=True; MainForm.ToolButton2.Enabled:=True; MainForm.ToolButton6.Enabled:=True; MainForm.N1.Enabled:=True; MainForm.N5.Enabled:=True; MainForm.N6.Enabled:=True; MainForm.N7.Enabled:=True; MainForm.N4.Enabled:=True; MainForm.N3.Enabled:=True; MainForm.N8.Enabled:=True; MainForm.N9.Enabled:=True; MainForm.N17.Enabled:=True; MainForm.N19.Enabled:=True; End;end;调入菜谱信息设置界面程序。procedure TMainForm.N6Click(Sender: TObject);begin If Assigned(CPXXSZ) Then begin DataModule1.CPFYXX.Open;/打开菜谱费用信息表 DataModule1.cxlbxx.open;/打开菜系类别信息表 CPXXSZ:=TCPXXSZ.Create(Self); CPXXSZ.ShowModal; end;end;4.3菜谱信息设置界面设计4.3.1菜谱设置模块1.实现目标程序启动后,调用菜单“基础信息设置”下的“菜谱信息设置”项,将打开“菜谱信息设置界面”。系统菜谱信息设置界面主要功能:实现对菜谱信息的添加、修改、删除、查询的功能。2.实现过程 (1)添加新窗体,设置窗体名为cpxxsz,设置窗体caption 为“菜谱信息设置”,保存为u79cpset.pas。 (2)向窗体中添加query、panel、groupbox、dbgrid、dbedit、edit、dbtext、bitbtn、dblookupcombobox、time、datasetfrist、actionlist、label等控件,主要控件属性如表4-3-1所示。表4-3-1主要控件属性对象属性值功能Query1DatabasenamesqlSlect MAX(编号) from 菜谱信息费用表设置数据范围DatasetFrist1DatasourceCaptionHintDatabase1.cpxxfys首记录移动到第一条记录移动到首记录DatasetLast1DatasourceCaptionHintDatabase1.cpxxfys尾记录移动到最后一条记录移动到尾记录DatasetNext1DatasourceCaptionHintDatabase1.cpxxfys下一条记录移动到下一条记录移动到下一条记录DatasetPrior1DatasourceCaptionHintDatabase1.cpxxfys上一条记录移动到上一条记录移动到上一条记录DBLookupComBox1ListsourceKeyfieldListfieldDatasourceDtafirldDatabase1.cpfyxxs菜系名称菜系名称Database1.cxlbxxs菜系类别选择菜系类别4.3.2菜谱查询设计1.菜谱信息设置查询界面如图4.3.1所示。图4.3.1菜谱信息查询设置界面2.代码如下:procedure TCPXXSZ.BitBtn1Click(Sender: TObject);var a,b,c:integer;d:String;begin If Length(Edit1.Text) = 0 Then /如果输入查询信息为空 begin ShowMessage('请输入查询的编号或菜名信息'); Edit1.SetFocus; End Else begin a:=Length(Edit1.Text); c:=0; for b:=1 to a do /for语句用于判断查询是按菜谱编号还是按菜名查询 begin D:=COPY(edit1.text,b,1); if (D='0') or (D<='9') then begin c:=c+1; end; end; If c = Length(Edit1.Text) Then /按菜谱编号查询 begin if DataModule1.CPFYXX.Locate('编号',StrTOInt(Edit1.Text),loCaseInsensitive) then begin DBGrid1.Setfocus; DBGrid1.SelectedIndex:=0; End Else begin ShowMessage('对不起,没有找到。'); Edit1.setfocus; end; End Else /按菜谱编号查询 begin if DataModule1.CPFYXX.Locate('菜名',Edit1.Text,loPartialKey) then begin DBGrid1.Setfocus; DBGrid1.SelectedIndex:=1; End Else begin ShowMessage('对不起,没有找到。'); Edit1.setfocus; end; end; end;end;4.3.3菜谱添加设计1.菜谱信息设置添加界面如图4.3.2所示。图4.3.2菜谱信息添加设置界面2.代码如下:procedure TCPXXSZ.BitBtn2Click(Sender: TObject);vara:integer;begin Query1.Close; Query1.Open; if Query1.RecordCount<>0 then a:=Query1.Fields0.AsInteger else a:=1; if Bitbtn2.Caption='添加' then /添加菜谱信息 begin DataModule1.CPFYXX.Refresh; If DataModule1.CPFYXX.RecordCount = 0 Then A:=79000 /添加菜谱信息 Else begin DataModule1.CPFYXX.Last; a:=DataModule1.CPFYXX.FieldByName('编号').AsInteger; end; BitBtn2.Caption:='保存' BitBtn3.CaPtion:='取消' Aenabled(1); DataModule1.CPFYXX.Insert; DataModule1.CPFYXX.FieldByName('编号').AsInteger:=a+1; DataModule1.CPFYXX.FieldByName('菜系类别').AsString:=DataModule1.CXLBXX.FieldByName('菜系名称').AsString; DBEdit2.SetFocus; End Else /保存菜谱信息 begin if (Length(DataModule1.CPFYXX.FieldByname('菜名').AsString)=0) or (Length(DataModule1.CPFYXX.FieldByname('单位').AsString)=0) or (Length(DataModule1.CPFYXX.FieldByname('价格').AsString)=0) then begin ShowMessage('请将菜名、单位、价格的数据添全。'); DBEdit1.SetFocus; EndElse begin AEnabled(2); BitBtn2.Caption:='添加' BitBtn3.Caption:='修改' DataModule1.CPFYXX.Post; /保存菜谱信息 end; end;end;4.3.4菜谱修改设计1.菜谱信息设置修改界面如图4.3.3所示。图4.3.3菜谱信息设置修改界面2.代码如下:procedure TCPXXSZ.BitBtn3Click(Sender: TObject);begin if BitBtn3.Caption='修改' then begin DataModule1.CPFYXX.Refresh; If DataModule1.CPFYXX.RecordCount = 0 Then /如果数据为空 begin ShowMessage('对不起,没有数据可以修改。'); End Else /如果数据不为空 begin AEnabled(1); BitBtn2.Caption:='保存' BitBtn3.Caption:='取消' DataModule1.CPFYXX.Edit; /编辑 DBEdit1.SetFocus; end; End Else begin AENabled(2); Bitbtn2.Caption:='添加' BitBtn3.Caption:='修改' DataModule1.CPFYXX.Cancel; /取消保存信息 end;