C#餐饮管理系统详细设计含所有窗体代码.docx

上传人:b****5 文档编号:5843114 上传时间:2023-01-01 格式:DOCX 页数:19 大小:325.01KB
下载 相关 举报
C#餐饮管理系统详细设计含所有窗体代码.docx_第1页
第1页 / 共19页
C#餐饮管理系统详细设计含所有窗体代码.docx_第2页
第2页 / 共19页
C#餐饮管理系统详细设计含所有窗体代码.docx_第3页
第3页 / 共19页
C#餐饮管理系统详细设计含所有窗体代码.docx_第4页
第4页 / 共19页
C#餐饮管理系统详细设计含所有窗体代码.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

C#餐饮管理系统详细设计含所有窗体代码.docx

《C#餐饮管理系统详细设计含所有窗体代码.docx》由会员分享,可在线阅读,更多相关《C#餐饮管理系统详细设计含所有窗体代码.docx(19页珍藏版)》请在冰豆网上搜索。

C#餐饮管理系统详细设计含所有窗体代码.docx

C#餐饮管理系统详细设计含所有窗体代码

餐饮管理系统

1.1开发背景

近几年来,计算机网络、分布技术日趋成熟,随着科技的发展,餐饮业的竞争也越来越激烈。

想在这样竞争激烈的环境下生存,就必须运用科学的管理思想与先进的管理方法,使点餐与管理一体化。

这样不仅提高了工作效率,也避免了以前手工作业的麻烦,从而使管理者能够准确、有效地管理餐饮.因此,餐饮业的管理者更希望从科学的管理中取得竞争的优势,在竞争激烈的商业市场中取胜。

1.2系统分析

1。

2.1需求分析

通过与XXX餐饮公司的沟通和需求分析,要求系统具体以下功能:

●系统操作简单,界面友好

●规范、完善的基础信息设置;

●支持多人操作,要求有权限分配功能;

●为了方便用户,要求系同支持模糊查询;

●实现对消费账目自动结算。

1。

2。

2可行性分析

1.引言

(1)编写目的

以文件的形式给企业的决策层提供项目实施的参考依据,其中包括项目存在的风险、项目需要的投资和能够收获的最大效益。

(2)背景

XXX餐饮公司是一家以餐饮经营为主的私营企业。

为了完善管理制度、增强企业的竞争力、实现信息化管理,公司决定开发餐饮管理系统。

2.可行性研究的前提

(1)要求

餐饮管理系统必须提供桌台信息、菜品信息和人事档案信息的基础设置;强大的查询功能和消费管理功能;可以分不同权限、不同用户对该系统进行操作。

另外,该系统还必须保证数据的安全性、完整性和准确性。

(2)目标

餐饮管理系统的目标是实现企业的信息化管理,节约人力、物力、财力等资源,提高餐饮行业的服务效率并提升企业市场竞争力。

(3)条件、假定和限制

为实现企业的信息化管理,必须对才做人员进行培训,而且将原有的菜品、桌台、人事档案等信息转换为信息化数据,需要操作员花费大量时间和精力来完成,为不影响企业的正常运行,餐饮管理系统必须在两个月的时间内交付用户使用.

系统分析人员需要两个内到位,用户需要4天时间确认需求分析文档。

去除其中可能出现的问题,例如用户可能临时有事,占用5天时间确认需求分析.那么程序开发人员需要在一个月零19天的时间内进行系统设计、程序编码、系统测试、程序调试和程序的打包工作。

其间,还包括员工每周的休息时间。

(4)评价尺度

根据用户的要求,项目主要以桌台信息、菜品信息和查询统计功能为主,对于认识档案和消费信息应该及时准确地保存,并提供相应的查询和统计.

3.投资及效益分析

(1)支出

根据系统的规模及项目的开发周期(两个月),公司决定投入7个人。

为此,公司将直接支付10万元的工资及各种福利待遇。

在项目安装及调试阶段,用户培训、员工出差等费用支出需要2万元。

在项目维护阶段预计需要投入3万元的资金。

累计项目投入需要15万元资金.

(2)收益

用户提供项目资金35万元。

对于项目运行后进行的改动,采取协商的原则根据改动规模额外提供资金。

因此从投资与收益的效益比上看,公司可以获得20万元的利润。

项目完成后,会给公司提供资源储备,包括技术、经验的累积,其后在开发类似的项目时,可以极大地缩短项目开发周期。

4.结论

根据上面的分析,在技术上不会存在问题,因此项目延期的可能性很小.在效益上公司投入7个人、两个月的时间获利20万元,效益比较可观.在公司今后发展上可以储备项目开发的经验和资源。

因此认为该项目可以开发。

1。

3系统设计

1。

3。

1系统目标

本系统属于小型的餐饮管理系统,可以有效地对中小型餐厅消费进行管理。

本系统应达到以下目标:

●系统采用人机交互的方式,界面美观有好,信息查询灵活、方便,数据存储安全可考;

●实现对餐厅客户开台、点菜/加菜、账目查询和结账等操作;

●对用户数的数据进行严格的数据检验,尽可能地避免人为错误;

●实现对消费账目自动结算;

●实现对消费的历史记录进行查询、支持模糊查询;

●系统应最大限度地实现易维护性和易操作性。

1.3。

2系统功能结构

餐饮管理系统功能结构如图1_1所示。

图1_1系统功能结构图

1.3。

3业务逻辑编码规则

遵守程序编码规则所开发的程序,代码清晰、整洁、方便阅读,并可以提高程序的可读性,真正做到“见名知意”。

本节哦哪个数据库设计和程序编码两个方面介绍程序开发中的编码规则。

1.数据库对象命名规则

(1)数据库命名规则

数据库命名以字母db开头(小写),后面加数据库相关英文单词或缩写.下面将举例说明,如表1_1所示.

表1_1数据库命名

数据库名称

描述

db_MrCy

餐饮管理系统数据库

(2)数据表命名规则

数据表命名以字母tb开头(小写),后面加数据库相关英文单词或缩写和数据表名,多个单词间用“_”分隔。

下面将举例说明,如表1_2所示。

表1_2数据表命名

数据表名称

描述

tb_food

点菜信息表

tb_foodtype

菜品类别信息表

(3)字段命名规则

字段一律采用英文单词或词组(可利用翻译软件)命名,如找不到专业的英文单词或词组,可以用相同意义的英文单词或词组代替。

下面将举例说明,表1_3为桌台信息表中的部分字段。

表1_3字段命名

数据表名称

描述

RoomName

桌台名称

RoomJC

桌台位置

RoomZT

桌台状态

2.业务编码规则

(1)桌台编号

桌台的ID编号是餐饮管理系统中桌台的唯一标识,不同的桌台可以通过该编号来区分。

该编号是个字增序号,从数字1开始。

例如1、2、3。

(2)食品类别编号

食品类别编号用于区分食品的不同类别,不同的食品种类可以通过该编号来区分.该编号是个字增序号,从数字1开始。

例如1、2、3.

(3)员工编号

员工编号用于区分各个员工的信息,不同的员工可以通过该编号来区分(即使员工名称相同)。

该编号是个字增序号,从数字1开始。

例如1、2、3。

1.3。

4系统预览

餐饮管理系统由多个窗体组成,下面仅列出几个典型窗体,

主窗体模块如图1_2所示,主要功能是连接系统功能菜单、显示所有桌台和现实系统当前状态.

图1_2主窗体模块

点菜模块如图1_3所示,主要功能是为顾客点菜。

图1_3点/加菜模块

开台模块如图1_4所示,主要功能是实现对指定的桌台进行开台操作。

图1_4开台模块运行结果

结账模块如图1_5所示,主要功能是对指定的桌台进行结账操作,同时,清空结账桌台的所有消费信息。

图1_5结账模块运行结果

1.3。

5业务流程图

餐饮管理系统的业务流程图如图1_6所示。

图1_6餐饮管理系统的业务流程图

1.4数据库设计

1。

4.1数据库概要说明

在本系统中,采用的是SQLServer2008数据库,用来存储商品信息、桌台信息、员工信息、操作员信息等.这里将数据库命名为db_MrCy,其中包含了6张数据表,用于存储不同的信息,如图1_7所示。

图1_7数据库结构

1.4.2数据库概念设计

通过对数据库进行的需求分析、业务流程设计及系统功能结构的确定,规划出系统中使用的数据库实体对象及实体E-R图。

由于商品的种类很多,因此需要对商品进行分类,这样就可以对商品分门别类地进行存储,在查询时可以根据商品类别进行查询,商品信息实体E-R图如图1_8所示。

在数据库中建立一个商品类型信息表,用于存储商品的所有类别信息,商品类别信息实体E-R图如图1_9所示。

图1_8商品信息实体E—R图

图1—9商品类别信息实体E—R图

当顾客进行消费时,顾客会根据自己的需求消费不同的商品,系统将顾客消费的所有信息存储到数据表中,以便顾客结账时查询,在数据库中建立一个顾客消费信息表用于存储顾客的消费记录。

顾客消费信息实体E—R图图如1_10所示。

1_10顾客消费信息实体E-R图

餐厅中会有多个桌台供顾客选择,每个桌台会有不同的信息。

例如,大厅01号桌被顾客使用,顾客人数为5人等,方便操作员对桌台的操作,在数据库中建

立一个桌台信息表用于存储所有桌台的详细信息。

桌台信息实体E—R图如图1_11所示。

图6_11桌台信息实体E—R图

为了对系统进行不同的管理,需要为系统建立管理用户.这些用户通过登录模块登录系统,登录成功之后会根据不同的权限对不同的功能模块进行管理,在数据库中建立一个用户信息表,用于存储登录用户信息。

用户信息实体E—R图如图1_12所示.

图1_12用户信息实体E-R图

在餐饮行业中,餐厅服务员起着及其重要的作用,但是由于服务人员数众多,如果不进行相应的信息记录,可能管理起来会非常困难。

因此,需要对服务人员的详细信息进行记录。

在数据库中建立一个志愿信息表用于存储所有服务人员的信息。

支援信息实体E-R图图如1_13所示。

图1_13职员信息实体E-R图

1。

4。

3数据库逻辑设计

根据设计好的E—R图在数据库中创建各表,系统数据库中各表的结构如下。

1.tb_Food(商品信息表)

tb_Food表用于保存所有商品信息,该表的结构如表1_4所示。

表1_4商品信息表

字段名称

数据类型

字段大小

说明

ID

int

1

系统编号

foodty

char

10

类别编号

foodnum

char

10

商品代号

foodname

varchar

50

商品名称

foodprice

decimal

9

商品价格

2.tb_FoodType(商品类别信息表)

tb_FoodType表用于保存商品类别信息,该表的结构如表1_5所示.

表1_5商品类别信息表

字段名称

数据类型

字段大小

说明

ID

int

4

系统编号

foodtype

varchar

50

商品类别名称

3.tb_GuestFood(顾客消费信息表)

tb_GuestFood表用于保存顾客的消费信息,该表结构如表1_6所示。

表1_6顾客消费信息表

字段名称

数据类型

字段大小

说明

ID

int

4

系统编号

foodnum

char

10

商品代号

foodname

varchar

50

商品名称

foodsum

char

10

消费数量

foodallprice

decimal

9

商品价格

waitername

varchar

50

操作员姓名

beizhu

varchar

50

备注

zhuotai

char

10

消费桌台

datatime

varchar

50

消费时间

4.tb_Room(桌台信息表)

tb_Room表用于保存所有桌台信息,该表结构如表1_7所示。

字段名称

数据类型

字段大小

说明

ID

int

4

系统编号

RoomName

char

10

桌台名称

RoomJC

char

10

桌台简称

RommBJF

decimal

9

桌台包间费

RoomWZ

char

10

桌台位置

RoomSZT

char

10

桌台状态

RoomType

char

10

桌台类型

RoomBZ

varchar

50

桌台备注

RoomQT

varchar

50

桌台其他信息

GuestName

varchar

50

顾客姓名

zhangdanDate

varchar

50

开台时间

Num

int

4

顾客人数

WaiterName

varchar

50

操作员姓名

5.tb_User(用户信息表)

tb_User表用于保存所有系统用户信息,该表结构如表1_8所示。

表1_8用户信息表

字段名称

数据类型

字段大小

说明

ID

int

4

系统编号

UseName

varchar

50

用户登录名

UserPwd

varchar

50

用户登录密码

power

char

10

用户权限

6.tb_Writer(职员信息表)

tb_Writer表用于保存所有职员信息,该表结构如表1_9所示.

表1_9职员信息表

字段名称

数据类型

字段大小

说明

ID

int

4

系统编号

WaiterName

varchar

50

职员姓名

CardNum

varchar

50

身份证号码

WaiterNum

char

10

职员编号

Sex

char

10

性别

Age

char

10

年龄

Tel

varchar

50

电话

1。

5公共类设计

为了节省系统资源,实现代码重用,可以在系统中设计一些公共类.本系统中创建了一个DBConn公共类,该类封装了用于连接数据库的方法。

由于此类对数据库进行操作,所以需要引入一个命名空间,其主要代码如下:

自定义方法CyCon用于连接数据库,此方法返回一个SqlConnection对象,主要代码如下:

1。

6系统登录模块设计

1。

6.1系统登录模块概述

为了使系统的安全性得到保障,大多数系统都开发登录模块。

只有通过登录模块,才能对登录用户进行验证,只有系统的合法用户才可以进入系统的主界面。

登录模块运行结果如图1_14所示.

图1_14登录模块运行结果

1。

6。

2系统登录模块技术分析

运行本系统的登录模块,用户只需要输入用户名和密码,单击“登录”按钮进行验证。

登录模块以登录的用户和密码作为搜索条件,在数据库中进行查询。

使用SqlDataReader对象的HasRows属性判断登录用户名和密码是否正确。

下面介绍SqlDataReader对象的HasRows属性。

HasRows属性用于获取一个bool型的值,该值指示SqlDataReader是否包含一行或多行,语法如下:

publicoverrideboolHasRows{get;}

属性值:

如果SqlDataReader包含一行或多行,则为true;否则为false.

例如,验证登录用户名和密码是否正确,可以通过以下代码实现:

1。

6.3系统登录模块实现过程

该模块需要使用的数据表示:

tb_User

系统登录模块的具体实现步骤如下:

(1)新建一个Windows窗体,命名为frmLogin。

cs,主要用于实现系统的登录功能,该窗体用的主要主要空间表如表1-10所示.

表1_10登录窗体用到的主要控件

控件类型

控件ID

主要属性设置

用途

txtName

输入登录用户名

txtPwd

PasswordChar属性设置为*

输入登录用户密码

btnSubmit

Text属性设置为“登录”

登录

btnCancel

Text属性设置为“取消”

取消

(2)由于餐饮系统使用MicrosoftSQLServer2012作为后台数据库,因为先要引用命名空间,以便在程序操作数据库,关键代码如下:

单击“登录”按钮之后,登录模块首先判断是否输入了用户名和密码,如果没有输入用户名和密码将弹出提示框,提示用户输入登录系统的用户名和密码;如果输入了用户名和密码,系统将判断输入的用户名和密码是否正确,关键代码如下:

当用户输入用户名和密码之后,还可以按Enter键登录系统,实现的原理是:

在输入密码的文本框的KeyPress事件下,判断是否按了Enter键,如果按了Enter键就会激发“登录"按钮的Click事件,关键代码如下:

单击“取消”按钮,退出系统登录,关键代码如下:

1.7开台模块设计

1。

7。

1开台模块概述

当顾客要进行消费时,首先要看一下是否还有可用的桌台,如果还有空闲的桌台,那么就要为顾客开台,只有在开台之后,才能为顾客点菜、查询和结账。

所以开台模块在整个系统中是非常重要的。

开台模块用于对指定的桌台进行开台操作,此功能是通过“开台”窗体实现的,如图1_15所示.

图1_15开台单窗体

1.7。

2开台模块技术分析

在某个桌台上选择其中右键菜单中的“开台”命令,将根据该桌台的名称弹出相应的开台单窗体,在开台单窗体中用户可以对桌台编号、帐单日期、顾客名称、用餐人数、服务员和备注进行录入或更改.数据录入或修改完毕后,单击“保存"按钮完成开台单的操作。

在开发此模块时,主要用到了数据库的更新技术,例如,将姓名为小吕的年龄修改为28,可以使用下面的代码实现:

Updatetb_lssetage=28wherename=’小吕’

1。

7。

3开台模块实现过程

本模块使用的数据表示:

tb_Room、tb_Waiter

(1)新建一个Windows窗体,命名为frmOpen.cs,主要用于实现对指定的桌台进行开台操作的功能,该窗体用到的主要控件如表1_12所示。

表1_12开台单窗体中用到的主要控件

控件类型

控件ID

主要属性设置

用途

txtName

Text属性设置为Guest

输入顾客姓名

txtNum

输入用餐人数

txtBZ

输入开台单备注

cbNum

选择开台的桌台号

cbWaiter

选择开单的服务员

groupBox1

控制布局

dateTimePicker1

选择日期

btnSave

Text属性设置为“保存”

保存

btnExit

Text属性设置为“退出”

退出

(2)首先建立两个公共变量一边程序汇总调用,关键代码如下:

在窗体加载时,将数据库中所有的桌台信息和职员信息检索出来显示在ComboBox控件中,关键代码如下:

(3)在“用餐人数”文本框中输入用餐人数,此数据必须保证为大于0的数字,关键代码如下:

(4)当数据输入完毕之后,单击“保存”按钮即可对指定的桌台进行开台操作,关键代码如下:

1。

8点/加菜模块设计

1。

8.1点/加菜模块概述

为顾客选好桌台,并且开台之后,会根据顾客的需要点菜或购买茶水研究之类的消费品,在点/加菜模块中会显示餐厅特有的一些菜系,用户可以对不同的菜系进行选择。

点/加菜模块运行结果如图1_16所示。

图1_16点/加菜模块运行结果

1.8.2点/加菜模块技术分析

系统点/加菜模块主要利用TreeView控件显示所有的菜系,利用DataGridView控件显示顾客消费的所有信息,当单击某个菜系时,右侧将出现此菜系的所有详细信息,选择菜系后单击“保存"按钮完成对指定桌台的点菜操作。

1.8。

3点/加菜模块实现过程

本模块使用的数据表:

tb_Food、tb_Waiter、tb_Room、tb_GuestFood

点/加菜模块的具体实现步骤如下:

(1)新建一个Windows窗体,命名为frmDC.cs,主要用于实现系统的点菜功能,该窗体用到的主要控件如表1_14所示。

表1_14点/加菜窗体中用到的主要控件

控件类型

控件ID

主要属性设置

用途

tvFood

显示餐厅所有菜系

txtNum

Enabled属性设置为false

显示某个菜系的编号

txtName

Enabled属性设置为false

显示某个菜系的名称

txtPrice

Enabled属性设置为false

显示某个菜系的单价

txtPNum

Text属性设置为1

输入某个菜系的数量

txtAllPrice

Enabled属性设置为false

显示点菜后的总价格

txtRemark

输入备注信息

cbWaiter

选择职员

btnSave

Text属性设置为“保存”

保存

btnDelete

Text属性设置为“删除”

删除

btnExit

Text属性设置为“退出”

退出

dgvFoods

Columns属性中添加7列

用于显示已经点过的菜系的信息

(2)首先建立一个公共变量RName,用于接收指定桌台的名称,关键代码如下:

在窗体加载时,程序首先从数据库中检索出所有菜系名称并显示在TreeView控件中,以便用户选择,关键代码如下:

当用户双击某个菜系使,将在右侧显示该菜系的详细信息,以便用户能够准确选择,关键代码如下:

为了保证消费商品数量文本框中的数据必须为数字,在文本框的KeyPresss事件中添加代码控件输入数据的类型,关键代码如下:

为了保证消费商品的数量时,该商品的总价格会随之改变,实现的方法是在TextBox控件的TextChanged事件中添加代码,关键代码如下:

自定义一个GetData方法,用于显示所有的点菜信息,关键代码如下:

当点菜完毕后,单击“保存”按钮可以对顾客消费的菜系进行保存,以便在结账时对消费金额进行查询,关键代码如下:

如果顾客点菜之后想退掉某个菜,就可以在显示所有消费信息的dataGridView1控件中欲删除的商品,单击“删除”按钮,即可将菜退掉,关键代码如下:

1。

9结账模块设计

1.9.1结账模块概述

顾客消费完毕后,需要对顾客消费清单进行统计,即计算出消费的总额,这些都是通过结账模块实现额.结账模块主要功能是当顾客每次消费时将顾客消费的项目添加到数据库中,在用户结账时通过对数据库的查询,检索出顾客本次消费的商品名称及价格,然后计算出总额,如图1_19所示。

图1_19顾客结账

如果输入的金额小于消费的金额,单击“结账”按钮结账,将弹出“金额不足”的提示信息,如图1_20所示;如果在“收银”文本框中输入了错误的数据,将弹出图1_21所示的提示信息。

图1_20金额不足提示信息

图1_21提示输入的数据必须为数字

1.9。

2结账模块技术分析

本系统的结账模块,首先从数据库中将顾客消费的所有项目检索出来显示到DataGridView控件上,以方便管理员校对消费金额,然后通过程序计算后将顾客消费的总额显示出来,当顾客结账时,输入顾客支付的金额,会出现相应的余额,以方便管理员为顾客退还余额。

在开发此模块式,主要用到SUM聚合函数以桌台名称为搜索条件,查询出消费的总额。

SUM聚合函数用于返回表达式中所有值得和,或只返回DISTINCT值.SUM只能用于数字列。

空值将被忽略。

语法如下:

SUM([ALL|DISTINCT]expression)

●ALL:

对所有的值进行聚合函数运算,ALL是默认设置.

●DISTINCT:

指定SUM返回唯一值的和。

●EXPRESS:

是常量、列火函数,或者是算术、按位与字符串等运算符的任意组合。

Express是精确数字或近似数字数据类型分类(bit数据类型除外)的表达式,不允许使用聚合函数和子查询.

1。

9.3结账模块实现过程

本模块使用的数据表:

tb_GuestFood、tb_Room。

结账模块的具体实现步骤如下:

(1)新建一个Windows窗体,命名为frmJZ.cs,主要用于实现对指定的桌台进行结账操作的功能,该窗体用到的主要控件如表1_15所示.

(2)引用建立两个公共变量,分别用于接收住窗体模块中传递的桌台名称及根据名称查询消费的总额,关键代码如下:

当窗体加载时,首先显示结账的桌台名称,然后通过桌台名称检索出消费的所有账目显示到DataGridView控件上,最后将查询出消费的总金额显示到Label控件上,关键代码如下:

在输入顾客支付金额文本框的KeyPress事件下面添加代码,判断文本框中是否输入了正确的数据,关键代码如下:

当管理员在“收银”文本框中输入顾客支付的金额后,系统将自动计算出退还顾

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

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

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

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