毕业论文范文——食色无双餐饮管理系统设计与实现_第1页
毕业论文范文——食色无双餐饮管理系统设计与实现_第2页
毕业论文范文——食色无双餐饮管理系统设计与实现_第3页
毕业论文范文——食色无双餐饮管理系统设计与实现_第4页
毕业论文范文——食色无双餐饮管理系统设计与实现_第5页
免费预览已结束,剩余31页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本 科 毕 业 设 计 第36页 共 36 页摘 要随着我国市场经济的快速发展, 餐饮业的发展尤为突出,但在快速发展的同时,餐饮业在日常经营管理中仍普遍采用手工管理方式,所以迫切需求专业的计算机信息系统的运用和普及。食色无双餐饮管理系统主要使用Java语言,通过线程的方法实现登录界面的闪屏,采用MyEclipse平台进行图形界面的开发减少Swing代码的复杂度,MYSQL作为数据库,通过JDBC进行数据库的连接,并通过SQL语句进行数据的增删改查操作进行数据的存储,提高系统的运行速度。系统主要包括用户的权限登录、职员的人事管理、餐谱管理、成本管理、点餐、结账和报表统计。系统最大的优势在于可以实现点餐和结账功能,节省了员工大量的劳动力,并且方便和快捷,管理员可以方便的记录餐谱和成本利润的数据信息,并且能够及时在系统中做好工作日志的记录。系统的使用能使餐饮管理变得轻松、高效,顾客也能够体会到更加人性化的服务。关键词 餐饮管理 信息系统 Java MYSQL 1 引言随着改革开放以来我国的快速发展,人民的生活水平有了迅速的提高,这也致使了我国的传统行业餐饮业得到了强大的发展动力,据有关方面的统计,餐饮业的增长率要比其它行业高出十个百分点以上,这说明了我国正迎来了一个餐饮业高速发展的时期,市场潜力巨大,前景非常广阔。当然,餐饮需求又是复杂多变的,其消费口味和消费心理,都可能随着社会环境的变化而变化。传统餐饮企业是靠人工管理的,从进货到点餐,再到结账都是由人工完成的,这样做不仅人力耗费大,客人等待时间长而且容易导致数据丢失遗漏或重复劳动等诸多问题,那么其管理水平也就相对低下了。这就迫切需要标准了。如果通过运用计算机管理企业的日常运作的话,高效的计算机管理方式引导其发展,给管理者以快捷的标准,来不断完善管理水平,讲提高相当大的日常工作效率。在现实生活中,依靠人工管理日常运作的传统餐饮企业已经显露出来了颓势,计算机进入餐饮企业进行管理已经成为大势所趋的事情。健全餐饮业的现代化模式,利用计算机管理管理系统对饭店的各种信息进行处理,就可以使杂乱的业务数据具体化,使混乱的资源合理化,使模糊的流程直观化,并且可以随时了解饭店的经营情况1。目前国内的餐饮企业就得根据自身条件和环境条件的客观要求,看清餐饮市场的发展趋势,选择现代化的营销方法,以此作为迈向辉煌的起点。食色无双餐饮管理系统主要是对餐饮日常工作的管理,收银员可以进入结账界面进行对客户点餐和结账的工作,包括对不同桌号的分别管理,极大的节省了工作的劳动力。管理人员可以不仅可以进入结账界面,还可以进入管理界面,包括菜谱管理模块,及时更新菜谱信息;成本管理模块可以记录原料的成本和每种商品的利润,方便老板对经营状况的掌握,有助于经营策略的调整;还有人事管理模块,可以对人事的调动进行管理,以列表的形势展开,让人一目了然。还有一些人性化的功能,比如万年历的功能,工作人员不仅可以在里面查询日期,还可以随时记录当次的工作日志和其他重要信息。如此这般,将会大大降低网管的劳动强度并且提高工作人员的效率。食色无双餐饮管理系统开发的总体目标是实现餐饮管理的系统化、规范化、自动化和人性化,以此来减少餐饮管理的工作量2,为餐厅提供方便便捷的管理技术手段,同时以其人性化的功能需求来吸引顾客。2 系统技术介绍食色无双餐饮系统采用MyEclipse作为开发工具,用JAVA语言和JDBC技术等实现程序开发,用MYSQL作为后台数据支持。以前对这些技术、工具及语言只是了解,对其内部的一些东西都不是很清楚现在有了更系统的认识。下面对这些技术进行详细的介绍。2.1JAVA程序语言Java程序设计语言是新一代语言的代表,它强调了面向对象的特性,可以用来开发不同种类的软件,在结构上,Java语言开始于包,包是Java语言的命名空间机制,包内是类,类方法,变量,常量等等,Java源代码是区分大小写的, Java关键字总是小写,同时它具有支持图形化的用户界面、支持网络以及数据库连接等复杂的功能3。Java语言主要有以下特点:a) 易于学习Java语言很简单。这里所说的简单,主要是针对熟悉类似C+语言的程序设计人员来说的, Java语言是一个C语言的衍生工具,所以它的语法规则看上去很像C的:例如,模块化方法和分隔代码块大括号(和),变量的声明在使用它们之前,意见之前,在一条线上的两个斜线(/ /)/ *和* /多行之间或封闭。当编译器看到它忽略了/ / / /在同一行后的所有文字。 / *当它看到,它会扫描下一个* / / *和* /之间忽略任何文本。但是它摒弃了C+中许多低级、困难、容易混淆、容易出错或不经常使用的功能,例如运算符重载、程序的预处理、结构、多重继承以及其他一系列内容,特别地,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。这样便使其比其他许多编程语言更有利于有程序设计语言基础的Java语言初学者的学习。b) 高效率的执行方式用Java语言编辑的源程序的执行方法是采用先经过编译器编译、再利用解释器解释的方式来运行的。它综合了解释性语言与编译语言的众多优点,使其执行效率较以往的程序设计语言有了大幅度的提高。c) 与平台无关性Java 不同于一般的编译执行计算机语言和解释执行计算机语言。Java源程序经过编译器编译,会被转换成一种我们称之为“字节码(bytecodes)”的目标程序。“字节码”的最大特点便是可以跨平台运行,正是这一特性成为Java得以迅速普及的重要原因。输入是Java源代码和输出的是Java字节码,javac是JDK的命令来编译程序。 java的JDK命令来运行程序。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。但在 J2SE 1.4.2 发布后,Java 的执行速度有了大幅提升。d) 分布式所谓的分布式主要是指数据分布和操作分布两层意思,数据分布是指数据可以分散在网络中不同的主机上,操作分布是指把一个任务分散在不同的主机上进行处理。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、 ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。e) 多线程在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为Thread(Runnable) 的构造子将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。 Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)4。f) Java语言是一个面向对象的Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C+ 语言只对虚函数使用动态绑定。面向对象编程(OOP),语言的功能支持的概念是基于Java语言的编程范式。总之,Java语言是一个纯的面向对象程序设计语言。Sun 公司对 Java 编程语言的解释是:Java 编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。Java语言由于语言简单、语言健壮安全性高、面向对象编程等众多优点,一经推出就受到广大程序人员的热捧,成为当今IT行业中编程用的主流语言。JVM是Java字节码解释器解释。并且可以用来开发动态网页。从Web浏览器上运行的Java程序,被称为“小程序。 Java小应用程序必须嵌入在HTML文件使用标签。目前已看到Java对信息时代的重要作用,未来还会不断发展,Java在应用方面将会有更广阔的前景。2.2MyEclipse 开发平台MyEclipse由Genuitec公司Eclipse基金会的创始成员创建和维护的。MyEclipse是Eclipse平台中,集成了既专有的和开放的的源解决方案到开发环境中。MyEclipse是最全面的Java EE / J2EE IDE建立在开源的Eclipse平台MyEclipse中有两个主要的版本:一个专业和标准版。标准版增加了数据库的工具,可视化网页设计师,持久性工具,以及一些基本的Eclipse的Java开发人员配置等功能。MyEclipse是一个完全独立的项目,并提供了不同的功能集。MyEclipse结合了当今最具创新性的开放标准的技术(包括Eclipse平台)提供的J2EE WEB,XML,UML和数据库和一个宽阵列的应用服务器连接器简化开发,部署,测试和开发环境的开放标准。开放标准的支持与整合远远超过了其他软件,即使是最强大的商业工具,如IBM的Rational。MyEclipse中也取得了可通过Pulse (ALM),保持Eclipse软件的配置文件,包括那些使用MyEclipse的配置工具。此外,MyEclipse是IBM产品,提供定制的版本“MyEclipse的蓝版”,Rational软件和WebSphere开发,增加了具体的支持。MyEclipse可以访问免费的在线支持系统(众多客户的认可,在同行业中最好的),除了全面的教育材料,还包括演示,教程,用户库论坛和常见问题解答贡献的信息,而且不是基于社区的支持,而是专业工作人员的支持。2.3MYSQL数据库平台MYSQL是一个关系型数据库管理系统,比普通的数据库更加的人性化,关联的数据库将数据保存在不同的表中,而不是将所有数据放在一个大的仓库内。这样就增加了速度并提高了灵活性5。MySQL的SQL指得是“结构化查询语言”。SQL是用于访问数据库的最常用标准化语言,它是由ANSI/ISO SQL标准定义的。MySQL也是最流行的开放源码SQL数据库管理系统,在2013年4月份各数据库在市场的占用率中,MySQL列为第二,仅次于Oracle数据库。它是由MySQL AB公司开发、发布并支持的。MySQL AB是由多名MySQL开发人创办的一家商业公司。它是一家第二代开放源码公司,结合了开放源码价值取向、方法和成功的商业模型,。现被甲骨文公司收购。数据库是数据的结构化集合。它可以是任何东西,从简单的购物清单到画展,或企业网络中的海量信息。要想将数据添加到数据库,或访问、处理计算机数据库中保存的数据,需要使用数据库管理系统,如MySQL服务器。计算机是处理大量数据的理想工具,因此,数据库管理系统在计算方面扮演着关键的中心角色,或是作为独立的实用工具,或是作为其他应用程序的组成部分。MYSQL在主流数据库里面比较小巧、实用、性能比较高。MySQL软件提供了十分快速的多线程、多用户、牢靠的SQL(结构化查询语言)数据库服务器。 MySQL服务器定位于任务关键型、重负荷生产系统,并能嵌入在大量部署的软件中。最多能够降低90的总体拥有成本(TCO),性能和可伸缩性,易于使用和管理,拥有较高的可靠性和广泛的平台支持,并且可以集成到Windows环境。MYSQL为多种编程语言提供了API,方便了代码的移植。不仅如此,MYSQL支持多线程,充分利用了CPU资源。虽然相对于其他数据库比较小巧,但也可以处理上千万条记录,MySQL服务器可以连接含5千万条记录的数据库。不仅如此,有些用户将MySQL用于含60000个表和约50亿行的数据库。每个表可支持高达64条索引(在MySQL 4.1.2之前为32条)。每条索引可由116个列或列元素组成。所以功能上基本满足了大部分软件,更因为其开发成本比较低,经济实用,尤其适合于中小型软件开发。MYSQL具有十分灵活和安全的权限和密码系统,允许基于主机的验证。连接到服务器时,所有的密码传输均采用加密形式,从而保证了密码安全。在任何平台上,客户端可使用TCP/IP协议连接到MySQL服务器。在Windows系统的NT系列中(NT、2000、XP或2003),客户端可使用命名管道进行连接。在Unix系统中,客户端可使用Unix域套接字文件建立连接6。2.4JDBC简介Java 数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。使用这些接口和类,Java客户端程序可以访问各种不同类型的数据库。比如建立数据库连接,执行SQL语句进行数据的存储操作。JDBC也是Sun Microsystems的商标。它JDBC是面向关系型数据库的。JDBC工作在Java的各种平台,如Windows,Mac OS和各种版本的UNIX。在J2SE中,提供了一个称之为JDBC-ODBC桥(JDBC-ODBC Bridge)的API。通过ODBC,JDBC-ODBC桥驱动程序可以访问所有支持ODBC的关系型数据库。与JDBC API不同的是,这个驱动程序并不是由Java代码而是由机器码(native code)编写,并且不是开放源代码的。JDBC驱动程序由各个数据库厂家根据JDBC的规范制作的JDBC实现类,共分四种类型:类型1:JDBC-ODBC桥类型,2:本地API驱动类型,3:网络协议驱动类型,4:本地协议驱动7。JDBC API是一个Java API,可以访问任何类型表列数据,特别是存储在关系数据库中的数据。JDBC API主要位于JDK中的java.sql包中(之后扩展的内容位于javax.sql包中),主要包括(斜体代表接口,需驱动程序提供者来具体实现)。JDBD规范采用接口和实现分离的思想设计了Java数据库编程的框架。3 需求分析3.1系统的任务目标食色无双餐饮管理系统,目的在于减少人力劳动,提高自动化程度。根据客户的需求和可行性研究结果,系统分为员工和管理员两类权限。员工可以通过收款界面进行点餐和结账,并分别对年,月,日的销售记录的统计。管理员用户不仅可以拥有员工用户的权限,还可以录入新的员工信息和实现员工信息的管理,可以通过菜谱管理功能更新菜谱的信息,可以实现成本的记录与修改。系统能够满足中小型餐饮店铺的日常管理需求。3.2功能需求本课题是针对中小型餐厅的餐饮管理系统,目的在于减少人力劳动,提高自动化程度。该系统主要包括餐厅的人事管理,菜谱管理,成本管理,点餐和结账,附带工作记录的万年历,报表统计管理等功能。根据系统的需求分析,本系统管理员模块分成以下主要功能模块:a ) 系统登录模块:包括开始的闪屏效果,主要功能是实现登录窗口,根据用户的权限来决定主窗口可用的功能。b ) 菜谱管理模块:主要功能是实现菜谱的更新,修改,删除,添加,显示详细信息,统计菜品数目,按编号,名称,类别进行查询数据,并可以按类别分别显示数据。c ) 人事管理模块:主要功能是实现员工的更新,修改,删除,添加,显示详细信息,统计员工数目,按员工号,姓名或者职位进行查询数据。d ) 成本管理模块:主要功能是实现原材料成本的更新,修改,删除,添加,显示详细信息,统计数据数目,按编号或名称进行查询数据。e ) 登录管理模块:主要功能是实现具有登录权限的员工的查询和密码修改。f ) 万年历模块:主要功能是实现日期的查询,可以对任何日期进行查询,并可以在任意日期中记录当天的工作日志和重要事项,并可以删除无用日志。g )系统设置模块:重要功能是实现切换用户和切换到收款界面。本系统收银员模块分成以下主要功能模块:a ) 台号模块:主要功能是实现对餐厅座位的添加和删除。b ) 点餐模块:主要功能是实现对不同座位的点餐服务,将点餐的座位号和所点菜名分别显示在开台列表和签单列表中,并记录开台时间。c ) 结账模块:显示消费金额,实收金额和找零金额,完成结账的功能。d ) 统计模块:对年,月,日的销售记录分别进行统计。3.3数据字典 餐饮管理系统的数据字典如表3.1所示。表3.1餐饮管理系统的数据字典表名描述包含的信息菜谱信息菜谱的相关信息编号、菜名、价格、原料、备注、折扣。登录信息人员的登录权限信息员工号、姓名、职位、密码。人事资料员工的人事信息员工号、姓名、性别、职位、年龄、身份证号、出生日期、学历、籍贯、住址、婚否。成本信息原材料的成本信息编号、名称、原料价、售价、利润、净利润、备注。报表信息已消费的报表信息编号、报表编号、菜品编号、数量、付款金额。报表记录已消费的报表记录报表编号、台号、结账时间、付款金额。菜单信息点餐时餐单的显示信息编号、类别编号、菜名、助记码、单位、价格、状态台号信息座位号的信息编号、座位号。类别信息菜名的相关类别信息编号、类别名称、状态。4 系统概要设计4.1系统实现方案4.1.1系统设计思想食色无双管理系统主要完成餐饮管理中人事和菜谱信息的管理,点餐,结账功能的实现。包括对人事和菜谱信息的编辑操作,为此系统必须有能够维护这些信息的数据表。与此同时还要维护各种辅助项目的信息,例如菜谱信息、报表信息、人事信息等。另外系统还要能够管理餐饮管理系统的登录用户信息等。当收银员或者管理员系统登录系统时,程序分别从已有的登录表中读出用户名和密码,并检验该密码与用户输入的密码是否匹配,只有用户名在数据库中存在并且密码正确时,管理员才能进入系统,而收银员只能进入收款的界面,而不能进入主系统。当管理员需要查询菜谱,人事和成本信息时,程序便从数据库中读出相应的记录信息。4.2系统结构设计4.2.1系统结构设计食色无双餐饮管理系统分为管理员和收银员模块。管理员模块具有以下功能:登陆管理,菜谱管理,人事管理,成本管理,万年历模块。收银员模块具有以下功能:台号管理、点餐、结账、报表统计。系统结构设计图如图4.1所示。图4.1餐饮管理系统结构图4.2.2系统功能模块划分根据上述的系统总体设计的分析,食色无双管理系统主要划分为两大模块:管理员模块和收银员模块。本系统管理员模块分成以下主要功能模块:a ) 系统登录模块模块又可以分为以下几个小模块:闪屏效果,登录窗口,权限登录。开始具有登录的闪屏的效果,主要功能是实现登录窗口,系统根据用户的权限来决定界面如何跳转。收银员跳转到结账界面,管理员跳转到管理界面。b ) 菜谱管理模块模块又可以分为以下几个小模块:添加菜谱信息,修改菜谱信息,删除菜谱信息,查询菜谱信息,分类显示菜谱。用户可以实现菜谱的更新,修改,删除,添加,并可以显示菜谱的详细信息,包括编号、菜名、价格、原料、备注、折扣,统计出菜品数目,按编号,名称,类别进行查询数据,并可以按类别分别显示数据,使名目一目了然。c ) 人事管理模块模块又可以分为以下几个小模块:修改员工信息,删除员工信息,添加员工信息,查询员工信息。用户可以实现员工的更新,修改,删除,添加,并显示员工详细信息,包括员工号、姓名、性别、职位、年龄、身份证号、出生日期、学历、籍贯、住址、婚否,统计员工数目,按员工号,姓名或者职位进行查询数据,方便了对员工的人事管理。d ) 成本管理模块模块又可以分为以下几个小模块:修改成本信息,删除成本信息,添加成本信息,查询成本信息。用户可以实现原材料成本的更新,修改,删除,添加,显示成本的详细信息,包括编号、名称、原料价、售价、利润、净利润、备注,统计数据数目,按编号或名称进行查询数据,方便了对成本利润信息的管理。e ) 登录管理模块模块又可以分为以下几个小模块:查询具有登录用户,添加登录用户,修改密码。用户可以实现对具有登录权限的员工的查询,包括员工号、姓名、职位、密码的信息,也可以对其密码进行修改。f ) 万年历模块模块又可以分为以下几个小模块:日期查询,工作日志记录,删除日志。用户可以实现对日期的查询,可以对任何日期进行查询,并可以在任意日期中记录当天的工作日志和重要事项,也可以记录一些客户对服务的反馈,使系统更加人性化,并可以删除无用的日志信息。g )系统设置模块模块只要有两个功能:切换用户和切换收款界面。用户可以在这里实现自由的切换,方便餐饮店的管理。本系统收银员模块分成以下主要功能模块:a ) 台号模块模块又可以分为以下几个小模块:添加座位信息,删除座位信息。添加点餐座位号。用户可以实现对餐厅座位的添加和删除,包括编号和座位号的信息,实现对现有座位的有效管理。b ) 点餐模块用户可以实现对不同座位的点餐服务,将点餐的座位号和所点菜名分别显示在开台列表和签单列表中,并记录开台时间。c ) 结账模块通过统计显示出消费金额,通过手动输入实收金额进行找零金额的计算并显示,完成结账的实现,并记录成统计数据。d ) 报表统计模块模块又可以分为以下几个小模块:日结账信息统计,月结账信息统计,年结账信息统计。对年,月,日的销售记录分别进行统计,方便用户对餐饮店的整体业绩进行判断。食色无双餐饮管理系统主要的系统模块图如图4.2所示。图4.2餐饮管理系统模块图5 数据库设计5.1数据库的需求分析本系统是餐饮管理系统,所以数据库必须满足餐饮管理系统的各种需求。系统要求记录菜谱信息,人事信息,成本信息,登录信息,并允许对其进行增、删、改、查的操作,并且还需要记录台号和报表的信息。另外,还需要建立一些辅助信息表来提供数据来源,例如添加报表记录信息时需要的结账日期信息、结账费用信息等。通过以上的分析,数据库设计必须满足以下几点:a ) 记录用户账户的信息。b ) 记录用户权限的信息。c ) 记录结账日期的信息。d ) 记录菜谱的信息。e ) 记录成本的信息。f ) 记录人事的信息。g ) 记录结账记录记录信息。h ) 记录台号的信息。5.2数据库概念结构设计根据数据库的需求分析,有如下主要表。登录表(员工号、姓名、职位、密码)菜谱表(菜编号、菜名、价格、原料、备注、折扣)人事资料表(员工号、姓名、性别、职位、年龄、身份证号、出生日期、学历、籍贯、住址、婚否)成本名称表(原料编号、名称、原料价、售价、利润、净利润、备注)报表信息表(编号、报表编号、菜品编号、数量、付款金额)报表记录表(报表编号、台号、结账时间、付款金额)台号信息表(台编号、座位号)菜单信息表(菜单编号、类别编号、菜名、助记码、单位、价格、状态)类别信息表(类别编号、类别名称、状态)5.3数据库逻辑结构设计根据餐饮管理系统的功能要求,选取MYSQL作为后台数据库。该数据库由9个主表组成。其中这9个表包括登录表,菜谱表,人事资料表,成本名称表,报表信息表(tb_order_item),报表记录表(tb_order_form),台号信息表(tb_desk),菜单信息表(tb_menu),类别信息表(tb_sort)。a ) 登录表登录表,是对管理员登录账号的记录,包括员工号、姓名、职位、密码。登录表如表5.1所示。 表5.1登录表列名数据类型长度是否允许为空是否为主键说明员工号varchar20noyes用户名姓名varchar27nono姓名职位varchar45nono职位密码varchar30nono密码b ) 菜谱表菜谱表,是对菜谱信息的管理,包括菜编号、菜名、价格、原料、备注、折扣。菜谱表如表5.2所示。表5.2菜谱表列名数据类型长度是否允许为空是否为主键说明编号int22noyesID名称varchar40noNo名称类别varchar22noNo类别价格varchar31noNo价格原料varchar31yesNo原料备注varchar50yesNo备注折扣varchar11yesNo折扣c ) 人事资料表人事资料表,用来保存员工的详细信息,包括员工号、姓名、性别、职位、年龄、身份证号、出生日期、学历、籍贯、住址、婚否。人事资料表如表5.3所示。表5.3人事资料表列名数据类型长度是否允许为空是否为主键说明员工号char9noyes员工号姓名varchar8nono姓名性别char2nono性别职位varchar500nono职位年龄varchar50nono年龄身份证号char18nono身份证号出生日期datetime0nono出生日期学历varchar40nono学历籍贯varchar100nono籍贯住址varchar100nono住址婚否char4nono婚否d ) 成本名称表成本名称表,用来保存原材料利润的信息,包括原料编号、名称、原料价、售价、利润、净利润、备注。成本名称表如表5.4所示。表5.4成本名称表列名数据类型长度是否允许为空是否为主键说明编号int22noyesID名称varchar22nono名称原料价varchar31yesno原料价售价varchar31yesno售价利润varchar31yesno利润净利润varchar31yesno净利润备注varchar50yesno备注e ) 报表信息表报表信息表(tb_order_item),用来保存报表的信息。包括编号、报表编号、菜品编号、数量、付款金额。报表信息表如表5.5所示。表5.5报表信息表(tb_order_item)列名数据类型长度是否允许为空是否为主键说明idint4noyesIDorder_form_numchar11nono报表编号menu_numchar9nono菜品编号amountint4nono数量totalint4nono付款金额f ) 报表记录表报表记录表(tb_order_form),用来保存报表的记录,包括报表编号、台号、结账时间、付款金额,报表记录表如5.6表所示。表5.6报表记录表(tb_order_form)列名数据类型长度是否允许为空是否为主键说明numChar11noyes报表编号desk_numvarchar6nono台号consume_datedatetime0nono结账时间expenditureint4nono付款金额g ) 台号信息表台号信息表(tb_desk),用来保存台号的信息,包括台编号、座位号。台号信息表如表5.7所示。表5.7台号信息表(tb_desk)列名数据类型长度是否允许为空是否为主键说明numvarchar6noyesIDseatingInt11nono座位号h ) 菜单信息表菜单信息表(tb_menu),用来保存菜单的信息,包括菜单编号、类别编号、菜名、助记码、单位、价格、状态。菜单信息表如表5.8所示。表5.8菜单信息表(tb_menu)列名数据类型长度是否允许为空是否为主键说明numChar9noyesIDsort_idint11nono类别编号namevarchar20nono菜名codevarchar10nono助记码unitvarchar4nono单位unit_priceint11nono价格statechar4nono状态i ) 类别信息表类别信息表(tb_sort),用来保存菜品类别的信息,包括类别编号、类别名称、状态。类别信息表如表5.9所示。表5.9类别信息表(tb_sort)列名数据类型长度是否允许为空是否为主键说明Idint4noyesIDnamevarchar20nono类别名称statechar4nono状态5.4模块与表之间的关系系统登录模块与登录表和人事资料表关联,登录管理模块与登录表关联,菜谱管理模块与菜谱表关联,人事管理模块与人事表关联,成本管理模块与成本名称表关联,台号管理模块与台号信息表关联,点餐模块与台号信息表和菜单表关联,结账模块与报表记录表和报表信息表关联。6 系统详细设计在系统的概要设计中,已经实现了系统程序各个模块的设计问题,以及把系统划分成哪几个模块,各个模块之间有什么关系等等,这一章将详细描述下各个模块是如何设计与实现的。6.1登录模块设计登录模块设计是该系统的服务器端的入口,只有通过该模块,输入正确的用户名和密码才能进入该系统,系统会根据用户的权限显示不同的功能界面。登录模块的流程图如图6.1所示。图6.1登录界面流程图登录之前的闪屏效果如图6.2所示。图6.2系统闪屏该界面具有字体在闪烁中渐渐出现的效果,实现的具体方法是:通过多线程使多个相同的字在不同的时候启动线程,通过进度不同实现字体的明暗效果,多个线程同时进行,具体速度为20分辨率,实现逐步写入效果。实现代码如下:if(tt=18&tt23)/字体位置 g.setColor(new Color(230,0,0);/设置写字的颜色和位置。 for(int rr=0;rr4;rr+)g.drawString(shirr,180,60+rr*20);/根据字体的排序顺序和位置,设置字体出现速度和初始位置。 for(int rr=4;rr=7;rr+)g.drawString(shirr,150,rr*20); for(int rr=8;rr13;rr+)g.drawString(shirr,120,rr*20-100); for(int rr=13;rr18;rr+)g.drawString(shirr,90,rr*20-200); g.setColor(new Color(r,b,y); if(tt23)for(int rr=18;rr=23)for(int rr=18;rr1) g.fillRect(x, 235-(j+20)/2, 10, j+10)来设置领头的长方块儿的大小和位置,通过g.fillRect(x, 235-(j+20)/2, 15, j)设置后面跟着的短方块儿,10代表闪动条的宽度,j代表闪动条的高度,通过g.setColor(new Color(123,194,252)使其设置成蓝色的颜色。根据计算,通过Thread.sleep(23*300)使得在下方进度条读满的时候系统通过this.dispose()自动退出,并通过new UserLogin()跳转到登录界面。登录界面如图6.3所示。图6.3登录界面登录界面通过正确的用户名(员工号)和密码,并点击“确定”按钮进入相关权限的系统(管理界面和收款界面),通过setBorder(BorderFactory.createLoweredBevelBorder()设置框体下凹的效果使其增加了美观度,点击“取消”按钮可以退出界面,放弃本次操作。6.2管理员模块设计主要功能是实现切换用户,切换收款界面,登录管理,人事管理,菜谱管理,成本管理,记录工作日志。6.2.1界面设计整个界面是BorderLayout布局,North是工具栏,用于存放快捷键;South是状态栏,用于存放本地的当前时间。共有4个面板JPanel,分别位p1、p3、p4和p5。其中p3为CardLayout布局,把p3放入了p4中,在中间的界面中做了一个横向分割(HORIZONTAL_SPLIT)的拆分窗口,并通过JSplitPane( JSplitPane. HORIZONTAL_SPLIT,true,p1,p4)函数实现面板的水平分割分别存放了p1和p4,setDividerLocation(130) 指定左边面板占130, jsp1.setDividerSize(0)使边界不能伸缩,p1为中间的面板,p4为BorderLayout布局,是存放卡片的面板,p3放在它的Center,开始的时候是不显示的,当点击按钮的时候,中间屏幕会缩小,然后显示卡片里的面板。管理界面如图6.4所示。图6.4管理界面运用CardLayout()卡片布局使同一个界面分开显示不用的模块, Cursor(Cursor.HAND_CURSOR)设置鼠标的手型光标,使界面更具美观。new JToolBar()设置工具栏,加入了主要功能的快捷方式,并用setFloatable(false)将工具栏设置为不能浮动。最下方是状态栏p5,用于存放当前时间,new Timer(1000,this)使得每隔1秒就触发actionevent。6.2.2系统设置模块系统设置如图6.5所示。图6.5 系统设置系统设置模块用于实现管理员切换用户和切换到收款界面的功能。通过对按钮的addActionListener(this)事件监听调用ActionListener类的功能。当管理员点击按钮的时候就会切换到相应的界面。6.2.3登录管理模块登录管理界面如图6.6所示。图6.6 登录管理登录管理用于让管理员管理系统的登录用户,通过连接数据库String sql=insert into 登录 values(?,?,?,?)实现插入数据的功能,通过对按钮的addActionListener(this)事件监听调用ActionListener类的功能,比如可以查找已有的用户,并通过添加密码和修改密码按钮可以添加新的登录用户和修改已有的登录用户。在此设置用户和密码后,系统将按照设置的记录通过登录表赋予用户登录系统的权限。6.2.4人事管理模块人事管理用于让管理员管理餐饮厅的员工人事信息,在面板中使用卡片布局的方式存放界面,以便和其他模块在调用时分时占满整个界面,实现屏幕的合理利用。通过连接数据库实现相关功能,通过对按钮的addActionListener(this)事件监听调用ActionListener类的功能,比如可以通过“查询”按钮查询符合条件的员工信息,也可以点击某一个人的详细信息单独显示,并且可以通过点击按钮进行添加,修改,删除的操作。人事管理如图6.7所示。图6.7 人事管理各个按钮关联数据库语句如下:查询:String sql=select 员工号,姓名,性别,职位,年龄,出生日期,学历 ,住址,婚否 from 人事资料 + where 员工号=? or 姓名=? or 职位=? 。添加:String sql=insert into 人事资料 values(?,?,?,?,?,?,?,?,?,?,?)。修改:String sql=update 人事资料 set 姓名=?,性别=?,职位=?,年龄=?,身份证号=?,出生日期=?,学历=?,籍贯=?,住址=?,婚否=? where 员工号=?。删除:String sql=delete from 人事资料 where 员工号=?。其中姓名超过四个字符系统会通过OptionPane.showMessageDialog(null, 姓名最多只能为 4 个汉字!,友情提示, JOptionPane.INFORMATION_MESSAGE)提示错误,并且通过setText();把之前的输入清空。p3_lab1.setText(总记录数 + em.getRowCount() + 条)实现了记录数的统计。6.2.5菜谱管理模块菜谱管理用于让管理员管理餐饮厅的菜谱信息,通过对按钮的addActionListener(this)事件监听调用ActionListener类的功能,比如通过查询按钮查询符合条件的菜谱信息,也可以点击某一个菜名的详细信息单独显示,并且可以通过点击按钮进行添加,修改,删除的操作。该模块更可以点击菜品类别选项将各个菜系单独显示出来。菜谱管理如图6.8所示。图6.8 菜谱管理各个按钮关联数据库语句如下:查询:String sql=select * from 菜谱 where 编号=? or 名称=? or 类别=?。添加:String sql=insert into 菜谱 values(?,?,?,?,?,?,?,?,?,?,?)。修改:String sql=update 菜谱 set 名称=?,类别=?,价格=?,原料=?,备注=?,折扣=? where 编号=?。删除:String sql=delete from 菜谱 where 编号=?。6.2.6成本管理模块成本管理用于让管理员管理餐饮厅的原材料成本信息,通过连接数据库实现相关功能,通过对按钮的addActionListener(this)事件监听调用ActionListener类的功能,比如可以通过“查询”按钮查询连接数据库的数据String sql=select * from 成本名称 where 编号=? or 名称=?查找符合条件的菜谱信息,也可以点击某一个菜名的详细信息单独显示,并且可以通过点击按钮进行添加,修改,删除的操作。成本管理如图6.9所示。图6.9 成本管理各个按钮关联数据库语句如下:查询:String sql=select * from 成本名称 where 编号=? or 名称=?。添加:String sql=insert into 成本名称 values(?,?,?,?,?,?,?,?,?,?,?)。修改:String sql=update 成本名称 set 名称=?,原料价=?,售价=?,利润=?,净利润=?,备注=? where 编号=?。删除:String sql=delete from 成本名称 where 编号=?。6.2.7万年历模块万年历模块用于让管理员查询日期,记录每天的相关信息和工作日志,可以删除已经没有用的文本信息。万年历如图6.10所示。图6.10 万年历通过窗口关闭函数,关闭单一窗口(DISPOSE_ON_CLOSE)使模块退出的时候不至于退出系统其它模块。通过String strDate = DateFormat.getDateInstance().format(new Date().split(-)语句获得输入的日期,并通过this.setVisible(true);显示出来。通过每月的天数不同,用if函数分别显示天数,其中通过对闰年year%4 = 0 & year%100 != 0 | year%400 = 0的计算分别显示闰年和平年二月份的天数8。通过调用BufferedWriter的write方法时候使数据写入到缓冲区里,然后调用BufferedWriter的close()方法,该方法会在关闭该输入流之前先刷新一下该缓冲流并且会把数据写入到系统的文件里,从而实现txt文本的记录。6.3收银员模块设计主要功能是实现客户的点餐,结账,座位号的管理和对年,月,日的销售情况进行统计。6.3.1界面设计界面是一个ContentPane()的可视组件的容器。共设置了bottomPanel和JSplitPane两个的大的panel。收款界面如图6.11所示。图6.11收款界面JSplitPane用setOrientation(JSplitPane.HORIZONTAL_SPLIT) 设置为水平分割,setDividerLocation(755)设置面版默认的分割位置,setDividerSize(10)设置分割条的宽度,setOneTouchExpandable(true) 设置为支持快速展开和折叠分割条, new TitledBorder (null,TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null) ) 设置面版的边框,将分割面版添加到上级容器中。分割线的左边是用于存放签单列表的Jpanel,实现方式为:创建放于分割面版左侧的普通面版对象并通过setLayout(new BorderLayout()设置面板的布局管理器,setLeftComponent(leftPanel) 将普通面版对象添加到分割面版的左侧。右边为一个存放台号信息的JScrollPane,实现方式为:创建放于分割面版右

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论