餐饮信息管理系统的设计与实现

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

目 录

第一章 餐饮信息管理系统的开发背景 ......................... 1 1.1 开发背景 .......................................... 1 1.2 开发工具和相关技术简介 ............ 错误!未定义书签。 第二章 系统定义与系统需求 . ................................ 2 2.1 系统定义 .......................................... 2 2.2 系统需求分析 ...................................... 2 第三章 系统总体设计 ...................................... 4 3.1 系统功能模块的划分................................. 4 3.2 管理员权限模块划分................................. 6 3.3 员工权限模块划分 .................................. 6 3.4 系统流程分析 ...................................... 6 3.5 数据库设计 ........................................ 7 3.5.1 数据库规划 ................................... 7 3.5.2 E-R图 ....................................... 8 3.5.3 数据表的设计 ................................. 9 第四章 系统详细设计 ..................................... 13 4.1 数据库 ........................................... 13 4.1.1 数据库的链接 ................................ 13 4.1.2 Is_SQL_Cmd方法.............................. 13 4.1.3 SQL_Ada方法................................. 14 4.1.4 ExecCmd过程................................. 14 4.2 系统的登录与注销 ................................. 15 4.2.1 用户登陆模块的实现 ........................... 15 4.2.2 用户注销模块的实现 ........................... 16 4.3 客户信息管理 ..................................... 17 4.3.1 客户信息的添加............................... 17 4.3.2 图像的处理 .................................. 18 4.3.3 客户信息的修改............................... 19 4.3.4 客户信息的删除............................... 21 4.3.5 客户信息的查询............................... 22 4.4 添加预定信息 ..................................... 24 4.4.1 日期时间桌号的核对 ........................... 24 4.4.2 打折信息处理 ................................ 25

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

4.4.3 取消预定信息 ................................ 26 4.4.4 预定信息查询 ................................ 27 4.5充值与结算 . ....................................... 29 4.5.1 客户充值 .................................... 29 4.5.2 客户结算 .................................... 31 4.6 折扣设定 ......................................... 31 4.7 用户管理 ......................................... 31 4.7.1 用户的添加 .................................. 32 4.7.2 用户的删除 .................................. 32 总 结 ................................................. 35 谢 辞 ................................................. 37 参考文献 ................................................ 38

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

第一章 餐饮信息管理系统的开发背景

1.1 开发背景

传统的餐饮管理现在已经很难应对当今社会对餐饮业的管理要求,它与现在的基于计算机技术发展起来的餐饮信息管理系统对比,有以下几大不同:

便捷性方面:传统的人工对餐饮信息进行管理,如:顾客信息管理,菜单信息管理和订餐信息的管理,都是很繁琐的过程,其中的任何一步过程都要浪费大量的时间,而随着计算机技术的发展,这些原本繁琐的问题都会变得轻而易举。

安全性方面:传统的纸质记录方式查询起来很麻烦,而且保密性很差,并且容易磨损丢失,对于会员余额的管理是非常不利的。但如果采用的是电子文档的方式进行数据的保存,这一切都变得非常简便,你可以方便的对数据信息进行备份查询,并且数据的安全性可以得到最大程度的保证。

准确性方面:传统的人工记账容易出错,如果采用这种方式来处理现在的含有打折信息的消费结算会使得工作量很大,如果计算出错将严重影响自己的声誉。而如果使用软件系统,这些问题都将不会出现,计算机的错误率几乎为零。

鉴于以上传统的人工管理方式的种种缺陷,我设计了方便中小级别餐饮企业使用的应用程序,通过它,管理者可以基本解决以上所遇到的种种问题,并且更加科学的对老客户进行打折,而且添加了主顾权限的不同设计使得它更加方便雇主对雇员的管理与监督。

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

第二章 系统定义与系统需求

2.1 系统定义

计算机技术产生以后,迅速在管理领域得到了广泛的应用。20世纪60年代,美国经营管理协会及其事业部第一次提出了建立管理信息系统的设想,即建立一个有效的信息系统,使得各级管理部门都能了解本单位的一切有关经营活动,为各级决策人员提供所需要的信息。

对于信息管理系统的定义,目前还没有一个统一的认识。由于餐饮管理系统是基于C/S模式,本文更倾向于采纳下述定义:餐饮信息管理系统是通过对整个餐饮服务流程的管理,实现业务的整体优化,提高企业运行控制和外部交易过程的效率的管理工具。

2.2 系统需求分析

现在的管理系统不仅要有漂亮的用户界面,更要有严谨的规划,注重每一个细小的环节。这样才能使得在电子交易时避免不必要错误发生。本系统的设计与实施迎合了二十一世纪经济高速发展、人们的生活节奏日益加快以及现代餐饮业越来越发达和便捷这一现状。它将极大地方便食客的就餐,同时也有利于我们的管理和服务。同时,我们的餐饮信息管理系统还能帮助餐厅降低错误率,扩大营业范围,增加知名度等。

为了使系统更加人性化,便于管理员管理,此系统的用户将分为两种类型,一个是针对员工的餐饮管理系统,另一个是针对管理员(店主)的餐饮管理系统。

员工使用本餐饮信息管理系统应可以实现以下功能: 1. 添加修改查询客户会员信息(修改客户信息需客户确认) 2. 查询菜单

3. 添加查询预定信息,为老顾客打折 4. 客户可以在自己的会员账户里充值

5. 顾客可以用现金买单也可以从会员账户里扣取 管理员使用本餐饮信息管理系统应可以实现以下功能: 1. 添加修改查询客户会员信息(修改客户信息需客户确认) 2. 添加修改查询菜单信息,最好能看到菜品图片

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

3. 添加查询预定信息,为老顾客打折 4. 客户可以在自己的会员账户里充值

5. 顾客可以用现金买单也可以从会员账户里扣取 6. 设定具体的打折方法

7. 添加职员信息,权限也可以定为管理员。 8. 可以查询使用者的现金收款金额

除了实现以上功能外,本系统还需要方便用户地使用,使得用户可以很快地熟练掌握,从而可以让用户快速的投入工作。并且要避免逻辑错误的出现。

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

第三章 系统总体设计

3.1 系统功能模块的划分

根据以上需求,餐饮信息管理系统功能被划分为以下模块,如图3.1所示:

系统登录退出模块:本模块是被用于用户登录,注销和退出。模块根据用户的不同类型赋予用户不同的管理权限。低等级的用户不可访问高等级用户的个别功能,而高等级用户可以使用低等级用户的所有系统功能。

客户信息管理模块:本模块将餐饮企业松散的客户资源加以整合,通过标准化的管理操作,将客户资料加以收集。用户使用本模块可以方便的查询客户的所有资料和客户消费信息。并且特意添加了图像模块,使得用户的图像信息加以保留,方便使用者的查询和记忆,当客户再次光临时,服务人员可以直接认出客户,这将使得客户感到无微不至的关怀,提升餐厅的品牌形象。客户的资料变更需经客户的确认,以避免出现因失误操作导致的客户信息流失。

菜单信息管理模块:本模块将餐厅的菜品信息通过标准化的管理操作加以整合,使得菜品的价格、配料、功效和图片可以完全呈现在客户面前,使得客户可以方便地选择自己想要的食物。本模块的分权限设计将限制普通员工对菜单信息加以修改,以

图3.1 餐饮信息管理系统功能模块图

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

防止菜单价格被恶意修改,以此保证餐厅正常可靠的运营。

订餐信息管理模块:通过订餐模块使得传统餐饮订餐过程变得轻松方便,订餐信息管理模块会在客户订餐的同时核对客户所预定的餐桌的使用情况,避免传统订餐易出现的预定重合问题。并且本模块在客户订餐的同时会给出已预定的菜品价格,帮助客户开心合理地消费。模块中包含的打折服务是本模块的一大特色。它将参考客户以往的消费情况和管理员设定的折扣程度对客户进行打折服务。而不是传统餐饮打折中的没有规律和凭据以询。后台的厨房通过本系统可以清楚地知道客户预定的菜品,这样就节省了大量用于菜品核对的时间,提高了厨房的效率,缩短了厨房上菜的时间。减少了不必要的人力物力财力资源的消耗,降低餐厅的运营成本,使餐厅以更好性价比服务于消费者,消费者可以得到更好的消费体验。

充值结算管理模块:通过此模块,用户可以方便的为客户提供充值结算服务,充值收取的现金将会计入用户的收款现金中,便于管理员结算时核对收款金额。结算方式分为两种,一种是现金结算,一种是账户余额结算,现金结算的收款金额会计入用户的收款现金,而账户余额结算的金额会从客户的账户里扣除。

折扣信息管理模块:本模块只限于管理员使用,通过它可以设定为客户打折时用到的折扣程度

员工信息管理模块:本模块只限于管理员使用,管理员使用它,可以添加删除用户。用户类型分为店长(管理员)和职员。管理员删除用户时,如果要删除的是普通职员,系统将直接执行命令,如果要删除的是管理员账户,系统会先查看剩下的管理员账户数量,最少保留一个管理员账户,以便下次的登录。如果删除的用户是管理员本人,则在删除账户后,系统将会要求使用者重新登录。

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

3.2 管理员权限模块划分

管理员权限划分如图3.2所示:

管理员使用本系统将能使用系统的所有功能。

3.3 员工权限模块划分

员工权限划分如图3.3所示:

员工使用本系统可以使用除了菜单信息编辑、折扣信息管理模块和员工信息管理模块之外的所有功能。

3.4 系统流程分析

系统流程分析如图3.4所示:

图3.2 店长权限模块图

图3.3 雇员权限模块图

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

流程图简介:员工登录系统后为客户添加基本信息,客户可以根据需要在开通的账户里充值(增加用户的收款金额)。客户通过餐饮信息管理系统进行订餐(老用户在此环节中可能会享受打折服务)。客户用完餐后来到服务台买单,用户可以选择使用现金或者从用户余额里扣除,支付成功会增加客户的已消费金额。若余额不足,系统将会提示,那么客户只能使用现金支付。使用现金支付的话会增加用户的收款金额。管理员登录的话可以使用员工的所有功能,而且可以设定为客户打折的折扣程度和添加菜单,以及管理员工账户。

3.5 数据库设计

3.5.1 数据库规划

根据以上模块划分图分析,针对餐饮信息管理系统,分别对用户、客户、食谱、预定、折扣这几个实体进行详细的调研和分析。数据库的设计采用一库多表式设计。即设计了一个数据库。把每个使用到的独立的对象设计为独立的应用实体。

图3.4 系统流程分析

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

3.5.2 E-R图

图3.5 用户E-R 图

主要存储一些用户信息,如用户的账号、密码和类型地点等等,主要用于用户登录,添加客户和添加预定时会使用到用户信息。

图3.6 客户E-R 图

主要存储一些客户信息,如客户的账号、密码、联系方式和消费情况等等,主要用于客户订餐、充值和结算,使用于添加预定。

图3.7 食谱E-R 图

主要存储一些食谱信息,如食谱的名称、价格和照片等等,主要用于客户订餐,使用于添加预定。

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

图3.8 预定E-R 图

主要存储一些预定信息,如客户的账号、预定的时间、桌号和菜单等等,主要用于记录客户的预定信息,会使用到用户、客户、菜单和折扣信息。

图3.9 折扣E-R 图

存储管理员(店主)设定的打折信息,用来计算打折后的应付金额,使用在添加预定时打折。

3.5.3 数据表的设计 1、 user (用户表)

表3.1 user

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

用于用户登录,添加客户和添加预定时会使用到用户信息来记录经手的用户,字段money 用于记录用户的收款金额,便于结算时对收款现金的核对。

2、 customer (客户表)

表3.2 customer

等等,主要用于客户订餐、充值和结算,字段money 用于储存账户余额,在使用充值和账户余额支付时会使用到它。字段usedmoney 用于记录客户的消费情况,为客户打折时会使用到它。

3、 food (食谱表)

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

表3.3 food

客户订餐,使用于添加预定。字段Price 记录的是食物的价格。当客户预定餐点时,系统使用它来算费用。

4、 YuDing (预定表)

表3.4 YuDing

等,主要用于记录客户的预定信息,会使用到用户、客户、菜单和折扣信息。当系统预定餐点时,会从其他各表中调出需要的信息,经过计算和处理后,将最终信息储存到YuDing 表,该表和其它各表都有紧密的联系。

5、 discount (折扣表)

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

表3.5 discount

使用在添加预定时打折。当客户预定餐点时,打折服务的折扣程度就是参照该表。

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

第四章 系统详细设计

4.1 数据库

4.1.1 数据库的链接

为了便于用户使用和维护,我们将与数据库的连接,单独写出来并进行编译,这样系统在新的环境使用时,只需改动一处数据库连接代码,即可立即使用,连接关键代码如下:

Public Shared constr As String = "Data Source=WWW-3C702F2C1C8\SQLEXPRESS;Initial Catalog=dcdatebase;Integrated Security=True" 其中Public Shared constr As String = "Data

Source=WWW-3C702F2C1C8\SQLEXPRESS;Initial Catalog=dcdatebase;Integrated Security=True"是数据库连接语句,WWW-3C702F2C1C8是计算机名。

4.1.2 Is_SQL_Cmd方法

方法Is_SQL_Cmd是判断数据是否存在,当系统登录和添加客户需要验证数据库中是否存在提交的数据时会用到它。其主要代码如下:

Public Function Is_SQL_Cmd(ByVal cmdstr As String) As Boolean SqlConn = New SqlConnection(constr) SqlConn.Open()

SqlCmd = New SqlCommand(cmdstr, SqlConn) Try

SqlDr = SqlCmd.ExecuteReader() If SqlDr.HasRows Then Return True Else

Return False End If

Catch ex As Exception Return False

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

Finally

SqlConn.Close() End Try End Function 4.1.3 SQL_Ada方法

方法SQL_Ada是为了查询数据库,并将查询到的结果存放在内存中的datatable 表中,餐饮信息管理系统中使用到的组件DataGridView 再从datatable 表中得到数据。

Public Function SQL_Ada(ByVal adastr As String) As DataTable SqlConn = New SqlConnection(constr) SqlConn.Open()

SqlAda = New SqlDataAdapter(adastr, SqlConn) ds = New DataSet Try

SqlAda.Fill(ds) Return ds.Tables(0) Catch ex As Exception Return New DataTable Finally

SqlConn.Close() End Try End Function 4.1.4 ExecCmd过程

ExecCmd 是为系统中的添加、删除、修改服务,系统里的客户、菜单、折扣和员工的添加、删除和修改都用到了该过程。

Public Sub ExecCmd(ByVal cmdstr As String) SqlConn = New SqlConnection(constr) SqlConn.Open()

SqlCmd = New SqlCommand(cmdstr, SqlConn)

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

SqlCmd.ExecuteNonQuery() End Sub

4.2 系统的登录与注销

4.2.1 用户登陆模块的实现

图4.1 用户登录

用户登陆模块是防止非法用户登陆的第一道防线,通过它可以保护后台数据库的安全性,当用户要进行系统操作时,首先要进入的就是身份验证界面,只有在密码正确的情况下才能进行以后的操作,如果输入的密码不正确,则不能进行登录对系统进行操作。如果用户以职员的身份进入系统,则只能进行顾客信息管理、菜单信息查询、预定信息管理和充值结算管理,而菜单信息管理、折扣设定、员工管理这些功能将被屏蔽,如果用户以管理员(店长)身份登录,系统的所有功能都将可以使用。以下是“登录”按钮的代码:

cmdstr = "select * from [user] where [user_id] ='" + TextBox1.Text + "' and [pwd]= '" + TextBox2.Text + "' and [style]= '" + ComboBox1.Text + "'" Try

If sqlobject.Is_SQL_Cmd(cmdstr) Then main.m_Login = True

...... //类似部分省略

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

Me.Close() Else

MsgBox("请填写正确的用户名、密码和用户类型!") End If

Catch ex As Exception main.OPErr.WriteErr(ex)

End Try

系统先进行数据库操作,判断是否存在用户名、用户密码和用户类型完全符合要求的数据,如果存在,则说明用户可以登录,同时把登录的用户类型和用户名告诉需要用到用户类型和用户名数据的模块如系统主界面、充值模块和买单模块等等。

4.2.2 用户注销模块的实现 用户注销模块的代码如下:

Private Sub 注销ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 注销ToolStripMenuItem.Click Me.m_style = "" Me.m_Login = False

For Each ChildForm As Form In Me.MdiChildren ChildForm.Close() Next

main_Load(sender, e) Login.Show()

Me.ToolStripStatusLabel1.Text = "登录"

End Sub

用户通过本模块可以注销系统,系统恢复到登录前画面,这样就可以防止在用户离开后,系统数据被人恶意修改。

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

4.3 客户信息管理

4.3.1 客户信息的添加

图4.2 客户的添加

当用户点击添加按钮时,系统执行以下代码:

CmdStr = "SELECT id FROM [customer] where id='" + TextBox2.Text + "'" If TextBox2.Text = "" Then //身份证不为空 MsgBox("请输入身份证号") TextBox2.Focus()

ElseIf sqlobject.Is_SQL_Cmd(CmdStr) Then //检查是否已注册 MsgBox("该客户已经存在") TextBox2.Focus()

...... //中间还有很多类似的验证 Else

CmdStr = "insert into customer

(name,id,address,birthday,pwd,addtime,money,usedmoney,tel,mobilephone,userid)VALUES('" + TextBox1.Text + "','" + TextBox2.Text + "','" + TextBox3.Text + "','" + DateTimePicker1.Value.ToString + "','" + TextBox6.Text + "','" + Now + "','" + "0" + "','" + "0" + "','" +

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

TextBox4.Text + "','" + TextBox5.Text + "','" + user + "')" Try

sqlobject.ExecCmd(CmdStr) //添加客户 MsgBox("添加成功") // 添加成功提示 FileUrl = "" //复位空格 ......

Catch ex As Exception main.OPErr.WriteErr(ex) End Try End If End Sub

在添加用户前,系统进行了详细的表单验证,包括验证要提交的客户是否已经存在,用户两次输入的密码是否一样,以及联系方式不为空等等。使用insert 语句将通过验证的表格中的数据提交到数据库。菜单信息添加模块与本模块的原理类似,以下不再阐述。

4.3.2 图像的处理

如果用户在上面添加客户信息时,添加了图像信息,那么系统就会执行以下命令: If FileUrl "" Then //图像存在的话,添加图像 Dim imgstreem As New FileStream(FileUrl, FileMode.Open, FileAccess.Read) Dim imgbyte(imgstreem.Length) As Byte imgstreem.Read(imgbyte, 0, imgstreem.Length) imgstreem.Close()

Dim sqlcmd As New System.Data.SqlClient.SqlCommand Dim sqlconn As New

System.Data.SqlClient.SqlConnection(SQL_Conn.constr)

CmdStr = "update customer set photo=@image where id='" + TextBox2.Text + "'"

sqlcmd.Parameters.Add("@image", SqlDbType.Image) sqlcmd.Parameters("@image").Value = imgbyte

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

sqlcmd.Connection = sqlconn sqlcmd.CommandText = CmdStr Try

sqlconn.Open()

sqlcmd.ExecuteNonQuery() sqlconn.Close() Catch ex As Exception main.OPErr.WriteErr(ex) End Try End If

如果用户提交了客户的相片,相片将会被转化为二进制数据提交到数据库中,这样就可以方便用户日后对客户资料进行维护,也有助于服务人员记住客户,当客户再次光临时,一口报出客户的名字将会使客户对餐厅的好感大增。

4.3.3 客户信息的修改

图4.3 客户信息的修改

当客户资料因实际情况发生变更时,可以修改系统中的资料数据,用户需提供注册时所使用的客户密码。使用密码可以防止客户的资料被恶意修改。充分保护客户权益,即使是管理员也不能在不经过客户同意的情况下修改客户数据。以下是修改按钮的代码。

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

CmdStr = "select pwd from customer where pwd='" + TextBox12.Text + "' and id ='" + TextBox8.Text + "'" //确定客户身份代码 ...... //省略验证信息

If sqlobject.Is_SQL_Cmd(CmdStr) Then //如果客户同意修改的话继续 CmdStr = "update customer set address='" + TextBox9.Text + "'" + ",tel='" + TextBox10.Text + "'" + ",mobilephone='" + TextBox11.Text + "'" + ",pwd='" + TextBox13.Text + "'" + " where id='" + TextBox8.Text + "'" Try

sqlobject.ExecCmd(CmdStr) //执行更新 MsgBox("修改成功") TextBox8.Text = "" ......

PictureBox2.Image = Nothing

Call TabControl1_SelectedIndexChanged(sender, e) Catch ex As Exception main.OPErr.WriteErr(ex) End Try Else

MsgBox("密码错误") End If

使用方法Is_SQL_Cmd验证客户密码的正确性,如果原始密码正确,用户在输入新密码后可以进行对联系方式等基本资料进行修改。使用update 语句将空格中的数据更新到服务器。如果更新成功,系统会弹出“修改成功的提示”。 菜单信息修改模块与本模块的原理类似,以下不再阐述。

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

4.3.4 客户信息的删除

客户信息可以在得到客户确认的情况下删除,因设计到账户余额问题所以在进行此操作时万分谨慎。客户资料来之不易,建议不要轻易删除客户资料。以下是删除模块的程序代码:

Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click If TextBox12.Text = "" Then MsgBox("请输入用户密码") TextBox12.Focus() Else

CmdStr = "select pwd from customer where pwd='" + TextBox12.Text + "' and id ='" + TextBox8.Text + "'" //用户密码确认 If sqlobject.Is_SQL_Cmd(CmdStr) Then

CmdStr = "delete from customer where id='" + TextBox8.Text + "'" Try

sqlobject.ExecCmd(CmdStr) //执行删除命令 MsgBox("删除成功")

PictureBox2.Image = Nothing Catch ex As Exception main.OPErr.WriteErr(ex) End Try Else

MsgBox("密码错误") End If End If

Call TabControl1_SelectedIndexChanged(sender, e) End Sub

系统先对客户密码进行了核对,密码正确的话,使用delete 语句,根据客户的

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

身份证号对数据库中的客户数据进行删除。因添加客户数据时要求身份证号是唯一的,所以不用担心误删的问题。菜单信息删除模块与本模块的原理类似,以下不再阐述。

4.3.5 客户信息的查询

图4.4 客户信息的查询

1、客户查询模块载入

Private Sub kehuchaxun_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load sqlobject = New SQL_Conn

CmdStr = "SELECT name as '客户姓名',id as '身份证',address as '家庭地址',tel as '电话号码',mobilephone as '手机号码' ,money as '账户余额' ,usedmoney as '已消费额'FROM customer" Try

Me.DataGridView1.DataSource = sqlobject.SQL_Ada(CmdStr) Catch ex As Exception main.OPErr.WriteErr(ex) End Try

Me.DataGridView1.AutoSizeColumnsMode =

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

DataGridViewAutoSizeColumnsMode.DisplayedCells

End Sub

使用SQL_Ada方法,查询customer 表中的个别数据,将数据库中的数据提取出来保存在内存中的datatable 表中,客户信息查询中的DataGridView 组件将内存中的datatable 数据表里的数据提取出来显示给用户查看。

2、当点击DataGridView 组建中的任意一客户资料时,在组件左边的PictureBox 中将显示客户照片。

Private Sub DataGridView1_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick

If row e.RowIndex And e.RowIndex >= 0 Then row = e.RowIndex

Label1.Text = Me.DataGridView1.Item(0, row).Value.ToString.Trim() If Label1.Text "" Then

CmdStr = "select photo from customer where name='" + Label1.Text + "'" DisplayImg(CmdStr)

Else : PictureBox1.Image = Nothing End If End If

End Sub

其中If row e.RowIndex And e.RowIndex >= 0 中e.RowIndex 指的是点击的行数,第一行为0。Label1.Text = Me.DataGridView1.Item(0,

row).Value.ToString.Trim()是为了取所选行数的第一列值,即客户姓名。If Label1.Text "" Then是指如果label1不为空, CmdStr = "select photo from customer where name='" + Label1.Text + "'"是SQL 语句查询图片数据。DisplayImg(CmdStr)是在DisplayImg 方法中执行SQL 语句。Else : PictureBox1.Image = Nothing指不满足条件时,清空图像。

3、DisplayImg 方法

Private Sub DisplayImg(ByVal str As String)

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

sqlobject.SQL_Ada(str)

If sqlobject.SQL_Ada(str).Rows(0).Item(0) Is DBNull.Value Then PictureBox1.Image = Nothing Else

Dim imgbyte() As Byte = sqlobject.SQL_Ada(str).Rows(0).Item(0)

Dim imgmemory As New MemoryStream(imgbyte) PictureBox1.Image = Image.FromStream(imgmemory) End If End Sub

DisplayImg 方法的作用是读出数据库中保存的二进制图像。 菜单信息查询模块与本模块的原理类似,以下不在阐述。

4.4 添加预定信息

图4.5 添加预定信息

系统在窗口载入时,先查询了客户和菜单两张表,将数据显示在窗体左边,供用户选择时使用,其代码和客户查询类似这里不再叙述。本节介绍其他功能的实现。

4.4.1 日期时间桌号的核对

为了防止客户预定的餐桌出现重合的情况,添加预定的餐桌时系统执行以下代

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

码:

Private Sub DateTimePicker1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DateTimePicker1.ValueChanged sqlobject = New SQL_Conn

CmdStr = "select tableid from YuDing where tableid='" + ComboBox1.Text + "'and date='" + DateTimePicker1.Value.ToString + "'and time='" + ComboBox2.Text + "'"

If sqlobject.Is_SQL_Cmd(CmdStr) Then MsgBox("在此时刻此桌已有预定") End If End Sub

当桌号、时间或者日期中任何一条改动时,程序都会使用方法Is_SQL_Cmd执行查找一次数据库,看在此时刻此桌是否已有预定信息的记录,如果已有相同记录,系统就会提示“在此时刻此桌已有预定”。

4.4.2 打折信息处理

当用户向系统添加预定的菜品时,系统会执行以下代码:

If Label6.Text = "" Then //选择客户 MsgBox("请选择客户")

ElseIf Label12.Text = "" Then //选择菜单 MsgBox("请选择菜单") Else

Label14.Text = Label14.Text + Label10.Text + " " //所点菜单 price = Label12.Text

totle += price //总消费金额 Label16.Text = totle Label18.Text = totle

CmdStr = "select usedmoney from discount" //查询设定的消费金额 Cmd = "select discount from discount" //查询设定的打折程度 Cm = "SELECT usedmoney FROM [customer] where id='" + Label6.Text + "'"

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

//客户已消费金额

f = (sqlobject.SQL_Ada(Cm).Rows(0).Item(0)) //f为客户已消费金额 Try

For i = 0 To sqlobject.SQL_Ada(CmdStr).Rows.Count – 1 //打折表行数 j = (sqlobject.SQL_Ada(CmdStr).Rows(i).Item(0)) //打折表行消费金额 d = (sqlobject.SQL_Ada(Cmd).Rows(i).Item(0)) //打折表行折扣率 If (f >= j) Then

Label18.Text = totle * d / 10 End If Next i

Catch ex As Exception main.OPErr.WriteErr(ex) End Try End If

End Sub

首先选择客户和预定的餐点,客户信息用于判断打折程度,餐点用于结算消费金额。用累加的方法计算出总消费金额,系统先在数据表中查询客户信息中的客户已消费金额,再用查出的金额与数据库对比,判断打折程度。具体方法是系统先查看折扣数据表中共有的数据行数,然后从第0行开始依次向下扫描,由于添加打折信息时是按照消费额度递增方式添加的,所以系统查到的数据会越来越大,越来越接近客户已消费金额,当已消费金额刚好超过设定的金额时系统停止继续向下查找新的设定金额,同时查找设定金额对应的打折程度,再用此打折程度计算打折后的实付金额。

4.4.3 取消预定信息

系统根据用户选择的预定信息,执行删除命令,其关键代码如下:

CmdStr = "delete from YuDing where name='" + Label25.Text + "'and date='" + Label27.Text + "'and time='" + Label28.Text + "'and tableid='" + Label30.Text + "'" Try

sqlobject.ExecCmd(CmdStr)

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

4.4.4 预定信息查询

图4.6 预定查询

当预定查询模块载入时,系统执行以下语句:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load sqlobject = New SQL_Conn

CmdStr = "SELECT name as '客户姓名',customerid as '身份证',date as '预定日期',time as '预定时间',tableid as '餐桌号',money as '结算价格',food as '预定菜单',userid as '服务员编号' FROM YuDing" Try

Me.DataGridView1.DataSource = sqlobject.SQL_Ada(CmdStr) Catch ex As Exception main.OPErr.WriteErr(ex) End Try

Me.DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells End Sub

当预定查询模块载入时读取数据库中的预定信息并且显示在DataGridView 组件中显示给用户查看,餐厅的厨房就是使用这一模块来获取需要准备的餐点。

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

当用户知道想要查找的预定信息中的某些确切内容时,可以将知道的内容输入空格中,系统将会自动在数据库中查找这些内容。关键代码如下:

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged TextBox2.Text = "" TextBox3.Text = "" sqlobject = New SQL_Conn

CmdStr = "SELECT name as '客户姓名',customerid as '身份证',date as '预定日期',time as '预定时间',tableid as '餐桌号',money as '结算价格',food as '预定菜单',userid as '服务员编号' FROM YuDing where name='" + TextBox1.Text + "'" Try

Me.DataGridView1.DataSource = sqlobject.SQL_Ada(CmdStr) Catch ex As Exception main.OPErr.WriteErr(ex) End Try

Me.DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells End Sub

当根据姓名查找、根据日期查找和根据餐桌号查找的文本框中的数据被改动时,系统根据改动后的数据,使用CmdStr 所代表的SQL 语句查找数据库中的信息。并将新的信息显示在DataGridView 组件中。

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

4.5充值与结算

4.5.1 客户充值

图4.7 客户充值

用户充值会模块会调取数据库中的customer 表里的money 数据,当用户选择要充值的客户后,系统会提取对应客户的客户余额,当用户确定添加后,系统会用客户余额加上客户充值的金额,然后把得到的结果更新到数据库中客户的账户余额中同时系统也会以同样的方法更新数据库user 表中的收款金额money 数据。 然后再刷新DataGridView 组件中的数据信息。当用户点击充值按钮时,系统执行以下代码: If Label6.Text "" Then a = Label6.Text

If TextBox1.Text "" Then b = TextBox1.Text money = a + b

CmdStr = "update customer set money ='" + money.ToString + "' where name='" + Label4.Text + "'" Try

sqlobject.ExecCmd(CmdStr) //更新充值后的客户数据库 Cmd = "SELECT money FROM [user] where user_id='" + userid + "'"

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

money = (sqlobject.SQL_Ada(Cmd).Rows(0).Item(0)) a = money + b

CmdStr = "update [user] set money ='" + a.ToString + "' where user_id='" + userid + "'"

sqlobject.ExecCmd(CmdStr) //更新充值后的用户数据库 MsgBox("充值成功") Catch ex As Exception main.OPErr.WriteErr(ex) End Try

sqlobject = New SQL_Conn

CmdStr = "SELECT name as '客户姓名',id as '身份证',money as '余额' FROM customer" Try

Me.DataGridView1.DataSource = sqlobject.SQL_Ada(CmdStr) Catch ex As Exception main.OPErr.WriteErr(ex) End Try

Me.DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells Label4.Text = "" Label5.Text = "" Label6.Text = "" TextBox1.Text = "" Else : MsgBox("请输入金额") End If

Else : MsgBox("请选择客户") End If

用户充值其实是更新数据库中两张表的内容,系统先把客户的账户余额和用户的实收金额从数据库中调出来,加上用户的充值金额后,再把更新后的金额填入数据库。

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

再用同样的方法对用户收款金额进行更新。两张数据表的作用不同,客户表中的数据指客户的账户余额,用户表中的数据指用户收款金额,方便店长查询员工的收款金额。

4.5.2 客户结算

图4.8 客户买单

买单分为现金支付和余额支付

现金支付:客户使用现金支付的话会增加用户的收款金额,方法和上面的用户充值类似

余额支付:用户若选择余额支付的话需要使用客户密码验证客户身份,然后系统会从数据库中调出客户余额情况,若客户余额不足,系统会给出提示。若余额足够支付客户的消费金额,系统会在客户余额中扣除消费金额。

余额支付和现金支付的最大区别就是余额支付扣客户账户金额,现金支付增加用户实收金额

4.6 折扣设定

折扣设定其实就是往数据库discount 表中添加以消费金额与其对应的折扣程度,在操作中要切记折扣金额从小到大依次添加因为系统在为客户打折时是从折扣表的第0行开始向后依次类推为客户查询对应的折扣程度,所以若表中数据顺序打乱的话,系统得到的折扣程度会变高。

4.7 用户管理

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

4.7.1 用户的添加

图4.9 用户添加

系统先对填入的数据进行核对,确认没有和数据库中的已有数据重复且符合要求后系统会将其添加到user 表中。

4.7.2 用户的删除

用户删除模块的设计要考虑几个问题:1、删除的是管理员(店长)还是普通职员。2、如果删除的是管理员,那么数据库里还有没有其他管理员权限的账号以便下次使用。3、如果删除的账号就是管理员现在所使用的账号怎么办。

用户删除模块的主要代码如下:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim i As Integer Dim j As String j = "店长"

If TextBox4.Text = "" Then MsgBox("请选择要删除的员工") Else

If ComboBox1.Text = "店长" Then

CmdStr = "select Style from [user] where Style='" + j + "'"

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

i = sqlobject.SQL_Ada(CmdStr).Rows.Count //店长级别员工数量 If i > 1 Then

CmdStr = "delete from [user] where id='" + TextBox4.Text + "'" Try

sqlobject.ExecCmd(CmdStr)

If TextBox1.Text = userid Then //删除的账号是正在登陆的账号 MsgBox("删除成功, 请重新登录") main.m_style = "" main.m_Login = False

For Each ChildForm As Form In Me.MdiChildren ChildForm.Close() Next

main.main_Load(sender, e) Login.Show()

main.ToolStripStatusLabel1.Text = "登录" Me.Close() Else

MsgBox("删除成功") End If

Catch ex As Exception main.OPErr.WriteErr(ex) End Try

Else : MsgBox("至少保留一个店长用户") End If Else

CmdStr = "delete from [user] where id='" + TextBox4.Text + "'" Try

sqlobject.ExecCmd(CmdStr)

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

MsgBox("删除成功") Catch ex As Exception main.OPErr.WriteErr(ex) End Try End If End If

Call zhiyuanguanli_Load(sender, e) TextBox1.Text = "" ......

End Sub

删除用户时,如果删除的是职员账户,那么可以直接删除。如果删除的是店主账户,那么系统先判断店主账户有几个,如果只有一个,系统会拒绝删除请求,以防止下次没有店主账户的情况导致无法进入用户管理。如果系统有不止一个店主账户,系统会判断删除的账户是不是现在登陆的账户,如果是的话删除完成后需重新登录。

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

总 结

当初之所以选择餐饮信息管理系统,不仅仅是因为其具有挑战性,更是因为它更加符合中国广大的中小餐饮企业的发展需要,大家都知道,中国的餐饮服务行业最多的是个体经营模式,他们根本不会花费过多的费用架设网络服务器,大多数店主都希望有一款产品可以满足餐饮管理的需要而且花费的价格也相对低廉,甚至一次投资终身受益。而餐饮信息管理系统的出现就完全可以满足他们的愿望。餐饮信息管理系统的诞生可以为他们提供便捷的管理服务。并且几乎为零的错误率也使得餐厅可以更好的为顾客服务。它不仅可以为餐厅降低人力资源的付出,节省了成本,而且也可以提升自身的形象,使餐厅迎来更多的食客。

经过这么长时间的努力,餐饮信息管理系统终于得以实现其功能了,在这里我对.NET 技术有了更深一步的认识,程序开发到后来比刚刚开发时的速度要快上好多,一开始遇到问题,我需要停下来查找相关资料,在网上搜实例代码下来学习,自己解决不了还要去请教指导老师,但程序编写到后来就轻松多了,遇到的问题几乎都能自己解决而不像一开始那样。

世界上没有任何一样东西是十全十美的,在完成了餐饮信息管理系统后,我发现,原本看上去应该比较完善的系统又有了新的可以改进的地方,如预定的餐点要取消其中的一份该如何实现。我想如果我把这个功能实现了,也许又会有新的功能需要我去做,系统的完善不是一朝一夕可以完成的,如果给我更多的时间,我一定能将它制作的更好。

此次论文的完成既为大学三年划上了一个完美的句号,也为将来的计算机事业奠定了良好的基础。 在大学里,我一直使自己保持着积极

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

向上的心态,它使我不怕任何困难,以一定要成功的信念完成我的毕业设计内容。而且我相信付出总有回报,三年的大学学习生活成就了我扎实的专业知识,务实的工作作风,良好的组织能力和团队协作精神,相信这些会在我未来的生活和工作中给我带来巨大的帮助。

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

谢 辞

在论文完成之际,我的心情万分激动,虽然已经是深夜,但我依然没有困意。从论文的选题、资料的收集、程序的设计到论文的撰写、编排整个过程中,我付出了很多的努力,但功夫不负有心人,那份锲而不舍的精神使我终于成功了!

毕业论文是对学生大学阶段学习知识的总结,也是对学生分析问题、解决问题能力的综合考察。在本次毕业设计中,我首先要感谢教过我的每一位老师,是你们将我领入了计算机科学的大门,并对我的学习给予了很大的帮助,使我在毕业设计中有了目标和方向。在大学这近三年的时间里,你们对我悉心的指导和教育。使我能够不断地提高学习成绩,而且这些课题的研究成果也成为了本论文的主要素材。同时,我从指导老师翁老师身上学到了很多东西。在我实习期间,翁老师来到我的实习单位,指导我的工作,向实习单位了解我的情况使我非常感动。翁老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我受益匪浅。无论在理论上还是在实践中,她都点拨我指导我,使我学到了很多书本上没有的东西,这对于我以后的工作和学习来说都将是一种宝贵的财富,在此表示最诚挚的谢意。此外,我还要感谢在实习期间一起学习工作生活的同事们,从你们身上,我学到了很多学校里不曾接触的东西。

衷心感谢各位评审的点拨和指导。

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

参考文献

[1]林卓然 . VB语言程序设计 . 电子工业出版社 . 2009-1-1

[2]李英杰 . VB.NET 2005 程序设计实例教程 . 天津大学出版社 . 2008-11-1 [3]杨晶 . VB6.0程序设计教程与实训 . 科学出版社 . 2006-09-01

[4]刘志妩 . 基于VB 和SQL 的数据库编程技术 . 清华大学出版社 . 2008-4-1 [5]刘玉山 . VB数据库项目设计模块化教程 . 机械工业出版社 . 2009-8-1 [6]孟德欣 . VB程序设计 . 清华大学出版社 . 2009-7-1

[7](美)依夫杰 . VB2005&.NET3.0高级编程 . 清华大学出版社 . 2008-2-1 [8]百度百科 . http://baike.baidu.com/

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

第 39 页 共 42 页

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

目 录

第一章 餐饮信息管理系统的开发背景 ......................... 1 1.1 开发背景 .......................................... 1 1.2 开发工具和相关技术简介 ............ 错误!未定义书签。 第二章 系统定义与系统需求 . ................................ 2 2.1 系统定义 .......................................... 2 2.2 系统需求分析 ...................................... 2 第三章 系统总体设计 ...................................... 4 3.1 系统功能模块的划分................................. 4 3.2 管理员权限模块划分................................. 6 3.3 员工权限模块划分 .................................. 6 3.4 系统流程分析 ...................................... 6 3.5 数据库设计 ........................................ 7 3.5.1 数据库规划 ................................... 7 3.5.2 E-R图 ....................................... 8 3.5.3 数据表的设计 ................................. 9 第四章 系统详细设计 ..................................... 13 4.1 数据库 ........................................... 13 4.1.1 数据库的链接 ................................ 13 4.1.2 Is_SQL_Cmd方法.............................. 13 4.1.3 SQL_Ada方法................................. 14 4.1.4 ExecCmd过程................................. 14 4.2 系统的登录与注销 ................................. 15 4.2.1 用户登陆模块的实现 ........................... 15 4.2.2 用户注销模块的实现 ........................... 16 4.3 客户信息管理 ..................................... 17 4.3.1 客户信息的添加............................... 17 4.3.2 图像的处理 .................................. 18 4.3.3 客户信息的修改............................... 19 4.3.4 客户信息的删除............................... 21 4.3.5 客户信息的查询............................... 22 4.4 添加预定信息 ..................................... 24 4.4.1 日期时间桌号的核对 ........................... 24 4.4.2 打折信息处理 ................................ 25

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

4.4.3 取消预定信息 ................................ 26 4.4.4 预定信息查询 ................................ 27 4.5充值与结算 . ....................................... 29 4.5.1 客户充值 .................................... 29 4.5.2 客户结算 .................................... 31 4.6 折扣设定 ......................................... 31 4.7 用户管理 ......................................... 31 4.7.1 用户的添加 .................................. 32 4.7.2 用户的删除 .................................. 32 总 结 ................................................. 35 谢 辞 ................................................. 37 参考文献 ................................................ 38

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

第一章 餐饮信息管理系统的开发背景

1.1 开发背景

传统的餐饮管理现在已经很难应对当今社会对餐饮业的管理要求,它与现在的基于计算机技术发展起来的餐饮信息管理系统对比,有以下几大不同:

便捷性方面:传统的人工对餐饮信息进行管理,如:顾客信息管理,菜单信息管理和订餐信息的管理,都是很繁琐的过程,其中的任何一步过程都要浪费大量的时间,而随着计算机技术的发展,这些原本繁琐的问题都会变得轻而易举。

安全性方面:传统的纸质记录方式查询起来很麻烦,而且保密性很差,并且容易磨损丢失,对于会员余额的管理是非常不利的。但如果采用的是电子文档的方式进行数据的保存,这一切都变得非常简便,你可以方便的对数据信息进行备份查询,并且数据的安全性可以得到最大程度的保证。

准确性方面:传统的人工记账容易出错,如果采用这种方式来处理现在的含有打折信息的消费结算会使得工作量很大,如果计算出错将严重影响自己的声誉。而如果使用软件系统,这些问题都将不会出现,计算机的错误率几乎为零。

鉴于以上传统的人工管理方式的种种缺陷,我设计了方便中小级别餐饮企业使用的应用程序,通过它,管理者可以基本解决以上所遇到的种种问题,并且更加科学的对老客户进行打折,而且添加了主顾权限的不同设计使得它更加方便雇主对雇员的管理与监督。

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

第二章 系统定义与系统需求

2.1 系统定义

计算机技术产生以后,迅速在管理领域得到了广泛的应用。20世纪60年代,美国经营管理协会及其事业部第一次提出了建立管理信息系统的设想,即建立一个有效的信息系统,使得各级管理部门都能了解本单位的一切有关经营活动,为各级决策人员提供所需要的信息。

对于信息管理系统的定义,目前还没有一个统一的认识。由于餐饮管理系统是基于C/S模式,本文更倾向于采纳下述定义:餐饮信息管理系统是通过对整个餐饮服务流程的管理,实现业务的整体优化,提高企业运行控制和外部交易过程的效率的管理工具。

2.2 系统需求分析

现在的管理系统不仅要有漂亮的用户界面,更要有严谨的规划,注重每一个细小的环节。这样才能使得在电子交易时避免不必要错误发生。本系统的设计与实施迎合了二十一世纪经济高速发展、人们的生活节奏日益加快以及现代餐饮业越来越发达和便捷这一现状。它将极大地方便食客的就餐,同时也有利于我们的管理和服务。同时,我们的餐饮信息管理系统还能帮助餐厅降低错误率,扩大营业范围,增加知名度等。

为了使系统更加人性化,便于管理员管理,此系统的用户将分为两种类型,一个是针对员工的餐饮管理系统,另一个是针对管理员(店主)的餐饮管理系统。

员工使用本餐饮信息管理系统应可以实现以下功能: 1. 添加修改查询客户会员信息(修改客户信息需客户确认) 2. 查询菜单

3. 添加查询预定信息,为老顾客打折 4. 客户可以在自己的会员账户里充值

5. 顾客可以用现金买单也可以从会员账户里扣取 管理员使用本餐饮信息管理系统应可以实现以下功能: 1. 添加修改查询客户会员信息(修改客户信息需客户确认) 2. 添加修改查询菜单信息,最好能看到菜品图片

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

3. 添加查询预定信息,为老顾客打折 4. 客户可以在自己的会员账户里充值

5. 顾客可以用现金买单也可以从会员账户里扣取 6. 设定具体的打折方法

7. 添加职员信息,权限也可以定为管理员。 8. 可以查询使用者的现金收款金额

除了实现以上功能外,本系统还需要方便用户地使用,使得用户可以很快地熟练掌握,从而可以让用户快速的投入工作。并且要避免逻辑错误的出现。

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

第三章 系统总体设计

3.1 系统功能模块的划分

根据以上需求,餐饮信息管理系统功能被划分为以下模块,如图3.1所示:

系统登录退出模块:本模块是被用于用户登录,注销和退出。模块根据用户的不同类型赋予用户不同的管理权限。低等级的用户不可访问高等级用户的个别功能,而高等级用户可以使用低等级用户的所有系统功能。

客户信息管理模块:本模块将餐饮企业松散的客户资源加以整合,通过标准化的管理操作,将客户资料加以收集。用户使用本模块可以方便的查询客户的所有资料和客户消费信息。并且特意添加了图像模块,使得用户的图像信息加以保留,方便使用者的查询和记忆,当客户再次光临时,服务人员可以直接认出客户,这将使得客户感到无微不至的关怀,提升餐厅的品牌形象。客户的资料变更需经客户的确认,以避免出现因失误操作导致的客户信息流失。

菜单信息管理模块:本模块将餐厅的菜品信息通过标准化的管理操作加以整合,使得菜品的价格、配料、功效和图片可以完全呈现在客户面前,使得客户可以方便地选择自己想要的食物。本模块的分权限设计将限制普通员工对菜单信息加以修改,以

图3.1 餐饮信息管理系统功能模块图

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

防止菜单价格被恶意修改,以此保证餐厅正常可靠的运营。

订餐信息管理模块:通过订餐模块使得传统餐饮订餐过程变得轻松方便,订餐信息管理模块会在客户订餐的同时核对客户所预定的餐桌的使用情况,避免传统订餐易出现的预定重合问题。并且本模块在客户订餐的同时会给出已预定的菜品价格,帮助客户开心合理地消费。模块中包含的打折服务是本模块的一大特色。它将参考客户以往的消费情况和管理员设定的折扣程度对客户进行打折服务。而不是传统餐饮打折中的没有规律和凭据以询。后台的厨房通过本系统可以清楚地知道客户预定的菜品,这样就节省了大量用于菜品核对的时间,提高了厨房的效率,缩短了厨房上菜的时间。减少了不必要的人力物力财力资源的消耗,降低餐厅的运营成本,使餐厅以更好性价比服务于消费者,消费者可以得到更好的消费体验。

充值结算管理模块:通过此模块,用户可以方便的为客户提供充值结算服务,充值收取的现金将会计入用户的收款现金中,便于管理员结算时核对收款金额。结算方式分为两种,一种是现金结算,一种是账户余额结算,现金结算的收款金额会计入用户的收款现金,而账户余额结算的金额会从客户的账户里扣除。

折扣信息管理模块:本模块只限于管理员使用,通过它可以设定为客户打折时用到的折扣程度

员工信息管理模块:本模块只限于管理员使用,管理员使用它,可以添加删除用户。用户类型分为店长(管理员)和职员。管理员删除用户时,如果要删除的是普通职员,系统将直接执行命令,如果要删除的是管理员账户,系统会先查看剩下的管理员账户数量,最少保留一个管理员账户,以便下次的登录。如果删除的用户是管理员本人,则在删除账户后,系统将会要求使用者重新登录。

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

3.2 管理员权限模块划分

管理员权限划分如图3.2所示:

管理员使用本系统将能使用系统的所有功能。

3.3 员工权限模块划分

员工权限划分如图3.3所示:

员工使用本系统可以使用除了菜单信息编辑、折扣信息管理模块和员工信息管理模块之外的所有功能。

3.4 系统流程分析

系统流程分析如图3.4所示:

图3.2 店长权限模块图

图3.3 雇员权限模块图

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

流程图简介:员工登录系统后为客户添加基本信息,客户可以根据需要在开通的账户里充值(增加用户的收款金额)。客户通过餐饮信息管理系统进行订餐(老用户在此环节中可能会享受打折服务)。客户用完餐后来到服务台买单,用户可以选择使用现金或者从用户余额里扣除,支付成功会增加客户的已消费金额。若余额不足,系统将会提示,那么客户只能使用现金支付。使用现金支付的话会增加用户的收款金额。管理员登录的话可以使用员工的所有功能,而且可以设定为客户打折的折扣程度和添加菜单,以及管理员工账户。

3.5 数据库设计

3.5.1 数据库规划

根据以上模块划分图分析,针对餐饮信息管理系统,分别对用户、客户、食谱、预定、折扣这几个实体进行详细的调研和分析。数据库的设计采用一库多表式设计。即设计了一个数据库。把每个使用到的独立的对象设计为独立的应用实体。

图3.4 系统流程分析

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

3.5.2 E-R图

图3.5 用户E-R 图

主要存储一些用户信息,如用户的账号、密码和类型地点等等,主要用于用户登录,添加客户和添加预定时会使用到用户信息。

图3.6 客户E-R 图

主要存储一些客户信息,如客户的账号、密码、联系方式和消费情况等等,主要用于客户订餐、充值和结算,使用于添加预定。

图3.7 食谱E-R 图

主要存储一些食谱信息,如食谱的名称、价格和照片等等,主要用于客户订餐,使用于添加预定。

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

图3.8 预定E-R 图

主要存储一些预定信息,如客户的账号、预定的时间、桌号和菜单等等,主要用于记录客户的预定信息,会使用到用户、客户、菜单和折扣信息。

图3.9 折扣E-R 图

存储管理员(店主)设定的打折信息,用来计算打折后的应付金额,使用在添加预定时打折。

3.5.3 数据表的设计 1、 user (用户表)

表3.1 user

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

用于用户登录,添加客户和添加预定时会使用到用户信息来记录经手的用户,字段money 用于记录用户的收款金额,便于结算时对收款现金的核对。

2、 customer (客户表)

表3.2 customer

等等,主要用于客户订餐、充值和结算,字段money 用于储存账户余额,在使用充值和账户余额支付时会使用到它。字段usedmoney 用于记录客户的消费情况,为客户打折时会使用到它。

3、 food (食谱表)

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

表3.3 food

客户订餐,使用于添加预定。字段Price 记录的是食物的价格。当客户预定餐点时,系统使用它来算费用。

4、 YuDing (预定表)

表3.4 YuDing

等,主要用于记录客户的预定信息,会使用到用户、客户、菜单和折扣信息。当系统预定餐点时,会从其他各表中调出需要的信息,经过计算和处理后,将最终信息储存到YuDing 表,该表和其它各表都有紧密的联系。

5、 discount (折扣表)

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

表3.5 discount

使用在添加预定时打折。当客户预定餐点时,打折服务的折扣程度就是参照该表。

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

第四章 系统详细设计

4.1 数据库

4.1.1 数据库的链接

为了便于用户使用和维护,我们将与数据库的连接,单独写出来并进行编译,这样系统在新的环境使用时,只需改动一处数据库连接代码,即可立即使用,连接关键代码如下:

Public Shared constr As String = "Data Source=WWW-3C702F2C1C8\SQLEXPRESS;Initial Catalog=dcdatebase;Integrated Security=True" 其中Public Shared constr As String = "Data

Source=WWW-3C702F2C1C8\SQLEXPRESS;Initial Catalog=dcdatebase;Integrated Security=True"是数据库连接语句,WWW-3C702F2C1C8是计算机名。

4.1.2 Is_SQL_Cmd方法

方法Is_SQL_Cmd是判断数据是否存在,当系统登录和添加客户需要验证数据库中是否存在提交的数据时会用到它。其主要代码如下:

Public Function Is_SQL_Cmd(ByVal cmdstr As String) As Boolean SqlConn = New SqlConnection(constr) SqlConn.Open()

SqlCmd = New SqlCommand(cmdstr, SqlConn) Try

SqlDr = SqlCmd.ExecuteReader() If SqlDr.HasRows Then Return True Else

Return False End If

Catch ex As Exception Return False

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

Finally

SqlConn.Close() End Try End Function 4.1.3 SQL_Ada方法

方法SQL_Ada是为了查询数据库,并将查询到的结果存放在内存中的datatable 表中,餐饮信息管理系统中使用到的组件DataGridView 再从datatable 表中得到数据。

Public Function SQL_Ada(ByVal adastr As String) As DataTable SqlConn = New SqlConnection(constr) SqlConn.Open()

SqlAda = New SqlDataAdapter(adastr, SqlConn) ds = New DataSet Try

SqlAda.Fill(ds) Return ds.Tables(0) Catch ex As Exception Return New DataTable Finally

SqlConn.Close() End Try End Function 4.1.4 ExecCmd过程

ExecCmd 是为系统中的添加、删除、修改服务,系统里的客户、菜单、折扣和员工的添加、删除和修改都用到了该过程。

Public Sub ExecCmd(ByVal cmdstr As String) SqlConn = New SqlConnection(constr) SqlConn.Open()

SqlCmd = New SqlCommand(cmdstr, SqlConn)

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

SqlCmd.ExecuteNonQuery() End Sub

4.2 系统的登录与注销

4.2.1 用户登陆模块的实现

图4.1 用户登录

用户登陆模块是防止非法用户登陆的第一道防线,通过它可以保护后台数据库的安全性,当用户要进行系统操作时,首先要进入的就是身份验证界面,只有在密码正确的情况下才能进行以后的操作,如果输入的密码不正确,则不能进行登录对系统进行操作。如果用户以职员的身份进入系统,则只能进行顾客信息管理、菜单信息查询、预定信息管理和充值结算管理,而菜单信息管理、折扣设定、员工管理这些功能将被屏蔽,如果用户以管理员(店长)身份登录,系统的所有功能都将可以使用。以下是“登录”按钮的代码:

cmdstr = "select * from [user] where [user_id] ='" + TextBox1.Text + "' and [pwd]= '" + TextBox2.Text + "' and [style]= '" + ComboBox1.Text + "'" Try

If sqlobject.Is_SQL_Cmd(cmdstr) Then main.m_Login = True

...... //类似部分省略

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

Me.Close() Else

MsgBox("请填写正确的用户名、密码和用户类型!") End If

Catch ex As Exception main.OPErr.WriteErr(ex)

End Try

系统先进行数据库操作,判断是否存在用户名、用户密码和用户类型完全符合要求的数据,如果存在,则说明用户可以登录,同时把登录的用户类型和用户名告诉需要用到用户类型和用户名数据的模块如系统主界面、充值模块和买单模块等等。

4.2.2 用户注销模块的实现 用户注销模块的代码如下:

Private Sub 注销ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 注销ToolStripMenuItem.Click Me.m_style = "" Me.m_Login = False

For Each ChildForm As Form In Me.MdiChildren ChildForm.Close() Next

main_Load(sender, e) Login.Show()

Me.ToolStripStatusLabel1.Text = "登录"

End Sub

用户通过本模块可以注销系统,系统恢复到登录前画面,这样就可以防止在用户离开后,系统数据被人恶意修改。

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

4.3 客户信息管理

4.3.1 客户信息的添加

图4.2 客户的添加

当用户点击添加按钮时,系统执行以下代码:

CmdStr = "SELECT id FROM [customer] where id='" + TextBox2.Text + "'" If TextBox2.Text = "" Then //身份证不为空 MsgBox("请输入身份证号") TextBox2.Focus()

ElseIf sqlobject.Is_SQL_Cmd(CmdStr) Then //检查是否已注册 MsgBox("该客户已经存在") TextBox2.Focus()

...... //中间还有很多类似的验证 Else

CmdStr = "insert into customer

(name,id,address,birthday,pwd,addtime,money,usedmoney,tel,mobilephone,userid)VALUES('" + TextBox1.Text + "','" + TextBox2.Text + "','" + TextBox3.Text + "','" + DateTimePicker1.Value.ToString + "','" + TextBox6.Text + "','" + Now + "','" + "0" + "','" + "0" + "','" +

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

TextBox4.Text + "','" + TextBox5.Text + "','" + user + "')" Try

sqlobject.ExecCmd(CmdStr) //添加客户 MsgBox("添加成功") // 添加成功提示 FileUrl = "" //复位空格 ......

Catch ex As Exception main.OPErr.WriteErr(ex) End Try End If End Sub

在添加用户前,系统进行了详细的表单验证,包括验证要提交的客户是否已经存在,用户两次输入的密码是否一样,以及联系方式不为空等等。使用insert 语句将通过验证的表格中的数据提交到数据库。菜单信息添加模块与本模块的原理类似,以下不再阐述。

4.3.2 图像的处理

如果用户在上面添加客户信息时,添加了图像信息,那么系统就会执行以下命令: If FileUrl "" Then //图像存在的话,添加图像 Dim imgstreem As New FileStream(FileUrl, FileMode.Open, FileAccess.Read) Dim imgbyte(imgstreem.Length) As Byte imgstreem.Read(imgbyte, 0, imgstreem.Length) imgstreem.Close()

Dim sqlcmd As New System.Data.SqlClient.SqlCommand Dim sqlconn As New

System.Data.SqlClient.SqlConnection(SQL_Conn.constr)

CmdStr = "update customer set photo=@image where id='" + TextBox2.Text + "'"

sqlcmd.Parameters.Add("@image", SqlDbType.Image) sqlcmd.Parameters("@image").Value = imgbyte

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

sqlcmd.Connection = sqlconn sqlcmd.CommandText = CmdStr Try

sqlconn.Open()

sqlcmd.ExecuteNonQuery() sqlconn.Close() Catch ex As Exception main.OPErr.WriteErr(ex) End Try End If

如果用户提交了客户的相片,相片将会被转化为二进制数据提交到数据库中,这样就可以方便用户日后对客户资料进行维护,也有助于服务人员记住客户,当客户再次光临时,一口报出客户的名字将会使客户对餐厅的好感大增。

4.3.3 客户信息的修改

图4.3 客户信息的修改

当客户资料因实际情况发生变更时,可以修改系统中的资料数据,用户需提供注册时所使用的客户密码。使用密码可以防止客户的资料被恶意修改。充分保护客户权益,即使是管理员也不能在不经过客户同意的情况下修改客户数据。以下是修改按钮的代码。

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

CmdStr = "select pwd from customer where pwd='" + TextBox12.Text + "' and id ='" + TextBox8.Text + "'" //确定客户身份代码 ...... //省略验证信息

If sqlobject.Is_SQL_Cmd(CmdStr) Then //如果客户同意修改的话继续 CmdStr = "update customer set address='" + TextBox9.Text + "'" + ",tel='" + TextBox10.Text + "'" + ",mobilephone='" + TextBox11.Text + "'" + ",pwd='" + TextBox13.Text + "'" + " where id='" + TextBox8.Text + "'" Try

sqlobject.ExecCmd(CmdStr) //执行更新 MsgBox("修改成功") TextBox8.Text = "" ......

PictureBox2.Image = Nothing

Call TabControl1_SelectedIndexChanged(sender, e) Catch ex As Exception main.OPErr.WriteErr(ex) End Try Else

MsgBox("密码错误") End If

使用方法Is_SQL_Cmd验证客户密码的正确性,如果原始密码正确,用户在输入新密码后可以进行对联系方式等基本资料进行修改。使用update 语句将空格中的数据更新到服务器。如果更新成功,系统会弹出“修改成功的提示”。 菜单信息修改模块与本模块的原理类似,以下不再阐述。

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

4.3.4 客户信息的删除

客户信息可以在得到客户确认的情况下删除,因设计到账户余额问题所以在进行此操作时万分谨慎。客户资料来之不易,建议不要轻易删除客户资料。以下是删除模块的程序代码:

Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click If TextBox12.Text = "" Then MsgBox("请输入用户密码") TextBox12.Focus() Else

CmdStr = "select pwd from customer where pwd='" + TextBox12.Text + "' and id ='" + TextBox8.Text + "'" //用户密码确认 If sqlobject.Is_SQL_Cmd(CmdStr) Then

CmdStr = "delete from customer where id='" + TextBox8.Text + "'" Try

sqlobject.ExecCmd(CmdStr) //执行删除命令 MsgBox("删除成功")

PictureBox2.Image = Nothing Catch ex As Exception main.OPErr.WriteErr(ex) End Try Else

MsgBox("密码错误") End If End If

Call TabControl1_SelectedIndexChanged(sender, e) End Sub

系统先对客户密码进行了核对,密码正确的话,使用delete 语句,根据客户的

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

身份证号对数据库中的客户数据进行删除。因添加客户数据时要求身份证号是唯一的,所以不用担心误删的问题。菜单信息删除模块与本模块的原理类似,以下不再阐述。

4.3.5 客户信息的查询

图4.4 客户信息的查询

1、客户查询模块载入

Private Sub kehuchaxun_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load sqlobject = New SQL_Conn

CmdStr = "SELECT name as '客户姓名',id as '身份证',address as '家庭地址',tel as '电话号码',mobilephone as '手机号码' ,money as '账户余额' ,usedmoney as '已消费额'FROM customer" Try

Me.DataGridView1.DataSource = sqlobject.SQL_Ada(CmdStr) Catch ex As Exception main.OPErr.WriteErr(ex) End Try

Me.DataGridView1.AutoSizeColumnsMode =

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

DataGridViewAutoSizeColumnsMode.DisplayedCells

End Sub

使用SQL_Ada方法,查询customer 表中的个别数据,将数据库中的数据提取出来保存在内存中的datatable 表中,客户信息查询中的DataGridView 组件将内存中的datatable 数据表里的数据提取出来显示给用户查看。

2、当点击DataGridView 组建中的任意一客户资料时,在组件左边的PictureBox 中将显示客户照片。

Private Sub DataGridView1_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick

If row e.RowIndex And e.RowIndex >= 0 Then row = e.RowIndex

Label1.Text = Me.DataGridView1.Item(0, row).Value.ToString.Trim() If Label1.Text "" Then

CmdStr = "select photo from customer where name='" + Label1.Text + "'" DisplayImg(CmdStr)

Else : PictureBox1.Image = Nothing End If End If

End Sub

其中If row e.RowIndex And e.RowIndex >= 0 中e.RowIndex 指的是点击的行数,第一行为0。Label1.Text = Me.DataGridView1.Item(0,

row).Value.ToString.Trim()是为了取所选行数的第一列值,即客户姓名。If Label1.Text "" Then是指如果label1不为空, CmdStr = "select photo from customer where name='" + Label1.Text + "'"是SQL 语句查询图片数据。DisplayImg(CmdStr)是在DisplayImg 方法中执行SQL 语句。Else : PictureBox1.Image = Nothing指不满足条件时,清空图像。

3、DisplayImg 方法

Private Sub DisplayImg(ByVal str As String)

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

sqlobject.SQL_Ada(str)

If sqlobject.SQL_Ada(str).Rows(0).Item(0) Is DBNull.Value Then PictureBox1.Image = Nothing Else

Dim imgbyte() As Byte = sqlobject.SQL_Ada(str).Rows(0).Item(0)

Dim imgmemory As New MemoryStream(imgbyte) PictureBox1.Image = Image.FromStream(imgmemory) End If End Sub

DisplayImg 方法的作用是读出数据库中保存的二进制图像。 菜单信息查询模块与本模块的原理类似,以下不在阐述。

4.4 添加预定信息

图4.5 添加预定信息

系统在窗口载入时,先查询了客户和菜单两张表,将数据显示在窗体左边,供用户选择时使用,其代码和客户查询类似这里不再叙述。本节介绍其他功能的实现。

4.4.1 日期时间桌号的核对

为了防止客户预定的餐桌出现重合的情况,添加预定的餐桌时系统执行以下代

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

码:

Private Sub DateTimePicker1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DateTimePicker1.ValueChanged sqlobject = New SQL_Conn

CmdStr = "select tableid from YuDing where tableid='" + ComboBox1.Text + "'and date='" + DateTimePicker1.Value.ToString + "'and time='" + ComboBox2.Text + "'"

If sqlobject.Is_SQL_Cmd(CmdStr) Then MsgBox("在此时刻此桌已有预定") End If End Sub

当桌号、时间或者日期中任何一条改动时,程序都会使用方法Is_SQL_Cmd执行查找一次数据库,看在此时刻此桌是否已有预定信息的记录,如果已有相同记录,系统就会提示“在此时刻此桌已有预定”。

4.4.2 打折信息处理

当用户向系统添加预定的菜品时,系统会执行以下代码:

If Label6.Text = "" Then //选择客户 MsgBox("请选择客户")

ElseIf Label12.Text = "" Then //选择菜单 MsgBox("请选择菜单") Else

Label14.Text = Label14.Text + Label10.Text + " " //所点菜单 price = Label12.Text

totle += price //总消费金额 Label16.Text = totle Label18.Text = totle

CmdStr = "select usedmoney from discount" //查询设定的消费金额 Cmd = "select discount from discount" //查询设定的打折程度 Cm = "SELECT usedmoney FROM [customer] where id='" + Label6.Text + "'"

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

//客户已消费金额

f = (sqlobject.SQL_Ada(Cm).Rows(0).Item(0)) //f为客户已消费金额 Try

For i = 0 To sqlobject.SQL_Ada(CmdStr).Rows.Count – 1 //打折表行数 j = (sqlobject.SQL_Ada(CmdStr).Rows(i).Item(0)) //打折表行消费金额 d = (sqlobject.SQL_Ada(Cmd).Rows(i).Item(0)) //打折表行折扣率 If (f >= j) Then

Label18.Text = totle * d / 10 End If Next i

Catch ex As Exception main.OPErr.WriteErr(ex) End Try End If

End Sub

首先选择客户和预定的餐点,客户信息用于判断打折程度,餐点用于结算消费金额。用累加的方法计算出总消费金额,系统先在数据表中查询客户信息中的客户已消费金额,再用查出的金额与数据库对比,判断打折程度。具体方法是系统先查看折扣数据表中共有的数据行数,然后从第0行开始依次向下扫描,由于添加打折信息时是按照消费额度递增方式添加的,所以系统查到的数据会越来越大,越来越接近客户已消费金额,当已消费金额刚好超过设定的金额时系统停止继续向下查找新的设定金额,同时查找设定金额对应的打折程度,再用此打折程度计算打折后的实付金额。

4.4.3 取消预定信息

系统根据用户选择的预定信息,执行删除命令,其关键代码如下:

CmdStr = "delete from YuDing where name='" + Label25.Text + "'and date='" + Label27.Text + "'and time='" + Label28.Text + "'and tableid='" + Label30.Text + "'" Try

sqlobject.ExecCmd(CmdStr)

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

4.4.4 预定信息查询

图4.6 预定查询

当预定查询模块载入时,系统执行以下语句:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load sqlobject = New SQL_Conn

CmdStr = "SELECT name as '客户姓名',customerid as '身份证',date as '预定日期',time as '预定时间',tableid as '餐桌号',money as '结算价格',food as '预定菜单',userid as '服务员编号' FROM YuDing" Try

Me.DataGridView1.DataSource = sqlobject.SQL_Ada(CmdStr) Catch ex As Exception main.OPErr.WriteErr(ex) End Try

Me.DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells End Sub

当预定查询模块载入时读取数据库中的预定信息并且显示在DataGridView 组件中显示给用户查看,餐厅的厨房就是使用这一模块来获取需要准备的餐点。

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

当用户知道想要查找的预定信息中的某些确切内容时,可以将知道的内容输入空格中,系统将会自动在数据库中查找这些内容。关键代码如下:

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged TextBox2.Text = "" TextBox3.Text = "" sqlobject = New SQL_Conn

CmdStr = "SELECT name as '客户姓名',customerid as '身份证',date as '预定日期',time as '预定时间',tableid as '餐桌号',money as '结算价格',food as '预定菜单',userid as '服务员编号' FROM YuDing where name='" + TextBox1.Text + "'" Try

Me.DataGridView1.DataSource = sqlobject.SQL_Ada(CmdStr) Catch ex As Exception main.OPErr.WriteErr(ex) End Try

Me.DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells End Sub

当根据姓名查找、根据日期查找和根据餐桌号查找的文本框中的数据被改动时,系统根据改动后的数据,使用CmdStr 所代表的SQL 语句查找数据库中的信息。并将新的信息显示在DataGridView 组件中。

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

4.5充值与结算

4.5.1 客户充值

图4.7 客户充值

用户充值会模块会调取数据库中的customer 表里的money 数据,当用户选择要充值的客户后,系统会提取对应客户的客户余额,当用户确定添加后,系统会用客户余额加上客户充值的金额,然后把得到的结果更新到数据库中客户的账户余额中同时系统也会以同样的方法更新数据库user 表中的收款金额money 数据。 然后再刷新DataGridView 组件中的数据信息。当用户点击充值按钮时,系统执行以下代码: If Label6.Text "" Then a = Label6.Text

If TextBox1.Text "" Then b = TextBox1.Text money = a + b

CmdStr = "update customer set money ='" + money.ToString + "' where name='" + Label4.Text + "'" Try

sqlobject.ExecCmd(CmdStr) //更新充值后的客户数据库 Cmd = "SELECT money FROM [user] where user_id='" + userid + "'"

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

money = (sqlobject.SQL_Ada(Cmd).Rows(0).Item(0)) a = money + b

CmdStr = "update [user] set money ='" + a.ToString + "' where user_id='" + userid + "'"

sqlobject.ExecCmd(CmdStr) //更新充值后的用户数据库 MsgBox("充值成功") Catch ex As Exception main.OPErr.WriteErr(ex) End Try

sqlobject = New SQL_Conn

CmdStr = "SELECT name as '客户姓名',id as '身份证',money as '余额' FROM customer" Try

Me.DataGridView1.DataSource = sqlobject.SQL_Ada(CmdStr) Catch ex As Exception main.OPErr.WriteErr(ex) End Try

Me.DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells Label4.Text = "" Label5.Text = "" Label6.Text = "" TextBox1.Text = "" Else : MsgBox("请输入金额") End If

Else : MsgBox("请选择客户") End If

用户充值其实是更新数据库中两张表的内容,系统先把客户的账户余额和用户的实收金额从数据库中调出来,加上用户的充值金额后,再把更新后的金额填入数据库。

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

再用同样的方法对用户收款金额进行更新。两张数据表的作用不同,客户表中的数据指客户的账户余额,用户表中的数据指用户收款金额,方便店长查询员工的收款金额。

4.5.2 客户结算

图4.8 客户买单

买单分为现金支付和余额支付

现金支付:客户使用现金支付的话会增加用户的收款金额,方法和上面的用户充值类似

余额支付:用户若选择余额支付的话需要使用客户密码验证客户身份,然后系统会从数据库中调出客户余额情况,若客户余额不足,系统会给出提示。若余额足够支付客户的消费金额,系统会在客户余额中扣除消费金额。

余额支付和现金支付的最大区别就是余额支付扣客户账户金额,现金支付增加用户实收金额

4.6 折扣设定

折扣设定其实就是往数据库discount 表中添加以消费金额与其对应的折扣程度,在操作中要切记折扣金额从小到大依次添加因为系统在为客户打折时是从折扣表的第0行开始向后依次类推为客户查询对应的折扣程度,所以若表中数据顺序打乱的话,系统得到的折扣程度会变高。

4.7 用户管理

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

4.7.1 用户的添加

图4.9 用户添加

系统先对填入的数据进行核对,确认没有和数据库中的已有数据重复且符合要求后系统会将其添加到user 表中。

4.7.2 用户的删除

用户删除模块的设计要考虑几个问题:1、删除的是管理员(店长)还是普通职员。2、如果删除的是管理员,那么数据库里还有没有其他管理员权限的账号以便下次使用。3、如果删除的账号就是管理员现在所使用的账号怎么办。

用户删除模块的主要代码如下:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim i As Integer Dim j As String j = "店长"

If TextBox4.Text = "" Then MsgBox("请选择要删除的员工") Else

If ComboBox1.Text = "店长" Then

CmdStr = "select Style from [user] where Style='" + j + "'"

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

i = sqlobject.SQL_Ada(CmdStr).Rows.Count //店长级别员工数量 If i > 1 Then

CmdStr = "delete from [user] where id='" + TextBox4.Text + "'" Try

sqlobject.ExecCmd(CmdStr)

If TextBox1.Text = userid Then //删除的账号是正在登陆的账号 MsgBox("删除成功, 请重新登录") main.m_style = "" main.m_Login = False

For Each ChildForm As Form In Me.MdiChildren ChildForm.Close() Next

main.main_Load(sender, e) Login.Show()

main.ToolStripStatusLabel1.Text = "登录" Me.Close() Else

MsgBox("删除成功") End If

Catch ex As Exception main.OPErr.WriteErr(ex) End Try

Else : MsgBox("至少保留一个店长用户") End If Else

CmdStr = "delete from [user] where id='" + TextBox4.Text + "'" Try

sqlobject.ExecCmd(CmdStr)

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

MsgBox("删除成功") Catch ex As Exception main.OPErr.WriteErr(ex) End Try End If End If

Call zhiyuanguanli_Load(sender, e) TextBox1.Text = "" ......

End Sub

删除用户时,如果删除的是职员账户,那么可以直接删除。如果删除的是店主账户,那么系统先判断店主账户有几个,如果只有一个,系统会拒绝删除请求,以防止下次没有店主账户的情况导致无法进入用户管理。如果系统有不止一个店主账户,系统会判断删除的账户是不是现在登陆的账户,如果是的话删除完成后需重新登录。

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

总 结

当初之所以选择餐饮信息管理系统,不仅仅是因为其具有挑战性,更是因为它更加符合中国广大的中小餐饮企业的发展需要,大家都知道,中国的餐饮服务行业最多的是个体经营模式,他们根本不会花费过多的费用架设网络服务器,大多数店主都希望有一款产品可以满足餐饮管理的需要而且花费的价格也相对低廉,甚至一次投资终身受益。而餐饮信息管理系统的出现就完全可以满足他们的愿望。餐饮信息管理系统的诞生可以为他们提供便捷的管理服务。并且几乎为零的错误率也使得餐厅可以更好的为顾客服务。它不仅可以为餐厅降低人力资源的付出,节省了成本,而且也可以提升自身的形象,使餐厅迎来更多的食客。

经过这么长时间的努力,餐饮信息管理系统终于得以实现其功能了,在这里我对.NET 技术有了更深一步的认识,程序开发到后来比刚刚开发时的速度要快上好多,一开始遇到问题,我需要停下来查找相关资料,在网上搜实例代码下来学习,自己解决不了还要去请教指导老师,但程序编写到后来就轻松多了,遇到的问题几乎都能自己解决而不像一开始那样。

世界上没有任何一样东西是十全十美的,在完成了餐饮信息管理系统后,我发现,原本看上去应该比较完善的系统又有了新的可以改进的地方,如预定的餐点要取消其中的一份该如何实现。我想如果我把这个功能实现了,也许又会有新的功能需要我去做,系统的完善不是一朝一夕可以完成的,如果给我更多的时间,我一定能将它制作的更好。

此次论文的完成既为大学三年划上了一个完美的句号,也为将来的计算机事业奠定了良好的基础。 在大学里,我一直使自己保持着积极

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

向上的心态,它使我不怕任何困难,以一定要成功的信念完成我的毕业设计内容。而且我相信付出总有回报,三年的大学学习生活成就了我扎实的专业知识,务实的工作作风,良好的组织能力和团队协作精神,相信这些会在我未来的生活和工作中给我带来巨大的帮助。

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

谢 辞

在论文完成之际,我的心情万分激动,虽然已经是深夜,但我依然没有困意。从论文的选题、资料的收集、程序的设计到论文的撰写、编排整个过程中,我付出了很多的努力,但功夫不负有心人,那份锲而不舍的精神使我终于成功了!

毕业论文是对学生大学阶段学习知识的总结,也是对学生分析问题、解决问题能力的综合考察。在本次毕业设计中,我首先要感谢教过我的每一位老师,是你们将我领入了计算机科学的大门,并对我的学习给予了很大的帮助,使我在毕业设计中有了目标和方向。在大学这近三年的时间里,你们对我悉心的指导和教育。使我能够不断地提高学习成绩,而且这些课题的研究成果也成为了本论文的主要素材。同时,我从指导老师翁老师身上学到了很多东西。在我实习期间,翁老师来到我的实习单位,指导我的工作,向实习单位了解我的情况使我非常感动。翁老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我受益匪浅。无论在理论上还是在实践中,她都点拨我指导我,使我学到了很多书本上没有的东西,这对于我以后的工作和学习来说都将是一种宝贵的财富,在此表示最诚挚的谢意。此外,我还要感谢在实习期间一起学习工作生活的同事们,从你们身上,我学到了很多学校里不曾接触的东西。

衷心感谢各位评审的点拨和指导。

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

参考文献

[1]林卓然 . VB语言程序设计 . 电子工业出版社 . 2009-1-1

[2]李英杰 . VB.NET 2005 程序设计实例教程 . 天津大学出版社 . 2008-11-1 [3]杨晶 . VB6.0程序设计教程与实训 . 科学出版社 . 2006-09-01

[4]刘志妩 . 基于VB 和SQL 的数据库编程技术 . 清华大学出版社 . 2008-4-1 [5]刘玉山 . VB数据库项目设计模块化教程 . 机械工业出版社 . 2009-8-1 [6]孟德欣 . VB程序设计 . 清华大学出版社 . 2009-7-1

[7](美)依夫杰 . VB2005&.NET3.0高级编程 . 清华大学出版社 . 2008-2-1 [8]百度百科 . http://baike.baidu.com/

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

毕业设计(论文)报告纸

第 39 页 共 42 页


相关文章

  • 软件工程开题报告
  • 题目 毕业设计(论文)开题报告 基于web 的网上订餐系统的设计与开发 目录 一.选题的依据及意义 .................. 错误!未定义书签. 二.国内外研究概况 ............................... ...查看


  • 餐饮管理系统综述文献综述
  • 餐饮管理系统 文献综述 专业:计算机科学与技术 班级:08级统本 作者:温盛明 指导老师:王沛礼 一.引言 随着社会的进步,人民生活水平的不断提高,餐饮酒店等消费行业得到了迅猛的发展, 现在的餐饮行业正向着规模化,集团化方向发展,传统的经营 ...查看


  • 软件工程导论
  • 黑龙江外国语学院 (学期) 专 业: 班 级: 学生姓名: 课程名称: 任课教师: 2015 年 12 月 4 日 个体餐饮系统设计与实现 杨昊川 摘要 近几今年我国市场经济飞速发展,各行业都呈现出生机勃勃的发展景象,尤其是餐饮业的发展尤为 ...查看


  • 餐饮管理系统数据库设计
  • 餐饮管理系统数据库设计 目录: 第一部分:规划 ---------------------------------------------------2 1.1 建立餐饮管理系统的必要性 -------------------------- ...查看


  • 酒店餐饮管理系统毕业论文
  • 酒店餐饮管理系统摘 要 随着国内经济的发展,买房市场的形成,使得超市之间的竞争越来越激烈,要想在这场竞争中处于优势,超市需要使用更有效的信息化手段,降低运营成本,提高管理和决策效率.本课题正是为这一迫切需要解决的问题而产生的.该系统是以Ja ...查看


  • 餐饮管理系统总体设计说明书
  • 酒店点菜系统管理 总体设计 设计小组:一滴水 设计人:**** 检验员:******** 指导教师:****** 目录 1引言. ....................................................... ...查看


  • 软件工程_餐厅管理系统设计报告
  • 题 目:软件工程餐厅管理设计报告 目 录 ........................................... 错误!未定义书签. 绪 论 ......................................... ...查看


  • 关于酒店餐饮价值链分析
  • 关于酒店餐饮价值链的分析 [摘要]根据价值链的概念,我们把酒店餐饮业价值链定义为酒店餐饮产品从供应到最终消费的一系列传递的过程,它一般由酒店餐饮产品供应商.酒店餐饮消费者组成.酒店餐饮价值链传递的过程也就是酒店餐饮产品不断增值的过程.本文借 ...查看


  • 浅谈餐饮信息化管理系统的设计与开发
  • 浅谈餐饮信息化管理系统的设计与开发 1引言 餐饮业是集即时加工制作.商业销售和服务性劳动于一体,向消费者专门提供各种酒水.食品,消费场所和设施的食品生产经营行业.作为服务业的重要组成部 分,餐饮组织以其市场大.增长快.影响广.吸纳就业能力强 ...查看


热门内容