餐厅管理系统的设计与实现@毕业设计说明书

单位代码

学 号 XXXXXX

分 类 号_ TP315

密 级

餐厅管理系统的设计与实现毕业设计说明书

毕业设计说明书

餐厅管理系统的设计与实现

院(系)名称

专业名称

学生姓名 指导教师

XX学院 计算机科学与技术 XX XXX

20xx年5月13日

黄河科技学院毕业设计说明书

餐厅管理系统的设计与实现 第 I 页 摘 要

这些年来,随着人民生活水平不断的提高,人们在餐饮上的消费持续增长,餐饮业也竞争愈来愈激烈。然而传统餐饮企业在日常运作中靠的是人工管理,从原材料的入库到客户点单,再到结账,这基本都是由人工来完成操作记录。这种方法不仅耗费人力资源,而且容易导致操作错误或者记录丢失,形成管理效率低下的现象。因此迫切的需要规范、高效的计算机管理方式来引导餐饮业发展。通过计算机来管理企业的日常运作,给管理者提供决策参考的模型,从而不断完善管理水平,共同提高工作效率。

使用计算机管理餐饮企业信息,具有手工管理无法比拟的优点:检索迅速、存储量大、保密性好、查找方便、可靠性高、寿命长、成本低等。这些特性能够极大地提高管理效率,节省时间和成本,也是与世界餐饮企业接轨的重要条件。

本系统将运用MySQL作为后台数据库,以Eclipse为前端开发工具,开发一个C/S构架多个模块组成的系统,用对餐厅进行高效的管理。

关键词:餐厅管理系统,JAVA,Eclipse,MySQL

黄河科技学院毕业设计说明书

第 II 页 The Design and Implementation of Restaurant ManagementSystem

Author:XXXXXXX

Tutor:XXXXXXXX

Abstract

Over the years, with the improvement of people's living standard continuously, people on food consumption continues to grow, catering industry is also increasingly fierce competition. However, the traditional catering enterprises in the daily operation by artificial management, from the warehousing of raw materials to the customer order, to check again, this is done by artificial basic operation record. This method not only cost of human resources, and easy to cause the error or record is missing, form management inefficiency phenomenon. So urgent need to norms, efficient way of computer management to guide the development of catering industry. Through the computer to manage the enterprise's daily operation, for managers to provide decision-making reference model, so as to constantly improve the management level, to improve the work efficiency.

Use of computer management information of food and beverage enterprise, has the incomparable virtues than the manual management: retrieval, thereserves big, the secrecy good, the search rapidly convenient, high reliability, long life and low cost. These features can greatly improve the efficiency of management, save time and cost, also is the important condition of catering enterprises with the world market.

This system will use MySQL database as the background, in Eclipse for front-end development tool, send a C/S architecture system composed of multiple modules, with restaurant for effective management.

Keywords: Restaurant ManagementSystem, JAVA, Eclipse, MySQL

黄河科技学院毕业设计说明书

第 III 页 目 录

1 绪 论 .................................................................................................................................. 1

1.1 课题背景及目的 ......................................................................................................... 1

1.2 国内外研究情况 ......................................................................................................... 1

1.3 课题的研究方法 ......................................................................................................... 2

1.4 论文构成及研究内容 ................................................................................................. 2

2 需求分析 .............................................................................................................................. 3

2.1 可行性分析 ................................................................................................................. 3

2.1.1 技术可行性分析 .............................................................................................. 3

2.1.2 管理可行性分析 .............................................................................................. 3

2.1.3 安全可行性分析 .............................................................................................. 3

2.1.4 经济可行性分析 .............................................................................................. 3

2.2 系统实现的目标 ......................................................................................................... 4

2.3 功能需求分析 ............................................................................................................. 4

2.4 运行环境 ..................................................................................................................... 4

3 关键技术介绍 ...................................................................................................................... 5

3.1 JAVA简介 .................................................................................................................. 5

3.2 Eclipse简介 ................................................................................................................ 6

3.3 MySQL简介 .............................................................................................................. 7

4 总体设计 .............................................................................................................................. 8

4.1 系统结构设计 ............................................................................................................. 8

4.1.1 系统结构图 ...................................................................................................... 8

4.1.2 系统主要功能模块 .......................................................................................... 8

4.1.3 登陆流程图 ...................................................................................................... 9

黄河科技学院毕业设计说明书

第 IV 页 4.2 数据库结构设计 ......................................................................................................... 9

5 系统实现 ............................................................................................................................ 13

5.1 系统加载 ................................................................................................................... 13

5.2 系统登陆模块 ........................................................................................................... 13

5.3 系统主界面 ............................................................................................................... 14

5.4 人事管理模块 ........................................................................................................... 15

5.5 登陆管理模块 ........................................................................................................... 17

5.6 菜谱价格模块 ........................................................................................................... 17

5.7 帮助模块 ................................................................................................................... 18

结 论 .................................................................................................................................. 19

致 谢 .................................................................................................................................. 20

参考文献 .................................................................................................................................. 21

附 录 .................................................................................................................................. 22

附录A 闪屏载入系统的代码 ........................................................................................ 22

附录B 系统登陆的代码 ................................................................................................ 24

附录C 赋予用户权限的代码 ........................................................................................ 28

附录D 数据库连接的代码 ............................................................................................ 29

附录E 系统主界面的代码 ............................................................................................ 31

附录F 其它部分的代码 ................................................................................................ 42

黄河科技学院毕业设计说明书 第 1 页

1 绪 论

1.1 课题背景及目的

近年来,随着中西方文化交流和改革开放步伐的加快,我国人民的生活水平有着显著的提高,全社会人民对餐饮业的需求越来越大,随着餐饮消费的持续增长,餐饮业已成为当代社会中发展最快速的行业之一。企业如果想在竞争激烈的市场中生存,必须在餐饮服务、经营管理等方面提高管理水平。

为了充分的考虑操作人员的素质、管理人员的要求、使用者的环境、维护人员的水平,使这个系统一看就懂、一学就会、备案可查、快速高效、联网结账、操作过程课跟踪记录、不造成连锁反应、实现休闲娱乐场所餐饮自动化和餐厅的现时管理等等,通过实现上述功能,达到资源最佳合理利用,实现餐饮的现代化有效管理,最终达到提高工作效率的目的。

而对餐饮经营起决定性作用的是对平常营业的管理。如何运用先进的管理手段,提升餐饮店的管理水平,是每家餐饮经营者面临的重要课题[1]。因此餐饮管理系统横空出世,此系统有很好的可用性。传统上人们都采用人工方式记账,这种管理账单方式存在着很多缺点,如:保密性差、效率低;此外随着时间的积累,将产生大量的数据与文件,这对于更新、查找与维护账目都带来了无法想象的困难,同时也大大增加了管理者的工作难度和工作量。本系统恰好克服了这些缺点,并且有查找方便、保密性好、可靠性高、检索迅速、存储量大、成本低、寿命长等优点。

此次研究的课题具有深远的意义。首先,它可以带动餐饮行业新的模式,使餐饮行业从此告别了人工管理的旧模式,把原有餐饮业服务管理推向了更完善更完美的高度;其次,由于此次研究的课题的最终目的就是开发一个集成常见服务为的餐饮管理系统,这不仅能给带来管理的全新体验,还可以提高工作效率;同时此项研究课题可以带领人们向信息化更近一步。

1.2 国内外研究情况

当今信息化技术的日益普及,餐饮这个相当传统的行业也开始的采用现代信息技术

黄河科技学院毕业设计说明书 第 2 页

来管理业务。如今市场上餐饮管理软件正处于百家争鸣、百花齐放的阶段。

目前大多数餐饮管理软件都是基于WINDOWS操作系统的,也有一部分餐考虑到了版权问题,采用LINUX操作系统。关于使用的系统数据库,有ACCESS、SYBASE、MYSQL、SQLSERVER等较多选择,但对于餐厅管理系统来说,采用什么样的数据库与餐厅规模关系比较密切。规模较小的餐厅采用如ACCESS等较为简单的数据库,这样使用和维护都比较简单;而规模较大的餐厅应该用SQLSERVER这样的数据库,可以保障数据比较安全、系统比较稳定,但同时也要求有专门的系统管理员来维护。还有,数据的录入通常有三种方式,一是基于普通电脑,二是基于触摸屏,三是采用无线点菜系统,而无线技术又有基于红外技术和基于无线网络的技术[2]。从目前的发展趋势看,餐饮系统越来越多的采用触摸屏,而无线技术正在逐步成熟起来。

1.3 课题的研究方法

餐厅管理系统也算是典型的管理信息系统(MIS),它的开发主要包括前端应用程序的开发、后台数据库的建立和维护、自动化管理等几个方面[3]。在此系统中,用MySQL 数据库管理系统、Eclipse编程软件、Java应用程序设计,采用成熟的C/S(客户/服务器)结构,依据分析与讨论,实现餐厅信息化管理,提供可以交互的界面,完成餐厅餐饮管理系统的设计和开发。

1.4 论文构成及研究内容

论文将包括需求分析,开发工具的介绍,系统的总体框架,各个模块的详细介绍,以及最后的测试。

论文研究的主要内容是C/S构架的Java程序开发,MySQL数据库的应用,餐厅管理系统的整体开发。

黄河科技学院毕业设计说明书 第 3 页

2 需求分析

2.1 可行性分析

可行性分析可定义为:可行性分析通常建立在前期对工程项目的考察与鉴定,并对拟议的项目进行全面的技术和经济能力调查,判定它是否是可行的。可行性分析是在需求分析的基础上进行的,通过对系统的开发,从经济、营运、技术等方面进行逐条分析,并在开发系统前期得出的开发工作可行、不可行、暂缓开发、分步实施、需要修改、追加投资等方案和结论,最后再进一步完成可行性分析。在可行性分析这个阶段的工作包含以下几个方面的内容。

2.1.1 技术可行性分析

如今网络技术、计算机技术的成熟为管理提供了有力的技术方面支持。该系统不仅提供较完善的功能,还能全面管理餐厅的日常业务。该系统操作简单,人员不用过多培训,而且该系统采用的设计方法更加符合用户的需求。

2.1.2 管理可行性分析

本次设计的系统可以较高效率的完成一般的餐饮业务,操作方便快捷,使琐碎的日常业务以有条不紊的顺序的进行,并将复杂的工作流程简单化。

2.1.3 安全可行性分析

就用户方而言,在系统运行之后,用户使用本系统时不必关心系统内部的构架和实现方法,系统对用户来说是完全透明的。因此本系统对用户来说是定位在功能齐全、操作方便、界面友好的原则上的,而用户只需用鼠标简单的点击各页面上的按钮就可以执行想要的功能。管理者关心的是怎样处理用户的信息,只需把用户信息放入专门的数据库服务器或者服务器端的数据库,就能运行相应的后台程序。

2.1.4 经济可行性分析

经济可行性分析主要对将要开发的系统所投入的资金和系统投入使用后所能带来的经济效益进行比较,进一步确认新系统能否给企业创造预期的经济效益。本系统的开

黄河科技学院毕业设计说明书 第 4 页

发时间短、成本少,不会投入太多的人力、物力、财力,可以在最短的时间,用最低的成本和最少的人力开发出该系统。此次开发的餐饮管理系统,可以使企业从采购原材料到客人的消费都在计算机上管理并且记录下来,可以用最少的成本获得最好的经济效益,从而增强餐饮企业的市场竞争力

综上所述,通过技术可行性,管理可行性,安全可行性,经济可行性分析,此次系统的开发是实际可行的。

2.2 系统实现的目标

面对餐饮服务行业的高速发展以及企业信息化发展过程中出现的种种问题,该餐饮管理系统在具体实施后应能够达到以下的目标。

(1)采用流行的C/S即客户机/服务器,安全性高,响应速度快,扩充方便。

(2)采用汉字和图形用户界面,操作简单,界面友好美观。

(3)业务管理信息化,可随时掌握人事、库存、客人点单等情况。

(4)尽可能降低使用者的劳动强度,并提高工作质量和效率。

(5)支持多种付款方式,现金、支票、免单、挂账等多种方式混合收银。

(6)系统维护方便,具有灵活性、可靠性及安全性的特点。

2.3 功能需求分析

本系统应该包括程序初始化、欢迎界面、人事管理、菜谱价格、成本与库存、系统设、帮助等几大部分。系统与数据库的连接上应通过对服务器端进行设置,使数据库路径和名称不可见,并通过MySQL数据库的安全性设置,充分保证数据库的安全性。此外,本系统对不同用户的赋予了不同的操作权限,从而提高了系统的安全性。

2.4 运行环境

处理器:Inter Pentium 4 1.6GHz 或更高

内存:512MB

硬盘空间:160GB

操作系统:Windows XP/7/8

软件环境:MySQL,JDK

黄河科技学院毕业设计说明书 第 5 页

3 关键技术介绍

3.1 JAVA简介

Java是一种跨平台、适合于分布式计算环境的面向对象的程序设计语言。由Sun Microsystems公司于19xx年5月推出的Java平台(即JavaSE, JavaEE, JavaME)和Java程序设计语言的总称[4]。Java不仅是一种编程语言,它还是开发平台。Java技术给编程人员提供了很多如编译器、解释器、文档生成器以及文件打包工具等工具。Java还是一个程序发布平台,主要有两种发布环境,首先Java运行时的环境(Java runtime environment,简称JRE)已经包含了完整的类文件包,其次许多主流浏览器都提供了Java解释器和运行时的环境。

Java 技术具有卓越的通用性、安全性、高效性、平台移植性,可以广泛应用于个人PC、游戏控制台、移动电话、数据中心、科学超级计算机和互联网[5]。具体来说,它具有如下特性。

(1)Java是高性能的。和那些解释型的高级语言相比,Java确实是高性能的。事实上Java的运行速度随着JIT(Just-In-Time)编译器技术的发展,已经越来越接近于C++。

(2)Java语言是健壮的。Java的异常处理、废料的自动收集、强类型机制等是Java程序充分保证了健壮性。丢弃指针的是Java明智的选择。Java的安全检查机制使其更具有健壮性。

(3)Java语言是可移植的。这种可移植性源自于体系结构的中立性,此外Java还严格规定各个基本数据类型的长度。同时Java系统本身也具备很强的可移植性,Java运行环境是用ANSI C实现的,Java编译器是用Java实现的。

(4)Java语言的体系结构是中立的。Java程序在Java平台上被编译为体系结构中立的字节码格式, 随后就可以在实现这个Java平台的任一系统中运行。这种途径适合异构的网络环境和软件的分发。

(5)Java语言是解释型的。正如如前所述那样,Java程序在其Java平台上被编译成字节码格式, 然后可以在这个Java平台的任一系统中运行。Java在运行时,Java平台中的Java解释器对字节码进行解释并执行,在执行过程中需要的类在联接阶段就被

黄河科技学院毕业设计说明书 第 6 页

载入到运行环境中。

(6)Java语言是分布式的。Javab编程语言支持Internet应用开发,基本的Java编程接口中,其中有一个网络应用编程接口。它提供用于网络应用编程的类库,包括URLConnection、Socket、URL、ServerSocket等。Java的RMI机制也是分布式应用的重要手段。

(7)Java语言是一个面向对象的。Java编程语言提供类、继承、接口等。为了简单只支持类之间的单继承,却支持接口间的多继承,还支持类与接口间的实现机制。C++ 语言只是对虚函数使用动态绑定,而Java语言全面支持动态绑定。总之Java语言是一个纯粹面向对象程序语言。

(8)Java语言是简单的。Java语言的语法与C语言很相似,使得很多程序员比较容易学习与使用Java。另一方面Java丢弃了C++ 语言中很少使用的、很难理解的那些特性,如操多继承、自动的强制类型转换、作符重载。特别是Java语言放弃指针,并提供自动废料收集,可以使程序员不必再为内存管理担忧。

(9)Java语言是安全的。Java一般作用在网络环境中,因此Java提供了一个较为安全的机制以防止恶意代码攻击。除了Java语言具备许多安全特性之外,它还对通过网络下载的类,有一个安全防范机制(类ClassLoader),例如字节代码检查、分配不同的名字空间从而防替代本地的同名类、并且提供安全管理机制从而让Java应用设置安全哨兵。

3.2 Eclipse简介

Eclipse 是一个基于Java的、开放源代码的可扩展开发平台。就其本身而言,它只是一组服务与一个框架,适用于通过插件组件的方法构建开发环境[6]。然而Eclipse 本身就附带一个标准的插件集,其中包括Java开发工具(Java Development Kit,JDK)。

虽然许多用户乐于将 Eclipse 作为 Java 集成开发环境来使用,而 Eclipse 的目标却不止限于此。Eclipse 还包含插件开发环境(Plug-in Development Environment,PDE),此组件主要给希望扩展 Eclipse 的编程人员使用,所以它允构建与 Eclipse 开发环境无缝集成的工具。因为 Eclipse 中都是插件,对于给 Eclipse 提供插件,还有给用户提供统一一致的集成开发环境来说,所有的工具开发人员都具备相同的发挥场所。

这种平等与一致性并不仅仅局限于 Java 开发工具。虽然 Eclipse 使用的是Java

黄河科技学院毕业设计说明书 第 7 页

语言来开发的,而它的用途却并不仅限于 Java 语言;诸如COBOL、C/C++、PHP等编程语言的插件都可以使用[7]。

3.3 MySQL简介

MySQL是一种关系型数据库管理系统。MySQL关联数据库不是将所有数据放在一个大仓库内,而是将数据保存在不同的表中,因此就提高了速度和灵活性。MySQL的结构化查询语言是用来访问数据库的最常用的标准化语言。

与其它的大型数据库如DB2、SQL Server、Oracle等相比,MySQL确实有不足之处,如规模小、功能有限等,而这丝毫没有减少它的受欢迎程度[8]。对于平常个人使用者和中小型企业的日常使用来说,MySQL所提供的功能已经完全够用了,且因为MySQL是开源软件,可以很大程度降低总体拥有成本[9]。总体来说MySQL有如下特性。

(1)支持多种存储引擎。

(2)支持多线程技术,充分利用CPU资源。

(3)经过优化的SQL查询算法,有效提高查询速度。

(4)可提供用于检查、管理、优化数据库操作的管理工具。

(5)提供TCP/IP、ODBC及JDBC多种数据库连接途径。

(6)支持大型数据库,可以处理有上千万条记录的大型数据库。

(7)采用C和C++编写,使用多种编译器进行测试,保证了源代码的可移植性。

(8)为多种编程语言提供API,包括Java、Perl、PHP、C、C++、Python、Tcl、Eiffel、Ruby等。

(9)既能作为单独的一个应用程序用在在客户端服务器网络环境中,也能作为一个库嵌入到其他的软件之中。

(10)多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名。

(11)支持Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、AIX、FreeBSD、HP-UX、Solaris、Windows等多种操作系统。

黄河科技学院毕业设计说明书 第 8 页

4 总体设计

4.1 系统结构设计

4.1.1 系统结构图

系统模块是软件结构的基础。设计系统时把软件模块化是为了降低软件复杂性,使软件设计、调试、测试、维护等都变得简单易行。本系统的系统模块如图4.1所示。

餐厅管理系统的设计与实现毕业设计说明书

图4.1餐厅管理系统模块图

4.1.2 系统主要功能模块

此次设计的餐饮管理系统共有4个模块,分别是:人事管理模块,登陆管理模块,菜谱价格模块,动画帮助模块。

(1)人事管理:对餐厅员工进行管理,包括员工的新增、修改、删除。

(2)登陆管理:对可登陆本系统的账号和密码进行管理,可新增、删除登陆用户和密码。

(3)菜谱价格:对餐厅菜谱进行管理,可以新增、修改以及删除菜谱。

(4)动画帮助:一个简单的帮助文档,对常见问题进行解释。

黄河科技学院毕业设计说明书 第 9 页

4.1.3 登陆流程图

系统的登陆流程如图4.2所示。

图4.2 登陆流程图

系统在登陆的时候根据用户输入的用户名字串,查询登陆用户是否存在;如果不存在,不予通过;如存在,进入下一步密码判断。

密码判断和用户名判断类似,根据密码处字串查询对应用户密码是否匹配;不匹配则不通过;密码正确则进入系统。

4.2 数据库结构设计

在餐厅息管理系统中采用“实体联系模型”(E-R模型)来描述数据库的结构与语义,用以对现实世界进行抽象[12]。ER模型直接从现实世界中抽象出实体类型与实体间的联系,再用E-R图表示数据模型。它有明显的优点:容易理解,接近人的思维;用户易接受,与计算机无关。但它仅是数据库设计的第一步。

实体与属性的定义如下:

员工资料表(员工ID,员工姓名,性别,地址,电话,备注)

采购信息表(材料编码,商品名称,厂商,单位,单价,数量,金额,采购日期)

餐厅管理系统的设计与实现毕业设计说明书

黄河科技学院毕业设计说明书 第 10 页

登陆信息表(登陆账号,登陆密码,登陆者姓名,登陆者职位) 销售信息表(序号,菜谱编号,售价,数量,总金额,销售日期) 各实体属性图如图4.3-4.6所示。

图4.3 员工资料表实体关系图

餐厅管理系统的设计与实现毕业设计说明书

图4.4 采购信息表实体关系图

餐厅管理系统的设计与实现毕业设计说明书

黄河科技学院毕业设计说明书 第 11 页

餐厅管理系统的设计与实现毕业设计说明书

餐厅管理系统的设计与实现毕业设计说明书

图4.5 登陆信息表实体关系图

图4.6 销售信息表实体关系图

数据库设计指的是对于一个给定的应用需求环境,从而构造数据库模式、建立数据库和应用系统,使其能有效地存储数据,从而满足用户的各种需求。

本系统采用的是MySQL数据库,为了使在系统中显示的动态数据存放在后台的数据库中,从而便于修改、更新与信息的隐藏,可将E-R图转换为关系模型。餐厅管理系统的数据库中每个表的设计结果将在下面几个表中展示。

员工资料表用来存储员工资料,具体的表结构如表4.1所示。

表4.1 员工资料表

字段名称 ID(主key) khname xb address tel bz

字段类型 int varchar char varchar varchar varchar

字段大小

4 100 10 100 50 50

黄河科技学院毕业设计说明书 第 12 页

采购信息表用来存储采购材料的基本信息,具体结构如表4.2所示。

表4.2 采购信息表

字段名称 ID(主key) spname cs dw dj cgdate

字段类型 char char char char money datetime

字段大小 15 50 100 10 8 8

登陆信息表用来存储库登陆信息,具体表结构如表4.3所示。

表4.3 登陆信息表

字段名称 ID(主key) spname cd jj sl cgdate

字段类型 char char char char float datetime

字段大小 20 50 30 20 8 8

销售信息表用来存储销售信息,具体表结构如表4.4所示。

表4.4 销售信息表

字段名称 ID(主key)

spid sj sl zje xsdate

字段类型 Char char money float money datetime

字段大小 15 7 8 8 8 8

黄河科技学院毕业设计说明书 第 13 页

5 系统实现

5.1 系统加载

系统启动时,首先出现的是的系统加载界面,具体如图5.1所示。

图5.1 系统加载视图

系统加载界面有一个进度条显示加载进度,一般不到10秒钟便可以加载完毕。加载界面显示了系统名称和开发者简要信息。此阶段加载了一个身份验证模块,为下一步的登陆做准备。具体代码见附录A。

5.2 系统登陆模块

当系统加载完成后,出现的是一个用户登陆界面。权限设置的主要目的是维护系统的完整性和安全性。拥有管理员权限的用户可以对其他用户进行相应的权限设置,没有权限的用户只能在相应的窗口进行操作。登陆界面如图5.2所示。

黄河科技学院毕业设计说明书 第 14 页

餐厅管理系统的设计与实现毕业设计说明书

图5.2 系统登陆模块界面

在系统的登录模块,输入用户名(或员工号)和密码,单击“确定”按钮进行身份验证。单击“确定”按钮之后,登录模块首先判断是否输入的用户名和密码为空,如果没有输入用户名或密码,将弹出提示框,提示请用户输入用户名和密码。如果输入了用户名和密码,系统将会判断输入的用户名和密码是否正确。如果用户名或密码错误,则弹出提示框提示用户账号或密码错误;如用户名和密码都正确,进入系统。具体代码见附录B。

5.3 系统主界面

通过身份验证后,对系统初始化;然后根据系统配置文件将数据库导人,并设置全局变量。这是进入了系统主界面。数据库连接代码见附录D,主界面代码见附录E。

在系统主界面的右边,用户将看到本系统的各大功能模块:人事管理,登陆管理,菜谱价格,报表统计,成本及库房,系统设置,动画帮助。在窗口最上面的菜单栏有功能模块快速连接按钮,在窗口右下角显示的是当前系统时间。在系统主界面,可以通过事件驱动机制来激活各功能模块,并执行指定模块。系统主界面如图5.3所示。

黄河科技学院毕业设计说明书 第 15 页

图5.3 系统主界面

5.4 人事管理模块

首先介绍人事管理模块,人事管理界面如图5.4所示。

图5.4 人事管理界面

在人事管理界面,操作员可以浏览员工信息。并可以对进行员工信息进行添加、修改、删除动作。单击添加按钮,即可进行员工的添加,界面如图5.5所示。

黄河科技学院毕业设计说明书 第 16 页

餐厅管理系统的设计与实现毕业设计说明书

图5.5 员工添加界面

单击修改按钮,即可进行员工信息的修改,界面如图5.6所示。

餐厅管理系统的设计与实现毕业设计说明书

图5.6 员工信息修改界面

单击删除按钮,即可进行员工的删除,界面如图5.7所示。

黄河科技学院毕业设计说明书 第 17 页

餐厅管理系统的设计与实现毕业设计说明书

图5.7 员工删除界面

5.5 登陆管理模块

登陆管理模块界面如图5.8所示。

图5.8 登陆管理模块界面

登陆管理模块功能比较单一,只能对当前或其他登陆用户进行密码的添加或修改动作。

5.6 菜谱价格模块

菜单服务模块的主要功能是对餐厅的菜谱进行管理,具有菜谱的添加、修改、删除等功能。菜谱价格模块界面如图5.9所示。

黄河科技学院毕业设计说明书 第 18 页

图5.9 菜谱价格模块界面

5.7 帮助模块

帮助模块只有一个界面,如图5.10所示。

图5.10 帮助模块界面

帮助界面就一些系统运行时的注意事项,操作中遇到的问题进行了简要的解释。并对系统中开发遗留的问题进行了简单的阐述。

上述模块中没有特别指明的代码见附录F。

黄河科技学院毕业设计说明书 第 19 页

结 论

经过前期的系统需求分析,开发语言与数据库的选用,系统构架设计,数据库构架设计,系统各模块功能的实现,以及后期的测试调试,系统基开发已基本完成。

此次开发的餐厅管理系统采用MySQL作为后台数据库,以Java作为编程语言,并用Eclipse作为前端开发工具,并采用C/S(客户/服务器)构架以及模块化的结构。此次设计的系统虽然操作简单,但其对系统的响应速度、稳定性、实效性、安全性等要求比较高。

目前为止,系统达到了预期目标,系统的大部分模块都已实现,界面友好、美观、符合中国人的审美习惯,取得了令人较为满意的效果。此次开发的餐厅管理系统具有检索迅速、存储量大、保密性好、查找方便、可靠性高、寿命长、成本低等优点,但是仍然存在一些不足的地方,值得深入思考。不过随着计算机应用技术的不断发展,一些新的设计思路仍可以被添加应用到本系统中。

数个月的毕业设计已近尾声,在这几个月之中,感触颇深。这次毕业设计有着非同一般的意义,在许多方面对我产生了重要而积极的影响,让我对专业知识有了更深刻地认识,同时也对让我对毕业之后踏上新的征程有了更大的信心。

黄河科技学院毕业设计说明书 第 20 页

致 谢

四年的大学生活此时即将划上一个句号,而我的人生至此只是一个逗号,我将面对又一次面对新的征程。四年的大学求学生涯,在师长、亲友、同学的大力支持下,辛苦却又也收获满囊,就在论文即将付梓之际,思绪万千,心情久久不能平静。名人、伟人为我所崇拜,而我更急切地想要把我的赞美和敬意献给一位平凡的人——我的导师。我可能不是您最出色的学生,而您却是我最尊敬的老师。

在此,我由衷地感谢我的指导老师——XXX老师。在论文的开题、构思和创作的过程中,得到了关老师热切的关心与帮助。关老师严谨的治学态度,诲人不倦的高尚师德,一丝不苟的工作作风,严以律己、宽以待人的高尚作风,平易近人的人格魅力都对我产生了深远影响。关老师看待问题的开阔的思路和敏锐程度,都给我留下了深刻的印象,而最让我敬佩的是关老师的认真和耐心。通过老师的指导,我掌握了基本的研究方法,树立了远大的学习目标,但更学到更多的是为人处事。

还要感谢同组的成员,在平常的日子里,我们相互讨论、相互学习,加深了我们的友谊,也让我们从其他的方面更好的认识自己的优点和缺点。于此同时我也明白了一个小团队之间合作的重要性。

感谢我的父亲母亲,焉得谖草,言树之背,养育之恩,无以回报。你们能够永远健康快乐是我最大的心愿。

同时也感谢学校提供了良好的创作毕业设计环境。

再一次向帮助过我的老师和同学致以崇高的谢意,对审阅论文的老师表示致谢,恳请提出批评与指正。

黄河科技学院毕业设计说明书 第 21 页

参考文献

[1] 赵真.Java程序员之旅—Eclipse开发技术详解[M] .北京:化学工业出版社,2010.7.

[2] 埃克尔.Java编程思想(第4版)[M] .北京:机械工业出版社,2007.6.

[3] 杨冬青译.数据库系统概念(原书第6版)[M] .北京:机械工业出版社,2012.3.

[4] 刘涛.小型网站建设技术[M] .北京:中国铁道出版社,2006.11.

[5] 王利.数据库基础与应用[M] .北京:中央广播电视大学出版社,1997.6.

[6] 胡耀芳等.网页设计与制作教程(第2版)[M] .北京:清华大学出版社,2005.7.

[7] Andrew Lih .维基百科革命The Wikipedia Revolution[M] .北京:北京科文图书业信息技术有限公司,2009.3.

[8] 孔昊.JavaWeb设计实用教程——基于Eclipse环境的应用开发(第1版)[M] .北京:机械工业出版社,2012.4.

[9] 霍尔泽.Eclipse 集成开发工具(第1版)[M] .南京:东南大学出版社,2005.10.

[10] 郑阿奇.Eclipse实用教程[M] .北京:电子工业出版社,2009.7.

[11] BruceEckel.JSP.Think In Java/C#/Python [M] .Mechanic industry:Press, 2003.4.

[12] Denning DE.ryptography and data ecurity[M] .Assachusetts:Ddison-Wesley, 1982.3.

黄河科技学院毕业设计说明书 第 22 页

附 录

附录A 闪屏载入系统的代码

package com.mhl.view;

import java.awt.*;

import javax.swing.*;

public class Index extends JWindow implements Runnable{

//定义与进度条相关的组件

JProgressBar jpb;//定义进度条

JLabel jl1;//用于在窗体的北部放一张图片,南部是进度条 int width,height;//用于获取显示屏分辨率大小

public static void main(String []args){

Index index=new Index();

//创建index线程

Thread t=new Thread(index);

//启动线程

t.start();

}

//构造函数

public Index()

{

//创建标签,并在标签上放置一张图片

jl1=new JLabel(new ImageIcon("image/index/index.gif")); //创建进度条

jpb=new JProgressBar();

//设置进度条属性

jpb.setStringPainted(true);//显示当前进度值信息

jpb.setIndeterminate(false);//确定进度条执行完成后不来回滚动 jpb.setBorderPainted(false);//设置进度条边框不显示

jpb.setBackground(Color.darkGray);//设置进度条的背景色 //添加组件

this.add(jl1,BorderLayout.NORTH);

this.add(jpb,BorderLayout.SOUTH);

//设置窗体属性

this.setSize(400,263);

//设置窗体显示的位置

width=Toolkit.getDefaultToolkit().getScreenSize().width; height=Toolkit.getDefaultToolkit().getScreenSize().height;

黄河科技学院毕业设计说明书 第 23 页

} this.setLocation(width/2-200,height/2-150); //设置窗口显示 this.setVisible(true); } //进度条线程的run方法,用于设置线程的属性 public void run() { //定义一个数组,存放进度条显示时需要的数据 int []progressValue={0,1,5,8,14,17,26,35,38,43,49,56,65,71,75,78,86,94,98,99,100}; for(int i=0;i<progressValue.length;i++) { try { //休眠1秒,再执行 Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } jpb.setValue(progressValue[i]);//取得数组中的进度值 } //当进度完成后,执行相应的操作,如切换到其他的窗口,同时关闭进度条窗口等 new Login(); //关闭进度条窗口 this.dispose(); }

黄河科技学院毕业设计说明书 第 24 页 附录B 系统登陆的代码

package com.mhl.view;

//引入字体包

import com.mhl.model.*;

import com.mhl.mytools.*;

import javax.imageio.*;

import javax.swing.*;

import javax.swing.border.*;

import java.awt.*;

import java.awt.event.*;

import java.io.*;

public class Login extends JDialog implements ActionListener { //创建登陆组件

JLabel jl1,jl2,jl3;

JTextField jname;

JPasswordField jpasswd;

JButton jlog,jcancle;

//设置一个字体

Font f1;

public static void main(String []args)

{

Login login=new Login();

}

public Login()

{

jl1=new JLabel("请输入用户名:");

jl1.setBounds(60, 190, 150, 30);

jl1.setFont(MyFont.f1);

this.add(jl1);

//或提示输入员工号

jl2=new JLabel("(或员工号)");

jl2.setForeground(Color.red);

jl2.setFont(MyFont.f2);

jl2.setBounds(100,210,100,30);

this.add(jl2);

//提示输入密码

jl3=new JLabel ("请输入密码:");

jl3.setBounds(60,240,150,30);

jl3.setFont(MyFont.f2);

this.add(jl3);

//用户名的输入文本框

黄河科技学院毕业设计说明书 第 25 页

jname=new JTextField(20); jname.setFocusable(true); jname.setBounds(180,190,120,30); jname.setFont(f1); this.add(jname); //设置边界下凹 jname.setBorder(BorderFactory.createLoweredBevelBorder()); //设置密码输入框 jpasswd=new JPasswordField(); jpasswd.setFocusable(true); jpasswd.setBounds(180,240,120,30); this.add(jpasswd); jpasswd.setBorder(BorderFactory.createLoweredBevelBorder()); //设置登陆按钮 jlog=new JButton("确 定"); //添加监听 jlog.addActionListener(this); jlog.setBounds(105,300,75,30); jlog.setFont(f1); //设置前景色 jlog.setForeground(Color.blue); this.add(jlog); //设置取消按钮 jcancle=new JButton("取 消"); jcancle.addActionListener(this); jcancle.setBounds(215,300,75,30); jcancle.setFont(f1); //设置前景色为蓝色 jcancle.setForeground(Color.blue); this.add(jcancle); //设置空布局 this.setLayout(null); //创建一个BackImage对象 BackImage bi=new BackImage(); //设定图片的位置 bi.setBounds(0,0,360,360); //把图片添加到JDialog this.add(bi); //不显示窗口的上下边框 this.setUndecorated(true); //设置窗口居中 this.setSize(360, 360); int width=getToolkit().getDefaultToolkit().getScreenSize().width;

黄河科技学院毕业设计说明书 第 26 页

int height=getToolkit().getDefaultToolkit().getScreenSize().height; this.setLocation(width/2-200,height/2-200);

this.setVisible(true);

}

//创建一个内部类,并继承JPanle,用于画背景图片

class BackImage extends JPanel

{

Image im;

public BackImage(){

try

{

im=ImageIO.read(new File("Image/login.gif"));

}

catch(Exception e)

{

e.printStackTrace();

}

}

{

g.drawImage(im,0,0,360,360,this);

}

public void Paint(Graphics g)

{

g.drawImage(im,0,0,348,330,this);

}

}

//响应用户登陆的请求

public void actionPerformed(ActionEvent arg0) {

// TODO Auto-generated method stub

//判断是否点击确定按钮

if(arg0.getSource()==jlog)

{

//取出员工号及其密码

String passwd=new String(this.jpasswd.getPassword());

//取得用户名及密码后,调用模式处理

UserModel um=new UserModel();

String zhiwei=um.checkUser(userName, passwd);//返回员工的职位

if(zhiwei.equals("经理")||zhiwei.equals("管理员")||zhiwei.equals("主管")) {

//通过new Windows1()切换到相应的页面(窗口)

new Windows1();

//切换到Windows1页面后,关闭登陆界面

this.dispose();

黄河科技学院毕业设计说明书 第 27 页

} } } } else if(arg0.getSource()==jcancle) { //当点击取消按钮时,关闭登陆框,退出系统 this.dispose(); }

黄河科技学院毕业设计说明书 第 28 页

附录C 赋予用户权限的代码

package com.mhl.model;

import java.sql.*;

import sun.java2d.pipe.SpanClipRenderer;

import com.mhl.db.*;

public class UserModel {

/**

*

* @param cleId 用户编号

* @param passwd 用户密码

* @return 用户的职位,如果该用户不存在,则返回空

*/

public String checkUser(String cleId,String passwd)

{

String zhiwei="";

SqlHelper sh=null;

try {

//组织sql语句和参数列表,为防止注入漏洞,采取?赋值方式(paras[])

String sql="select cleZw from clerkInfo c,login l where c.cleId=l.cleId " +"and l.cleId=? and l.passwd=?";

String paras[]={cleId,passwd};

sh=new SqlHelper();

//从SqlHelper类中得到数据库的结果集

ResultSet rs=sh.query(sql, paras);

if(rs.next())

{

//如果进去,则取出职位

zhiwei=rs.getString(1);

}

} catch (Exception e) {

// TODO: handle exception

e.printStackTrace();

}

finally

{

sh.close();

}

return zhiwei;

}

}

黄河科技学院毕业设计说明书 第 29 页

附录D 数据库连接的代码

package com.mhl.db;package com.mhl.db;

package com.mhl.db;

import java.util.*;

import java.sql.*;

public class SqlHelper {

//定义需要的对象

Connection ct=null;

PreparedStatement ps=null;

ResultSet rs=null;

String driver="com.mysql.jdbc.Driver";

String

url="jdbc:mysql://127.0.0.1:3306/restaurant?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull";

String user="root";

String passwd="123456";

//构造函数,初始化ct

public SqlHelper()

{

try {

//加载驱动

Class.forName(driver);

//得到连接

ct=DriverManager.getConnection(url,user,passwd);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

//[]paras,通过?赋值方式可以防止漏洞注入方式,保证安全性

public ResultSet query(String sql,String []paras)

{

try {

ps=ct.prepareStatement(sql);

//对sql的参数赋值

for(int i=0;i<paras.length;i++)

{

ps.setString(i+1, paras[i]);

}

//执行查询

rs=ps.executeQuery();

黄河科技学院毕业设计说明书 第 30 页

} } catch (Exception e) { e.printStackTrace(); // TODO: handle exception } //返回结果集 return rs; } //关闭资源的方法 public void close() { try { if(rs!=null) rs.close(); if(ps!=null) ps.close(); if(ct!=null) ct.close(); } catch (Exception e) { e.printStackTrace(); // TODO: handle exception } }

黄河科技学院毕业设计说明书 第 31 页

附录E 系统主界面的代码

package com.mhl.view;

//引入字体包

import com.mhl.mytools.*;

import java.awt.*;

import javax.swing.*;

import javax.swing.Timer;

import java.util.*;

import java.awt.event.*;

import javax.imageio.*;

import java.io.*;

import com.sun.java.swing.plaf.windows.resources.windows;

public class Windows1 extends JFrame implements ActionListener,MouseListener{

//定义界面中需要的组件

//标题图标

Image titleIcon,timebg;

//菜单条

JMenuBar jmb;

//一级菜单

JMenu jm1,jm2,jm3,jm4,jm5,jm6;

//二级菜单

//第一个菜单的二级菜单

JMenuItem jmm1,jmm2,jmm3,jmm4,jmm5;

//二级菜单的图标

//第一个菜单的二级菜单图标

ImageIcon jm1_icon1,jm1_icon2,jm1_icon3,jm1_icon4,jm1_icon5;

//创建工具条

JToolBar jtb;

JButton jb1,jb2,jb3,jb4,jb5,jb6,jb7,jb8,jb9,jb10;

//定义需要的五个面板(JPanel)及JLabel

JPanel jp1,jp2,jp3,jp4,jp5;

//再定义7个面板,用于处理当点击jp1面板上的标签时,应该在jp3卡片上显示的卡片(每一张卡片用一个面板,这样可显示不同的功能模块,如人事管理,登陆管理的界面)

JPanel jp3_1,jp3_2,jp3_3,jp3_4,jp3_5,jp3_6,jp3_7;

//定义jp1面板上需要的组件

//调用ImagePanel类,用于画jp1背景图片

ImagePanel jp1_imgPanel;

//定义jp1面板所需的背景图片

Image jp1_bg;

//jp1面板上的六个小图标(标签)

JLabel jp1_lab1,jp1_lab2,jp1_lab3,jp1_lab4,jp1_lab5,jp1_lab6,jp1_lab7,jp1_lab8;

黄河科技学院毕业设计说明书 第 32 页

//给jp2定义需要的JLabel,即两个左右图标,用于控制卡片区域的显示 JLabel jp2_lab1,jp2_lab2; //定义jp3需要的组件 Image jp3_bg; //定义jp3卡片测试需要的图片标签 JLabel jp3_l1,jp3_l2,jp3_l3,jp3_l4,jp3_l5,jp3_l6,jp3_l7; //定义jp2,jp3为卡片布局,必须在这里定义,后的的监听才能切换卡片 CardLayout cardjp2,cardjp3; //定义一个拆分窗口的组件,用于分别存放jp1,jp4 JSplitPane jsp1; //在状态栏中显示当前时间 JLabel timeNow; //javax.swing包中的Timer可以定时的处理Action事件,因此可以用它来完成一些功能 //但是在JAVA中,Timer存在于多个包中,其功能也不一样,因此使用时必须指定包 //同时必须实现接口监听,implements ActionListener javax.swing.Timer t; public static void main(String[] args) { // TODO Auto-generated method stub Windows1 w1=new Windows1(); } //初始化菜单条的函数 public void initMenu() { //创建第一个菜单的二级菜单图标 jm1_icon1=new ImageIcon("image/jm1_icon1.jpg"); jm1_icon2=new ImageIcon("image/jm1_icon2.jpg"); jm1_icon3=new ImageIcon("image/jm1_icon3.jpg"); jm1_icon4=new ImageIcon("image/jm1_icon4.jpg"); jm1_icon5=new ImageIcon("image/jm1_icon5.jpg"); //创建一级菜单 jm1=new JMenu("系统管理"); jm1.setFont(MyFont.f1); //对其子菜单采取就近原则,可读性高,同时便于查看代码 //创建二级菜单 jmm1=new JMenuItem("切换用户",jm1_icon1); jmm1.setFont(MyFont.f2); jmm2=new JMenuItem("切换到收款界面",jm1_icon2); jmm2.setFont(MyFont.f2); jmm3=new JMenuItem("登陆管理",jm1_icon3); jmm3.setFont(MyFont.f2); jmm4=new JMenuItem("万年历",jm1_icon4); jmm4.setFont(MyFont.f2); jmm5=new JMenuItem("退出",jm1_icon5);

黄河科技学院毕业设计说明书 第 33 页

jmm5.setFont(MyFont.f2); //添加到一级菜单 jm1.add(jmm1); jm1.add(jmm2); jm1.add(jmm3); jm1.add(jmm4); jm1.add(jmm5); jm2=new JMenu("人事管理"); jm2.setFont(MyFont.f1); jm3=new JMenu("菜单服务"); jm3.setFont(MyFont.f1); jm4=new JMenu("报表统计"); jm4.setFont(MyFont.f1); jm5=new JMenu("成本及库房"); jm5.setFont(MyFont.f1); jm6=new JMenu("帮助"); jm6.setFont(MyFont.f1); //把一级菜单添加菜单条 jmb=new JMenuBar(); jmb.add(jm1); jmb.add(jm2); jmb.add(jm3); jmb.add(jm4); jmb.add(jm5); jmb.add(jm6); //把菜单条JMenuBar添加到JFrame上面去 this.setJMenuBar(jmb); } //初始化工具条的函数 public void initToolBar() { //处理工具栏的组件 //创建工具条 jtb=new JToolBar(); //设置工具条不可以浮动,即固定不动 jtb.setFloatable(false); //创建工具条上面的按钮 jb1=new JButton(new ImageIcon("image/toolBar_image/jb1.jpg")); jb2=new JButton(new ImageIcon("image/toolBar_image/jb2.jpg")); jb3=new JButton(new ImageIcon("image/toolBar_image/jb3.jpg")); jb4=new JButton(new ImageIcon("image/toolBar_image/jb4.jpg")); jb5=new JButton(new ImageIcon("image/toolBar_image/jb5.jpg")); jb6=new JButton(new ImageIcon("image/toolBar_image/jb6.jpg"));

黄河科技学院毕业设计说明书 第 34 页

jb7=new JButton(new ImageIcon("image/toolBar_image/jb7.jpg")); jb8=new JButton(new ImageIcon("image/toolBar_image/jb8.jpg")); jb9=new JButton(new ImageIcon("image/toolBar_image/jb9.jpg")); jb10=new JButton(new ImageIcon("image/toolBar_image/jb10.jpg")); //把按钮添加到工具条 jtb.add(jb1); jtb.add(jb2); jtb.add(jb3); jtb.add(jb4); jtb.add(jb5); jtb.add(jb6); jtb.add(jb7); jtb.add(jb8); jtb.add(jb9); jtb.add(jb10); //把工具条添加到窗口的北部 this.add(jtb,BorderLayout.NORTH); } //初始化窗口主体部分(中间部分,四个面板)的函数 public void initAllPanel() { //处理窗口主体(即中间部分) //创建jp1面板 jp1=new JPanel(new BorderLayout());//创建并设置为边界布局 try { jp1_bg=ImageIO.read(new File("image/center_image/jp1_bg.jpg")); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } //定义一个鼠标指针的类型 Cursor myCursor=new Cursor(Cursor.HAND_CURSOR);//手型鼠标 jp1_imgPanel=new ImagePanel(jp1_bg); //对图片面板设置为网格布局 this.jp1_imgPanel.setLayout(new GridLayout(8,1)); //在图片面板上添加小图标,也就是Label //new JLabel()构造函数中的参数顺序是:文字说明,图标,序号 jp1_lab1=new JLabel(new ImageIcon("image/center_image/label_1.gif")); jp1_imgPanel.add(jp1_lab1); jp1_lab2=new Jlabel(“人事管理” ,new ImageIcon(“image/center_image/label_2.jpg”),0); jp1_lab2.setFont(MyFont.f4); //当鼠标移到JLabel上面时变成一只小手 jp1_lab2.setCursor(myCursor);

黄河科技学院毕业设计说明书 第 35 页

//默认让JLabel不可用 jp1_lab2.setEnabled(false); //给jp1_lab2添加鼠标监听 jp1_lab2.addMouseListener(this); jp1_imgPanel.add(jp1_lab2); jp1_lab3=new ("登 陆 管 理",new ImageIcon("image/center_image/label_3.jpg"),0); jp1_lab3.setFont(MyFont.f4); jp1_lab3.setCursor(myCursor); jp1_lab3.setEnabled(false); jp1_lab3.addMouseListener(this); jp1_imgPanel.add(jp1_lab3); jp1_lab4=new JLabel("菜 谱 价 格",new ImageIcon("image/center_image/label_4.jpg"),0); jp1_lab4.setFont(MyFont.f4); jp1_lab4.setCursor(myCursor); jp1_lab4.setEnabled(false); jp1_lab4.addMouseListener(this); jp1_imgPanel.add(jp1_lab4); jp1_lab5=new JLabel("报 表 统 计",new ImageIcon("image/center_image/label_5.jpg"),0); jp1_lab5.setFont(MyFont.f4); jp1_lab5.setCursor(myCursor); jp1_lab5.setEnabled(false); jp1_lab5.addMouseListener(this); jp1_imgPanel.add(jp1_lab5); jp1_lab6=new JLabel("成本及库房",new ImageIcon("image/center_image/label_6.jpg"),0); jp1_lab6.setFont(MyFont.f4); jp1_lab6.setCursor(myCursor); jp1_lab6.setEnabled(false); jp1_lab6.addMouseListener(this); jp1_imgPanel.add(jp1_lab6); jp1_lab7=new JLabel("系 统 设 置",new ImageIcon("image/center_image/label_7.jpg"),0); jp1_lab7.setFont(MyFont.f4); jp1_lab7.setCursor(myCursor); jp1_lab7.setEnabled(false); jp1_lab7.addMouseListener(this); jp1_imgPanel.add(jp1_lab7); jp1_lab8=new JLabel("动 画 帮 助",new ImageIcon("image/center_image/label_8.jpg"),0); jp1_lab8.setFont(MyFont.f4); jp1_lab2.setCursor(myCursor); jp1_lab8.setEnabled(false); jp1_lab8.addMouseListener(this); jp1_imgPanel.add(jp1_lab8); //将图片面板放入到jp1面板 jp1.add(jp1_imgPanel);

黄河科技学院毕业设计说明书 第 36 页

//创建jp2,jp3,jp4面板,其中jp2,jp3是被jp4包起来的 jp4=new JPanel(new BorderLayout()); this.cardjp2=new CardLayout(); //设置jp2为卡片布局 jp2=new JPanel(cardjp2); //创建两个标签(左,右)用于当点击时,拆分窗口的显示区域 jp2_lab1=new JLabel(new ImageIcon("image/center_image/jp2_left.jpg")); jp2_lab1.addMouseListener(this); jp2_lab2=new JLabel(new ImageIcon("image/center_image/jp2_right.jpg")); jp2_lab2.addMouseListener(this); //把jp2_lab1,jp2_lab2加入到jp2中,jp2是卡片布局 jp2.add(jp2_lab1,"0"); jp2.add(jp2_lab2,"1"); this.cardjp3=new CardLayout(); jp3=new JPanel(cardjp3); //先给jp3加入一个主界面的卡片(图片面板) try { jp3_bg=ImageIO.read(new File("image/center_image/jp3_bg.jpg")); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } ImagePanel ip_jp3=new ImagePanel(jp3_bg); //创建两个图片标签用于测试卡片布局 jp3_l1=new JLabel(new ImageIcon("image/jp3_test/jp3_1.jpg")); jp3_l2=new JLabel(new ImageIcon("image/jp3_test/jp3_2.jpg")); jp3_l3=new JLabel(new ImageIcon("image/jp3_test/jp3_3.jpg")); jp3_l4=new JLabel(new ImageIcon("image/jp3_test/jp3_4.jpg")); jp3_l5=new JLabel(new ImageIcon("image/jp3_test/jp3_5.jpg")); jp3_l6=new JLabel(new ImageIcon("image/jp3_test/jp3_6.jpg")); jp3_l7=new JLabel(new ImageIcon("image/jp3_test/jp3_7.jpg")); //创建各功能块对应的卡片面板 jp3_1=new JPanel(); jp3_1.add(jp3_l1); jp3_2=new JPanel(); jp3_2.add(jp3_l2); jp3_3=new JPanel(); jp3_3.add(jp3_l3); jp3_4=new JPanel(); jp3_4.add(jp3_l4); jp3_5=new JPanel(); jp3_5.add(jp3_l5); jp3_6=new JPanel();

黄河科技学院毕业设计说明书 第 37 页

jp3_6.add(jp3_l6); jp3_7=new JPanel(); jp3_7.add(jp3_l7); //添加卡片 jp3.add(ip_jp3,"0"); jp3.add(jp3_1,"1"); jp3.add(jp3_2,"2"); jp3.add(jp3_3,"3"); jp3.add(jp3_4,"4"); jp3.add(jp3_5,"5"); jp3.add(jp3_6,"6"); jp3.add(jp3_7,"7"); //把jp2,jp3加入jp4 jp4.add(jp2,BorderLayout.WEST); jp4.add(jp3,BorderLayout.CENTER); //做一个拆分窗口,分别存放jp1,jp4 jsp1=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,jp1,jp4); //指定左边的面板占多大的像素 jsp1.setDividerLocation(150); //把拆分边界线设为0,即不显示 jsp1.setDividerSize(0); //将jsp1面板放入到窗体 this.add(jsp1,BorderLayout.CENTER); } //初始化状态栏(jp5面板)的函数 public void initJp5() { //创建jp5面板,即状态栏的处理 jp5=new JPanel(); //设置jp5面板的布局方式,便于在该面板上放置其他功能面板 jp5.setLayout(new BorderLayout()); //创建Timer t=new Timer(1000,this);//每隔一秒,去融发一个ActionEvent事件 //启动定时器 t.start(); //创建显示时间标签 //Calendar.getInstance().getTime().toLocaleString()是指得到当前的系统时间 timeNow=new JLabel(Calendar.getInstance().getTime().toLocaleString()); timeNow.setFont(MyFont.f3); try { timebg=ImageIO.read(new File("image/time_bg.jpg")); } catch (IOException e) { // TODO Auto-generated catch block

黄河科技学院毕业设计说明书 第 38 页

e.printStackTrace(); } //创建一个图片面板,用于画状态栏的背景图 ImagePanel ip1=new ImagePanel(timebg); //设置图片面板的布局方式 ip1.setLayout(new BorderLayout()); ip1.add(timeNow,BorderLayout.EAST); jp5.add(ip1); this.add(jp5,BorderLayout.SOUTH); } public Windows1() { //设置窗口标题图标 try { //在PS中制作透明背景的图标时,必须保存为GIF格式的图片,方能显示透明背景 titleIcon=ImageIO.read(new File("image/title.gif")); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } this.setIconImage(titleIcon); this.setTitle("餐厅管理系统 By:张蓓"); this.setFont(MyFont.f0); //把每一个功能块的代码抽象成一个函数,这样可读性高,同时便于测试和分析 //调用初始化菜单条的函数 this.initMenu(); //调用初始化工具条的函数 this.initToolBar(); //调用初始化窗口主体(中间部分,jp1,jp2,jp3,jp4)的函数 this.initAllPanel(); //调用初始化状态栏(jp5)的函数 this.initJp5(); //设置大小 int width=Toolkit.getDefaultToolkit().getScreenSize().width; int height=Toolkit.getDefaultToolkit().getScreenSize().height; //设置窗体 this.setSize(width,height-32); this.setVisible(true); //关闭窗口时退出系统 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub

黄河科技学院毕业设计说明书 第 39 页

");

this.timeNow.setText("当前系统时间:"+Calendar.getInstance().getTime().toLocaleString()+" } public void mouseClicked(MouseEvent e) { // TODO Auto-generated method stub if(e.getSource()==this.jp1_lab2)//人事管理 { this.cardjp3.show(jp3, "1"); } else if(e.getSource()==this.jp1_lab3)//登陆管理 { this.cardjp3.show(jp3, "2"); } else if(e.getSource()==this.jp1_lab4)//菜谱价格 { this.cardjp3.show(jp3, "3"); } else if(e.getSource()==this.jp1_lab5)//报表统计 { this.cardjp3.show(jp3, "4"); } else if(e.getSource()==this.jp1_lab6)//成本及库房 { this.cardjp3.show(jp3, "5"); } else if(e.getSource()==this.jp1_lab7)//系统设置 { this.cardjp3.show(jp3, "6"); } else if(e.getSource()==this.jp1_lab8)//动画帮助 { this.cardjp3.show(jp3, "7"); } else if(e.getSource()==jp2_lab1) { //把拆分面板的左边隐藏起来,即隐藏jp1 this.jsp1.setDividerLocation(0); //设置拆分面板的左边面板的大小为0像素,即不可见 //同时显示向右的箭头 this.cardjp2.show(jp2,"1"); } else if(e.getSource()==jp2_lab2) {

黄河科技学院毕业设计说明书 第 40 页

} } public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub //如果用户选择了某个操作JLabel,则高亮 if(e.getSource()==this.jp1_lab2) { this.jp1_lab2.setEnabled(true); } else if(e.getSource()==this.jp1_lab3) { this.jp1_lab3.setEnabled(true); } else if(e.getSource()==this.jp1_lab4) { this.jp1_lab4.setEnabled(true); } else if(e.getSource()==this.jp1_lab5) { this.jp1_lab5.setEnabled(true); } else if(e.getSource()==this.jp1_lab6) { this.jp1_lab6.setEnabled(true); } else if(e.getSource()==this.jp1_lab7) { this.jp1_lab7.setEnabled(true); } else if(e.getSource()==this.jp1_lab8) { this.jp1_lab8.setEnabled(true); } } public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub //如果用户离开了JLabel,则禁用 if(e.getSource()==this.jp1_lab2) //把隐藏的jp1面板展开,即设置左边面板拆分大小 this.jsp1.setDividerLocation(150); //由于前面定义拆分面板时,左边占150像素,此时应显示150像素 //同时显示向左的箭头 this.cardjp2.show(jp2,"0");

黄河科技学院毕业设计说明书 第 41 页

} { this.jp1_lab2.setEnabled(false); } else if(e.getSource()==this.jp1_lab3) { this.jp1_lab3.setEnabled(false); } else if(e.getSource()==this.jp1_lab4) { this.jp1_lab4.setEnabled(false); } else if(e.getSource()==this.jp1_lab5) { this.jp1_lab5.setEnabled(false); } else if(e.getSource()==this.jp1_lab6) { this.jp1_lab6.setEnabled(false); } else if(e.getSource()==this.jp1_lab7) { this.jp1_lab7.setEnabled(false); } else if(e.getSource()==this.jp1_lab8) { this.jp1_lab8.setEnabled(false); } } public void mousePressed(MouseEvent e) { // TODO Auto-generated method stub } public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub }

黄河科技学院毕业设计说明书 第 42 页

附录F 其它部分的代码

/**

* 这是人事的数据模型类,完成对人事表的各种操作

*/

package com.mhl.model;

import java.sql.ResultSet;

import java.sql.ResultSetMetaData;

import java.sql.SQLException;

import java.util.Vector;

import javax.swing.table.AbstractTableModel;

import com.mhl.db.SqlHelper;

public class EmpModel extends AbstractTableModel{

SqlHelper sqlHelper;

Vector colums;

Vector rows;

ResultSetMetaData rsmt=null;

//写一个方法,用于查询需要显示的人事信息

//对query修改,让其有更好的通用性

//增删改

public boolean upDate(String sql,String paras[]){

//创建一个SqlHelper(如果不考虑程序的并发性,可以把sqlhelper做成static) sqlHelper=new SqlHelper();

return sqlHelper.exeUpdate(sql, paras);

}

public void query(String sql,String paras[]){

//初始化列

this.colums=new Vector();

this.rows=new Vector();

SqlHelper sh=new SqlHelper();

ResultSet rs=sh.query(sql, paras);

//从rs对象中可以得到一个

try {

rsmt=rs.getMetaData();

for(int i=0;i<rsmt.getColumnCount();i++){

this.colums.add(rsmt.getColumnName(i+1));

}

} catch (SQLException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

try {

黄河科技学院毕业设计说明书 第 43 页

while(rs.next()){

Vector temp=new Vector();

for(int i=0;i<rsmt.getColumnCount();i++){ temp.add(rs.getString(i+1)); }

rows.add(temp);

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

sh.close();

}

}

@Override

public String getColumnName(int column) {

// TODO Auto-generated method stub

return this.colums.get(column).toString();

}

public int getColumnCount() {

// TODO Auto-generated method stub

return this.colums.size();

}

@Override

public int getRowCount() {

// TODO Auto-generated method stub

return this.rows.size();

}

@Override

public Object getValueAt(int rowIndex, int columnIndex) { // TODO Auto-generated method stub

return ((Vector)rows.get(rowIndex)).get(columnIndex); }

}

package com.mhl.model;

import java.sql.ResultSet;

import java.sql.ResultSetMetaData;

import java.sql.SQLException;

import java.util.Vector;

import javax.swing.table.AbstractTableModel;

import com.mhl.db.SqlHelper;

public class LoginModel extends AbstractTableModel{ Vector colums;

黄河科技学院毕业设计说明书 第 44 页

Vector rows; ResultSetMetaData rsmt=null; //写一个方法,用于查询需要显示的人事信息 //对query修改,让其有更好的通用性 public void query(String sql,String paras[]){ //初始化列 this.colums=new Vector(); this.rows=new Vector(); SqlHelper sh=new SqlHelper(); ResultSet rs=sh.query(sql, paras); //从rs对象中可以得到一个 try { rsmt=rs.getMetaData(); for(int i=0;i<rsmt.getColumnCount();i++){ this.colums.add(rsmt.getColumnName(i+1)); } } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } try { while(rs.next()){ Vector temp=new Vector(); for(int i=0;i<rsmt.getColumnCount();i++){ temp.add(rs.getString(i+1)); } if((temp.get(rsmt.getColumnCount()-1))!=null){ temp.set(rsmt.getColumnCount()-1, "已注册"); } rows.add(temp); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ sh.close(); } } @Override public String getColumnName(int column) { // TODO Auto-generated method stub return this.colums.get(column).toString(); }

黄河科技学院毕业设计说明书 第 45 页

public int getColumnCount() {

// TODO Auto-generated method stub

return this.colums.size();

}

@Override

public int getRowCount() {

// TODO Auto-generated method stub

return this.rows.size();

}

@Override

public Object getValueAt(int rowIndex, int columnIndex) { // TODO Auto-generated method stub

return ((Vector)rows.get(rowIndex)).get(columnIndex); }

}

package com.mhl.model;

import java.sql.ResultSet;

import java.sql.ResultSetMetaData;

import java.sql.SQLException;

import java.util.Vector;

import javax.swing.table.AbstractTableModel;

import com.mhl.db.SqlHelper;

public class MenuModel extends AbstractTableModel{ Vector colums;

Vector rows;

ResultSetMetaData rsmt=null;

//写一个方法,用于查询需要显示的人事信息 //对query修改,让其有更好的通用性

//增删改

public boolean delEmpById(String empId){

boolean b=true;

String sql="delete from HrManage where 员工号=?"; String []paras={empId};

SqlHelper sh=new SqlHelper();

try {

b=sh.exeUpdate(sql, paras);

} catch (Exception e) {

e.printStackTrace();

}finally{

sh.close();

}

return b;

}

黄河科技学院毕业设计说明书 第 46 页

public void query(String sql,String paras[]){ this.colums=new Vector(); this.rows=new Vector(); SqlHelper sh=new SqlHelper(); ResultSet rs=sh.query(sql, paras); //从rs对象中可以得到一个 try { rsmt=rs.getMetaData(); for(int i=0;i<rsmt.getColumnCount();i++){ this.colums.add(rsmt.getColumnName(i+1)); } } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } try { while(rs.next()){ Vector temp=new Vector(); for(int i=0;i<rsmt.getColumnCount();i++){ temp.add(rs.getString(i+1)); } rows.add(temp); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ sh.close(); } } @Override public String getColumnName(int column) { // TODO Auto-generated method stub return this.colums.get(column).toString(); } public int getColumnCount() { // TODO Auto-generated method stub return this.colums.size(); } @Override public int getRowCount() { // TODO Auto-generated method stub return this.rows.size();

黄河科技学院毕业设计说明书 第 47 页

}

@Override

public Object getValueAt(int rowIndex, int columnIndex) {

// TODO Auto-generated method stub

return ((Vector)rows.get(rowIndex)).get(columnIndex);

}

}

/**

* 这是用户表数据模型,用它完成对用户的各种操作,完成项目需要的业务需要

*/

package com.mhl.model;

import java.sql.ResultSet;

import com.mhl.db.*;

public class UserModel {

/**

* @param uid 用户名

* @param p 密码

* @return

//返回职位,如果该用户不存在则返回空字符串

public String checkUser(String uid,String p ){

String zhiwei="";

SqlHelper sp=null;

try {

//组织SQL语句和参数列表

String sql="select HrManage.职位 from Login,HrManage where Login.员工号=HrManage.员工号 and Login.员工号=? and Login.密码=?";

String paras[]={uid,p};

sp=new SqlHelper();

ResultSet rs=sp.query(sql, paras);

if(rs.next()){

//取出职位

zhiwei=rs.getString(1);

}

} catch (Exception e) {

// TODO: handle exception

}finally{

sp.close();

}

return zhiwei;

}

public String checkName(String uid,String p ){

String name="";

SqlHelper sp=null;

黄河科技学院毕业设计说明书 第 48 页

try {

//组织SQL语句和参数列表

String sql="select HrManage.姓名 from Login,HrManage where Login.员工号=HrManage.员工号 and Login.员工号=? and Login.密码=?";

String paras[]={uid,p};

sp=new SqlHelper();

ResultSet rs=sp.query(sql, paras);

if(rs.next()){

//取出姓名

name=rs.getString(1);

}

} catch (Exception e) {

// TODO: handle exception

}finally{

sp.close();

}

return name;

}

}

/**

* 动态加载一个图片做背景的jpanel

*/

package com.mhl.tools;

import java.awt.GradientPaint;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.Toolkit;

import javax.swing.JPanel;

public class ImagePanel extends JPanel{

Image im;

//构造函数去指定该panel的大小

public ImagePanel(Image im){

this.im=im;

//希望IamgePanel大小是自适应的,

int w=Toolkit.getDefaultToolkit().getScreenSize().width;

int h=Toolkit.getDefaultToolkit().getScreenSize().height;

this.setSize(w,h);

}

//画出背景 paintCompnet与paint区别??

public void paintComponent(Graphics g){

//清屏

super.paintComponent(g);

//画出背景

黄河科技学院毕业设计说明书 第 49 页

g.drawImage(im, 0, 0, this.getWidth(), this.getHeight(),this); }

}

package com.mhl.tools;

import java.util.HashMap;

import javax.swing.JTable;

import com.mhl.model.EmpModel;

public class ManageEmp {

private static HashMap hm=new HashMap<String, JTable>(); public static void addJTable(String index,JTable jt){ hm.put(index, jt);

}

public static JTable getJTable(String index)

{

return (JTable)hm.get(index);

}

}

package com.mhl.tools;

import java.awt.Font;

public class MyTools {

public static Font f1=new Font("宋体",Font.PLAIN,16); public static Font f2=new Font("宋体",Font.PLAIN,14); public static Font f3=new Font("宋体",Font.PLAIN,20); public static Font f4=new Font("黑体",Font.PLAIN,32); }

//添加信息对话框类

package com.mhl.view;

import java.awt.BorderLayout;

import java.awt.Frame;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.beans.Statement;

import java.sql.*;

import javax.swing.JButton;

import javax.swing.JDialog;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JTextField;

import com.mhl.model.EmpModel;

//import com.sun.corba.se.pept.transport.Connection;在连接数据库的时候这个包很容易自动被引入,这

黄河科技学院毕业设计说明书 第 50 页

个包不对

public class AddDialog extends JDialog implements ActionListener{

//定义需要的swing组件

JLabel jl1,jl2,jl3,jl4,jl5,jl6,jl7,jl8;

JButton jb1,jb2;

JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6,jtf7,jtf8;

JPanel jp1,jp2,jp3;

//owner是StuAddDialog的父窗口,

//title是窗口的名字,

//modal指定窗口是模式的还是非模式的,就是此窗口出现时让不让进行其他操作 public AddDialog(Frame owner,String title,boolean modal){

//调用父类构造方法,达到模式对话框效果

super(owner,title, modal);

jl1=new JLabel("员工号",jl1.CENTER);

jl2=new JLabel("姓名",jl2.CENTER);

jl3=new JLabel("性别",jl3.CENTER);

jl4=new JLabel("职位",jl4.CENTER);

jl5=new JLabel("籍贯",jl5.CENTER);

jl6=new JLabel("学历",jl6.CENTER);

jl7=new JLabel("出生时间",jl7.CENTER);

jl8=new JLabel("身份证号",jl8.CENTER);

jtf1=new JTextField(30);

jtf2=new JTextField(30);

jtf3=new JTextField(30);

jtf4=new JTextField(30);

jtf5=new JTextField(30);

jtf6=new JTextField(30);

jtf7=new JTextField(30);

jtf8=new JTextField(30);

jb1=new JButton("添加");

jb1.addActionListener(this);

jb2=new JButton("取消");

jp1=new JPanel(new GridLayout(8,1));

jp2=new JPanel(new GridLayout(8,1));

jp3=new JPanel();

jp1.add(jl1);

jp1.add(jl2);

jp1.add(jl3);

jp1.add(jl4);

jp1.add(jl5);

jp1.add(jl6);

jp1.add(jl7);

jp1.add(jl8);

黄河科技学院毕业设计说明书 第 51 页

jp2.add(jtf1);

jp2.add(jtf2);

jp2.add(jtf3);

jp2.add(jtf4);

jp2.add(jtf5);

jp2.add(jtf6);

jp2.add(jtf7);

jp2.add(jtf8);

jp3.add(jb1);

jp3.add(jb2);

this.add(jp1,BorderLayout.WEST);

this.add(jp2,BorderLayout.EAST);

this.add(jp3,BorderLayout.SOUTH);

this.add(jp1);

this.setLocation(400, 300);

this.setSize(500,400);

//this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//这句话不能有,否则会报警 this.setVisible(true);//这句话必须有,否则不会显示出来

}

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

//相应点击动作

if(e.getSource()==jb1){

//添加

EmpModel tempModel=new EmpModel();

String sql="insert into HrManage values(?,?,?,?,?,?,?,?)";

String

paras[]={jtf1.getText(),jtf2.getText(),jtf3.getText(),jtf4.getText(),jtf5.getText(),jtf6.getText(),jtf7.getText(),jtf8.getText()};

boolean b=tempModel.upDate(sql, paras);

if(b){

JOptionPane.showMessageDialog(this, "添加成功!");

}else if(b){

JOptionPane.showMessageDialog(this, "添加失败!");

}

this.dispose();

}

}

}

package com.mhl.view;

import java.awt.BorderLayout;

import java.awt.Color;

黄河科技学院毕业设计说明书 第 52 页

import java.awt.Container;

import java.awt.Image;

import java.awt.Toolkit;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import java.io.File;

import java.io.IOException;

import java.util.Calendar;

import javax.imageio.ImageIO;

import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

import javax.swing.JPanel;

import javax.swing.JToolBar;

import javax.swing.Timer;

import com.mhl.tools.ImagePanel;

import com.mhl.tools.MyTools;

public class Charge extends JFrame implements MouseListener,ActionListener{ Image titleIcon,timeBg,zhu_image;

boolean yuding=true,tuiding=false,diancai=false,jiezhang=false; ImagePanel ip,ip1;

Image bg;

JLabel jla1,jla2,jla3,jla4,jla5,jla_time;

//定义菜单条(不需要布局,直接在最上面)

JMenuBar jmb;

//定义一级菜单

JMenu jm1,jm2,jm3;

//定义二级菜单

JMenuItem jm1_jmi1,jm1_jmi2,jm1_jmi3,jm1_jmi4,jm1_jmi5; //工具栏

JToolBar jtb;

//工具栏里面的按钮

JButton jb1,jb2,jb3,jb4,jb5,jb6,jb7,jb8,jb9,jb10;

JPanel jp1,jp2,jp3,jp4;

Timer t;

public static void main(String[] args) {

黄河科技学院毕业设计说明书 第 53 页

// TODO Auto-generated method stub new Charge(); } public Charge(){ jb7=new JButton("预定"); jb7.setEnabled(yuding); jb7.setSize(80, 40); jb7.setLocation(930, 700); jb8=new JButton("退定"); jb8.setEnabled(tuiding); jb8.setSize(80, 40); jb8.setLocation(1088, 700); jb9=new JButton("点菜"); jb9.setEnabled(diancai); jb9.setSize(80, 40); jb9.setLocation(930, 770); jb10=new JButton("结账"); jb10.setEnabled(jiezhang); jb10.setSize(80, 40); jb10.setLocation(1088, 770); jmb=new JMenuBar(); jm1=new JMenu("系统"); jm1.setFont(MyTools.f3); jm2=new JMenu("服务"); jm2.setFont(MyTools.f3); jm3=new JMenu("帮助"); jm3.setFont(MyTools.f3); jmb.add(jm1); jmb.add(jm2); jmb.add(jm3); jtb=new JToolBar(); jtb.setFloatable(false); jb1=new JButton(new ImageIcon("image//jb1.jpg")); jb1.addMouseListener(this); jb2=new JButton(new ImageIcon("image//jb2.jpg")); jb3=new JButton(new ImageIcon("image//jb3.jpg")); jb4=new JButton(new ImageIcon("image//jb4.jpg")); jb5=new JButton(new ImageIcon("image//jb10.jpg")); jtb.add(jb1); jtb.add(jb2); jtb.add(jb3); jtb.add(jb4); jtb.add(jb5);

黄河科技学院毕业设计说明书 第 54 页

//处理状态栏p5面板 jp2=new JPanel(new BorderLayout()); t=new Timer(1000,this);//每隔1秒就触发actionevent //启动上面的定时器 t.start(); //获取当前时间加入到jlabel jla_time=new JLabel(Calendar.getInstance().getTime().toLocaleString()+" "); jla_time.setFont(MyTools.f3); try { timeBg=ImageIO.read(new File("image//time_bg.jpg")); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } //jla_time放在了ImagePanel东边,ImagePanel放在了jp5上面 ip1=new ImagePanel(timeBg); ip1.setLayout(new BorderLayout()); ip1.add(jla_time,BorderLayout.EAST); jp2.add(ip1); try { jp1=new JPanel(); zhu_image=ImageIO.read(new File("image//111.jpg")); ip=new ImagePanel(zhu_image); ip.setLayout(null); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } jla1=new JLabel(new ImageIcon("image//label_1.gif")); jla1.setLocation(900, 20); jla1.setSize(300, 200); this.setJMenuBar(jmb); ip.add(jb7); ip.add(jb8); ip.add(jb9); ip.add(jb10); ip.add(jla1); //从JFrame中取得Container(方便控制背景颜色) Container ct=this.getContentPane(); ct.setLayout(new BorderLayout()); ct.add(jtb,BorderLayout.NORTH); ct.add(jp2,BorderLayout.SOUTH); ct.add(ip,BorderLayout.CENTER);

黄河科技学院毕业设计说明书 第 55 页

");

}

/** //设置大小 int w=Toolkit.getDefaultToolkit().getScreenSize().width; int h=Toolkit.getDefaultToolkit().getScreenSize().height; this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置窗口的图标 this.setIconImage(titleIcon); //设置窗口上的字 this.setTitle("餐厅管理系统 By:张蓓"); this.setSize(w,h-25); this.setVisible(true); } @Override public void mouseClicked(MouseEvent e) { // TODO Auto-generated method stub if(e.getSource()==jb1){ this.dispose(); new windows1(); } } @Override public void mousePressed(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub this.jla_time.setText("当前时间:"+Calendar.getInstance().getTime().toLocaleString()+" }

黄河科技学院毕业设计说明书 第 56 页

* 用于显示人事管理的界面是一个JPanel

*/

package com.mhl.view;

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.FlowLayout;

import java.awt.Frame;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import javax.swing.BorderFactory;

import javax.swing.JButton;

import javax.swing.JDialog;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.JTextField;

import javax.swing.border.Border;

import javax.swing.border.TitledBorder;

import com.mhl.model.EmpModel;

import com.mhl.tools.ManageEmp;

import com.mhl.tools.MyTools;

public class EmpInfo extends JPanel implements ActionListener,MouseListener{ //定义需要的各个组件

JPanel p1,p2,p3,p4,p5;

JLabel jla1,jla2;

JTextField jtf;

JButton jb1,jb2,jb3,jb4,jb5,jb6;

//显示认识信息的表格

static JTable jtable;

JScrollPane jsp;

EmpModel em;

ManageEmp mp;

boolean b=false;

public EmpInfo(){

p1=new JPanel(new FlowLayout(FlowLayout.CENTER));//流布局的居中布局 jla1=new JLabel("请输入姓名(员工号或职位)"); jla1.setFont(MyTools.f2 );

黄河科技学院毕业设计说明书 第 57 页

jtf=new JTextField(20);

jb1=new JButton("查询");jb1.setFont(MyTools.f2);

//把上面加入到p1

p1.add(jla1);

p1.add(jtf);

p1.add(jb1);

//处理中间的人事表格

em=new EmpModel();

String paras[]={"1"};

em.query("select 员工号,姓名,性别 ,职位 from HrManage where 1=?", paras);

jtable=new JTable(em);

p2=new JPanel(new BorderLayout());

jsp=new JScrollPane(jtable);

p2.add(jsp);

//设置下凹效果

jsp.setBorder(BorderFactory.createLoweredBevelBorder());//此句话一定要在下面三句话的前面,否则框上面没有标题文字

// Border lineBorder = BorderFactory.createLineBorder(null);

// jsp.setBorder(BorderFactory.createTitledBorder(lineBorder,"人事管理",

// TitledBorder.LEFT,TitledBorder.TOP));

Border lineBorder = BorderFactory.createLoweredBevelBorder();

jsp.setBorder(BorderFactory.createTitledBorder(lineBorder,"人事管理",

TitledBorder.LEFT,TitledBorder.TOP));

//处理南部的

p3=new JPanel(new FlowLayout(FlowLayout.LEFT));

jla2=new JLabel("总记录数是");

p3.add(jla2);

p4=new JPanel(new FlowLayout(FlowLayout.RIGHT));

jb2=new JButton("详细信息");

jb2.addActionListener(this);

jb3=new JButton("添加");

jb3.addActionListener(this);

jb4=new JButton("修改");

jb4.addActionListener(this);

jb5=new JButton("删除");

jb5.addActionListener(this);

jb6=new JButton("显示全部员工");

jb6.addActionListener(this);

p4.add(jb2);

p4.add(jb3);

p4.add(jb4);

p4.add(jb5);

p4.add(jb6);

黄河科技学院毕业设计说明书 第 58 页

p5=new JPanel(new BorderLayout()); p5.add(p3,BorderLayout.WEST); p5.add(p4,BorderLayout.EAST); this.setLayout(new BorderLayout()); this.add(p1,BorderLayout.NORTH); this.add(p2,BorderLayout.CENTER); this.add(p5,BorderLayout.SOUTH); this.setBackground(Color.pink); this.setVisible(true); } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getSource()==jb5){ //String i=new Integer(jtable.getSelectedRow()).toString(); int i=jtable.getSelectedRow(); if(i==-1){ //弹出提示框 JOptionPane.showMessageDialog(this, "请选中一行"); return; } //得到学生ID编号 String emId=(String) this.em.getValueAt(i, 0); //创建一个sql语句 String sql="delete from HrManage where 员工号=?"; String []paras={emId}; em=new EmpModel(); if(em.upDate(sql, paras)){ JOptionPane.showMessageDialog(null,"恭喜你删除成功!"); }else{ JOptionPane.showMessageDialog(null,"对不起!删除不成功!"); } //构建行的数据模型类,并更新 em=new EmpModel(); String []paras1={"1"}; em.query("select 员工号,姓名,性别,职位 from HrManage where 1=?", paras1); //更新JTable jtable.setModel(em);//自动完成更新 }else if(e.getSource()==jb2){ int i=jtable.getSelectedRow(); if(i==-1){ JOptionPane.showMessageDialog(this, "请您选中一行进行此操作!"); }

黄河科技学院毕业设计说明书 第 59 页

String empNo=(String) em.getValueAt(i, 0);

String []paras={empNo};

em=new EmpModel();

em.query("select 员工号,姓名,性别,职位 from HrManage where 员工号=?", paras); this.jtable.setModel(em);

}else if(e.getSource()==jb6){

String []paras={"1"};

//更新数据模型

em=new EmpModel();

em.query("select 员工号,姓名,性别,职位 from HrManage where 1=?", paras); this.jtable.setModel(em);

}else if(e.getSource()==jb3){

AddDialog ae=new AddDialog(windows1.jt,"添加",true);

String []paras={"1"};

//更新数据模型

em=new EmpModel();

em.query("select 员工号,姓名,性别,职位 from HrManage where 1=?", paras); this.jtable.setModel(em);

}else if(e.getSource()==jb4){

int i=this.jtable.getSelectedRow();

if(i==-1){

JOptionPane.showMessageDialog(this, "请您选中一行!");

return;

}

em=new EmpModel();

String paras[]={"1"};

em.query("select * from HrManage where 1=?", paras);

//注意JDialog弹出来的时间单独的运行,下面的语句会执行不会等待uv这个类执行完再执行em的更新,因此

//更新信息输入完之前,数据模型已经更新了,因此

UpdateView uv=new UpdateView(windows1.jt,"显示信息",true,em,i);

//更新数据模型

em=new EmpModel();

em.query("select 员工号,姓名,性别,职位 from HrManage where 1=?", paras); this.jtable.setModel(em);

}

}

@Override

public void mouseClicked(MouseEvent e) {

// TODO Auto-generated method stub

}

@Override

public void mousePressed(MouseEvent e) {

黄河科技学院毕业设计说明书 第 60 页

// TODO Auto-generated method stub

}

@Override

public void mouseReleased(MouseEvent e) {

// TODO Auto-generated method stub

}

@Override

public void mouseEntered(MouseEvent e) {

int i=jtable.getSelectedRow();

if(i!=0){

this.jb2.setEnabled(true);

}else if(e.getSource()==this.jb4){

this.jb4.setEnabled(true);

}else if(e.getSource()==this.jb5){

this.jb5.setEnabled(true);

}

}

@Override

public void mouseExited(MouseEvent e) {

// TODO Auto-generated method stub

}

}

package com.mhl.view;

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.FlowLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import javax.swing.JLabel;

import javax.swing.JPanel;

import com.mhl.tools.MyTools;

public class Help extends JPanel implements ActionListener,MouseListener{

private static final long serialVersionUID = 1L;

//定义需要的各个组件

JPanel p1;

JLabel jla1,jla2,jla3,jla4,jla5,jla6;

public Help(){

p1=new JPanel(new FlowLayout(FlowLayout.CENTER));//流布局的居中布局 jla1=new JLabel("----------------- 帮 助 -----------------"); jla1.setFont(MyTools.f4);

jla2=new JLabel("运行本系统时,请确保计算机装有MySQL数据库且运行。"); jla2.setFont(MyTools.f4);

黄河科技学院毕业设计说明书 第 61 页

jla3=new JLabel("当然您也可以连接远端数据库,请联系开发人员修改源代码。"); jla3.setFont(MyTools.f4);

jla4=new JLabel("报表统计、成本及库房、系统设置模块尚未开发完成,敬请谅解。"); jla4.setFont(MyTools.f4);

jla5=new JLabel("一些模块的功能还有一些不健全的地方,但作者会在后续中不断完善。"); jla5.setFont(MyTools.f4);

jla6=new JLabel("如有问题,请联系系统开发人员——张同学,您将得到强有力的技术支持!"); jla6.setFont(MyTools.f4);

//把上面加入到p1

p1.add(jla1);

p1.add(jla2);

p1.add(jla3);

p1.add(jla4);

p1.add(jla5);

p1.add(jla6);

this.setLayout(new BorderLayout());

this.add(p1,BorderLayout.CENTER);

this.setBackground(Color.red);

this.setVisible(true);

}

@Override

public void actionPerformed(ActionEvent e) {

}

@Override

public void mouseClicked(MouseEvent e) {

// TODO Auto-generated method stub

}

@Override

public void mousePressed(MouseEvent e) {

// TODO Auto-generated method stub

}

@Override

public void mouseReleased(MouseEvent e) {

// TODO Auto-generated method stub

}

@Override

public void mouseEntered(MouseEvent e) {

}

@Override

public void mouseExited(MouseEvent e) {

// TODO Auto-generated method stub

}

}

黄河科技学院毕业设计说明书 第 62 页

/**

* 用于显示认识管理的界面是一个JPanel

*/

package com.mhl.view;

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.FlowLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import javax.swing.BorderFactory;

import javax.swing.JButton;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.JTextField;

import javax.swing.border.Border;

import javax.swing.border.TitledBorder;

import com.mhl.model.EmpModel;

import com.mhl.model.LoginModel;

import com.mhl.tools.MyTools;

public class LoginInfo extends JPanel implements ActionListener,MouseListener{ //定义需要的各个组件

JPanel p1,p2,p3,p4,p5;

JLabel jla1,jla2;

JTextField jtf;

JButton jb1,jb2,jb3,jb4,jb5;

//显示认识信息的表格

JTable jtable;

JScrollPane jsp;

LoginModel lm;

boolean b=false;

public LoginInfo(){

p1=new JPanel(new FlowLayout(FlowLayout.CENTER));//流布局的居中布局 jla1=new JLabel("请输入姓名(员工号或职位)"); jla1.setFont(MyTools.f2 ); jtf=new JTextField(20);

jb1=new JButton("查询");jb1.setFont(MyTools.f2);

//把上面加入到p1

p1.add(jla1);

p1.add(jtf);

黄河科技学院毕业设计说明书 第 63 页

p1.add(jb1);

//处理中间的人事表格

lm=new LoginModel();

String paras[]={"1"};

lm.query("select HrManage.员工号,姓名,职位,密码 from HrManage,Login where Login.员工号=HrManage.员工号 and 1=?", paras);

jtable=new JTable(lm);

p2=new JPanel(new BorderLayout());

jsp=new JScrollPane(jtable);

p2.add(jsp);

//设置下凹效果

jsp.setBorder(BorderFactory.createLoweredBevelBorder());//此句话一定要在下面三句话的前面,否则框上面没有标题文字

// Border lineBorder = BorderFactory.createLineBorder(null);

// jsp.setBorder(BorderFactory.createTitledBorder(lineBorder,"人事管理",

// TitledBorder.LEFT,TitledBorder.TOP));

Border lineBorder = BorderFactory.createLoweredBevelBorder();

jsp.setBorder(BorderFactory.createTitledBorder(lineBorder,"登陆管理",

TitledBorder.LEFT,TitledBorder.TOP));

//处理南部的

p3=new JPanel(new FlowLayout(FlowLayout.LEFT));

jla2=new JLabel("总记录数是");

p3.add(jla2);

p4=new JPanel(new FlowLayout(FlowLayout.RIGHT));

jb2=new JButton("刷新记录");

jb2.addActionListener(this);

jb3=new JButton("添加密码");

jb4=new JButton("修改密码");

p4.add(jb2);

p4.add(jb3);

p4.add(jb4);

p5=new JPanel(new BorderLayout());

p5.add(p3,BorderLayout.WEST);

p5.add(p4,BorderLayout.EAST);

this.setLayout(new BorderLayout());

this.add(p1,BorderLayout.NORTH);

this.add(p2,BorderLayout.CENTER);

this.add(p5,BorderLayout.SOUTH);

this.setBackground(Color.pink);

this.setVisible(true);

}

@Override

黄河科技学院毕业设计说明书 第 64 页 public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub }

@Override

public void mouseClicked(MouseEvent e) { // TODO Auto-generated method stub }

@Override

public void mousePressed(MouseEvent e) { // TODO Auto-generated method stub }

@Override

public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub }

@Override

public void mouseEntered(MouseEvent e) { int i=jtable.getSelectedRow(); if(i!=0){

this.jb2.setEnabled(true); }else if(e.getSource()==this.jb4){ this.jb4.setEnabled(true); }else if(e.getSource()==this.jb5){ this.jb5.setEnabled(true); }

}

@Override

public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub }

}

package com.mhl.view;

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.FlowLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import javax.swing.BorderFactory;

import javax.swing.JButton;

黄河科技学院毕业设计说明书 第 65 页

import javax.swing.JComboBox;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.JTextField;

import javax.swing.border.Border;

import javax.swing.border.TitledBorder;

import com.mhl.model.EmpModel;

import com.mhl.model.MenuModel;

import com.mhl.tools.MyTools;

public class Menu extends JPanel implements ActionListener,MouseListener{ //定义需要的各个组件

JPanel p1,p2,p3,p4,p5;

JLabel jla1,jla2;

JTextField jtf;

JButton jb1,jb2,jb3,jb4,jb5;

//显示认识信息的表格

JTable jtable;

JScrollPane jsp;

MenuModel mm;

JComboBox jcb;

boolean b=false;

public Menu(){

p1=new JPanel(new FlowLayout(FlowLayout.CENTER));//流布局的居中布局 jla1=new JLabel("请输入查询条件");

jla1.setFont(MyTools.f2 );

jtf=new JTextField(20);

jcb=new JComboBox();

jcb.setEditable(true);

jcb.addItem("主食类");

jcb.addItem("热菜类");

jcb.addItem("凉菜类");

jcb.addItem("甜点类");

jcb.addItem("饮料类");

jcb.addItem("汤类");

jb1=new JButton("查询");

jb1.setFont(MyTools.f2);

//把上面加入到p1

黄河科技学院毕业设计说明书 第 66 页

p1.add(jla1);

p1.add(jtf);

p1.add(jcb);

p1.add(jb1);

//处理中间的人事表格

mm=new MenuModel();

String paras[]={"1"};

mm.query("select * from Menu where 1=?", paras);

jtable=new JTable(mm);

p2=new JPanel(new BorderLayout());

jsp=new JScrollPane(jtable);

p2.add(jsp);

//设置下凹效果

jsp.setBorder(BorderFactory.createLoweredBevelBorder());//此句话一定要在下面三句话的前面,否则框上面没有标题文字

// Border lineBorder = BorderFactory.createLineBorder(null);

// jsp.setBorder(BorderFactory.createTitledBorder(lineBorder,"人事管理",

// TitledBorder.LEFT,TitledBorder.TOP));

Border lineBorder = BorderFactory.createLoweredBevelBorder();

jsp.setBorder(BorderFactory.createTitledBorder(lineBorder,"菜谱录入",

TitledBorder.LEFT,TitledBorder.TOP));

//处理南部的

p3=new JPanel(new FlowLayout(FlowLayout.LEFT));

jla2=new JLabel("共有*条记录");

p3.add(jla2);

p4=new JPanel(new FlowLayout(FlowLayout.RIGHT));

jb2=new JButton("刷新");

jb2.addActionListener(this);

jb3=new JButton("添加");

jb4=new JButton("修改");

jb5=new JButton("删除");

jb5.addActionListener(this);

p4.add(jb2);

p4.add(jb3);

p4.add(jb4);

p4.add(jb5);

p5=new JPanel(new BorderLayout());

p5.add(p3,BorderLayout.WEST);

p5.add(p4,BorderLayout.EAST);

this.setLayout(new BorderLayout());

this.add(p1,BorderLayout.NORTH);

this.add(p2,BorderLayout.CENTER);

this.add(p5,BorderLayout.SOUTH);

黄河科技学院毕业设计说明书 第 67 页 this.setBackground(Color.pink); this.setVisible(true);

}

@Override

public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub }

@Override

public void mouseClicked(MouseEvent e) { // TODO Auto-generated method stub }

@Override

public void mousePressed(MouseEvent e) { // TODO Auto-generated method stub }

@Override

public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub }

@Override

public void mouseEntered(MouseEvent e) { int i=jtable.getSelectedRow(); if(i!=0){

this.jb2.setEnabled(true); }else if(e.getSource()==this.jb4){ this.jb4.setEnabled(true); }else if(e.getSource()==this.jb5){ this.jb5.setEnabled(true); }

}

@Override

public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub }

}

package com.mhl.view;

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.FlowLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

黄河科技学院毕业设计说明书 第 68 页

import javax.swing.JLabel;

import javax.swing.JPanel;

import com.mhl.tools.MyTools;

public class Reg extends JPanel implements ActionListener,MouseListener{

private static final long serialVersionUID = 1L;

//定义需要的各个组件

JPanel p1;

JLabel jla1;

public Reg(){

p1=new JPanel(new FlowLayout(FlowLayout.CENTER));//流布局的居中布局

jla1=new JLabel("此功能暂未开发,请与管理员联系!"); jla1.setFont(MyTools.f4); //把上面加入到p1

p1.add(jla1);

this.setLayout(new BorderLayout());

this.add(p1,BorderLayout.CENTER);

this.setBackground(Color.red);

this.setVisible(true);

}

@Override

public void actionPerformed(ActionEvent e) {

}

@Override

public void mouseClicked(MouseEvent e) {

// TODO Auto-generated method stub

}

@Override

public void mousePressed(MouseEvent e) {

// TODO Auto-generated method stub

}

@Override

public void mouseReleased(MouseEvent e) {

// TODO Auto-generated method stub

}

@Override

public void mouseEntered(MouseEvent e) {

}

@Override

public void mouseExited(MouseEvent e) {

// TODO Auto-generated method stub

}

}

package com.mhl.view;

import java.awt.Color;

黄河科技学院毕业设计说明书 第 69 页

import java.awt.Font;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.File;

import java.io.IOException;

import javax.imageio.ImageIO;

import javax.swing.BorderFactory;

import javax.swing.JButton;

import javax.swing.JDialog;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JPasswordField;

import javax.swing.JTextField;

import javax.swing.UIManager;

import javax.swing.border.Border;

import com.mhl.model.UserModel;

import com.mhl.tools.MyTools;

import sun.java2d.pipe.hw.AccelDeviceEventListener;

public class UerLogin extends JDialog implements ActionListener{ //定义需要的组件

JLabel jl1,jl2,jl3;

JTextField jName;

JPasswordField jPasswd;

JButton jCon,jCancel;

public static void main(String[] args) {

// TODO Auto-generated method stub

new UerLogin();

}

public UerLogin(){

jl1=new JLabel("请输入用户名:");

jl1.setFont(MyTools.f1);

//设定组件的位置

jl1.setBounds(60, 190, 150, 30);

this.add(jl1);

//添加用户名框

jName=new JTextField();

jName.setBounds(180, 190, 150, 30);

//将用户名框设置为下凹效果

jName.setBorder(BorderFactory.createLoweredBevelBorder());

黄河科技学院毕业设计说明书 第 70 页

this.add(jName);

jl2=new JLabel("请输入密码:");

jl2.setFont(MyTools.f1);

//设定组件的位置

jl2.setBounds(60, 240, 150, 30);

this.add(jl2);

//添加密码框

jPasswd=new JPasswordField();

jPasswd.setBounds(180, 240, 150, 30);

//将密码框设置为下凹效果

jPasswd.setBorder(BorderFactory.createLoweredBevelBorder());

this.add(jPasswd);

jl3=new JLabel("(或员工号)");

jl3.setFont(MyTools.f2);

jl3.setForeground(Color.red);

jl3.setBounds(110, 210, 150, 30);

this.add(jl3);

jCon=new JButton("确定");

jCon.addActionListener(this);

jCon.setFont(MyTools.f1);

jCon.setBounds(100,300,70,30);

this.add(jCon);

jCancel=new JButton("取消");

jCancel.addActionListener(this);

jCancel.setFont(MyTools.f1);

jCancel.setBounds(190,300,70,30);

this.add(jCancel);

//创建一个BackImage对象

BackImage bi=new BackImage();

//this.setLayout(null);如果有这句话,那么必须要bi.setBounds(0, 0, 360, 360)这句话才能显示图片

//bi.setBounds(0, 0, 360, 360);

//取消JDialog上面的那个蓝色的框

this.add(bi);

this.setUndecorated(true);

this.setLocation(300, 300);

this.setSize(360,360);

this.setVisible(true);

}

class BackImage extends JPanel{

Image im;

//构造函数

黄河科技学院毕业设计说明书 第 71 页

public BackImage(){

try {

im=ImageIO.read(new File("image//login.gif"));

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

//要将iamge画到jpanel里面,因此要重写paintComponent

}

public void paintComponent(Graphics g){

g.drawImage(im, 0, 0, 360, 360, this);

}

}

@Override

public void actionPerformed(ActionEvent e) {

if(e.getSource()==jCancel){

this.dispose();

}else if(e.getSource()==jCon){

//取出员工号和密码

String u=this.jName.getText().trim();

String p=new String(this.jPasswd.getPassword());//getPassword返回一个字符数组 UserModel um=new UserModel();

String zhiwei=um.checkUser(u, p);

String name=um.checkName(u, p);

if(zhiwei.equals("经理")||zhiwei.equals("主管")||zhiwei.equals("系统管理员")){ //登陆成功提示

JOptionPane.showMessageDialog(this, "欢迎 "+zhiwei+"---"+name+" 使用!"); //关闭登陆界面

this.dispose();

new windows1();

}else if(zhiwei.equals("")){

//可以修改提示框字体大小和字体

UIManager.put("OptionPane.messageFont",new Font("楷体",Font.PLAIN,14)); UIManager.put("OptionPane.buttonFont",new Font("楷体",Font.PLAIN,14));

JOptionPane.showMessageDialog(this,"用户名密码输入错!","错误提示",JOptionPane.ERROR_MESSAGE);

//JOptionPane.showMessageDialog(this,"账号或密码错误!");//如何设置字体 }

}

}

}

//修改用户信息

黄河科技学院毕业设计说明书 第 72 页

package com.mhl.view;

import java.awt.BorderLayout;

import java.awt.Frame;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.beans.Statement;

import java.sql.*;

import javax.swing.JButton;

import javax.swing.JDialog;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JTextField;

import com.mhl.model.EmpModel;

//import com.sun.corba.se.pept.transport.Connection;在连接数据库的时候这个包很容易自动被引入,这个包不对

public class UpdateView extends JDialog implements ActionListener{

//定义需要的swing组件

JLabel jl1,jl2,jl3,jl4,jl5,jl6,jl7,jl8;

JButton jb1,jb2;

JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6,jtf7,jtf8;

JPanel jp1,jp2,jp3;

//owner是StuAddDialog的父窗口,

//title是窗口的名字,

//modal指定窗口是模式的还是非模式的,就是此窗口出现时让不让进行其他操作

public UpdateView(Frame owner,String title,boolean modal,EmpModel em,int rowNums){

//调用父类构造方法,达到模式对话框效果

super(owner,title,modal);

jl1=new JLabel("员工号",jl1.CENTER);

jl2=new JLabel("姓名",jl2.CENTER);

jl3=new JLabel("性别",jl3.CENTER);

jl4=new JLabel("职位",jl4.CENTER);

jl5=new JLabel("籍贯",jl5.CENTER);

jl6=new JLabel("学历",jl6.CENTER);

jl7=new JLabel("出生时间",jl7.CENTER);

jl8=new JLabel("身份证号",jl8.CENTER);

jtf1=new JTextField(30);

//初始化数据

jtf1.setText((String) em.getValueAt(rowNums, 0));

//jtf1主键不能被修改

jtf1.setEditable(false);

黄河科技学院毕业设计说明书 第 73 页

jtf2=new JTextField(30); jtf2.setText((String) em.getValueAt(rowNums, 1)); jtf3=new JTextField(30); jtf3.setText((String) em.getValueAt(rowNums, 2)); jtf4=new JTextField(30); jtf4.setText((String) em.getValueAt(rowNums, 3));//整数转换为字符串 jtf5=new JTextField(30); jtf5.setText((String) em.getValueAt(rowNums, 4)); jtf6=new JTextField(30); jtf6.setText((String) em.getValueAt(rowNums, 5)); jtf7=new JTextField(30); jtf7.setText((String) em.getValueAt(rowNums, 6)); jtf8=new JTextField(30); jtf8.setText((String) em.getValueAt(rowNums, 7)); jb1=new JButton("修改"); jb1.addActionListener(this); jb2=new JButton("取消"); jb2.addActionListener(this); jp1=new JPanel(new GridLayout(8,1)); jp2=new JPanel(new GridLayout(8,1)); jp3=new JPanel(); jp1.add(jl1); jp1.add(jl2); jp1.add(jl3); jp1.add(jl4); jp1.add(jl5); jp1.add(jl6); jp1.add(jl7); jp1.add(jl8); jp2.add(jtf1); jp2.add(jtf2); jp2.add(jtf3); jp2.add(jtf4); jp2.add(jtf5); jp2.add(jtf6); jp2.add(jtf7); jp2.add(jtf8); jp3.add(jb1); jp3.add(jb2); this.add(jp1,BorderLayout.WEST); this.add(jp2,BorderLayout.EAST); this.add(jp3,BorderLayout.SOUTH); this.add(jp1);

黄河科技学院毕业设计说明书 第 74 页

this.setLocation(400, 300);

this.setSize(500,400);

//this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//这句话不能有,否则会报警 this.setVisible(true);//这句话必须有,否则不会显示出来

}

@Override

public void actionPerformed(ActionEvent e) {

if(e.getSource()==jb1){

//做一个sql

//sql语句创建

String sql="update HrManage set 姓名=?," +

"性别=?,职位=?,籍贯=?,学历=?,出生时间=?,身份证号=? where 员工号=?"; String

[]paras={jtf2.getText(),jtf3.getText(),jtf4.getText(),jtf5.getText(),jtf6.getText(),jtf7.getText(),jtf8.getText(),jtf1.getText()};

EmpModel tempModel=new EmpModel();

tempModel.upDate(sql, paras);

this.dispose();

}else if(e.getSource()==jb2){

this.dispose();

}

}

}

/**

* 这是系统管理员,经理,主管可以进入的界面

* 完成界面的顺序,从上到下,从左到右

*/

package com.mhl.view;

import java.awt.BorderLayout;

import java.awt.CardLayout;

import java.awt.Color;

import java.awt.Container;

import java.awt.Cursor;

import java.awt.GridBagLayout;

import java.awt.GridLayout;

import java.awt.Image;

import java.awt.Toolkit;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import java.awt.image.ImageProducer;

import java.io.File;

黄河科技学院毕业设计说明书 第 75 页

import java.io.IOException;

import java.util.Calendar;

import javax.imageio.ImageIO;

import javax.swing.BorderFactory;

import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

import javax.swing.JPanel;

import javax.swing.JSplitPane;

import javax.swing.JToolBar;

import javax.swing.Timer;

import javax.swing.border.Border;

import javax.swing.border.TitledBorder;

import com.mhl.tools.ImagePanel;

import com.mhl.tools.MyTools;

public class windows1 extends JFrame implements ActionListener,MouseListener{

//定义需要的组件

Image titleIcon,timeBg;

//定义菜单条(不需要布局,直接在最上面)

JMenuBar jmb;

//定义一级菜单

JMenu jm1,jm2,jm3,jm4,jm5,jm6;

//定义二级菜单

JMenuItem jm1_jmi1,jm1_jmi2,jm1_jmi3,jm1_jmi4,jm1_jmi5;

//图标

ImageIcon jm1_jmi1_icon,jm1_jmi2_icon,jm1_jmi3_icon,jm1_jmi4_icon,jm1_jmi5_icon; //工具栏

JToolBar jtb;

//工具栏里面的按钮

JButton jb1,jb2,jb3,jb4,jb5,jb6,jb7,jb8,jb9,jb10;

//定义面板

JPanel jp1,jp2,jp3,jp4,jp5,p1,p2_jsp1;

//显示当前时间的jlabel

JLabel jla_time;

JLabel jp1_jlab1,jp1_jlab2,jp1_jlab3,jp1_jlab4,jp1_jlab5,jp1_jlab6,jp1_jlab7,jp1_jlab8; //给jp2定义需要的JLabel

JLabel jp2_lab1,jp2_lab2;

//javax.swing包中的Timer可以定时的触发action事件,我们可以利用这点完成一些事情 Timer t;

黄河科技学院毕业设计说明书 第 76 页

//jp1的背景图片 ImagePanel jp1_imgPanel; //定义拆分窗口 JSplitPane jsp1,jsp2_all; CardLayout cardJp3; CardLayout cardJp2; //主界面和收款界面是在一个JSplitPane上,这里定义一个分割宽度 int fenge=0; public static JFrame jt; public static void main(String[] args) { // TODO Auto-generated method stub jt=new windows1(); } //初始化菜单栏的方法 public void initMenu(){ //创建二级菜单图标 jm1_jmi1_icon=new ImageIcon("image//jm1_icon1.jpg"); jm1_jmi2_icon=new ImageIcon("image//jm1_icon2.jpg"); jm1_jmi3_icon=new ImageIcon("image//jm1_icon3.jpg"); jm1_jmi4_icon=new ImageIcon("image//jm1_icon4.jpg"); jm1_jmi5_icon=new ImageIcon("image//jm1_icon5.jpg"); //创建一级菜单 jm1=new JMenu("系统管理"); jm1.setFont(MyTools.f3); //创建它的二级菜单 jm1_jmi1=new JMenuItem("切换用户",jm1_jmi1_icon); jm1_jmi1.setFont(MyTools.f2); jm1_jmi2=new JMenuItem("切换到收款界面",jm1_jmi2_icon); jm1_jmi2.setFont(MyTools.f2); jm1_jmi3=new JMenuItem("登陆管理",jm1_jmi3_icon); jm1_jmi3.setFont(MyTools.f2); jm1_jmi4=new JMenuItem("万年历",jm1_jmi4_icon); jm1_jmi4.setFont(MyTools.f2); jm1_jmi5=new JMenuItem("退出",jm1_jmi5_icon); jm1_jmi5.setFont(MyTools.f2); //二级菜单加入到一级菜单 jm1.add(jm1_jmi1); jm1.add(jm1_jmi2); jm1.add(jm1_jmi3); jm1.add(jm1_jmi4); jm1.add(jm1_jmi5); //把一级菜单加入到菜单条 jmb=new JMenuBar();

黄河科技学院毕业设计说明书 第 77 页

jmb.add(jm1); jm2=new JMenu("人事管理"); jm2.setFont(MyTools.f3); jmb.add(jm2); jm3=new JMenu("菜单服务"); jm3.setFont(MyTools.f3); jmb.add(jm3); jm4=new JMenu("报表统计"); jm4.setFont(MyTools.f3); jmb.add(jm4); jm5=new JMenu("成本及库房"); jm5.setFont(MyTools.f3); jmb.add(jm5); jm6=new JMenu("动画帮助"); jm6.setFont(MyTools.f3); jmb.add(jm6); //把菜单条加入到jframe中 this.setJMenuBar(jmb); } //初始化工具栏的方法 public void initToolBar(){ //处理工具栏的jbutton jb1=new JButton(new ImageIcon("image//jb1.jpg")); jb1.addMouseListener(this); jb2=new JButton(new ImageIcon("image//jb2.jpg")); jb3=new JButton(new ImageIcon("image//jb3.jpg")); jb4=new JButton(new ImageIcon("image//jb4.jpg")); jb5=new JButton(new ImageIcon("image//jb5.jpg")); jb6=new JButton(new ImageIcon("image//jb6.jpg")); jb7=new JButton(new ImageIcon("image//jb7.jpg")); jb8=new JButton(new ImageIcon("image//jb8.jpg")); jb9=new JButton(new ImageIcon("image//jb9.jpg")); jb10=new JButton(new ImageIcon("image//jb10.jpg")); jtb=new JToolBar(); //将工具栏设置为不能浮动 jtb.setFloatable(false); //工具栏中加入按钮 jtb.add(jb1); jtb.add(jb2); jtb.add(jb3); jtb.add(jb4); jtb.add(jb5); jtb.add(jb6);

黄河科技学院毕业设计说明书 第 78 页

jtb.add(jb7); jtb.add(jb8); jtb.add(jb9); jtb.add(jb10); } //初始化中间的Panel public void initAllPanels(){ p1=new JPanel(); p1.setBackground(Color.red); p2_jsp1=new JPanel(); //处理中间jp1面板 jp1=new JPanel(new BorderLayout()); Image jp1_bg=null; try { jp1_bg = ImageIO.read(new File("image//jp1_bg.jpg")); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } //定义手型光标类 Cursor myCursor=new Cursor(Cursor.HAND_CURSOR); this.jp1_imgPanel=new ImagePanel(jp1_bg); this.jp1_imgPanel.setLayout(new GridLayout(8,1)); jp1_imgPanel.add(new JLabel(new ImageIcon("image//label_1.gif"))); //JLabel前面放图片 jp1_jlab2=new JLabel("人 事 管 理",new ImageIcon("image//label_2.jpg"),0); jp1_jlab2.setEnabled(false); jp1_jlab2.setCursor(myCursor); //注册监听 jp1_jlab2.addMouseListener(this); jp1_imgPanel.add(jp1_jlab2); jp1_jlab3=new JLabel("登 陆 管 理",new ImageIcon("image//label_3.jpg"),0); //JLabel初始状态不可用 jp1_jlab3.setEnabled(false); jp1_jlab3.setCursor(myCursor); jp1_jlab3.addMouseListener(this); jp1_imgPanel.add(jp1_jlab3); jp1_jlab4=new JLabel("菜 谱 价 格",new ImageIcon("image//label_4.jpg"),0); jp1_jlab4.setEnabled(false); jp1_jlab4.setCursor(myCursor); jp1_jlab4.addMouseListener(this); jp1_imgPanel.add(jp1_jlab4); jp1_jlab5=new JLabel("报 表 统 计",new ImageIcon("image//label_5.jpg"),0);

黄河科技学院毕业设计说明书 第 79 页

jp1_jlab5.setEnabled(false); jp1_jlab5.setCursor(myCursor); jp1_jlab5.addMouseListener(this); jp1_imgPanel.add(jp1_jlab5); jp1_jlab6=new JLabel("成本及库房",new ImageIcon("image//label_6.jpg"),0); jp1_jlab6.setEnabled(false); jp1_jlab6.setCursor(myCursor); jp1_jlab6.addMouseListener(this); jp1_imgPanel.add(jp1_jlab6); jp1_jlab7=new JLabel("系 统 设 置",new ImageIcon("image//label_7.jpg"),0); jp1_jlab7.setEnabled(false); jp1_jlab7.setCursor(myCursor); jp1_jlab7.addMouseListener(this); jp1_imgPanel.add(jp1_jlab7); jp1_jlab8=new JLabel(" 帮 助",new ImageIcon("image//label_8.jpg"),0); jp1_jlab8.setEnabled(false); jp1_jlab8.setCursor(myCursor); jp1_jlab8.addMouseListener(this); jp1_imgPanel.add(jp1_jlab8); jp1.add(jp1_imgPanel); //处理jp2,jp3,jp4 且jp2,jp3被jp4包起来 jp4=new JPanel(new BorderLayout()); cardJp2=new CardLayout(); jp2=new JPanel(cardJp2); jp2_lab1=new JLabel(new ImageIcon("image//jp2_left.jpg")); jp2_lab1.addMouseListener(this); jp2_lab2=new JLabel(new ImageIcon("image//jp2_right.jpg")); jp2_lab2.addMouseListener(this); jp2.add(jp2_lab1,"0"); jp2.add(jp2_lab2,"1"); this.cardJp3=new CardLayout(); jp3=new JPanel(this.cardJp3); //先给jp3加入一个主界面卡片面板(ImagePanel) Image zhu_image=null; Image jp3_bg1=null; try { zhu_image=ImageIO.read(new File("image//jp3_bg.jpg")); jp3_bg1=ImageIO.read(new File("image//jp3_1.jpg")); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } ImagePanel ip1=new ImagePanel(zhu_image);

黄河科技学院毕业设计说明书 第 80 页

jp3.add(ip1,"0"); //创建EmpInfo对象(这是一个JPanel) EmpInfo eInfo=new EmpInfo(); LoginInfo lInfo=new LoginInfo(); Menu m=new Menu(); Reg r = new Reg(); Help h = new Help(); //对jp3添加几个图片 jp3.add(eInfo,"1"); jp3.add(lInfo,"2"); jp3.add(m,"3"); jp3.add(r,"4"); jp3.add(h,"5"); //把jp2 jp3加入jp4 jp4.add(jp2,BorderLayout.WEST); jp4.add(jp3,BorderLayout.CENTER); //做一个拆分窗口,分别存放jp1和jp4 jsp1=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,jp1,jp4); //指定左边的面版(jp1)占jsp1的多大 jsp1.setDividerLocation(130); //把边界线设置为没有 jsp1.setDividerSize(0); //p2=new JPanel(new BorderLayout()); //p2.add(jsp1,BorderLayout.CENTER); } public windows1(){ //创建组件 //titleIcon=new ImageIcon("image//title.gif"); try { titleIcon=ImageIO.read(new File("image//title.gif")); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } //调用初始化菜单函数 this.initMenu(); //调用初始化工具栏函数 this.initToolBar(); //调用初始化中间面板的函数 this.initAllPanels(); //处理状态栏p5面板 jp5=new JPanel(new BorderLayout()); t=new Timer(1000,this);//每隔1秒就触发actionevent

黄河科技学院毕业设计说明书 第 81 页

//启动上面的定时器

t.start();

//获取当前时间加入到jlabel

jla_time=new JLabel(Calendar.getInstance().getTime().toLocaleString()+" ");

jla_time.setFont(MyTools.f3);

try {

timeBg=ImageIO.read(new File("image//time_bg.jpg"));

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

//jla_time放在了ImagePanel东边,ImagePanel放在了jp5上面

ImagePanel ip1=new ImagePanel(timeBg);

ip1.setLayout(new BorderLayout());

ip1.add(jla_time,BorderLayout.EAST);

jp5.add(ip1);

//从JFrame中取得Container(方便控制背景颜色)

Container ct=this.getContentPane();

ct.setLayout(new BorderLayout());

ct.add(jtb,BorderLayout.NORTH);

ct.add(jsp1,"Center");//BorderLayout中间有图片,其他位置没有的时候,中间会自动填满其他地方

ct.add(jp5,BorderLayout.SOUTH);

//设置大小

int w=Toolkit.getDefaultToolkit().getScreenSize().width;

int h=Toolkit.getDefaultToolkit().getScreenSize().height;

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//设置窗口的图标

this.setIconImage(titleIcon);

//设置窗口上的字

this.setTitle("餐厅管理系统 By:张蓓");

this.setSize(w,h-25);

this.setVisible(true);

}

@Override

public void actionPerformed(ActionEvent e) {

this.jla_time.setText("当前时间:"+Calendar.getInstance().getTime().toLocaleString()+" ");

}

@Override

public void mouseClicked(MouseEvent e) {

System.out.println(e.getSource());

// TODO Auto-generated method stub

黄河科技学院毕业设计说明书 第 82 页

if(e.getSource()==this.jp1_jlab2){ //响应鼠标左单击 if(e.getButton() == MouseEvent.BUTTON1){ //点击按钮就显示jp3这个卡片布局相应的图片 this.cardJp3.show(jp3, "1"); } }else if(e.getSource()==this.jp1_jlab3){ //响应鼠标左单击 if(e.getButton() == MouseEvent.BUTTON1){ //点击按钮就显示jp3这个卡片布局相应的图片 this.cardJp3.show(jp3, "2"); } }else if(e.getSource()==this.jp1_jlab4){ //响应鼠标左单击 if(e.getButton() == MouseEvent.BUTTON1){ //点击按钮就显示jp3这个卡片布局相应的图片 this.cardJp3.show(jp3, "3"); } }else if(e.getSource()==this.jp1_jlab5){ //响应鼠标左单击 if(e.getButton() == MouseEvent.BUTTON1){ //点击按钮就显示jp3这个卡片布局相应的图片 this.cardJp3.show(jp3, "4"); } }else if(e.getSource()==this.jp1_jlab6){ //响应鼠标左单击 if(e.getButton() == MouseEvent.BUTTON1){ //点击按钮就显示jp3这个卡片布局相应的图片 this.cardJp3.show(jp3, "4"); } }else if(e.getSource()==this.jp1_jlab7){ //响应鼠标左单击 if(e.getButton() == MouseEvent.BUTTON1){ //点击按钮就显示jp3这个卡片布局相应的图片 this.cardJp3.show(jp3, "4"); } }else if(e.getSource()==this.jp1_jlab8){ //响应鼠标左单击 if(e.getButton() == MouseEvent.BUTTON1){ //点击按钮就显示jp3这个卡片布局相应的图片 this.cardJp3.show(jp3, "5"); } }else if(e.getSource()==jp2_lab1){

黄河科技学院毕业设计说明书 第 83 页

//

//

//

//

//

//

//

//

this.cardJp2.show(jp2, "1"); //将左边的隐藏 this.jsp1.setDividerLocation(0); }else if(e.getSource()==jp2_lab2){ this.cardJp2.show(jp2, "0"); //将左边的隐藏 this.jsp1.setDividerLocation(130); }else if(e.getSource()==jb1){ this.dispose(); new Charge(); //主界面和收款界面进行切换,用jsp实现,但是工具栏没有变化 if(fenge==0){ fenge=Toolkit.getDefaultToolkit().getScreenSize().width;; jsp2_all.setDividerLocation(fenge); }else if(fenge==Toolkit.getDefaultToolkit().getScreenSize().width){ fenge=0; jsp2_all.setDividerLocation(fenge); } } } @Override public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub //如果用户鼠标进入了某个JLabel,则高亮 if(e.getSource()==this.jp1_jlab2){ this.jp1_jlab2.setEnabled(true); }else if(e.getSource()==this.jp1_jlab3){ this.jp1_jlab3.setEnabled(true); }else if(e.getSource()==this.jp1_jlab4){ this.jp1_jlab4.setEnabled(true); }else if(e.getSource()==this.jp1_jlab5){ this.jp1_jlab5.setEnabled(true); }else if(e.getSource()==this.jp1_jlab6){ this.jp1_jlab6.setEnabled(true); }else if(e.getSource()==this.jp1_jlab7){ this.jp1_jlab7.setEnabled(true); }else if(e.getSource()==this.jp1_jlab8){ this.jp1_jlab8.setEnabled(true); }else if(e.getSource()==jb1){ //添加鼠标移动按钮上就出现提示 this.jb1.setToolTipText("切换到收款界面"); } }

黄河科技学院毕业设计说明书 第 84 页

@Override

public void mouseExited(MouseEvent e) {

// TODO Auto-generated method stub

//如果用户鼠标离开了某个JLabel,则禁用 if(e.getSource()==this.jp1_jlab2){

this.jp1_jlab2.setEnabled(false);

}else if(e.getSource()==this.jp1_jlab3){

this.jp1_jlab3.setEnabled(false);

}else if(e.getSource()==this.jp1_jlab4){

this.jp1_jlab4.setEnabled(false);

}else if(e.getSource()==this.jp1_jlab5){

this.jp1_jlab5.setEnabled(false);

}else if(e.getSource()==this.jp1_jlab6){

this.jp1_jlab6.setEnabled(false);

}else if(e.getSource()==this.jp1_jlab7){

this.jp1_jlab7.setEnabled(false);

}else if(e.getSource()==this.jp1_jlab8){

this.jp1_jlab8.setEnabled(false);

}

}

@Override

public void mousePressed(MouseEvent e) {

// TODO Auto-generated method stub

}

@Override

public void mouseReleased(MouseEvent e) {

// TODO Auto-generated method stub

}

}

import java.awt.BorderLayout;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JDialog;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JTextField;

import com.mhl.model.EmpModel;

public class AddEmp extends JDialog implements ActionListener{ //定义需要的swing组件

JLabel jl1,jl2,jl3,jl4,jl5,jl6,jl7,jl8;

黄河科技学院毕业设计说明书 第 85 页

JButton jb1,jb2; JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6,jtf7,jtf8; JPanel jp1,jp2,jp3; //owner是StuAddDialog的父窗口, //title是窗口的名字, //modal指定窗口是模式的还是非模式的,就是此窗口出现时让不让进行其他操作 public AddEmp(JPanel owner,String title,boolean modal){ //调用父类构造方法,达到模式对话框效果 super(); jl1=new JLabel("员工号",jl1.CENTER); jl2=new JLabel("姓名",jl2.CENTER); jl3=new JLabel("性别",jl3.CENTER); jl4=new JLabel("职位",jl4.CENTER); jl5=new JLabel("籍贯",jl5.CENTER); jl6=new JLabel("学历",jl6.CENTER); jl7=new JLabel("出生时间",jl7.CENTER); jl8=new JLabel("身份证号",jl8.CENTER); jtf1=new JTextField(20); jtf2=new JTextField(20); jtf3=new JTextField(20); jtf4=new JTextField(20); jtf5=new JTextField(20); jtf6=new JTextField(20); jtf7=new JTextField(20); jtf8=new JTextField(20); jb1=new JButton("添加"); jb1.addActionListener(this); jb2=new JButton("取消"); jp1=new JPanel(new GridLayout(8,1)); jp2=new JPanel(new GridLayout(8,1)); jp3=new JPanel(); jp1.add(jl1); jp1.add(jl2); jp1.add(jl3); jp1.add(jl4); jp1.add(jl5); jp1.add(jl6); jp1.add(jl7); jp1.add(jl8); jp2.add(jtf1); jp2.add(jtf2); jp2.add(jtf3); jp2.add(jtf4);

黄河科技学院毕业设计说明书 第 86 页

jp2.add(jtf5);

jp2.add(jtf6);

jp2.add(jtf7);

jp2.add(jtf8);

jp3.add(jb1);

jp3.add(jb2);

this.add(jp1,BorderLayout.WEST);

this.add(jp2,BorderLayout.EAST);

this.add(jp3,BorderLayout.SOUTH);

this.add(jp1);

this.setLocation(500, 500);

this.setSize(300,200);

//this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//这句话不能有,否则会报警 this.setVisible(true);//这句话必须有,否则不会显示出来

}

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

//相应点击动作

if(e.getSource()==jb1){

//添加

EmpModel tempModel=new EmpModel();

String sql="insert into stu values(?,?,?,?,?,?)";

String

paras[]={jtf1.getText(),jtf2.getText(),jtf3.getText(),jtf4.getText(),jtf5.getText(),jtf6.getText(),jtf7.getText(),jtf8.getText()};

if(!tempModel.upDate(sql, paras)){

JOptionPane.showMessageDialog(this, "添加失败");

}

this.dispose();

}

}

}

import java.awt.Color;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JSplitPane;

public class JJ extends JFrame{

JSplitPane jsp1,jsp2;

JPanel jp1,jp2,jp3;

public static void main(String[] args) {

// TODO Auto-generated method stub

new JJ();

黄河科技学院毕业设计说明书 第 87 页

}

public JJ(){

jp1=new JPanel();

jp1.setBackground(Color.red);

jp2=new JPanel();

jp2.setBackground(Color.black);

jp3=new JPanel();

jsp1=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,jp1,jp2); jsp1.setDividerLocation(260);

jsp2=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,jp3,jsp1); jsp2.setDividerLocation(260);

this.add(jsp2);

this.setSize(800,800);

this.setVisible(true);

}

}

package com.mhl.view;

import java.awt.BorderLayout;

import java.awt.CardLayout;

import java.awt.Color;

import java.awt.Container;

import java.awt.Cursor;

import java.awt.GridBagLayout;

import java.awt.GridLayout;

import java.awt.Image;

import java.awt.Toolkit;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import java.awt.image.ImageProducer;

import java.io.File;

import java.io.IOException;

import java.util.Calendar;

import javax.imageio.ImageIO;

import javax.swing.BorderFactory;

import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

黄河科技学院毕业设计说明书 第 88 页

import javax.swing.JPanel;

import javax.swing.JSplitPane;

import javax.swing.JToolBar;

import javax.swing.Timer;

import javax.swing.border.Border;

import javax.swing.border.TitledBorder;

import com.mhl.tools.ImagePanel;

import com.mhl.tools.MyTools;

public class windows1 extends JFrame implements ActionListener,MouseListener{

//定义需要的组件

Image titleIcon,timeBg;

//定义菜单条(不需要布局,直接在最上面)

JMenuBar jmb;

//定义一级菜单

JMenu jm1,jm2,jm3,jm4,jm5,jm6;

//定义二级菜单

JMenuItem jm1_jmi1,jm1_jmi2,jm1_jmi3,jm1_jmi4,jm1_jmi5;

//图标

ImageIcon jm1_jmi1_icon,jm1_jmi2_icon,jm1_jmi3_icon,jm1_jmi4_icon,jm1_jmi5_icon; //工具栏

JToolBar jtb;

//工具栏里面的按钮

JButton jb1,jb2,jb3,jb4,jb5,jb6,jb7,jb8,jb9,jb10;

//定义面板

JPanel jp1,jp2,jp3,jp4,jp5,p1,p2_jsp1;

//显示当前时间的jlabel

JLabel jla_time;

JLabel jp1_jlab1,jp1_jlab2,jp1_jlab3,jp1_jlab4,jp1_jlab5,jp1_jlab6,jp1_jlab7,jp1_jlab8; //给jp2定义需要的JLabel

JLabel jp2_lab1,jp2_lab2;

//javax.swing包中的Timer可以定时的触发action事件,我们可以利用这点完成一些事情 Timer t;

//jp1的背景图片

ImagePanel jp1_imgPanel;

//定义拆分窗口

JSplitPane jsp1,jsp2_all;

CardLayout cardJp3;

CardLayout cardJp2;

//主界面和收款界面是在一个JSplitPane上,这里定义一个分割宽度

int fenge=0;

public static JFrame jt;

public static void main(String[] args) {

// TODO Auto-generated method stub

黄河科技学院毕业设计说明书 第 89 页

jt=new windows1(); } //初始化菜单栏的方法 public void initMenu(){ //创建二级菜单图标 jm1_jmi1_icon=new ImageIcon("image//jm1_icon1.jpg"); jm1_jmi2_icon=new ImageIcon("image//jm1_icon2.jpg"); jm1_jmi3_icon=new ImageIcon("image//jm1_icon3.jpg"); jm1_jmi4_icon=new ImageIcon("image//jm1_icon4.jpg"); jm1_jmi5_icon=new ImageIcon("image//jm1_icon5.jpg"); //创建一级菜单 jm1=new JMenu("系统管理"); jm1.setFont(MyTools.f3); //创建它的二级菜单 jm1_jmi1=new JMenuItem("切换用户",jm1_jmi1_icon); jm1_jmi1.setFont(MyTools.f2); jm1_jmi2=new JMenuItem("切换到收款界面",jm1_jmi2_icon); jm1_jmi2.setFont(MyTools.f2); jm1_jmi3=new JMenuItem("登陆管理",jm1_jmi3_icon); jm1_jmi3.setFont(MyTools.f2); jm1_jmi4=new JMenuItem("万年历",jm1_jmi4_icon); jm1_jmi4.setFont(MyTools.f2); jm1_jmi5=new JMenuItem("退出",jm1_jmi5_icon); jm1_jmi5.setFont(MyTools.f2); //二级菜单加入到一级菜单 jm1.add(jm1_jmi1); jm1.add(jm1_jmi2); jm1.add(jm1_jmi3); jm1.add(jm1_jmi4); jm1.add(jm1_jmi5); //把一级菜单加入到菜单条 jmb=new JMenuBar(); jmb.add(jm1); jm2=new JMenu("人事管理"); jm2.setFont(MyTools.f3); jmb.add(jm2); jm3=new JMenu("菜单服务"); jm3.setFont(MyTools.f3); jmb.add(jm3); jm4=new JMenu("报表统计"); jm4.setFont(MyTools.f3); jmb.add(jm4); jm5=new JMenu("成本及库房");

黄河科技学院毕业设计说明书 第 90 页

jm5.setFont(MyTools.f3); jmb.add(jm5); jm6=new JMenu("动画帮助"); jm6.setFont(MyTools.f3); jmb.add(jm6); //把菜单条加入到jframe中 this.setJMenuBar(jmb); } //初始化工具栏的方法 public void initToolBar(){ //处理工具栏的jbutton jb1=new JButton(new ImageIcon("image//jb1.jpg")); jb1.addMouseListener(this); jb2=new JButton(new ImageIcon("image//jb2.jpg")); jb3=new JButton(new ImageIcon("image//jb3.jpg")); jb4=new JButton(new ImageIcon("image//jb4.jpg")); jb5=new JButton(new ImageIcon("image//jb5.jpg")); jb6=new JButton(new ImageIcon("image//jb6.jpg")); jb7=new JButton(new ImageIcon("image//jb7.jpg")); jb8=new JButton(new ImageIcon("image//jb8.jpg")); jb9=new JButton(new ImageIcon("image//jb9.jpg")); jb10=new JButton(new ImageIcon("image//jb10.jpg")); jtb=new JToolBar(); //将工具栏设置为不能浮动 jtb.setFloatable(false); //工具栏中加入按钮 jtb.add(jb1); jtb.add(jb2); jtb.add(jb3); jtb.add(jb4); jtb.add(jb5); jtb.add(jb6); jtb.add(jb7); jtb.add(jb8); jtb.add(jb9); jtb.add(jb10); } //初始化中间的Panel public void initAllPanels(){ p1=new JPanel(); p1.setBackground(Color.red);

黄河科技学院毕业设计说明书 第 91 页

p2_jsp1=new JPanel(); //处理中间jp1面板 jp1=new JPanel(new BorderLayout()); Image jp1_bg=null; try { jp1_bg = ImageIO.read(new File("image//jp1_bg.jpg")); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } //定义手型光标类 Cursor myCursor=new Cursor(Cursor.HAND_CURSOR); this.jp1_imgPanel=new ImagePanel(jp1_bg); this.jp1_imgPanel.setLayout(new GridLayout(8,1)); jp1_imgPanel.add(new JLabel(new ImageIcon("image//label_1.gif"))); //JLabel前面放图片 jp1_jlab2=new JLabel("人 事 管 理",new ImageIcon("image//label_2.jpg"),0); jp1_jlab2.setEnabled(false); jp1_jlab2.setCursor(myCursor); //注册监听 jp1_jlab2.addMouseListener(this); jp1_imgPanel.add(jp1_jlab2); jp1_jlab3=new JLabel("登 陆 管 理",new ImageIcon("image//label_3.jpg"),0); //JLabel初始状态不可用 jp1_jlab3.setEnabled(false); jp1_jlab3.setCursor(myCursor); jp1_jlab3.addMouseListener(this); jp1_imgPanel.add(jp1_jlab3); jp1_jlab4=new JLabel("菜 谱 价 格",new ImageIcon("image//label_4.jpg"),0); jp1_jlab4.setEnabled(false); jp1_jlab4.setCursor(myCursor); jp1_jlab4.addMouseListener(this); jp1_imgPanel.add(jp1_jlab4); jp1_jlab5=new JLabel("报 表 统 计",new ImageIcon("image//label_5.jpg"),0); jp1_jlab5.setEnabled(false); jp1_jlab5.setCursor(myCursor); jp1_jlab5.addMouseListener(this); jp1_imgPanel.add(jp1_jlab5); jp1_jlab6=new JLabel("成本及库房",new ImageIcon("image//label_6.jpg"),0); jp1_jlab6.setEnabled(false); jp1_jlab6.setCursor(myCursor); jp1_jlab6.addMouseListener(this); jp1_imgPanel.add(jp1_jlab6);

黄河科技学院毕业设计说明书 第 92 页

jp1_jlab7=new JLabel("系 统 设 置",new ImageIcon("image//label_7.jpg"),0); jp1_jlab7.setEnabled(false); jp1_jlab7.setCursor(myCursor); jp1_jlab7.addMouseListener(this); jp1_imgPanel.add(jp1_jlab7); jp1_jlab8=new JLabel(" 帮 助",new ImageIcon("image//label_8.jpg"),0); jp1_jlab8.setEnabled(false); jp1_jlab8.setCursor(myCursor); jp1_jlab8.addMouseListener(this); jp1_imgPanel.add(jp1_jlab8); jp1.add(jp1_imgPanel); //处理jp2,jp3,jp4 且jp2,jp3被jp4包起来 jp4=new JPanel(new BorderLayout()); cardJp2=new CardLayout(); jp2=new JPanel(cardJp2); jp2_lab1=new JLabel(new ImageIcon("image//jp2_left.jpg")); jp2_lab1.addMouseListener(this); jp2_lab2=new JLabel(new ImageIcon("image//jp2_right.jpg")); jp2_lab2.addMouseListener(this); jp2.add(jp2_lab1,"0"); jp2.add(jp2_lab2,"1"); this.cardJp3=new CardLayout(); jp3=new JPanel(this.cardJp3); //先给jp3加入一个主界面卡片面板(ImagePanel) Image zhu_image=null; Image jp3_bg1=null; try { zhu_image=ImageIO.read(new File("image//jp3_bg.jpg")); jp3_bg1=ImageIO.read(new File("image//jp3_1.jpg")); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } ImagePanel ip1=new ImagePanel(zhu_image); jp3.add(ip1,"0"); //创建EmpInfo对象(这是一个JPanel) EmpInfo eInfo=new EmpInfo(); LoginInfo lInfo=new LoginInfo(); Menu m=new Menu(); Reg r = new Reg(); Help h = new Help(); //对jp3添加几个图片 jp3.add(eInfo,"1");

黄河科技学院毕业设计说明书 第 93 页

jp3.add(lInfo,"2");

jp3.add(m,"3");

jp3.add(r,"4");

jp3.add(h,"5");

//把jp2 jp3加入jp4

jp4.add(jp2,BorderLayout.WEST);

jp4.add(jp3,BorderLayout.CENTER);

//做一个拆分窗口,分别存放jp1和jp4

jsp1=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,jp1,jp4); //指定左边的面版(jp1)占jsp1的多大

jsp1.setDividerLocation(130);

//把边界线设置为没有

jsp1.setDividerSize(0);

//p2=new JPanel(new BorderLayout());

//p2.add(jsp1,BorderLayout.CENTER);

}

public windows1(){

//创建组件

//titleIcon=new ImageIcon("image//title.gif");

try {

titleIcon=ImageIO.read(new File("image//title.gif"));

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

//调用初始化菜单函数

this.initMenu();

//调用初始化工具栏函数

this.initToolBar();

//调用初始化中间面板的函数

this.initAllPanels();

//处理状态栏p5面板

jp5=new JPanel(new BorderLayout());

t=new Timer(1000,this);//每隔1秒就触发actionevent

//启动上面的定时器

t.start();

//获取当前时间加入到jlabel

jla_time=new JLabel(Calendar.getInstance().getTime().toLocaleString()+" jla_time.setFont(MyTools.f3);

try {

timeBg=ImageIO.read(new File("image//time_bg.jpg"));

} catch (IOException e) {

// TODO Auto-generated catch block ");

黄河科技学院毕业设计说明书 第 94 页

e.printStackTrace();

}

//jla_time放在了ImagePanel东边,ImagePanel放在了jp5上面

ImagePanel ip1=new ImagePanel(timeBg);

ip1.setLayout(new BorderLayout());

ip1.add(jla_time,BorderLayout.EAST);

jp5.add(ip1);

//从JFrame中取得Container(方便控制背景颜色)

Container ct=this.getContentPane();

ct.setLayout(new BorderLayout());

ct.add(jtb,BorderLayout.NORTH);

ct.add(jsp1,"Center");//BorderLayout中间有图片,其他位置没有的时候,中间会自动填满其他地方

ct.add(jp5,BorderLayout.SOUTH);

//设置大小

int w=Toolkit.getDefaultToolkit().getScreenSize().width;

int h=Toolkit.getDefaultToolkit().getScreenSize().height;

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//设置窗口的图标

this.setIconImage(titleIcon);

//设置窗口上的字

this.setTitle("餐厅管理系统 By:张蓓");

this.setSize(w,h-25);

this.setVisible(true);

}

@Override

public void actionPerformed(ActionEvent e) {

this.jla_time.setText("当前时间:"+Calendar.getInstance().getTime().toLocaleString()+" ");

}

@Override

public void mouseClicked(MouseEvent e) {

System.out.println(e.getSource());

// TODO Auto-generated method stub

if(e.getSource()==this.jp1_jlab2){

//响应鼠标左单击

if(e.getButton() == MouseEvent.BUTTON1){

//点击按钮就显示jp3这个卡片布局相应的图片

this.cardJp3.show(jp3, "1");

}

}else if(e.getSource()==this.jp1_jlab3){

//响应鼠标左单击

if(e.getButton() == MouseEvent.BUTTON1){

黄河科技学院毕业设计说明书 第 95 页

//点击按钮就显示jp3这个卡片布局相应的图片 this.cardJp3.show(jp3, "2"); } }else if(e.getSource()==this.jp1_jlab4){ //响应鼠标左单击 if(e.getButton() == MouseEvent.BUTTON1){ //点击按钮就显示jp3这个卡片布局相应的图片 this.cardJp3.show(jp3, "3"); } }else if(e.getSource()==this.jp1_jlab5){ //响应鼠标左单击 if(e.getButton() == MouseEvent.BUTTON1){ //点击按钮就显示jp3这个卡片布局相应的图片 this.cardJp3.show(jp3, "4"); } }else if(e.getSource()==this.jp1_jlab6){ //响应鼠标左单击 if(e.getButton() == MouseEvent.BUTTON1){ //点击按钮就显示jp3这个卡片布局相应的图片 this.cardJp3.show(jp3, "4"); } }else if(e.getSource()==this.jp1_jlab7){ //响应鼠标左单击 if(e.getButton() == MouseEvent.BUTTON1){ //点击按钮就显示jp3这个卡片布局相应的图片 this.cardJp3.show(jp3, "4"); } }else if(e.getSource()==this.jp1_jlab8){ //响应鼠标左单击 if(e.getButton() == MouseEvent.BUTTON1){ //点击按钮就显示jp3这个卡片布局相应的图片 this.cardJp3.show(jp3, "5"); } }else if(e.getSource()==jp2_lab1){ this.cardJp2.show(jp2, "1"); //将左边的隐藏 this.jsp1.setDividerLocation(0); }else if(e.getSource()==jp2_lab2){ this.cardJp2.show(jp2, "0"); //将左边的隐藏 this.jsp1.setDividerLocation(130); }else if(e.getSource()==jb1){ this.dispose();

黄河科技学院毕业设计说明书 第 96 页

new Charge(); } } @Override public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub //如果用户鼠标进入了某个JLabel,则高亮 if(e.getSource()==this.jp1_jlab2){ this.jp1_jlab2.setEnabled(true); }else if(e.getSource()==this.jp1_jlab3){ this.jp1_jlab3.setEnabled(true); }else if(e.getSource()==this.jp1_jlab4){ this.jp1_jlab4.setEnabled(true); }else if(e.getSource()==this.jp1_jlab5){ this.jp1_jlab5.setEnabled(true); }else if(e.getSource()==this.jp1_jlab6){ this.jp1_jlab6.setEnabled(true); }else if(e.getSource()==this.jp1_jlab7){ this.jp1_jlab7.setEnabled(true); }else if(e.getSource()==this.jp1_jlab8){ this.jp1_jlab8.setEnabled(true); }else if(e.getSource()==jb1){ //添加鼠标移动按钮上就出现提示 this.jb1.setToolTipText("切换到收款界面"); } } @Override public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub //如果用户鼠标离开了某个JLabel,则禁用 if(e.getSource()==this.jp1_jlab2){ this.jp1_jlab2.setEnabled(false); }else if(e.getSource()==this.jp1_jlab3){ this.jp1_jlab3.setEnabled(false); }else if(e.getSource()==this.jp1_jlab4){ this.jp1_jlab4.setEnabled(false); }else if(e.getSource()==this.jp1_jlab5){ this.jp1_jlab5.setEnabled(false); }else if(e.getSource()==this.jp1_jlab6){ this.jp1_jlab6.setEnabled(false); }else if(e.getSource()==this.jp1_jlab7){ this.jp1_jlab7.setEnabled(false); }else if(e.getSource()==this.jp1_jlab8){

黄河科技学院毕业设计说明书 第 97 页

} this.jp1_jlab8.setEnabled(false); } } @Override public void mousePressed(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub }

相关推荐