基于客户端和服务器的点菜系统.docx
- 文档编号:25664123
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:24
- 大小:2.93MB
基于客户端和服务器的点菜系统.docx
《基于客户端和服务器的点菜系统.docx》由会员分享,可在线阅读,更多相关《基于客户端和服务器的点菜系统.docx(24页珍藏版)》请在冰豆网上搜索。
基于客户端和服务器的点菜系统
基于客户端和服务器的点菜系统
引论
网络技术的不断发展,传统的点菜方式发生越来越多的变化。
通过现代化的信息技术,构建高效的、共享的信息化平台,建立以服务台为管理中枢的一体化管理网络,实现对餐饮行业进行系统而全方位的集约化和精准化管理。
随着餐饮业的迅速发展和店面规模的不断扩大,大多餐饮企业采用集团和连锁化的运营方式。
此时,联想、清华同方、神州数码等IT企业瞄准了酒店餐饮业信息技术应用市场的巨大潜力,随之众多点菜系统应运而生。
本系统摒弃了传统纯手工的点菜方式,简化了点菜流程,主要有点菜、查单、呼叫服务员,改变了服务方式,使顾客拥有独特的消费体验,同时极大地便利了餐厅的管理和数据统计,并消除了印制纸质菜单的开支,提高了餐厅的服务质量和管理人员的工作效率。
基于C/S模式的点菜系统,即使用客户/服务器模式,具有开放性,而且客户端响应速度快,应用十分广泛。
本系统有两个Java项目,一个是Project-Cli项目,另一个是Project-Ser项目。
此外,有五个表格分别是admin表,bill表,food表,tablenum表,type表。
本系统的特点:
(1)数字化、图形式呈现,全新体验,人性化的自助方式让客人尽在控。
(2)缩短点菜、下单、结帐的时间,提高服务效率,增加客人对酒店服务的满意度。
(3)根据时节的变化,菜单的更换,及时方便。
(4)彻底改变餐厅菜单现状,餐厅升级,促进消费。
1需求分析
1.1系统功能需求
C/S模式的点菜系统包含了客户端和服务器两部分,它们的构建自然,需要分别满足顾客和餐厅管理者的需求。
1、客户端功能
(1)对于顾客,最基本的需求是方便快捷,因此客户端必备的点菜模块中,应包括多种查询功能,并能对非法查询做出提示。
(2)顾客在提交菜单之后,能看到自己的菜单,并能再添菜和退菜,
(3)以往的列表式的菜单,通常只有菜名和价格,顾客只能通过名字推断食物的信息,这显然是很不方便的,因此本系统中应加入部分说明和图片,让顾客一目了然。
(4)顾客在等菜的一段时间里是很枯燥无聊的,所以系统中应或多或少添加一些娱乐休闲的功能,如小游戏等。
(5)饮食和健康在任何时候都是分不开的,因此本系统添加此模块提醒和引导顾客健康饮食。
(6)客户端还应添加一些餐厅的简介和通讯方式,宣传自己的同时也方便了顾客了解,联系餐厅。
2、服务端功能
(1)服务端是整个餐厅服务的一个很重要的环节,它的权限应比较高。
因此服务端登录后才能使用。
(2)至于管理者,他们的基本需求就是能方便地提取顾客的菜单,查询后做菜和结账。
(3)点菜系统一大重要优点就是方便了总菜单的管理,包括增加、删除、更改、查找等。
此模块功能需要比较完善,方便录入信息,添加图片。
菜单的改动也可以立即更新,确保客户获取最新的菜单。
(4)系统应该能统计出餐厅的收入情况,绘制走势图,方便管理者收入管理和政策调整。
(5)餐厅是个开放性场所,顾客常常比较多。
系统中应有发布公告的功能,如发布找人,物品丢失,菜品推荐,优惠信息等。
1.2基本界面要求
本系统的界面设计简洁,独特,符合美学观点且安全性极高,用户使用方便,容易理解,不易出错,有自己的个性[1]。
1.3系统性能要求
软件的性能是软件的一种非功能特征,它关心的是在实现该功能时显示出来的及时性。
本系统性能要求应从以下几个方面考虑:
(1)系统相应时间
对于这样一款餐厅点菜系统来说,它的响应速度关系到顾客能否速度的搜索到喜欢的食物,管理员能否高效的提取顾客菜单。
本系统的响应时间为客户端的响应时间和服务端的响应时间之和,所以我们必须理清系统响应程序,优化SQL语句提高数据库检索速度,优化程序响应方法,将系统响应时间降到最低。
(2)应用延迟时间
系统应该优化数据传输方式,尽量提高代码效率,消除冗余代码,减少没有必要的运行项,减小应用的延迟时间。
(3)吞吐量
吞吐量直接关系着系统的响应时间,决定系统处理客户端请求的效率,是衡量一款软件系统性能的重要参数。
(4)并发用户数
餐厅点菜系统一个餐桌对应一个客户端,系统必须能满足所有客户端同时流畅迅速访问,同时相应所有客户端请求。
本系统采用C/S模式而不是B/S,因此要满足此需求,必须在ServerSocket接受客户端连接之后,利用多线程来处理,完毕之后关闭连接和各种流。
(5)资源利用率
对于服务端,大多时间处于开启状态,接受多个客户端的同时连接,其资源能否有效利用直接关系着处理请求的效率,关乎整个系统的性能。
因此,系统设计中必须考虑对请求分配的有效资源,减少没有必要的资源分配[2]。
2开发工具相关及结构模式简介
2.1开发平台及开发语言Java
Java是从一种高级语言逐步发展为一种平台的。
Java设计者使Java更强大,他们也尽量避免其他面向对象的编程语言(如C++)在复杂的特点。
设计者使Java更加简单易用,使得程序员能写出错误的,更为强大的代码。
也正因为Java的精良设计与完全具备下一代程序语言所必须拥有的所有特点,Java语言早就已经受备受欢迎,尤其是在他们使用其他不易使用且功能更小的程序语言之后,他们更深深地认为能使用Java语言是一件非常幸福的事[3]。
Java技术有着各种各样丰富的应用,每种技术都体现为一种实现或应用的规范。
应当承认,纯粹作为语言来讲,Java并不具备所以的优势,但如果在系统规划时,考虑将系统部署在非Windows平台上,同时也具有所希望的那样:
一次编写,随处运行的特征,那么Java技术应该是首选[4]。
2.2编译工具Eclipse
Eclipse是当前最为流行的集成开发环境,为IBM开发。
该软件普遍应用于各种Java程序的开发,特别是对各种开源产品的支持是非常优越的,而且也是开放源代码,任何人都可以免费下载。
综合Eclipse平台从一开始作为一个服务软件的开发,并逐渐演变成可以为桌面为中心的应用程序平台。
开发一个Java项目的基本过程:
启动Eclipse创建一个Java项目,在项目中创建一个Java包,创建一个Java类编写Java代码,编译后的Java代码执行Java程序,保存并退出packageexplorer视图。
所有Java元素都必须存于Java项目中,只有这样,Eclipse才能正确地将他们识别Java元素。
在一个项目里,程序资源被存储在不同的文件中,而且文件夹还可以嵌套。
实际上,创建一个项目时,项目名称就是项目的最顶层文件夹名称。
Eclipse的项目具有特定的组织结构。
一个项目不但包含文件资源,而且还保存资源描述信息、项目构建信息等,每个项目都有自己的元数据,这是Eclipse操作项目的依据。
Eclipse是基于Java的可扩展开发平台,Eclipse开发小组是要将它设计成为可以进行任何开发的平台。
它插件设计使人们完全可以相信它可以完成这个功能[5]。
2.3数据库MySQL
MySQL是一个关系数据库管理系统ORACLE公司发行的,相对于其他的大型数据库,MySQL也有其缺点,但也有自己的优点。
MySQL是目前也是全球最流行的开放源代码数据库管理系统之一。
MySQL软件提供了一个高速、多用户、多线程非常强大的SQL数据库服务器。
MySQLServer用于重负载、任务关键型的软件系统,也能够嵌入到群体开发的软件中[6]。
SQL包括数据的定义、操作以及与数据库相关的全部功能。
SQL语言是在1974年有美国的IBM公司提出的主要功能可以分为三类,分别是数据定义功能、数据操作功能以及数据控制功能。
MySQL是MySQLAB公司的注册商标。
MySQL具备双重许可。
用户能够选择把MySQL软件作为GNU普通大众许可权条款下的一个开放源代码产品投入使用,或从MySQLAB公司购买标准的商业使用许可权。
2.4软件体系结构C/S
本系统是基于C/S框架的设计的,C/S结构即Client/Server结构,是大家了解的软件系统体系结构的。
C/S结构的出现同时是为了解决费用和性能的矛盾,最简单的C/S体系架构的数据库应用由两部分组成,可分别称为前台程序和后台程序。
客户程序运行在用户自己的计算机上,对应于服务器计算机,可称为客户计算机;而服务器则实现DBMS的核心功能,连接和操作数据库,响应请求等。
这种通信方式是简单的,软件开发起来也是相当容易的[7]。
3系统结构框架介绍
3.1服务流程演示
本系统摒弃了传统点菜方式,简化了点菜流程,改变了服务方式,使顾客拥有独特的消费体验,同时极大地便利了餐厅的管理和数据统计,并消除了印制纸质菜单的开支,提高了餐厅的服务质量和管理人员的工作效率。
服务流程如图3-1所示:
图3-1服务流程图
3.2整体结构设计
本系统是基于C/S体系结构的,即整个系统分为客户端和服务端,它们相互联系,又分别具有独自的功能。
客户端面向顾客设计,偏向时尚便捷,主要包含了点菜、餐厅简介、休闲娱乐、呼叫服务员、饮食与健康和显示公告六个模块。
服务端面向管理者设计,注重方便高效,包括提取顾客菜单、修改菜单、收入管理和发布公告四个模块。
模块图如图3-2所示:
图3-2模块图
(1)提取菜单模块:
此模块功能包括接收和检索客户提交的菜单,并能显示出总价等信息,省除了服务员计算价格的麻烦,之后能为顾客结账,极大提高了服务效率。
(2)修改菜单模块:
管理者可以通过此模块去维护菜单,对菜单进行增加、删除、更改、查找操作。
增添操作支持多条数据同时添加,并能对各种非法操作做出提示。
查询操作包含名称关键字查询、类别查询、价格区间查询和全部查询,也可以多条件混合查询。
(3)收入管理模块:
此模块是为了方便管理者的收入统计,以便了解以往经营情况,做出政策调整等。
数据通过走势图和列表的形式呈现,管理员可以随意切换视图,也可以选择任意年月查询。
(4)发布公告模块:
公共场所往往少不了发布广播的操作,此模块正为此而设计。
管理员只需选择主题,填写内容,发布即可。
公告内容会通过UDP广播的方式发送到所有客户端。
(5)点菜模块:
这是客户端的核心模块,功能包括查询菜单,点菜,提交和查看自己的菜单等。
该模块同样设计了两个模式,图片模式和列表模式。
查询的所有内容都是实时的,保证了顾客获取到的菜单都是最新的。
选菜和提交菜单的操作比较简单人性化,基本无需查看帮助。
(6)餐厅简介模块:
此模块是顾客了解餐厅、联系餐厅的接口,内部详细介绍了餐厅的历史、服务理念、联系方式等。
界面上的设计也比较时尚,图片滚动和面板的切换引人注目。
(7)休闲娱乐模块:
此处安排的功能比较简单,主要是提供顾客在等菜期间使用,内置了两款小游戏,五子棋和连连看,使顾客在无聊之时也不乏乐趣,功能简单,但趣味丰富。
(8)呼叫服务员模块:
顾名思义此模块仅仅是为了方便顾客寻求服务,当客户呼叫服务员时,服务端立刻收到请求,安排服务员前来服务。
(9)饮食与健康模块:
饮食和健康在任何时候都是分不开的,因此本系统添加此模块提醒和引导顾客健康饮食。
此模块采用收集了十余篇关于饮食健康方面的文章,供顾客阅读。
(10)显示公告模块:
此模块主要是为了接收和显示服务端的公告信息,同时也会显示用户提交菜单等操作的提醒信息。
4系统详细设计
4.1数据库设计
根据业务需求和逻辑关系,本系统一共设计了5张数据表,包括食物表(food),账单表(bill),分类表(type),桌号表(tableNum)和管理员表(admin)。
下面将各张表详细介绍如下:
(1)食物表(food)
食物表的结构及相关说明如表4-1所示。
表4-1食物表(food)
列名
数据类型
大小
是否为空
描述
num
int
11
否
食物编号(主键)
name
varchar
255
否
食物名称
Type_id
int
13
否
所属类型编号(外键)
price
int
12
否
价格
instruction
varchar
255
是
说明
picture
varchar
255
是
图片链接
(2)账单表(bill)
账单表的结构及相关说明如表4-2所示。
表4-2账单表(bill)
列名
数据类型
大小
是否为空
描述
num
varchar
255
否
账单编号
name
varchar
255
否
食物名称
price
int
12
否
价格
count
int
11
否
数量
flag
int
11
否
结账标志
(3)菜类表(type)
菜类表如表4-3所示。
表4-3菜类表(type)
列名
数据类型
大小
是否为空
描述
num
int
11
否
菜类编号(主键)
name
varchar
255
否
菜类名称
(4)桌号表(tableNum)
桌号表如表4-4所示。
表4-4桌号表(tableNum)
列名
数据类型
大小
是否为空
描述
num
int
12
否
桌号(主键)
(5)管理员表(admin)
管理员表如表4-5所示。
表4-5管理员表(admin)
列名
数据类型
大小
是否为空
描述
num
int
12
否
工号(主键)
name
varchar
13
否
姓名
password
varchar
255
否
密码
position
varchar
255
否
职位
4.2服务端设计
(1)主界面:
服务端主界面采用了jtattoo主题包中的木质XP风格,设计简约而时尚。
左侧面板包含功能按钮区域和消息提醒区域,功能按钮初始时呈现为不可用状态,管理员登陆之后自动解锁,消息提醒区域主要显示顾客提交菜单消息和结账消息。
右侧为各个功能模块的显示区域,管理员点击功能按钮之后,此区域自动移除当前面板,显示管理员所需面板。
初始界面包括餐厅的服务宗旨,多功能日历,当前时间显示和登陆框,在管理员登陆之后,登陆框消失,管理员的主要信息会显示在界面上。
另外,为了避免可能的信息丢失,此系统禁用了windows的关闭按钮,管理员必须通过界面上的退出按钮合法关闭程序。
如图4-1所示:
图4-1服务端主界面
(2)提取菜单模块:
此模块是服务端非常重要的模块,内部功能包括查看所有未结账餐桌信息,检索顾客具体菜单和为顾客结账等。
查询方式包括按桌号查询和全部查询,搜索结果显示在上面一个表中,表内包含账单编号,桌号总价和结账标志。
当管理员点击其中一行时,下面一张表会立即显示此菜单详细信息,包括菜名,价格,数量,同时下面会显示此菜单的总价和桌号。
为顾客结账时,只用选中对应菜单点击结账确定即可,之后界面左侧会显示结账信息,十分方便快捷。
如图4-2所示:
图4-2提取菜单模块
(3)修改菜单模块:
此模块是为了方便管理者维护菜单,消减菜单印制开支而设计的,包含了增加、删除、更改、查找功能。
增加:
本系统为菜单的添加单独开辟了一个界面,使用JTable来实现数据的录入,具体信息包括菜号、菜名、类别、价格、说明、图片。
其中表内类别一列设计为选择框,管理员可以直接从框内选择类别,而无需键盘输入。
图片一列使用文件按钮来实现,管理员只需选择相应图片路径即可,当确认添加图片会以流的方式自动复制到系统中。
删除:
菜单的删除操作包括数据库内表项的删除和图片的删除。
本系统将二者合为一体,管理员只需选中对应菜单项,点击删除按钮确定即可,后台会自动找到表项和图片,进行清除。
更改:
类似于删除操作,我们可以在菜单信息内直接对其修改。
图片名称和菜名一致,随着菜名的更改而同步修改。
菜单号是食物的主键,菜的删改都是按菜单号操作的,因此系统中不允许改动。
查:
本系统中提供了按菜名关键字,种类,价格区间查询和全部查询,结果直接显示在列表中,操作便利快捷。
部分效果如图4-3所示:
图4-3修改菜单模块
(4)收入管理模块:
任何行业的管理者都常常会做收入统计,查看以往收入走势,分析情形,做出政策调整等,此模块正为此而设计。
系统使用了jfreechart作图包绘制了各月的走势图。
除了走势图,本系统还设计了一个统计表,列出了相应月份的总体收入和同比上月增长值,管理员可以自由切换走势图和表格视图。
如图4-4所示:
图4-4收入管理模块
(5)发布公告模块:
此模块界面上比较简单,主要设计在实现方面。
公告主题是个选择框,有普通公告,物品认领,寻人问事和广告几个主题。
发送过程采用UDP广播方式,公告一经发出,所有的客户端都能立即收到,满足了公告的及时性。
如图4-5所示:
图4-5发布公告模块
4.3客户端设计
(1)主界面:
相比于服务端,客户端的主界面更显时尚美观,总体采用椭圆形按钮,浅蓝色皮肤。
主界面上下两排大号按钮,中间显示区域,操作时还可将上下按钮隐藏,类似平板电脑的界面,动感十足。
初始界面同样包括一款日历,时间,公告面板,服务宗旨,桌号显示,还有个隐藏的登陆框,供管理员修改桌号。
同样服务端也禁用了windows的关闭按钮。
具体如图4-6所示:
图4-6客户端主界面
(2)点菜模块:
此部分是客户端的核心模块,也是个难点部分。
该界面包括查询模块,总菜单模块和我的菜单模块。
查询模块可以进行按菜名关键字、种类、价格区间查询等,当查询提交时,请求发给服务端处理,然后将对应食物信息反馈给客户端。
总菜单用来显示查询结果,包括图片视图和列表视图。
默认显示的是图片视图,由于图片比例表更占空间,所以图片模式用分页来显示,每页最多显示15张图片和对应信息,下端包括上下页按钮,跳页按钮等。
列表模式采用滚动条处理,能显示更加详细的信息。
我的选择面板用来显示顾客所选的菜单和总价信息,当顾客双击一个菜的图片或信息时,该菜自动添加到此面板中,如果选择重复的菜,则数量自动加一。
顾客选完菜时,只需点击提交按钮,菜单会发送给服务端交给管理员处理,同时我的菜单按钮变为可用,顾客可以查看自己的菜单或继续添菜。
如图4-7所示:
图4-7点菜模块
(3)餐厅简介模块:
简介模块的优劣直接关系着餐厅的形象,本系统的简介模块中详细介绍了餐厅的历史,理念,地址,联系方式等,还加入餐厅标志、内部、周边环境图片等。
整体包含两部分,即中间显示区域和两侧的图片区域。
中间显示区域使用了面板切换方式,显示简介面板,隐藏联系方式面板,用户可以自由切换。
两侧图片区域采用线程处理,制造出左上右下的滚动效果,十分美观动感,如图4-8所示:
图4-8餐厅简介模块
(4)休闲娱乐模块:
此模块主要用于顾客等待期间的消遣,所以制作要求不是很高,本系统内置两款小游戏,五子棋和连连看,使顾客在等菜之时也不乏乐趣。
虽然此模块只添加了2款游戏,总体功能不很全面,但已经足以满足顾客需求。
如图4-9所示:
图4-9休闲娱乐模块
(5)呼叫服务员模块:
传统点菜方式中,服务员在顾客点完菜之后就去为其他顾客服务了,若还需要服务必须得再去寻找,不是很便利,因此本系统设计了此模块。
当需要服务员帮助时,只需点击呼叫按钮即可,管理员可以立即收到信息,然后安排服务员来服务。
此模块操作十分简单因此没有另外设计面板,演示效果如图4-10:
图4-10呼叫服务员模块
(6)饮食与健康模块:
谈到饮食就不得不提起健康,对于食物的选择、营养的搭配等等,都直接关乎我们的健康,此模块旨在提醒和引导顾客健康饮食。
本模块采用树形结构,添加了饮食与健康四个分支:
营养手册、食疗食补、美容瘦身、儿童健康,每个分支又添加了具体的文章,点击名称即可阅读相应内容[8]。
如图4-11所示:
4-11饮食与健康模块
(7)显示公告模块:
对应于服务端的发布公告模块,客户端设计了显示公告模块。
此模块实际上就是个简单的不可编辑的文本区域,被安置在主界面的下排按钮区域,当有公告发来时自动显示在文本内,无论顾客切换到什么面板,显示公告模块始终显现,十分方便。
如图4-12所示:
图4-12显示公告模块
4.4连接桥梁
本系统采用的是C/S模式,总体结构为数据库-服务端-客户端,那么能否将它们完整紧密地连接在一块关乎整个系统能否流畅运行。
4.4.1数据库-服务端
对于各版本的数据库导入,具有通用性。
本系统使用的是MySql数据库,连接分为以下几个步骤:
(1)将MySQL的连接包导入到项目中
(2)加载JDBC驱动程序
(3)连接通过URL地址、用户名和密码获取
(4)之后就可以在程序中使用sql语句进行数据库的操作了。
4.4.2服务端-客户端
服务器和客户端之间的连接是通过网络编程实现,本系统中用到了TCP传输和UDP广播技术。
TCP传输:
TCP的传输是面向连接的,在本系统中的应用主要是客户端请求查询和提交菜单。
服务端使用ServerSocket监听7070端口,使用accept阻塞式地接收客户端的连接。
通过请求的开头字段区分是什么类型的请求,例如接收getAll时,服务端将所有菜的列表发给客户端,当连接结束时,关闭所用的流和连接。
UDP广播:
UDP的传输是非连接的,本系统中主要用它来发布公告。
由于服务端只需要发公告而不用收听,因此服务端发送一次公告之后就关掉,当再次发公告时开启,节省了服务端资源。
而客户端就需要一直开启,时时等待连接,接收DatagramPacket后,转化为字符串,显示到公告区域[9]。
5系统测试
5.1系统主要功能测试
(1)客户端各类查询测试
在类别选择框中随意选择,搜索成功;在价格框输入字母,系统提示输入非法。
在三个搜索框中都录入合法数据,按三个条件同时查询,搜索也能成功。
如图5-1所示:
图5-1客户端查询测试
(2)客户端提交菜单和服务端获取菜单测试
在客户端选择好任意多,任意重复的菜,价格显示正常,之后提交菜单,服务端会立即收到菜单,并能获取到顾客菜单,效果如图5-2所示:
图5-2客户端提交菜单和服务端获取菜单测试
(3)服务端修改菜单测试
在服务端添加一个新菜,填好各个信息并加入图片,马上能查询出来新添加的菜。
之后修改此菜的任意信息,再查询,信息立即更新成功。
最后删除此菜,再次查询,此菜信息消失。
部分效果如5-3所示:
图5-3修改总菜单测试
(4)服务端发布公告测试
运行多个客户端,之后在服务端使用各个主题,发送任意的公告。
结果所有客户端同时收到了公告内容。
如图5-4所示:
图5-4发布公告测试
5.2系统安全与性能测试
(1)系统非法关闭测试
在客户端和服务端上点击windows的关闭按钮,没有任何效果。
在客户端提交任意菜单,之后在服务端修改一条菜的信息,迅速用任务管理器结束掉,重新开启服务端,结果顾客菜单并未消失,而且刚才修改的信息成功保存。
(2)客户端擅自修改桌号测试
在客户端修改桌号区域,尝试错误的工号和密码,合法的桌号等等,则修改未能成功。
如图5-5所示:
图5-5擅自修改桌号测试
(3)服务端错误登陆测试
在服务端登陆区,使用随意的工号、密码登陆,系统提示登陆失败,功能按钮也并未解锁。
如图5-6所示:
图5-6错误登陆测试
6.3测试结果
从本系统的功能、安全和性能等方面的着手,经过反复的严格精密的测试,本系统实现了需求分析要求的各项功能,界面美观优雅,性能稳定可靠,达到了预定的指标。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 客户端 服务器 点菜 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)