收藏 分销(赏)

餐饮管理系统数据库课程设计论文.doc

上传人:可**** 文档编号:5423258 上传时间:2024-10-31 格式:DOC 页数:25 大小:128.54KB 下载积分:8 金币
下载 相关 举报
餐饮管理系统数据库课程设计论文.doc_第1页
第1页 / 共25页
餐饮管理系统数据库课程设计论文.doc_第2页
第2页 / 共25页


点击查看更多>>
资源描述
数据库课程设计 摘 要 随着我国市场经济的快速发展,各行业都呈现出生机勃勃的发展景象,其中餐饮业的发展尤为突出.近两年来已呈现出高速发展的态势。但在快速发展的同时,餐饮业在日常经营管理中仍普遍采用手工管理方式,整体科技含量低。随着餐饮企业规模和数量的不断增长,手工管理模式无论是在工作效率、人员成本还是提供决策信息方面都已难以适应现代化经营管理的要求,因此制约了整个餐饮业的规模化发展和整体服务水平的提升。有效的管理成为了一个难题,为能有效的解决这些问题提高企业的经济效益,在这些中小型饭店中采用工作流技术,结合饭店绿色管理内容,实施计算机管理信息系统不视为一条有效的解决途径。 本论文主要针对中小型饭店餐饮管理中的一些问题,将其与计算机信息管理系统结合起来,实现中小型饭店管理信息计算机化、系统化,将中小型饭店管理中的工作流转化成比较科学化、规范化的业务流程,使管理基础数据更加准确化,管理人员摆脱了事务性工作,转而从事管理专业工作,为经营决策提供了快捷和强大的数据支持。把计算机用于餐饮企业管理,可在很大程度上提高管理者分析和决策的科学性,提高经营管职水平,带来更多的顾客,使企业取得更好的经济效益. 关键词: 计算机信息管理系统,中小型饭店, 餐饮管理 目录 第1章 系统简介 1 1。1 课题背景 1 1.2 系统开发的意义 1 1。3 系统开发及运行环境 1 第2章 需求分析 3 2。1 餐饮管理系统的可行性分析 3 2.1。1 技术水平分析 3 2.1.2 经济效益分析 3 2。1.3 市场分析 3 2。2 餐饮管理系统的需求分析 3 第3章 总体设计 5 3.1 项目规划 5 3。2 系统业务流程分析 5 3.3 系统功能结构 6 第4章 详细设计 7 4。1 数据库设计 7 4。1.1 数据表概要说明 7 4。1.2 部分数据表E—R图 7 4.1.3 数据表的结构 9 4。2 系统主要功能模块设计与实现 11 4。2。1 系统登录模块的设计与实现 11 4。2。2 主窗体的设计与实现 12 4。2。3 凭证信息录入窗体的设计与实现 15 4。2.4 管理员信息窗体的设计与实现 18 第5章 测试与总结 21 5。1 程序调试与错误处理 21 5。2 总结 23 第1章 系统简介 1.1 课题背景 民以食为天,随着人民生活水平的提高,餐饮业在服务行业中占有越来越重要的地位。努力在当前餐饮行业日趋激烈的竞争中脱颖而出,已成为每位餐饮业经营者所追求的目标。 经过多年发展,餐饮管理已经逐渐由定性管理,进入到重视定量管理的科学阶段.众所周知,在定量管理的具体实现方法和手段方面,最有效的工具就是电脑管理。传统的手工操作管理存在着许多无法避免的问题,该系统将能大大的降低许多问题,减轻人力与物力。 1。2 系统开发的意义 本系统属于小型的餐饮管理系统,可以有效地对中小型餐厅消费进行管理,本系统应达到以下目标: 系统采用人机交互的方式,界面美观友好,信息查询灵活、方便,数据存储安全可靠。 实现对餐厅顾客开台、点菜/加菜、账目查询和结账等操作。 对用户输入的数据,进行严格的数据检验,尽可能的避免人为错误. 实现对消费账目自动结算。 实现对消费的历史记录进行查询. 系统应最大限度地实现易维护性和易操作性。 1.3 系统开发及运行环境 系统开发平台:Microsoft Visual Studio 2008 系统开发语言:C# 数据库管理系统软件:SQL Server 2005 运行平台:Windows XP(SP2)/Windows 2000(SP4)/Windows Server 2003(SP1) 运行环境:Microsoft.NET Framework SDK v2。0 分辨率:最佳效果1024*768像素 第2章 需求分析 2.1 餐饮管理系统的可行性分析 2.1.1 技术水平分析 本软件采用Microsoft Visual Studio 2005为前台开发工具,SQL Server 2005 数据库作为后台数据库支持。本软件专为中小型餐厅消费管理而设计,本软件可在Windows 2000/XP 上运行,不用专业人士去配制服务器可以直接安装使用,具有很好的可移植性,有良好的中文界面,操作简便,适合餐饮服务人员使用。 2。1。2 经济效益分析 本软件能在很大程度上解决中小型餐厅的消费管理,方便对顾客的消费进行管理,本系统运行时能在主菜单上看到当前的桌台情况——是否被占用,能很好分配顾客的用餐,顾客点菜时能很好的进行记录,有方便的结账功能,直接计算出找零,本系统还能对桌台信息进行管理,方便以后的增加与减少桌台,同时也能方便的对服务人员的信息进行管理,有系统数据库备份功能,防止系统在死机的情况下丢失大量重要信息. 2.1.3 市场分析 现如今餐饮业发展壮大迅速,拥有一套良好的餐饮管理系统能在很大程度上解决许多问题,方便对服务人员的管理,以及内部的一些信息变化的管理——如菜品的增删,价格的改变、桌台的增删、人员的流动,还能很好的管理顾客的点菜、查询消费记录、结账,这将能改善传统意义上的管理,使管理变得方便并且有效,所以本系统有着很好的市场需求前景. 2.2 餐饮管理系统的需求分析 通过实际了解,要求本系统具有以下功能: 系统采用人机交互的方式,界面美观友好,信息查询灵活、方便,数据存储 安全可靠。 实现对餐厅顾客开台、点菜/加菜、账目查询和结账等操作。 对用户输入的数据,进行严格的数据检验,尽可能的避免人为错误。 实现对消费账目自动结算。 实现对消费的历史记录进行查询。 实现对餐厅人员流动进行管理以及能够管理餐厅桌台信息. 系统应最大限度地实现易维护性和易操作性。餐饮管理系统的用例图,如下图2.1所示。 图2.1 餐饮管理系统的用例图 第3章 总体设计 3。1 项目规划 餐饮管理系统主要由用户登录、桌台信息管理、服务员信息管理、修改密码、开台、取消开台、点/加菜、消费查询、数据库管理和退出等模块组成,具体规划如下。 (1) 用户登录模块 该模块主要用于实现验证用户是否合法,只有合法用户才能有权登录,只有登录成功情况下才能进入系统功能主界面,并且在登录的同时能验证登录人员的管理权限,根据权限显示其能管理范围. (2) 桌台信息管理模块 该模块主要用于管理桌台的信息,可以设置桌台名称,桌台位置,桌台占用所需价钱。 (3) 服务员信息管理模块 该模块主要用于方便对服务人员的信息进行管理。 (4) 修改密码模块 该模块主要用于实现对登录人员的密码进行管理,长时间不更换密码是不安全的,增加此模块能增加系统的安全性. (5) 开台模块 该模块主要用于实现对顾客进行开台,已经占用的桌台不能被再次分配,方便分配未占用的桌台给顾客 (6) 取消开台模块 该模块主要用于实现对已经开台的桌台进行取消开台。 (7) 消费查询模块 该模块主要用于实现客户能够查询自己已消费清单情况,进行核对自己的消费. (8) 结账模块 该模块主要用于实现对客户的消费进行自动汇总,显示消费金额,能进行找零计算。 (9) 数据库管理模块 该模块主要用于实现对系统数据库的备份,防止系统在死机的情况下丢失大量重要信息。 3。2 系统业务流程分析 餐饮管理系统的业务流程图如图3.1所示。 图3.1 餐饮管理系统的业务流程图 3。3 系统功能结构 系统功能结构图如图3。2所示。 餐饮管理系统 密码管理 服务员管理 消费查询管理 结账管理 数据库管理 用户登录管理 guanl 桌台信息管理 修改密码 删除 更新 添加 恢复 备份 删除 更新 开台 取消 开台 添加 17 图3.2 系统功能结构图1 第4章 详细设计 4。1 数据库设计 本系统采用SQL Server 2005作为后台数据库,数据库名称为restaurantManage,其中包含5张数据表。下面分别介绍: 4.1.1 数据表概要说明 为了对本系统后台数据库中的数据表有一个更清晰的认识,在此设计了一个数据表树形结构图,该结构图包括系统所有数据表,如图4。1所示. 图4。1 数据表树状结构图 4。1。2 部分数据表E—R图 本里中规化出的实体主要有菜品信息实体、顾客点菜信息实体、桌台信息实体、用户登录信息实体和服务员信息实体.其中部分实体的E-R图如下所示。 图4。2 用户表实体E—R图 图4。3 菜品信息实体E—R图 图4。4 桌台信息实体E—R图 图4。5 员工信息实体E-R图 图4。6 顾客点菜信息实体E—R图 4。1.3 数据表的结构 (1) food表(菜品信息表) 表food用于保存菜品的基本信息,该表的结构如图4.7所示。 图4。7 菜品信息表 (2) guestfood表(顾客点菜信息表) 表guestfood用于保存顾客点菜的详细信息,该表的结构如图4.8所示。 图4.8 顾客点菜信息表 (3) room表(桌台信息表) 表room用于保存桌台的一些有关信息,该表的结构如图4.9所示。 图4.9 桌台信息表 (4) userlogin 表(登录人员信息表) 表userlogin用于保存登录用户基本信息,表的结构如图4.10所示。 图4。10 登录用户信息表 (5) waiter表(餐厅服务人员信息表) 表waiter用于保存餐厅服务人员的一些基本信息,表的结构如图4。11所示。 图4。11 餐厅服务人员信息表 4.2 系统主要功能模块设计与实现 4.2。1 系统登录模块的设计与实现 系统登录主要用于对进入餐饮管理系统的用户进行安全性检查,以防止非法用户进入该系统。在登录时,只有合法的用户,才可以进入该系统.系统登录窗体如图4。12所示. 图4。12 系统登录 代码设计 单击【确定】按钮,程序执行判断用户输入的用户名和密码是否正确,如果正确,则成功登录餐饮管理系统,并将用户名、用户使用权限、用户登陆时间传到主窗体中,同时分别使用Names、power、Times全局变量进行接受。否则,弹出“用户名或密码错误"信息提示.【确定】按钮的Click事件代码如下: private void btnSure_Click(object sender, EventArgs e) { if (txtUserName .Text == "")//判断用户名是否为空 { MessageBox.Show("用户名不能为空", "警告”, MessageBoxButtons。OK, MessageBoxIcon.Warning); } else { if (txtPwd。Text == ”")//判断密码是否为空 { MessageBox。Show("请输入密码", "警告”, MessageBoxButtons。OK, MessageBoxIcon。Warning); } else//用户名及密码不为空的情况下执行如下代码 { SqlConnection conn = connectToDatabase .restaurantManagementConn (); conn。Open(); SqlCommand cmd = new SqlCommand(”select count(*) from UserLogin where UserName=’” + txtUserName 。Text + ”' and UserPwd='” + txtPwd 。Text + ”'", conn); int i = Convert.ToInt32(cmd。ExecuteScalar()); if (i 〉 0) { cmd = new SqlCommand(”select * from UserLogin where UserName='" + txtUserName .Text + ”'”, conn); SqlDataReader sdr = cmd.ExecuteReader(); sdr。Read(); string UserPower = sdr["Power"]。ToString()。Trim(); conn。Close(); formMain main = new formMain(); main.power = UserPower; main.Names = txtUserName .Text ; main。Times = DateTime。Now.ToShortDateString(); main.Show(); this。Hide(); } else { MessageBox。Show(”用户名或密码错误"); } } } } 4.2。2 主窗体的设计与实现 在正确验证用户的用户名和密码以后,就显示出餐饮管理系统的主窗体。主窗体主要用于显示系统所具有的功能,例如菜单栏里显示了基础信息、辅助工具、系统设置、退出系统、系统维护等几个功能模块.用户可以选择相应的按钮对应的子功能对系统进行不同的操作,餐饮管理系统的主窗体如图4.13所示。 图4。13 主窗体 主窗体实现的几个重要功能实现代码如下: //接收从login窗体传来的信息,以下四个定义的变量是以后代码用到的全局变量 public string power; public string Names; public string Times; private SqlDataReader sdr; //以下是窗体加载时执行的代码 private void formMain_Load(object sender, EventArgs e) { StatusLabeUser.Text = Names; StatusLabeLoginTime。Text = Times; switch (power) { case ”0": StatusLabePower.Text = "超级管理员”; break; case "1": StatusLabePower.Text = ”经理”; TSMenuItemSystemMaintenance。Enabled = false; break; } } private void formMain_Activated(object sender, EventArgs e)//窗体激发时执行如下代码 { lvDesk.Items。Clear(); SqlConnection conn = connectToDatabase.restaurantManagementConn(); conn。Open(); SqlCommand cmd = new SqlCommand(”select * from Room", conn); sdr = cmd。ExecuteReader(); while ( sdr .Read()) { string status = sdr["RoomStatus”].ToString().Trim(); AddItems(status );//根据桌台使用与否,选择图片显示桌子是否在被用中 } conn。Close(); } private void AddItems(string status) { if (status == ”使用”) { lvDesk。Items.Add(sdr[”RoomName”]。ToString(), 1); } else { lvDesk。Items。Add(sdr["RoomName"]。ToString(), 0); } } //右键中单击开台会执行如下代码 private void 开台ToolStripMenuItem_Click(object sender, EventArgs e) { if (lvDesk。SelectedItems。Count != 0) { string names = lvDesk。SelectedItems[0].SubItems[0]。Text; formOpen frm = new formOpen(); frm。name = names; frm.ShowDialog(); } else { MessageBox.Show("请选择一个桌台进行开台"); } } //右键中单击取消开台会执行如下代码 private void 取消开台ToolStripMenuItem_Click(object sender, EventArgs e) { if (lvDesk.SelectedItems.Count != 0) { string names = lvDesk.SelectedItems[0]。SubItems[0].Text; SqlConnection conn = connectToDatabase。restaurantManagementConn(); conn.Open(); SqlCommand cmd = new SqlCommand("update Room set RoomStatus=’待用',Num=0 Where RoomName='" + names + "'", conn); cmd。ExecuteNonQuery(); cmd = new SqlCommand(”delete from GuestFood where DiningTable='” + names + ”’", conn); cmd。ExecuteNonQuery(); conn.Close(); formMain_Activated(sender, e); } else { MessageBox。Show("请选择桌台"); } } 其他右键功能代码在源代码中,代码设计思想和开台代码类似。 //单击listview控件中的一项内容时会执行如下代码,这里我们将listview的name定义为lvDesk private void lvDesk_Click(object sender, EventArgs e) { string names = lvDesk。SelectedItems[0].SubItems[0]。Text; SqlConnection conn = connectToDatabase。restaurantManagementConn(); conn.Open(); SqlCommand cmd = new SqlCommand("select * from Room where RoomName='" + names + "'”, conn); SqlDataReader sdr = cmd.ExecuteReader(); sdr.Read(); string status = sdr["RoomStatus"].ToString().Trim();//将选中桌台的状态信息提取出来 sdr.Close(); if (status == "使用”) { this.contextMenuStrip1.Items[0].Enabled = false; this。contextMenuStrip1。Items[1]。Enabled = true; this.contextMenuStrip1.Items[3]。Enabled = true; this。contextMenuStrip1。Items[5]。Enabled = true; this.contextMenuStrip1。Items[6]。Enabled = true; } if (status == "待用") { this.contextMenuStrip1.Items[0]。Enabled = true; this.contextMenuStrip1.Items[1]。Enabled = false; this。contextMenuStrip1.Items[3]。Enabled = false; this.contextMenuStrip1.Items[5]。Enabled = false; this。contextMenuStrip1.Items[6].Enabled = false; } conn。Close(); } //双击listview控件中的一项内容时会执行如下代码 private void lvDesk_DoubleClick(object sender, EventArgs e) { deskInfo desk = new deskInfo (); desk 。tableName = lvDesk。SelectedItems[0].SubItems[0].Text; desk.ShowDialog(); } //单击menustrip控件中基础信息下的桌台信息管理按钮会执行如下代码 private void TSMenuItemTableInfo_Click(object sender, EventArgs e) { deskInfoManagement desk = new deskInfoManagement(); desk.ShowDialog(); } menustrip控件中的其他按钮的代码设计思路与上面的单击menustrip控件中基础信息下的桌台信息管理按钮类似都是初始化一个相应窗体的对象,显示窗体. 注:其他代码详见系统设计文档。 4.2.3 右键菜单中的几个重要功能的介绍 右键菜单功能中顾客可以选择开台,取消开台,点菜,查询消费记录以及结账,下面介绍其中三个重要功能的实现代码,有开台,点菜以及结账,窗体运行结果分别如图4.14、图4。15和图4。16所示. 图4。14 开台窗体 图4.15 点菜窗体 图4。16 结账窗体 凭证信息录入窗体的主要实现代码如下: 图4。15的实现代码 public string name; public SqlConnection conn; private void formOpen_Load(object sender, EventArgs e) { conn = connectToDatabase.restaurantManagementConn(); conn.Open(); SqlCommand cmd = new SqlCommand(”select * from Room", conn); SqlDataReader sdr = cmd.ExecuteReader(); while (sdr。Read()) { cbNum.Items。Add(sdr["RoomName”]。ToString()。Trim()); } cbNum。SelectedItem = name.Trim(); sdr.Close(); cmd = new SqlCommand(”select * from Waiter", conn); sdr = cmd。ExecuteReader(); while (sdr。Read()) { cbWaiter.Items。Add(sdr["WaiterName”]。ToString().Trim()); } cbWaiter。SelectedIndex = 0; sdr。Close(); } private void txtNum_KeyPress(object sender, KeyPressEventArgs e) { if ((e.KeyChar != 8 && !char.IsDigit(e。KeyChar)) && e.KeyChar != 13) { MessageBox。Show("请输入数字”); e。Handled = true; } } private void btnSave_Click(object sender, EventArgs e) { if (txtNum。Text == ”” || Convert。ToInt32(txtNum。Text) 〈= 0) { MessageBox。Show(”请输入用餐人数”); } else { string RoomName = cbNum。SelectedItem.ToString(); SqlCommand cmd1 = new SqlCommand("update Room set GuestName=’” + txtName.Text + ”',PaymentDate=’" + dateTimePicker1。Value.ToString() + ”’,Num='” + Convert.ToInt32(txtNum。Text) + ”',WaiterName='” + cbWaiter。SelectedItem。ToString() + ” ',RoomStatus='使用’ where RoomName=’" + name + "'", conn); cmd1.ExecuteNonQuery(); this.Close(); } } 代码不全,其他代码见源代码 图4.16的实现代码 public string RName; public int i = 0; private void formOrder_Load(object sender, EventArgs e)//formOrder窗体加载时执行下列语句 { // TODO: 这行代码将数据加载到表“restaurantManageDataSet.GuestFood”中.您可以根据需要 移动或移除它。 this.guestFoodTableAdapter。Fill(this.restaurantManageDataSet.GuestFood); //向treeview节点添加四类菜 TreeNode newnode1 = tvFood。Nodes.Add(”煲汤”); TreeNode newnode2 = tvFood.Nodes.Add("肉菜”); TreeNode newnode3 = tvFood.Nodes.Add("素菜”); TreeNode newnode4 = tvFood.Nodes.Add("主食"); SqlConnection conn = connectToDatabase.restaurantManagementConn(); conn.Open(); //表中foodtype为1的是“煲汤"类的菜 SqlCommand cmd = new SqlCommand("select * from food where FoodType='1’", conn); SqlDataReader sdr = cmd.ExecuteReader(); while (sdr.Read()) { //将属于“煲汤”类的菜从数据表中找出,加到treeview节点上 newnode1。Nodes.Add(sdr[3]。ToString()。Trim()); } sdr.Close(); cmd = new SqlCommand("select * from food where FoodType='2'”, conn); sdr = cmd。ExecuteReader(); while (sdr.Read()) { newnode2.Nodes。Add(sdr[3].ToString().Trim()); } sdr。Close(); cmd = new SqlCom
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服