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

获取项目源文件,技术交流与指导联系Q:1225467431

 

餐饮管理系统是当今为了适应社会而开发的非常有效的酒店管理方法,它能够全面、准确、有效地完成餐饮业的各种管理工作。传统餐饮业需靠大量人工管理,而本系统的功能则实现了从原材料入库到客人点单,再到结账均无需大量人工来完成记录,人工处理这些信息不仅工作量繁重、复杂,而且容易产生错误和混乱。采用计算机进行信息的有效管理不但能实现管理的规范化,而且还可以避免错误,提高效率,使餐饮业获得更好的业绩。

本系统即针对餐饮业的信息管理而设计制作,在开发酒店餐饮管理系统中,采用jdk1.7搭建管理系统平台和Eclipse8.0作为开发工具,并采用了SQL server 2005数据库管理系统及java,javascript主流开发技术进行了实现流程规范化,数据灵活化配置一套餐饮管理系统。

本餐饮管理系统包括管理员、经理、操作员的有效身份验证登录,然后进入主界面,有前台管理、入库信息,员工信息、桌台管理、物品设置、菜单管理、供应商信息等管理模块,而这些模块的功能又做了进一步的细致划分,从开台、点菜、结账、对菜的增添、对员工资料的有效管理、原材料的合理设置及入库、出库以及原材料的当前库存,到对用户登录信息的管理、系统安全功能的设置等做了全面的实现。从而能够全面、准确、有效地完成餐饮业的各种管理工作,使得餐饮业获得更好的经济效益。

关键词:餐饮管理系统;系统设计;javajavascript

扫描二维码关注公众号,回复: 10547534 查看本文章

ABSTRACT

Restaurant management system is a application softwarel,which is to meet the current needs of hotel restaurant management and more comprehensively, accurately, effectively complete a range of works of restaurant industry.As we all know, traditional restaurant industry must rely on large number of artificial management,but the function of this system has a great relization of storage of raw materials from one point to the guests, no need to check a large number of manual to complete the record without a lot of manual to complete the record.artificial processing this information not only the heavy workload, complex, but also prone to errors and confusion.The effective management of the computer information can not only realize the standardization of the management, but also avoid mistakes, improve efficiency.

so the system is made for catering information management. Hotel catering management system is designed to use jdk1.7 to build management system platform and Eclipse8.0 as the development tool, and use SQL Server 2005 database management system and Java, JavaScript mainstream development technology to achieve the process standardization, data flexible configuration of a restaurant management system.

this catering management system include an effective authentication login of manager, administrator and operator.then enter the main interface and there are front desk management, storage information, employee information, table management, goods settings, menu management, supplier information management module and so on.At the same time,these module function have furthur division ,from the schedual of the table, order checkout, to the dish add, the effective management of employee information, reasonable arrangement and storage of raw materials , as well as the current raw materials, the current inventory of daily cashier billing inquiries and other functions.Therefore, the overall design of the software development process put the knowledge into practice well.

Keywords: restaurant manegement sytem;system design;java,javascript

目 录

 

  I

ABSTRACT II

第一章   1

1.1系统开发背景 1

1.2国内外相关研究状态 1

1.3本课题研究目的及意义 2

1.4开发工具及相关技术 2

1.4.1 Java程序开发技术 4

1.4.2 Eclipse开发工具简介 4

1.4.3 SQL server 2005简介 5

第二章 系统分析 6

2.1可行性分析 6

2.1.1 技术可行性分析 6

2.1.2 经济可行性分析 6

2.1.3 安全可行性分析 7

2.1.4 操作可行性分析 7

2.2 需求 7

2.2.1 系统的主要功能 7

2.2.2 系统的实现目标 9

2.2.3 系统的性能需求 9

2.2.4 运行环境 9

第三章 总体设计 11

3.1功能模块设计 11

3.2 E-R 11

3.3总体E-R图 14

3.4系统数据表 14

3.5系统流程图 18

3.6详细设计书 19

第四章 系统实现 21

4.1用户登录 21

4.2系统主界面 23

4.3开台点菜 25

4.4用户更改密码 28

4.5员工信息 30

4.6桌台管理 32

4.7供应商信息 34

4.8系统锁定 38

4.9系统数据库连接实现 39

第五章 系统测试与性能分析 40

5.1软件测试 40

5.2测试的概念定义 40

5.3测试步骤 41

5.4本系统测试 41

第六章 结束语 46

   47

参考文献 48

第一章  

1.1系统开发背景

我国乃至世界的市场经济快速发展,各行各业的发展景象亦是如火如荼,其中餐饮业的发展尤为突出。近两年呈现出的高速发展趋势不得不让我们承认这一点。但在快速发展的同时,在日常经营管理中,餐饮业仍普遍采用大量人工管理方式,而这种管理方式无论是在工作效率、人员成本还是提供决策信息方面都已难以适应现代化经营管理的要求,且整体科技科技水平较低。随着餐饮企业规模和数量的不断增长,我们也不断深思,如何去解决这样一个难题,缓和它对整个餐饮业的规模化发展和整体服务水平存在的一定制约。

经过人类不断的努力研究,有效的管理得到了很好的实现,对提高企业的经济效益有了很大的帮助,在那些中小型饭店中采用工作流技术,结合饭店绿色管理内容,实施计算机管理信息系统成为了一条有效的解决途径。 

餐饮投资多元化成为了餐饮蓬勃发展的一大亮点,大量资本的投入进一步推动了餐饮业的发展。当然如今也是信息大爆炸的时代,随着社会各领域信息化建设的不断普及,餐饮业也开始不断注入信息化元素,将餐饮业提升到一个新的阶段。即使用计算机管理餐饮业物,不仅摆脱了以前陈旧的低效率经营模式,而且大大提高了餐饮管理的服务水平和管理人员的管理能力。

特别是在餐饮业竞争越来越激烈的今天,对于一个成功的餐饮管理员来说,如何提高餐饮服务水平和管理能力来争取更大的市场份额和顾客回头率显得尤为重要了。那么毫无疑问,实施信息化建设将会发挥举足轻重的作用,其中一个功能完善的餐饮管理系统更是必要的。

1.2国内外相关研究状态

近年来,餐饮业这个传统的行业得到很大的发展,建立企业自身的现代化管理信息系统,已成为越来越多的商界有识之士的共识,因此市场上餐饮管理软件也处于百花齐放、百家争鸣的阶段。

目前市场上基于WINDOWS操作系统的餐饮软件占大多数,LINUX操作系统只占少数比例;又从数据库这一块来看,采用什么数据库与餐厅的规模比较相关,众观现有的数据库,ACCESSMYSQLSQLSERVERORICAL,每一种系统数据库都有不同的用途,对于餐饮系统来说,较小的餐厅维护可以做得比较简单,所以可以采用比较简单的数据库如ACCESS,而规模大的餐厅,就应该用SQLSERVER这样的数据库,来保障数据的安全性与系统稳定性,但同时也要求有专门的系统管理员来维护。 

随着社会的不断发展,餐饮行业越来越多的人们开始使用各式各样的餐饮管理软件,那么在国内口碑较好且比较热的,当属天财商龙管理软件,它旗下的餐饮软件正处于蓬勃发展的时期,像一些大型的酒店,如狗不理大酒店、绿茵阁西餐厅、巴贝拉意式休闲餐厅等都是用的天财商龙的餐饮管理软件。实践证明, 通过应用天财商龙这一信息化工具,这些大型餐饮酒店有效的提升了管理效率,实现企业的核心竞争力和经济规模再跃上新高度的发展目标!

在国外发展比较成熟的软件有龙腾触摸屏点菜系统,龙腾餐饮管理系统次软件以Window为操作平台,全32位应用软件系统,采用了独特的组网技术,功能在国内处于领先地位。现在软件功能非常在成熟完善,界面美观、操作简洁易上手,软件除了正常开单、点单、加菜、退菜、结账功能以外,还有原料消耗统计功能,根据每延菜品原料构成,每天都能统计出原料理论上的消耗,以此为依据与实际原料使用进行对比,从而找出差距,进而达到降低成本的目的,有客户反馈,严格按此功能来控制成本,至少可降低成本5%.

1.3本课题研究的目的及意义

当前我国的餐饮业正处于蓬勃发展的态势,国家加快服务业发展战略为餐饮业发展带来新机遇,但也存在令人担忧的情况,如餐饮企业发展参差不齐,内容不全,知识技术含量不够等等,都制约着餐饮业的发展。但随着信息建设化的普及,计算机管理的有效介入,这一问题得到了基本的解决,在总体上实现酒店管理的自动化、规范化和人性化,使酒店由科学管理代替了经验管理,并且真正实现了使人们享受真正自动化、人性化的酒店服务,跟上现代化的节奏。

这套餐饮管理系统将餐饮业中开台、点菜、预定、结账、货物入库出库、人员信息等一连串的业务用计算机来管理,分析与设计了餐饮系统的结构及功能模块,解决餐饮系统的关键技术和解决方案,使得餐饮管理机制真正实现了现代化。从而提高酒店的服务质量,并配合现代化的酒店管理,获得了更好的经济效益。

1.4开发工具及相关技术

1.4.1 JAVA程序开发技术

java不仅是一个简单的面向对象的编程语言,具有更高的跨平台可能性,还是一个开发平台,像编译器、解释器、文档生成器和文件打包工具等许多工具都是由java技术提供的。Java的开发者版本在发表时是以Java Development Kit名调试等工具外,更搭配越来越丰富的API。总而言之,Java这个名词不再只表示一种语言,而是一种开发软件的平台,更进一步也是一种开发软件时的标准与架构的统称,

java主要有以下特性

1Java一种明了简单的编程语言。众所周知,C/C++功能是非常强大的,且Java语言的语法和二者很接近,同时除去了一些C/C++复杂或不安全的功能,因此使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C/C++ 较少使用、难以掌握的东西,像指针,操作符重载、多继承、自动的强制类型转换

2Java一种面向对象的编程语言Java最重要的特性应该是面向对象了。它不支。它Java支持静态和动态风格的代码继承及重用,而不支持类似C语言那样的面向过程的程序设计技术。Java类似于SmallTalk这是从面向对象的特性来说的,有些特性是远远超过SmallTalk的,尤其是适用于分布式计算环境的特性,是SmallTalk无法比拟的

3Java一种分布式的编程语言Java包括一个字库,它支持HTTPFTP等基于TCP/IP协议。因此,Java应用程序可根据URL打开并访问网络上的对象,其访问方式,几乎完全类似于访问本地文件系统。Java语法的这一特性使我们很容易的实现了为分布环境尤其是Internet提供的动态内容功能

4Java一种健壮的编程语言Java语言在检查程序在编译和运行时的错误这一块达到了一定的水平为了检查出许多开发早期出现的错误,类型检查就发挥了很大的效用同时,它通过自已操纵内存减少了内存出错的可能性。另一方面Java为了避免覆盖数据的可能,还用了真数组所有这些功能特征很大程度上缩短了开发Java应用程序的周期。

5Java一种解释型的编程语言Java解释器(运行系统)直接运行目标代码指令。链接程序所需资源一般比编译程序少因此,程序员可以在创建源程序上花上更多时间。

6Java一种体系结构中立的编程语言Java通过将它的程序编译成一种结构中立的中间文件格式,来实现建立Java作为网络的一个整体的功能。只要有Java运行系统的机器都能执行这种中间代码。现在,Java运行系统有Win32系统(Windows95WindowsNT),Solaris2.4(SPARC)。Java源程序被编译成一种高层次的与机器无关的byte-code格式语言,然后在虚拟机上运行,由机器相关的运行调试器实现执行。
    7Java一种可移植的语言Java应用程序与体系结构无关,只要计算机上配备了Java解释器和运行环境,那么就可以运行而这一重要特性,也使得Java应用软件更易于于移植。但是,仅仅像这样还不够,如果设计基本数据类型在很大程度上会依赖于具体实现,那么,毫无疑问,会给程序的移植造成很不便。

 8Java一种高性能的编程语言。,Java是高性能的,这一点与那些解释型的高级脚本语言相比就体现的很明显。事实上,Java可以在运行时直接将目标代码翻译成机,前提是解释器速度不慢,从现在发展的形式来看,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C++

1.4.2 Eclipse开发工具简介

Eclipse 是一个开源的、可扩展的集成开发环境它不仅可以用于Java的开发,通过开发插件,它可以构建其他的开发工具。

Eclipse 与其他 IDE 稍有不同,因为它引入了一个新的层次视角(perspective,它是对用户界面进行抽象的结果。它删除了与手头任务无关的选项,让我们可以集中注意力于要做的事情最终您会发现这个概念会贯穿 Eclipse 的各种丰富特性

Eclipse 开发环境 Eclipse 主窗口内的全部内容。在这个主窗口中,包含了许多不同的面板,我们也可以叫他视图。面板中可以显示很多的内容,包括控制台的输出,项目程序的大致信息。多个视图可以堆叠成我们生活当中常用的记事簿,这些记事薄可以通过设置的标签页来进行选择。除了视图之外,主窗口中还提供了一些特殊的面板,像编辑器就是一个特殊的面板,它可以让我们编辑不同类型的文档

我们可以通过Eclipse,将低级的一些开发工具高级设计相互结合在一起。假如这些工具通过Eclipse的扩展点互相紧密连接在一起,那么调试器在一一检查那些应用时,我们关注的器件就会在UML对话框显出来。

另一方面,Eclipse能接受由Java开发者自己编写的源代码,这是它最大的特点,这与Sun 微系统公司的NetBeans和微软公司的Visual Studio的平台比较类似Eclipse为工具开发商提供了更好的灵活性,使他们能更好地控制自己的软件技术

1.4.3 SQL server 2005简介

SQL(Structured Query Language),结构化查询语言。SQL语言的主要特点就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,把SQL作为关系型数据库管理系统的标准语言。SQL语句能够用来执行各种操作,例如从数据库中提取数据更新数据库中的数据等。SQL语言标准绝大多数流行的关系型数据库管理系统采用。虽然很多数据库都对SQL语句进行了再开发和扩展,但包括Select, Insert, Update, Delete, Create,以及Drop在内的标准的SQL命令仍旧能够被用来完成几乎所有的数据库操作。SQL SERVER 2005 基本信息如下:

最初的时候,SQL Server 2005是由微软 Sybase Ashton-Tate三家公司联合开发的,第一个OS/2 版本是在1988年推出来紧接着,Windows NT 出来后,微软Sybase SQL Server 2005 的开发上就各奔东西了微软SQL Server 2005 移植到Windows NT系统上,专注于SQL Server 2005 Windows NT 版本开发推广,Sybase 3更侧重SQL Server 2005UNIX 操作系统上的应 用。

  SQL Server 2005数据引擎是很重要的,它在企业数据管理解决方案中发挥着重要的作用除此之外,SQL Server 2005结合还结合了许多其他的功能,报表、分析、集成和通知功能,让一个企业可以构建一个可行的解决方案。 

因为SQL server 2005很大程度上 Microsoft Office System、 Microsoft Visual Studio以及一些新的开发工具包紧密集成,而这些开发工具包括 Business Intelligence Development Studio。所以,使得SQL Server 2005比较有特色的所以,SQL server 2005能够让大多数人获益,不仅仅是开发人员,还包括数据库管理员信息工作者、决策者,使用SQL Server 2005 能够为你提供很好的解决方案,帮助您从数据中更多地获益。


第二章 系统分析 

2.1 可行性分析

在研发一个项目之前,除了做需求分析之外,可行性分析也是必不可少的。当然分析的方面包括很多,像技术方面、经济方面,营运方面等等,都是需要我们认真分析的点,通过一系列分析,我们可以得出开发工作的可行与否,是否需要修改或投资等等,最后得出结论,完成可行性分析。

可行性分析定义可以大致概括:可行性分析指的在一个项目开发前期,人为的对它进行鉴定和考察,通过对它所涉及到的经济、技术、财物等综合的分析来最终判断它是否可行。以下几个方面是可行性分析阶段主要进行分析的内容:

2.1.1技术可行性分析

技术可行性分析是指按照一个系统开发的最终目的和要求,来首先衡量技术方面的资源是否符合条件,比如硬件软件的要求,研发人员的数量和水平等等相关的技术条件,都是属于技术可行性分析的方面。例如,像这个小型餐饮管理系统的研发,它所需要的开发环境及工具都要具备,还有操作系统版本的求也要考虑进去以及对内存的要求这些都要考虑进去,目前Java的研发技术越来越成熟了,相信以后的发展前景会更加明朗。

2.1.2经济可行性分析

经济可行性分析这个项目研发成功后,给公司带来的经济效益与研发前所投入的资金之间的一个比较,从而来确认所开发系统是否真的能给企业带来一定的经济效益。

开发这个餐饮管理系统,不仅能给企业管理者提供一个更好管理餐饮业的平台,而且还能大幅度提高企业的形象及增强与外界的竞争力。摆脱了以前陈旧的低效率经营模式,适应了现代经营管理的要求。这套餐饮管理系统将餐饮业中开台、点菜、预定、结账、货物入库出库、人员信息等一连串的业务用计算机来管理,分析与设计了餐饮系统的结构及功能模块,解决餐饮系统的关键技术和解决方案,使得餐饮管理机制真正实现了现代化。从而提高酒店的服务质量,并配合现代化的酒店管理,获得了更好的经济效益。

2.1.3安全可行性分析

系统正式运行后,就企业这一块而言,登录的用户方不需要了解系统研发过程所涉及到的一些技术性方面的东西,即它对用户而言是完全透明的。用户登陆后,只需根据系统界面的链接或按钮来执行相应的操作,达到所要求的功能。而且,本系统的界面美观大方、操作方便、功能齐全,所以不仅能够给用户带来视觉上的舒服,而且也很好的达到了用户的需求。另一方面,这个系统设计了一个系统锁定功能,这个功能大大提升了系统的安全性,防止了外界无关人员对本系统非法的操作,很好的体现了系统安全的功能。

2.1.4操作可行性分析

本系统,根据软硬件资源的利用情况,按照数据库里数据表的内容直接在前台进行操作,可以实现系统完整、稳定的运行,不会给系统造成过多负面的压力,保证了它正常的运行。

如上所述,本系统通过对以上四个方面的可行性分析,最终得出结论,开发这个小型的餐饮管理系统是可行的。

 

2.2 需求分析

需求分析是一个项目研发的前提,它的根本目的是在开发者和提出需求的人之间建立一种理解和沟通的机制,然后通过这样一种机制来开发出符合用户需求的系统。因此,系统的需求分析也是开发人员和用户一起完成的。当然,本系统也如此,需求分析的第一步是描述酒店餐饮管理系统的所要实现的功能,即定义用例,以此确定系统的功能需求。该系统是从酒店的订餐、员工信息管理、商品入库、物品管理各方面方面来分析的。

对于公司来说,做这样一个酒店餐饮管理系统的目的就是为了提升客人满意程度,获得更大的利润。随着市场行业竞争的越来越激烈及市场的快速膨胀,利润的降低,增长率的下降,消费行为也越发趋于理性化了。所以,各大酒店将目光集中于如何提高服务质量,提高经营管理,而利用信息技术是提高经营管理最重要的保证。

随着科学技术日益提高,计算机科学也不断日趋成熟了,在各个领域发挥着重要作用,越来越成为人们生活工作所不可或缺的一部分了。而将计算机技术应用到餐饮管理系统,其巨大的优势也是手工管理所无法比拟的,例如以下几个优点:

1)很大程度上减轻了工作人员的工作负担。

2)用户人员随时随地可以查询了解酒店餐饮的相关信息,并作出一个正确的分析。

3)添加、查询、修改更加方便、快捷,大大提高了工作人员的效率。

所以,一个酒店采用计算机方式进行管理,能够为用户提供充足的快捷的信息和方便的查询方式,并且没有时间和地域的限制,是一个酒店不可缺少的部分。所以,它的无论是对客户还是员工来说都至关重要的。而本系统从这一层次上来说,是达到要求了,它能够很好的满足客户的各种需求,及用户管理员的需要,所以,算是一个比较完备的系统。

2.2.1系统的主要功能

根据现在餐饮行业及该企业的实际情况,该餐饮管理系统突出前台管理提供一个科学有效的管理模式。前台管理采取图形界面加数据的方式,让用户能直观地管理数据信息,并能有效地管理每个开台的房间台号所点的酒菜,并且可以实现收银管理。入库信息可记录商品入库情况。除此之外,还有员工信息管理、供应商信息管理、菜单管理、系统锁定等等一些重要的功能。通过这些功能餐饮业经营者更有效的管理整个人餐饮业,不仅使顾客享受更便捷的服务,也为企业达到更大程度的获益。

根据该餐饮业的具体情况,本系统主要功能设计分为七大块,分别有前台管理、入库信息管理、员工信息管理、桌台管理、物品设置、菜单管理、供应商信息管理、系统设置、系统锁。

1、前台管理:主要是对酒店前台开台点菜、预定、收银的管理。包括开台管理、预定管理、数据结账分析管理。

2、入库信息管理:主要是对酒店后台进货的货物情况进行管理。包括每日进货量查询、库存信息查询、商品单价查询,及对当日商品的添加、修改、删除操作。

3、员工信息管理:主要是对酒店服务人员,像经理、服务员,收银人员信息的管理,包括员工信息添加、修改、删除等,来对员工进行合理的管理。

4、桌台管理:主要是对酒店的所用到的桌子进行管理。包括查看桌台的状态,是占用还是空闲,或者是添加、修改或删除桌台。

5、物品设置:主要是对酒店每日添加的商品进行,包括查看商品的添加量、价格及一些备注信息,同时也可以对它进行添加、删除、修改,并且查看某一日商品的供应情况。

6、菜单管理:主要是酒店管理人员对每日菜单的管理,同样里面有添加、删除、修改工能。

7、供应商信息管理:主要是对供应商信息的管理。

8、系统设置:主要是对登录系统的用户人员的管理,登录的用户分为三种级别,管理员、经理、操作员,根据这个设定,不同的用户级别,登录系统后,对系统的操作,也有一定的权限设置。

9、系统锁定:主要是从安全性的角度考虑,来设定的一项管理,用户登录后,若要离开一小会,就可以启用系统所定,锁定后,其他无关人员就不能随意更改系统里的数据,仅有用户输入正确的密码后,才可对系统进行操作。

2.2.2系统的实现目标

面对当下高速发展服务业及信息化的企业,餐营业也发展迅速化了,并入了计算机管理的行列。那么本餐饮管理系统为了能及时的应对出现的各种情况,实施后应能够达到以下目标:

1、系统界面美观大方,操作简单,功能齐全,且采用汉字图形用户界面,针对任何层次的用户。

2、业务管理可通过计算机管理,可随时掌握客人开台点菜或预定、结账、货物入库出库信息等情况。

3、本系统响应速度快,安全性高,扩充很方便。

4、本系统支持不同级别用户的登录,并且每个级别的用户对系统内部的操作都有一定的限制约束。

5、该软件减少了人工操作的复杂性,同时提高工作质量和效率。

6、系统具有灵活性、通用性及安全性的特点,而且维护方便可靠。

2.2.3系统的性能需求

1系统的合理性

在设计系统时要考虑系统软硬件要求及实际的性能,不能一味地追求新技术,不能忽视所处环境,而切实保证系统的合理性。

2系统的稳定性、可靠性

餐饮业用户管理人员一般来说往往不具备专业的计算机知识,因此,我们开发出餐饮管理系统必须保证它是稳定、可靠一方面,我们都知道,餐饮业就餐的时间一般与平常公司上班的时间是完全不同的,一般公司紧张上班的时间正是酒店的休息时间,而公司的下班时间却是酒店忙碌的高峰期。所以,餐饮管理系统必须兼顾这样一种间隙,保证餐饮业的高峰期,系统具有高度的稳定性,即使突然出现故障,系统也必须具有快速恢复能力。

3、系统的安全性

系统运行安全是开发人员所必须考虑的问题,也是决定软件质量的重要因素。可能很多人会认为,这个餐饮管理系统不需要接入因特网,那么应该是很安全的,是,要知道系统中涉及多方信息,有入库信息、前台管理信息、原材料信息、供应商管理信息等等。因此,如果有人蓄意破坏里面任意的内容信息,可能会导致系统的停用或者其他方面的损害从而给餐饮企业会带来巨大损失,所以,保证系统的安全性是非常重要的。当然,这里有很多措施,我们可以采取,来防止用户越权使用,防止工作数据被非法篡改、破坏和泄露等。例如本系统设计的系统锁定功能,就是一个很好的方法,来禁止非法人员对系统的操作。

4系统的简单性、易用性

开发这个餐饮管理系统,我们要考虑到不同层次服务人员及领导人员计算机操作水平,从现行阶段来看,大部分人员的计算机操作水平相对而言比较低的。所以,对于研发者而言,要本着简单易行的原则,适用于各层次人员的使用,来开发这个系统。本系统的登录分为三个层次,分别有管理员、经理、操作员,登陆后,应使他们看到一目了然、需求简单的界面。即使对于没有操作过计算机的人来说,只需要进行简单的操作培训就可以达到熟练,使之能顺利地完成系统各种功能。

2.2.4运行环境

本系统运行的环境如下:

(1)、硬件环境

    计算机一台,配置如下:

    处理器  Intel core i5

    内存    512MB

    硬盘内存 160G

(2)、软件环境

     Windows 7操作系统

     Eclipse 8.0开发工具

     SQL server 2005的数据库

第三章 总体设计

3.1 功能模块设计

本系统是一个小型桌面应用系统,通过这个平台实现以前人工操作的点菜,加减菜,结帐买单等服务,这样节省了很多的人力。根据分析,它概括为俩大功能模块,操作管理模块和前台收款模块,然后各自又分为几个小模块。其系统功能模块图如图3.1所示。

3.1 系统功能模块图

3.2 E-R图

概念设计是根据用户的观点来对数据和信息建模,是一种面向对象的数据模型。它是从用户的角度出发来看待的数据,很好的反映了用户的实现环境,像这样用E-R图来描述实体与实体或者是实体与属性之间关系的方法,是概念设计中比较著名的方法。法用E-R图描述现实世界中的实体,而不涉及这些实体在系统中的方法。2]

E-R模型中包含“实体”,“联系”和“属性”。在本系统中,主要的实体有供应商信息,员工资料,菜单管理,入库信息,预定信息,用户设置等。实体E-R图如下所示:

                         3.2 供应商信息E-R图

    3.3 员工资料E-R图

                              

                                3.4 菜单管理E-R图

                           3.5 入库信息E-R图

                                 3.6 预定信息E-R图

                      

                                  3.7 用户设置E-R图

3.3 总体E-R

通过对该餐饮管理系统的数据和功能分析,得出总体E-R图,如图3.8所示:

                                    3.8总体E-R图

3.4 系统数据表

下面将主要介绍关键数据表的数据库设计。

    1、用户管理信息表usersRT此表是用来存放登陆用户的基本信息

3.9  用户管理信息表—usersRT

字段名

数据类型

说明

索引

是否能为空

Users_Id

int

用户编号

Primary key

No

Users_Name

varchar

用户姓名

 

No

Users_Type

varchar

用户类型

 

No

Users_Pword

varchar

用户密码

 

No

Users_Tel

varchar

用户电话

 

Yes

Users_PICNo

varchar

身份证号码

 

No

Users_remar

varchar

用户备注

 

Yes

 

  2、员工信息表employeeInf,此表是用来存放员工的基本信息

                                3.10员工信息表—employeeInf

字段名

数据类型

说明

索引

是否能为空

E_Id

int

编号

Primary key

No

E_Name

char

姓名

 

No

E_Sex

char

性别

 

No

E_phone

varchar

联系电话

 

No

E_Idcard

varchar

身份证号码

 

No

E_employmenttime

varchar

入职时间

 

No

E_grade

varchar

级别

 

No

E_remark

varchar

备注

 

Yes

 

  3.、供应商信息表supplierRT,此表是用来存放供应商的基本信息

      3.11供应商信息表—supplierRT

字段名

数据类型

说明

索引

是否能为空

sl_Id

int

编号

Primary key

No

sl_Name

varchar

商品名称

 

No

sl_Address

varchar

地址

 

No

sl_Postcode

varchar

邮政编码

 

No

sl_Tel

varchar

电话号码

 

No

sl_Homepage

varchar

公司主页

 

Yes

sl_Email

varchar

邮箱

 

Yes

sl_Bank

varchar

开户银行

 

Yes

sl_AccountNo

int

银行账号

 

Yes

sl_contact

char

联系人

 

No

sl_remark

char

备注

 

Yes

 

  4、菜单信息管理表food此表是用来存放菜的基本信息

   3.12菜单信息管理表—food

字段名

数据类型

说明

索引

是否能为空

cf_No

Int

编号

Primary key

No

cf_Name

varchar

名称

No

cf_Brachyloge

varchar

简码

No

cf_Sort

varchar

种类

No

cf_Price

varchar

价格

No

cf_Remark

varchar

备注

yes

 5、入库信息表commodityIn,此表是用来存放库里现有菜的基本信息

      3.13入库信息表—commodityIn

字段名

数据类型

说明

索引

是否能为空

ci_No

int

编号

Primary key

No

ci_Name

varchar

商品名称

 

No

ci_Operator

varchar

经手人

 

No

ci_Supplier

varchar

供应商

 

No

ci_Amount

int

数量

 

No

ci_Price

float

单价

 

No

ci_Discount

float

折扣

 

Yes

ci_TotalPri

float

总金额

 

No

ci_Stockdate

varchar

入库时间

 

No

ci_Remark

varchar

备注

 

Yes

 6、物品信息表stockInfo,此表是用来存放添置物品的基本信息

   3.14物品信息表—stockInfo

字段名

数据类型及长度

说明

索引

是否能为空

si_No

int

编号

Primary key

No

si_Name

varchar

商品名称

 

No

si_Amount

varchar

数量

 

No

si_Updatetime

varchar

添加时间

 

No

si_Remark

varchar

备注

 

Yes

 7、预定信息表tbPrepare此表使用来存放预定桌台的基本信

   3.15预订信息表—tbPrepare

字段名

数据类型

说明

索引

   是否能为空

p_Id

int

编号

Primary key

No

p_Name

varchar

宾客姓名

 

No

p_Number

varchar

人数

 

Yes

p_Table

varchar

预定餐台

 

No

p_Tel

int

电话号码

 

No

p_Time

varchar

预定时间

 

No

p_Etime

varchar

保留时间到

 

Yes

p_Remark

varchar

备注

 

Yes

 8、临时账单表sittingRT,此表是用来存放消费的基本信息

  3.16临时账单表—sittingRT

字段名

数据类型

说明

索引

是否能为空

s_Reckoning

varchar

状态

 

Yes

s_Id

varchar

编号

 

Yes

s_RoomType

varchar

房间类型

 

Yes

s_Money

float

消费

 

  Yes

s_Time

varchar

开台时间

 

  Yes

s_Time1

varchar

已用时间

 

  Yes

s_Remark

varchar

备注

 

  Yes

 9、结账信息表tbMoney,此表是用来存放结账的基本信息

3.17结账信息表—tbMoney

字段名

数据类型

说明

索引

是否能为空

m_ReckoningId

varchar

账单编号

 

No

m_Id

varchar

桌台编号

 

No

m_Discount

int

折扣

 

No

m_BeginMoney

float

实收金额

 

No

m_Money

float

消费金额

 

No

m_Man

varchar

经手人

 

Yes

m_Time

varchar

下单时间

 

No

m_Remark

varchar

备注

 

Yes

  10、大厅分类表roomTypeRT,此表是用来存放大厅的基本信息

3.18大厅分类表—roomTypeRT

字段名

数据类型

说明

索引

是否能为空

rt_Id

int

编号

Primary key

  No

rt_Name

varchar

名称

 

  No

rt_Mark

varchar

备注

 

  Yes

     

11.、桌子信息表roomRT,此表是用来存放餐桌的基本信息

3.19桌子信息表—roomRT

字段名

数据类型及长度

说明

索引

是否能为空

r_Id

int

编号

Primary key

No

r_DeptName

varchar

房台类型

 

No

r_People

int

容纳人数

 

No

si_Remark

varchar

备注

 

Yes

12、选菜信息表selectFoodRT,此表使用来存放选菜的基本信

字段名

数据类型

说明

索引

是否能为空

sf_Id

varchar

编号

 

No

sf_Name

varchar

菜名

 

No

sf_Price

float

价格

 

No

sf_Count

int

计数

 

  No

sf_Function

varchar

口味做法

 

  No

sf_SunMoney

float

消费总额

 

  No

sf_Time

varchar

下单时间

 

  No

sf_Remark

varchar

备注

 

  Yes

3.20选菜信息表—selectFoodRT

13、菜品种类表foodTypeRT,此表是用来存放菜品的基本信息

3.21菜品种类表—foodTypeRT  

字段名

数据类型

说明

索引

是否 能为空

ft_Name

vachar

名称

 

No

ft_Mark

varchar

备注

 

Yes

3.5 系统流程图

用户登录后的管理系统流程如图3.22所示:

3.22系统流程图

3.6 详细设计书

1、用户登录

本系统允许管理员、经理、操作员登陆,其他人员一律不能登陆。他们通过输入用户名和密码登录入系统,如果用户的用户名或密码不正确,则不任许登录到系统。只有有此系统账号的员工才可以登录到本系统,并把员工的基本信心赋到SESSION中。

2、修改用户名和密码

登录后,管理员进入系统设置模块,可以进行任何操作,可以自行修改自己的密码,修改时,必须先输入原始密码,再重新输入两次新密码,如果输入不最正确,则系统不任许用户修改密码。同时,还可以修改经理、操作员的用户名和密码。而经理和操作员登陆后,既不能对自己的用户名和密码进行修改,也不能修改别人的。

3、员工信息管理

管理员和经理可以看到所有人员基本信息,包括员工姓名,员工编号,员工性别,员工的职责类别等。对于员工基本信息也可以添加、删除和修改。

4、前台管理

用户进入前台管理模块后,可以根据宾客的需求选择大厅,分别有一号大厅、二号大厅、包厢,大厅选定后选择所要预定或已经上座的 餐桌,餐桌分4个状态,空闲状态,预定状态,就餐状态。当餐桌是空闲状态的时候,点需要就餐的餐桌,系统提示,开台,预定,关闭.开台 直接输餐桌上的就餐人数,就可以下一步点菜或者结账的操作,餐桌的状态直接到就餐状态。如果是预定输入订餐人姓名以及电话,则餐桌的状态变为预定状态,但是餐桌为就餐状态的时候,进入输入就餐人数,就可进行点餐的操作,服务员进行点餐操作,根据菜品的分类选择就餐客人所需要的菜品,设置菜品的状态,准备,已做,已上。就餐结束后,进行结账,系统会根据结账的类型(会员,vip,特价)等信息自动计算本次就餐的价钱。

5、桌台管理

系统给出酒店内所有餐桌信息,列出餐桌编号,以及所在的大厅,已经餐桌的使用状态,如果删除餐桌信息,则通过“删除”按钮删除数据,如果添加餐桌信息,则点“添加餐桌”进入添加餐桌信息页面,选择餐桌所在的区域,填写餐桌的编号。添加完保存,系统提示成功。

6、菜单管理

系统给出酒店所有菜单信息列表,列出菜单的名称,菜单的价格,菜品的规格,如果删除菜品的信息,则通过“删除”按钮删除想要删除的数据,如果添加餐桌信息,则点“添加菜品”,进入添加菜品信息页面,选择菜品所归属的类别,填写菜品的名称,菜品的规格,菜品的价格。填写完保存,系统提示成功,可以通过列表信息查看已经添加的菜品信息。

7、关于供应商基本信息

系统给出了供应商的基本信息,编号,商品名称,公司地址,邮政编码,联系电话,公司主页,邮箱,开户银行等基本信息,用户登陆后可以对其进行修改、添加、删除。

8、入库信息管理

用户可以通过进入入库信息模块,查看商品入库的一些基本信息,并且可以根据需要进行添加、删除的工作。同时也可以对里面的商品进行查询操作,像查询商品的最高折扣、最低单价、数量最少等基本操做。。

9、物品设置

物品设置列表了包含了编号、物品名称、物品的数量、添置时间,用户不仅可以对物品进行添加、删除、修改操作,还可以通过旁边的时间列表选择相应的时间来查询当天添置物品的情况。

10、系统锁定

用户进入主界面,如若需要可以对系统进行锁定,防止无关人员对系统里的信息进行非法操作。若要恢复各个模块正常功能,则需要输入密码解锁。

11、退出系统

当单击退出模块时,系统会弹出一个消息框,确认是否退出,若点击确定,则会退出整个系统。

第四章 系统实现

4.1 用户登录模块

管理员、经理、操作员可以通过输入用户名和密码登录系统,如果不正用户名或密码不正确,则不能登录到系统。只有有此系统账号的用户才可以登录到本系统,再把员工的基本信心赋到SESSION中。用户登录界面如图4.1所示。 

 

 4.1 用户登录界面

关键代码如下:

public void validate(String user,String password,String type)

{

if(user.trim().length()==0)

{

JOptionPane.showMessageDialog(null,"帐号不能为空","警告",JOptionPane.ERROR_MESSAGE);

return;

}

else if(password.trim().length()==0)

{

 JOptionPane.showMessageDialog(null,"密码空不能为","警告",JOptionPane.ERROR_MESSAGE);

return;

}

Login_Dao dao = new Login_Dao();

Login_VO vo = new Login_VO();

vo.setUser(user);

vo.setPassword(password);

vo.setType(type);

if(dao.DBLogin(vo))

{

Main_Frame main_Frame = new Main_Frame(this.user,this.popedom);

Login.this.dispose();

}

else 

{

JOptionPane.showMessageDialog(null,"密码错误","错误",JOptionPane.ERROR_MESSAGE);

}

}

 

public boolean DBLogin(Login_VO obj)

{

boolean bool =false;

String type = "";

PreparedStatement pSelect = null;

Connection con=null;

try

{

con=ConnectionFactory.getConnection();

String sql = "select * from usersRT where users_Name=? and users_Password=? and users_Type=?";

pSelect=con.prepareStatement(sql);

pSelect.setString(1,obj.getUser());

pSelect.setString(2,obj.getPassword());

pSelect.setString(3,obj.getType());

System.out.println (sql);

ResultSet rs = pSelect.executeQuery();

if(rs.next())

{

bool = true;

obj.setUser(rs.getString("users_Name"));

obj.setType(rs.getString("users_Type"));

}

}

catch(SQLException xe)

{

xe.printStackTrace();

}

finally

{

try

{

if(pSelect!=null)

{

pSelect.close();

}

ConnectionFactory.closeConnection(con);

}

catch(SQLException xe)

{

xe.printStackTrace();

}

finally

{

return bool;

}

}

}

 

 

 

4.2 系统主界面

用户成功登陆后进入系统主界面。系统主界面中主要包括的一些基本功能有:前台管理,入库信息,员工信息,桌台管理,物品设置,菜单管理,供应商信息,系统设置,系统锁定。系统主界面如图4.2所示。

 

 4.2系统主界面

主界面的部分代码如下:

前台管理:

 

btn_FrontManage.addMouseListener(new MouseAdapter()

{

public void mouseEntered(MouseEvent xe)

{

btn_FrontManage.setBounds(290,100,200,50);

}

public void mouseExited(MouseEvent xe)

{

btn_FrontManage.setBounds(270,100,200,50);

}

//获得当前位置

public void mousePressed(MouseEvent e)

{

origin.x = e.getX();

origin.y = e.getY();

}

public void mouseClicked(MouseEvent xe)

{

btn_Join.setBorder(BorderFactory.createRaisedBevelBorder());

btn_Sys.setBorder(BorderFactory.createRaisedBevelBorder());

btn_Vic.setBorder(BorderFactory.createRaisedBevelBorder());

btn_FrontManage.setBorder(BorderFactory.createLoweredBevelBorder());

btn_BackManage.setBorder(BorderFactory.createRaisedBevelBorder());

btn_Counter.setBorder(BorderFactory.createRaisedBevelBorder());

btn_Exit.setBorder(BorderFactory.createRaisedBevelBorder());

btn_Feed.setBorder(BorderFactory.createRaisedBevelBorder());

btn_Game.setBorder(BorderFactory.createRaisedBevelBorder());

btn_Lock.setBorder(BorderFactory.createRaisedBevelBorder());

new MainFrame();

}

 

});

入库信息:

btn_Counter.addMouseListener(new MouseAdapter()

{

public void mouseEntered(MouseEvent xe)

{

btn_Counter.setBounds(90,340,200,50);

}

public void mouseExited(MouseEvent xe)

{

btn_Counter.setBounds(70,340,200,50);

}

//获得当前位置

public void mousePressed(MouseEvent e)

{

origin.x = e.getX();

origin.y = e.getY();

}

public void mouseClicked(MouseEvent xe)

{

btn_Join.setBorder(BorderFactory.createRaisedBevelBorder());

btn_Sys.setBorder(BorderFactory.createRaisedBevelBorder());

btn_Vic.setBorder(BorderFactory.createRaisedBevelBorder());

btn_Counter.setBorder(BorderFactory.createLoweredBevelBorder());

btn_FrontManage.setBorder(BorderFactory.createRaisedBevelBorder());

btn_BackManage.setBorder(BorderFactory.createRaisedBevelBorder());

btn_Exit.setBorder(BorderFactory.createRaisedBevelBorder());

btn_Feed.setBorder(BorderFactory.createRaisedBevelBorder());

btn_Game.setBorder(BorderFactory.createRaisedBevelBorder());

btn_Lock.setBorder(BorderFactory.createRaisedBevelBorder());

/* try

{

Runtime r = Runtime.getRuntime();

r.exec("C:\\WINNT\\system32\\calc.exe");

}

catch(IOException e)

{

e.printStackTrace();

}*/

new StockInfo_();

}

});

 

4.3 开台点菜

用户登陆后,进入前台模块,里面有开台、点菜、预定、结账功能,用户可以对信息可以查询、管理。界面模块如4.34.5所示

 

 

 

                                4.3 前台管理界面

 

4.4 开台界面

 

 4.5 点菜界面

关键代码如下:

if(tab.lab==null)

{

JOptionPane.showMessageDialog(MainFrame.this,"请选择桌台后再开台.") ;

return;

}

JLabel lb = tab.lab;

Dest dest = new Dest();

DestDao dao = new DestDao();

dest.setR_Id(lb.getText());

dest.setR_Type("");

dest.setR_DeptName("可供");

Vector v= dao.select(dest);

dest.setR_DeptName("预定");

Vector v1=dao.select(dest);

if(v1.size()==0 && v.size()==0)

 {

    System.out.println(v1.size());

JOptionPane.showMessageDialog(null,"请选择一个未被占用的桌台");

    return;

   } 

4.4用户更改密码

管理员登录后可以自行修改密码,但必须先输入原历史密码,再输入新密码,最后再确定一次,如果输入不最正确,则会提醒另外再输入。修改密码界面如图4.6所示。 

 

                   4.6修改密码界面

关键代码如下:

 if(f.btn_submit==btn)

{

String pad1=f.txt_password1.getText().trim();

String pad2=f.txt_password2.getText().trim();

String pad3=f.txt_password.getText().trim();

String user = f.lbl_user1.getText().trim();

VO_Update_password vo = new VO_Update_password();

DAO_Update_password dao = new DAO_Update_password();

vo.setUsername(user.trim());

vo.setPassword(pad3.trim());

if(!(dao.DBLogin(vo)))

{

JOptionPane.showMessageDialog(null,"你的历史密码和登陆密码不一致,请重新输入","警告",JOptionPane.ERROR_MESSAGE);

return;

}

else if(!(pad1.equals(pad2)))

{

JOptionPane.showMessageDialog(null,"你输入的密码不一致,请重新输入","警告",JOptionPane.ERROR_MESSAGE);

  f.txt_password.setText("");

  f.txt_password1.setText("");

  f.txt_password2.setText("");

  return;

}

if(dao.setPassword(v))

{

JOptionPane.showMessageDialog(null,"密码修改成功","恭喜",JOptionPane.CLOSED_OPTION);

f.txt_password.setText("");

f.txt_password1.setText("");

f.txt_password2.setText("");

JOptionPane.showMessageDialog(null,"请重新登陆","提示",JOptionPane.CLOSED_OPTION);

new Login();

f.n.dispose();

f.dispose();

f.m.setVisible(false);

// Update_password.this.dispose();

}

else

{

 JOptionPane.showMessageDialog(null,"密码修改失败","郁闷",JOptionPane.ERROR_MESSAGE);

}

}

else

{

f.dispose();

}

}

}

4.5 员工信息

    进入员工信息模块,可以看到有员工编号、姓名、性别、联系电话、身份证号码、入职时间,级别基本信息。对于员工信息可以添加、修改、删除。员工信息列表界面如图4.7所示。

 

 4.7员工信息界面

其中删除的代码如下:

btn_Delete.addMouseListener(new MouseAdapter()

{

public void mouseEntered(MouseEvent xe)

{

if(!bool)

{

return;

}

btn_Delete.setIcon(delete_);

btn_Delete.setBorder(BorderFactory.createRaisedBevelBorder());

}

public void mouseExited(MouseEvent xe)

{

if(!bool)

{

return;

}

btn_Delete.setIcon(delete);

btn_Delete.setBorder(BorderFactory.createEmptyBorder());

}

public void mouseClicked(MouseEvent xe)

{

if(!bool)

{

bool_=true;

return;

}

int index = info_Table.getSelectedRow();

    if(-1==index)

    {

 JOptionPane.showMessageDialog(null,"请选择要删除的数据","错误",JOptionPane.ERROR_MESSAGE);

     return;

    }

    VO_Employee vo = new VO_Employee();

    vo.setNumber(Integer.parseInt(info_Table.getValueAt(index,0).toString()));

DAO_Employee dao = new DAO_Employee();

 String str = "确定要删除:"+info_Table.getValueAt(index,1).toString().trim()+"?";

 int num=JOptionPane.showConfirmDialog(null,str,"提示",JOptionPane.YES_OPTION);

    if(num==1)

    {

     return;

    }

if(dao.DBDelete(vo))

{

JOptionPane.showMessageDialog(null,"数据删除成功!");

}

else

{

JOptionPane.showMessageDialog(null,"数据删除失败!");

}

showTableDB();

}

});

 

4.6 桌台管理

用户可以进入桌台管理模块,可以对桌台进行添加、修改、删除。添加桌台界面如图4.8所示。

 

 4.8桌台添加界面

关键代码如下:

 if(i==-1)

   {

     JOptionPane.showMessageDialog(null,"请选择一条数据");

     return;

    }

    

btnSave.addActionListener(

     new ActionListener()

     {

     public void actionPerformed(ActionEvent e)

     {

    

     if(strType.trim().length()==0)

     {

     JOptionPane.showMessageDialog(null,"房台类型不能为空");

     return;

     }

     if(strNumber.trim().length()==0)

     {

     JOptionPane.showMessageDialog(null,"房台人数不能为空");

     return;

     }

     try

     {

     intNumber=Integer.parseInt(strNumber);

     }

     catch(Exception a)

     {

     JOptionPane.showMessageDialog(null,"房台人数应该为数字");

     return;

     }

    

     if(dao.update(d))

     {

     JOptionPane.showMessageDialog(null,"修改成功");

     }else

     {

     JOptionPane.showMessageDialog(null,"修改失败");

     return;

     }

     dest.myTable("","");

     DialogUpdate.this.setVisible(false);

     }

     }

     );

    

4.7供应商信息

     用户可以进入供应商息管理模块,可以对供应商的基本信息进行添加、修改、删除。添加供应商界面如图4.9所示。

 

4.9添加供应商信息界面

 添加供应商信息的代码如下:

btn_Add.addMouseListener(new MouseAdapter()

{

 

public void mouseClicked(MouseEvent xe)

{

//添加按钮

btn_Submit.addMouseListener(new MouseAdapter()

{

public void mouseEntered(MouseEvent xe)

{

btn_Submit.setBorder(BorderFactory.createRaisedBevelBorder());

}

public void mouseExited(MouseEvent xe)

{

btn_Submit.setBorder(null);

}

public void mouseClicked(MouseEvent xe)

{

//验证

if(text_Name.getText().trim().length()==0)

{

JOptionPane.showMessageDialog(null,"请输入商品名称","警告",JOptionPane.ERROR_MESSAGE);

return;

}

else if(text_Address.getText().trim().length()==0)

{

JOptionPane.showMessageDialog(null,"请输入该公司的地址","警告",JOptionPane.ERROR_MESSAGE);

return;

}

else if(text_Postcode.getText().trim().length()==0)

{

JOptionPane.showMessageDialog(null,"请输入改公司地址的邮政编码","警告",JOptionPane.ERROR_MESSAGE);

return;

}

else if(text_Tel.getText().trim().length()==0)

{

JOptionPane.showMessageDialog(null,"请输入联系该公司的联系联系电话","警告",JOptionPane.ERROR_MESSAGE);

return;

}

else if(text_Bank.getText().trim().length()==0)

{

 JOptionPane.showMessageDialog(null,"请输入该公司转帐的银行","警告",JOptionPane.ERROR_MESSAGE);

return;

}

else if(text_AccountNo.getText().trim().length()>20 || text_AccountNo.getText().trim().length()<15)

{

JOptionPane.showMessageDialog(null,"请输入正确的银行卡号","警告",JOptionPane.ERROR_MESSAGE);

return;

}

else if(text_AccountNo.getText().trim().length()==0)

{

JOptionPane.showMessageDialog(null,"请输入转帐的银行卡号","警告",JOptionPane.ERROR_MESSAGE);

return;

}

else if(text_Contact.getText().trim().length()==0)

{

JOptionPane.showMessageDialog(null,"请输入联系人(或公司)","警告",JOptionPane.ERROR_MESSAGE);

return;

}

 

if(dao.DBInsert(vo))

{

JOptionPane.showMessageDialog(null,"数据插入增加成功!");

}

else

{

JOptionPane.showMessageDialog(null,"数据增加失败!");

}

ProvideInfo.this.Text();

ProvideInfo.this.showTableDB();

 

}

}); 

4.8系统锁定

用户进入主界面,如若需要可以对系统进行锁定,防止无关人员对系统里的信息修改。系统锁定界面如图4.10所示。                     

 

4.10系统锁定界面

关键代码如下:

public void mouseClicked(MouseEvent xe)

{

if(text_Password.getText().trim().length()==0)

{

JOptionPane.showMessageDialog(null,"请输入解锁密码!","警告",JOptionPane.ERROR_MESSAGE); return;

}

VO_Lock vo = new VO_Lock();

DAO_Lock dao = new DAO_Lock();

vo.setPassword(text_Password.getText().trim());

if(!(dao.isSelect(vo)))

{

JOptionPane.showMessageDialog(null,"密码错误!","警告",JOptionPane.ERROR_MESSAGE);

return;

}

thread = new Thread();

thread.start();

run();

}

 

4.9系统数据库连接实现

代码如下:

package connection;

import java.sql.*;

 

public class ConnectionFactory

{

public static Connection getConnection()throws Exception

{

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");  

        Connection con= DriverManager.getConnection("jdbc:sqlserver://localhost:1433;integratedSecurity=true;DatabaseName=Restaurant","sa","sa");

return con;

}

}

 

 

 

 

 

 

 

 

 

第五章 系统测试与性能分析

5.1软件测试

当一个产品经过一系列诸如需求分析、设计和编码等阶段的开发后,得到了源程序,那么软件测试阶段也就开始了。我们都知道,软件产品在测试之前可能会存在许多错误和缺陷,如果没有改正,那么真个软件产品就办法正常使用,甚至会造成巨大的损失。现阶段,软件测试仍是发现软件中错误和缺陷的主要手段,因为程序的正确性证明尚未得到根本的解决。

测试是的工作很重要其工作量也很大,大约占了软件开发总工作量的30%以上,所以我们要予以重视。

5.2测试的概念定义

1、测试的目的

软件测试的目的很明确,就是让软件开发者尽最大的努力发现产品中的不足,然后去改正。

对于软件开发者来说,明确测试目的是非常重要的,在现实中,很多人认为测试不重要,对它存在许多偏见或错误看法,而这些恰恰会严重影响着测试工作的顺利进行。

2、测试用例

测试之前,我们要准备测试的数据,同时也要分析得出数据的预期结果,然后测试之后,将预期的结果和实际输出的结果进行比较,若相同,则说明没有错物,如果不相同,则表示有错误,要及时去找到错误并改正。所以预期结果和测试数据就构成了测试用例。

所以,一个测试用例的好坏是很重要的,好的测试用例能够发现很难发现的错误。因此,我们应全力去暴露错误。判断一次测试是否成功,就是看它能否发现了至今为止尚未发现的错误的测试。

3、白盒测试和黑盒测试

测试用例的设计是测试的关键,我们可以把测试分为两类:黑盒测试和白盒测试。

顾名思义,黑盒测试就是把整个程序看成一只黑盒子,测试者是一点都不了解盒子内部的具体构造,它主要是根据规格说明书来进行测试,然后得出测试结果。

同理,白盒测试就相当于把程序装在一个透明的白的盒子里。不同的是测试者对盒子里的内容是完全掌握的,然后可以自己看里面程序的内容,来进行测试,最后得出测试结果。

5.3 测试步骤

软件测试的步骤大致主要分为三步,有单元测试(模块测试)、集成测试(组装测试)和确认测试。

1、单元测试(Unit Testing)

单元测试也叫做模块测试,它通常采用白盒测试。程序员在在编好一段代码后,会进行相应的测试,来检测这段代码是否有错物,或是否符合规格说明书中的内容要求。单元测试主要发现编码和详细设计中产生的错误。

2、集成测试(Integration Testing)

集成测试也叫做组装测试,通常采用黑盒测试,主要发现设计阶段产生的错误。它测试的主要内容主要是对由各模块组装而成的程序,主要检查模块间的接口和通信。集成测试,

3、确认测试(Validation Testing)

确认测试通常采用黑盒测试,它的测试依据是按照规格说明书,也叫做需求规约来设置的。来检测软件是否达到要求,并且确认和用户的需求是否一致,因此确认测试也是测试过程中比较重要的步骤,所以,我们要按照要求来做好。

 5.4本系统测试

软件测试方法从测试人员角度看,可分为机器测试和人工测试。机器测试分为黑盒测试(又称功能测试)和白盒测试(又称结构测试)两种。人工测试又称为代码复审。主要有三种方法:个人复查、走查、会审。下面对本餐饮管理系统进行测试,以检查系统能否正确完成各种操作,是否能够实现预期具有的功能。

1、系统登录

此模块是用户进入本系统操作的一个入口,用于维护整个系统的安全。正确的用户名和密码的输入,是用户继续进行后续操作的前提。

现在输入用户名或错误的密码,来测试登录能否成功。测试结果是系统提示“密码错误”,如图5.1所示。

 

5.1 提示密码错误消息窗口

2、数据的查询和更新

对餐饮系统的查询功能进行测试。不妨选择对菜单管理的菜的类别进行查询。如下图所示,当选择菜的种类为肉类的时候,菜单列表里出现了一系列肉类,其他汤类、饮料类的食品全都自动消失了,查询结果显示如图5.2所示。

 

5.2 菜单类别查询测试结果

 

对于数据库的更新测试。我们不防也选择菜单设置为例,来添加一条菜信息,看看系统是否能够更新所添加的数据信息。下面先展示一下修改之前的菜和饮品信息,如图5.3所示。

5.3 菜信息(修改前)

我们很容易看到,在菜单管理界面的菜单列表中的各种菜和饮品。下面开始进行添加操作。添加一条菜名为胡萝卜菜基本信息,如图5.4所示。

 

 

 

 

 

 

 

 

 

 

 

5.4 添加菜信息界面

点击添加后,看看菜单列表中显示出来的菜有没有更新成功,如5.5所示。

5.5 菜信息(修改后)

很容易得知,菜单信息列表中多了一条名为胡萝卜的记录,由此可知,系统可以实现对各类菜的添加,所以测试成功。

3、其他功能测试

下面对系统锁定的功能进行测试一下,当用户进入主界面模块后,点击系统锁定模块,则会出现如下图5.6所示的界面,此时,无论你点主界面的任何一个功能模块,都是无效点击。如图5.6所示。

5.6 系统锁定界面(输入密码前)

输入密码不正确时,则会出现密码不正确的提示,如下图5.7所示

                   

5.7 输入错误的密码后

输入密码正确后,则会反回系统主界面。所以此项也测试成功。

总之,为了发现程序设计中的不足和遗漏之处,并且进行修正,应该对所有的功能都要进行测试,而且测试数据应尽量多样化,全面化

第六章 结束语

这次毕业设计对我来说既是一个学习也是一个实际工作的过程,它不仅让我对Java开发技术有了更深一步的掌握,而且使我获得了许多书本上学不到的知识。至此,我已将所做的系统做了一个非常完整的描述。经过这段时间的奋战,本系统的大部分模块已经基本实现,提供的界面也美观大方。当然由于时间限制或其他原因,其中可能存在着一些不足,还有待进一步研究。

通过这次所做的餐饮管理系统,我对Java语言有了更进一步的接触,以及做一个系统的思路和步骤。大学期间也做过不少课程设计,可是相比于毕业设计,这些东西就显得太不正规了,以前是随心所欲,想到哪里,做到哪里,没有一个清晰的思路,而这次毕业设计就大不一样了,这是经过一系列的需求分析、设计和编码实现的,有一个清晰的条理。所以通过这次毕业设计下来,我对未来的学习有了一个更明确的目标。

很多事情说起来容易做起来难,确实是这样的,通过这次毕业设计,我对这一点有了更深的体会。编写代码之前,做了一个基本的需求分析,设计好了如何实现这个餐饮管理系统,但真正自己动手去操作时就遇到了很多问题,例如JDKDA的安装、数据库的连接、页面的设置等,在我一步步去实现的时候,遇到了很多我之前没有想到的问题。但是,通过这些问题也教会了我如何去解决这些问题,耐心、毅力也在这个过程中慢慢培养起来了,特别是解决问题后的那种成就感让我编程这一块有了更浓厚的兴趣,并且也让我把大学四年所学的知识融会贯通起来了,真的感觉受益匪浅。

第一次做如此正规的系统,其中遗漏和疏忽的地方应该也不少,如果以后有时间,可以对系统进行进一步的设计改善,达到更加完善的地步。但是,到目前为止,设计到这个程度,自己已尽力了,当然也比较满意了,努力就会有回报,这次的奋战努力,成果也算是蛮丰硕了,以后再接再厉。

相信这次毕业设计只是我计算机学习的一个良好的开端,要想以后在这条路走的更长远,还得扬帆起航,继续努力学习。当然这也将是我这儿多年读书生涯难忘的经历,具有非同一般的意义。


 

 

四年的大学生活即将结束,我也即将踏上人生的另一段征程。回顾过这过去的四年,无论是从学习生活上还是其他方面,我都收货颇多。特别是这最后的毕业设计,让我学到了很多,同时也结交到了许多良师益友。在这里我要感谢带我毕业设计的张老师,还有我们一起奋战的几位同学,以及同寝室的几位好姐妹,我们共同努力,相互支持鼓励走过来的这一段小插曲为我们的大学生活画上了一个圆满的句号。。

在此,我要特别地感谢我的指导老师张老师。在毕业设计刚开始初期,老师组织我们开了个小会,成员之间彼此做了个初步的了解,也对我们的情况详细的询问了一下,接着给了我们每人一份毕设的大致框架。所以,总的来说老师老师对我们还是挺负责的。特别是,老师照顾到我要考研,并没有像对其他同学那样要求严格,而是给我充足的时间应付考研,考完后再督促我抓紧时间弄毕业设计。现在我考上了,我要特别的感谢我的老师对我的宽容体谅,让我这一年走过来,虽然不是顺水顺舟的,但也算循序渐进,没有太多不如意吧。同时,也希望在张老师的带领下,接下来的毕业答辩,能有一个圆满的结果。

当然,我也要感谢和我一起奋战毕设的同学,相互学习,相互帮助让我做毕业设计的日子更加的丰富多彩。相识就是一种缘分,既然我们是因为毕业设计而相互认识了解,那么就让我们好好珍惜这一缘分吧,希望在今后的生活学习当中,有更深入的接触了解。同时,这段时间,寝室姐妹们给我的鼓励支持,让我深受感动,大学四年有你们陪伴,也算我人生中的大幸,在这里,我想说谢谢你们,益友兼良师,大学四年因为有你们让我对爱有了更深的体会,同时也成长不少。这次毕设共同奋斗的历程,让我们的感情更加深厚了。我会牢记这段美丽精彩的时光,让它永远的沉淀在我的心里。感谢你们,也谢谢这段美丽的缘分。

最后,我要感谢我的爸爸妈妈,以及所有关心我爱我的朋友们。同时也对这次毕业设计答辩进行评审的各位老师们表示衷心的谢意!

 

 

 

 

 

 

参考文献

[1] 王克宏.Java技术教程(基础篇)[M].北京:清华大学出版社,2002

[2] Grant Palmer.Java事件处理指南[M].沈莹,译.北京:清华大学出版社,2002.

[3] 杨小鹏.试论白天鹅宾馆的经营管理献给白天鹅宾馆开业六周年志庆[J].南开经济研究,19892:46-48.

[4] 周兴华,李增民,臧洪光.Ddlphi 7数据库项目案例导航[M].北京:清华大学出版社,2005377-384.

[5] 陈烨,等. JDK1.5类库大全[M].北京:清华大学出版社,2005

[6] 刘敬,严冬明,马刚.Delphi住宿餐饮管理系统开发实例导航[M].北京:人民邮[10]杨彦锡,米同乐,沈树志.回归分析在星级酒店客房收入中的应用[A].中国现场统计研究会第九届学术年会论文集[C].1999:67-68.电出版社,2003:4-5.

[7] 吴敏.saas餐饮管理系统的分析与开发[D].太原:太原理工大学,200812-14.

[8] 杨羡莲.餐饮业营销[J].广州市财贸管理干部学院学报,1991(4)32-33.

[9]刘涛.中国餐饮业特许经营研究[D].对外经济贸易大学,200111.

[10]Craig Larman.Applying UML and Patterns:An Introduction to Object-Oriented Analysis and Design[D].Prentice Hall Press,2005:1.

[11]Terry Quatrani.Visual Modeling With Rational Rose and UML.Addison-Wesley Longman,2006:5.

[12]Joshua Bloch. Effective Java:Programming Language Guide. New York:Addison Welsley2001

[13]Patric Chan. The Java Developers Almanac 1.4. New York: Addison Wesley2002

[14]Bruce Eckel. Thinking in Java.Third Edition. http://www.mindview.net/Books/TIJ/

猜你喜欢

转载自www.cnblogs.com/dejyyhg/p/12650681.html