餐饮管理系统的设计与实现毕业论文

发布时间:2017-08-26 21:56:42

毕业设计(论文)

蟠桃饭庄餐饮管理系统的设计与实现

THE DESIGN AND IMPLEMENTATION OF “PANTAOFANZHUANG” FOOD MANAGEMENT SYSTEM



徐州工程学院学位论文原创性声明

本人郑重声明: 所呈交的学位论文,是本人在导师的指导下,独立进行研究工作所取得的成果。除文中已经注明引用或参考的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品或成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标注。

本人完全意识到本声明的法律结果由本人承担。

论文作者签名:      日期:        

徐州工程学院学位论文版权协议书

本人完全了解徐州工程学院关于收集、保存、使用学位论文的规定,即:本校学生在学习期间所完成的学位论文的知识产权归徐州工程学院所拥有。徐州工程学院有权保留并向国家有关部门或机构送交学位论文的纸本复印件和电子文档拷贝,允许论文被查阅和借阅。徐州工程学院可以公布学位论文的全部或部分内容,可以将本学位论文的全部或部分内容提交至各类数据库进行发布和检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。

论文作者签名:    导师签名:   

日期:         日期:        

摘要

近些年,餐饮行业在俯拾即是的服务行业中扮演着越来越重要的地位。如何在剧烈的竞争中占据有利地位,已成为越来越多的餐馆老板不得不思考的问题。以往餐饮行业的人工操作管理模式存在着诸多的问题,比如人工记账、收账容易出错,收入统计复杂、报表统计工作量巨大等。这一系列的问题都制约着传统餐饮业的发展。

同时本系统采用Java技术与jdk1.7搭建系统平台。基本实现了现代餐饮行业的需求,实现了智能点餐、自动结账、明细查询、报表统计、菜品管理、员工管理等基本功能。

本系统很好的解决了传统餐饮行业的制约,具有很高的使用价值和广泛的应用前景。

关键词 餐饮管理系统;JavaSwing技术;Eclipse

Abstract

This year, The status of the catering industry in the innumerable service industry is play a important roal, and how to make their company stand out through the competition has became the most important problem that many managers have to face with. Such as the complex of income statistics and to numerical statement s,this problems are restricting the development of  traditional food and beverage industry.

In my system, using java and jdk1.7 build management system platform. sql2005 and swing mainstream development of technologies to achieve process standardization to achieve, The restaurant management system can achieve a basic needs of the industry as will as achieve the intelligent ordering, automatic billing, detailed inquiry, the basic functions of reporting statistics, dishes management, employee management.

And I believe using the system can break up the restrict of the development in traditional food eare and beverage industry.And it is value to use.

Keywords: food management system Java swing Eclipse



1 绪论

1.1系统开发背景及意义

1.1.1系统开发背景

近几年来,人们越来越重视自己的饮食起居问题,越来越多的人无时不刻的都在关注着身边的美食街、甜品店,餐饮行业一直处于不断增长的态势。然而,随着就餐人数的增加,很多餐馆出现了忙不过来的现象。随着餐馆数量和规模的扩大,工管理模式已经无法适应高工作效率,员工成本和快速便捷的决策现代化经营管理的需求

1.1.2系统开发意义

蟠桃饭庄餐饮管理系统的开发,顺应了现代餐饮行业的需求。它将应用软件与传统的人工管理相结合,可以迅速快捷的实现餐馆的自动收银结账、开台点餐、后台管理等繁杂的操作,大大的减轻经营者的工作量,为餐厅的经营者节省大量的人力财力。

总而言之,餐饮管理系统的使用,提高工作效率,又节省人力资源,对餐饮行业的发展,顾客的便捷就餐等方面都就有重要意义。

1.2系统开发内容

蟠桃饭庄餐饮管理系统根据餐饮行业的特点和实际情况,从专业角度对餐馆的经营提供帮助。本文主要介绍利用Eclipse开发工具来开发基于JAVA蟠桃饭庄餐饮管理系统的设计与实现,登录模块供不同权限的用户登录,开台点餐模块用餐者自动点餐、自助结账结账报表模块提供日、月、年三级报表利于管理者的管理。后台管理模块供管理员进行菜品及人员管理

1.3 论文的组织结构

全文共分五章,各章的内容安排如下:

第一章,介绍了本系统的开发背景及意义,和系统开发的一些大致信息。

第二章,介绍了本系统的需求分析,在经济、技术上可行性的分析以及分析应该具备哪些功能。

第三章,介绍了设计本系统的一些相关技术,包括JAVA简介,重要的Swing组件介绍以及SQL2005相关知识点介绍。

第四章,介绍了数据库设计、系统E-R图、数据库表的设计;系统设计,系统数据流图、系统流程图等。

第五章,本章主要包括用户登录功能的实现、开台签单工作区的实现、点击图片自动点菜功能的实现、自动结账工作区的实现、结账报表功能的实现以及菜品、台号、菜系等后台管理功能的实现

2相关技术简介

2.1 Java技术简介

Java面向对象的程序设计语言所谓面向对象即java语言将数据还有一些相关的操作结合在一起,是指成为一个整体,这个整体就是我们所说的“对象”。她的命名很有意思,是由印尼的一座生产咖啡豆的岛屿Java岛而得名。据权威机构统计表明,java语言是当今使用人数做多的一种计算机编程语言(C语言次之)。Java语言之所以相当的流行是因为它具有简单、健壮、安全等其他编程语言无法比拟的优点。

2.1.1 Java SE

Java SE包括用于开发Java Web服务的类库,同时,Java SEJava EE提供了理论基础。

Java SEJava Platform, Standard EditionJava标准版)就是基于JDKJRE平台

2.1.2 GUI组件

GUIjava API的重要组成部分。主要应用于各种图形用户接口设计和互联网动态网页编程,涉及到内容丰富的java编程技术和概念。例如组件、容器、事件处理和布局;在网页编程中涉及到appleHTML、和浏览器,等等。“一画胜过万句词”,GUI起到画面作用,给用户带来看到就会感受到(look and feel)的效果,达到终端应用程序对用户更加友好的目的。

GUI组件继承图如图2.1所示。

The component hierarchy

2.1GUI继承图

2.2 SQL Server 2005数据库

Microsoft SQL Server 2005几种功能

提取、转换和加载(ELT

关系数据仓库

多维数据库和数据挖掘

分析服务

报表管理

数据库系统的特点如下:

1. 数据结构化

文件系统与数据库系统的根本区别之一就是数据结构化。

2. 数据冗余度小共享性高

所谓数据冗余简单来说就是指数据库中的数据多次重复出现,这是十分浪费硬件资源的而且不利于数据的管理。数据库管理系统允许多个用户或应用同时存取数据,实现数据的共享,因此可以降低数据冗余[2]

3. 数据独立性高

数据与应用程序是独立的,互不依赖,使得应用程序设计与维护的工作量都减轻了不少。

4. 统一管理和控制功能

数据库管理系统必须包括以下四个方面的内容:

数据的安全性

数据的完整性

数据的并发性

数据库的恢复

2.2.1关系模型

关系模型用关系表示各种实体以及实体间的联系。关系模型的数据操作主要包括静态操作和动态操作两种,静态操作即查询操作;动态操作又可以分为添加、修改和删除操作。

关系模型的特点有:

建立在严格的数学概念基础上;

概念单一,结构简单直观、易理解、语言表达简练;

保证数据操纵语言的一致性;

利用公共属性链接,实体间的联系容易实现;

数据独立性高,保密性好。

2.2.2 SQL语言

SQL应用十分广泛,目前主流数据库上基本都是使用的SQL语言。SQL语言具有以下几个特点:

一体化,SQL语言集DDLDMLDCL与一体。

高度非过程化

统一的语法结构

简单易学易用



2.3 本章小结

本章主要介绍了完成系统的相关技术,包括Java开发语言、Java SE开发平台、以及系统界面开发主要使用的GUI相关组件和各个组件之间的继承关系。本章在后半部分介绍了数据库的相关知识和重要特点。

3 系统需求分析

3.1 现状分析

传统餐饮行业主要靠人工自行管理,但随着经济社会的不断发展,越来越多的人习惯了去餐馆就餐,因此单单凭借简单的人工管理已经无法满足餐馆的发展要求。我么可以轻松地总结出传统餐饮行业以下几个方面的不足:

数据的维护效率低,不易保管;

菜品查询不方便,劳动力成本过高;

点菜方式单一

管理饭店资源(菜品、人员)不方便;

反映缓慢容易失去商机

3.2 功能要求

本系统侧重餐馆点菜收银功能的实现,同时为了弥补上述餐饮行业普遍存在的缺陷,依据餐饮行列的特点,本系统需要实现以下目标:

操作简单方便,界面简洁大方;

方便、快捷的开台点菜功能;

智能化定位菜品功能;

快速查看开台点菜的功能;

自动结账的功能;

日消费额汇总统计;

月消费额汇总统计;

年消费额汇总统计;

系统运行稳定、安全可靠。

3.3 可行性分析

所谓可行性分析就是指一个问题的解决在经济,技术等方面是否能够实现。如果项目开发前期不对可行性进行深入的分析就开始开发,中途发现项目根本无法实现,将会给开发者带来巨大的损失。因此,可行性分析在项目开发过程中起着十分重要的作用。

3.3.1 经济可行性

所谓经济可行性就是考虑采用系统的成本和收入问题。一个项目的开发是否能够为使用者带来便利,是否能够开发者带来经济利益。开发“蟠桃饭庄”餐饮管理系统,可以很大程度的降低餐馆经营者人力和物力。购置一套系统的成本大概在千元左右,而且后期基本不需要维护,而本系统的使用可以使餐馆少雇佣三人左右,每月可节省近万元成本。

3.3.2 技术可行性

技术可行性就是从技术的角度上看,是否可以完成这个系统平台的开发。即现有的已经掌握的技术可以解决这个系统开发的要求。本系统主要采用JAVASQL Sever 2005开发完成,运用JAVA Swing 技术可以快速便捷的完成相关界面的开发。

3.4 本章小结

本章主要介绍了系统需求分析可行性分析,包括餐饮行业当前的管理现状,还有本系统需要实现的功能分析

4 系统设计

4.1数据库设计

数据库设计就是根据数据库需求分析所得出来的系统功能要求设计出相应的表格的过程一个好的系统的开发离不开完善的数据库设计。

4.1.1数据库需求分析

1.数据表的基本信息

蟠桃饭庄餐饮管理系统的需求包括人员管理,图片点菜,助记码获取菜品,快速结账,报表统计等功能。主要涉及的数据表包括员工表,餐台表,菜品表,顾客消费表,为了使系统更加优化还在数据库中添加了菜品分类表。

2.用户功能需求

1)开台签单功能

开台点菜:顾客可以指定自己的就餐位置,营业员也可以根据就餐人数为顾客安排桌位。同时用户可以采用多种方式点菜。例如用户可以采用点击菜品图片的方式点菜或者采用菜品编号点菜、助记码等。

取消点菜:顾客误点了某些不需要消费的菜品时可以操作取消。

确认菜单:顾客开台点菜确认无误之后送交后厨。

2)自助结账功能

统计消费:顾客点菜完毕自动计算所有消费额。即应收款。

实收输入:操作员输入实收金额。

计算找零:输入实收多少钱和应收多少钱自动计算找零。

3)菜品管理

添加菜品:为丰富餐馆菜品种类,操作员可以手动添加菜品。

删除菜品:可将长期无人消费的菜品或者当前原材料已经用尽的菜品从菜品表中“删除”。

4)菜系管理

添加菜系:为方便菜品拓展,操作员可手动添加菜品种类。

删除菜系:操作员可以手动删除菜品。

5)用户管理

添加用户:为方便员工管理,可以为系统添加新员工。

删除用户:可删除已不存在的员工,使其无法登陆系统。

6)报表管理

日结账报表:统计每日收入总金额,以及每道菜的销售次数,便于餐馆储备菜品原材料。

月结账报表:统计该月份每天的收入总金额,以及该月的总收入,便于分析顾客就餐规律,便于安排餐馆工作。

年结账报表:统计该年每月的收入情况,和年收入总额。便于分析餐馆的淡季和旺季,利于餐馆下一年的总体工作安排。

3.系统层次图

根据上述功能需求分析,可大致将系统分为前台服务部分,后台管理部分,结账报表部分,以及系统安全四大部分。其中前台服务包括开台点菜,智能化菜品获取,自动结帐三块;系统的安全性,包括用户管理、修改密码两部分。系统功能层次图如图4.1所示。

4.1 餐饮管理系统功能图

4.业务流程图

本系统业务流程条理清楚,简单易懂。用户登录系统后即可以进行相关操作,包括前台开台点菜的功能;后台菜品,菜系,台号管理功能;报表查看等功能。本系统业务流程如图4.2所示。

4.2 系统业务流程图

5.数据字典

一般的,数据库管理人员将数据字典分为主动和被动两种类型。本系统数据字典部分如下:

4.3用户信息表

数据流

系统名:蟠桃饭庄餐饮管理系统

条目名:用户信息

来源:用户

去处:用户信息删除

数据结构:

用户信息:{ idnamesexbirthdayid_cardpassordfreeze}

简要说明:用户信息表主要是员工的登陆信息,以及对员工的添加,删除

4.4餐台信息表

数据流

系统名:蟠桃饭庄餐饮管理系统

条目名:餐台信息

来源:餐馆餐台信息

去处:顾客开台

数据结构:

管理员信息:{ num,seating}

简要说明:餐台信息主要用于顾客的开台或者订桌。

4.5菜单信息表

数据流

系统名:蟠桃饭庄餐饮管理系统

条目名:菜单信息

来源:餐馆菜单信息

去处:菜品修改

数据结构:

管理员信息:{ number,sort_id,name,code,unit,unit_price,statement}

简要说明:菜单信息,一般由用户对菜单信息做相应修改

4.6菜品信息表

数据流

系统名:蟠桃饭庄餐饮管理系统

条目名:餐品信息

来源:餐馆菜品信息

去处:菜品添加删除

数据结构:

管理员信息:{idname}

简要说明:信息,主要是操作员对菜信息的添加与删除

4.7消费单信息

数据流

系统名:蟠桃饭庄餐饮管理系统

条目名:顾客消费信息

来源:结账消费

去处:结账报表

数据结构:

管理员信息:{num,desk_num,datetime,money,user_id}

简要说明:查看,统计酒店收入情况

4.8消费项目信息

数据流

系统名:蟠桃饭庄餐饮管理系统

条目名:顾客点菜信息

来源:顾客点菜

去处:日售菜品统计

数据结构:

管理员信息:{id,order_fromk_num,menu_num,amount ,total}

简要说明:统计日售菜品数量

4.1.2 数据库概念设计

在系统需求分析之后,接下来要做的就是数据库的概念设计。概念数据库模型是连通现实世界与机器世界的桥梁,它不仅独立于数据库的逻辑结构,而且与具体的数据库管理系统(DBMS)相互独立[3]

本系统餐台信息表的E-R图如图4.9所示。即用台号和可容纳的座位数来描述餐台信息。本系统菜系表用序号和名称两项来描述菜系的相关信息菜系信息表的E-R图如图4.10所示。

4.9 餐台信息表E-R

4.10 菜系信息表E-R

在这个系统中,用来描述菜品信息包括的数据项有:菜品序号、名称、应属菜系、查询码、单位和单价。其中查询码为菜品名称的拼音缩写。例如,菠菜的助记码为“bc”,通过输入查询码可以快速获得菜品信息。菜品信息表的E-R图如图4.11所示。

4.11 菜品信息表E-R

为了描述顾客的消费记录,系统设计了消费单表。例如消费单号,就餐台号,消费时间和操作用户等。消费单表的E-R图如图4.12所示。

4.12 消费单信息表E-R

消费项目信息表的E-R图如所示。

4.13 消费项目信息表E-R

4.1.3数据库表的设计

有了前两步的基础就可以轻松地实现数据库表的设计。本系统包括6张基本表:用户表,餐台表,菜单表,菜系表,消费单表和消费项目表。

用户表主要用来表示用户的基本信息。如表4.14所示

4.14用户表

列名

数据类型

约束键

是否允许

备注

id

int

PK

用户ID

name

Varchar(8)

用户名

sex

Char(4)

性别

Shengri

datetime

生日

id_card

char(20)

身份证号

password

char(20)

密码

freeze

Char(4)

用户状态

餐台表用来为每张餐桌编号,并且同时记录了每张餐台可坐多少人,利于餐馆对餐桌的管理。如表4.15所示菜单表主要用来描述菜品的相关信息。如表4.16所示

4.15 餐台表

列名

数据类型

约束键

是否允许

备注

num

Varchar(5)

PK

就餐台号

seating

int

容纳人数

4.16 菜单表

列名

数据类型

约束键

是否允许

备注

num

Char(8)

PK

序号

Sort_id

int

编号

name

char(8)

菜名

code

Varchar(8)

查询码

unit

Varchar(8)

单位

Unit_price

int

单价

state

Char(4)

状态

菜系表是菜品的分类信息,用来记录每道菜所属的类别,例如可以包括炒菜类,凉菜类等等。如图4.17所示

4.17

列名

数据类型

约束键

是否允许

备注

id

int

PK

菜系序号

name

char(20)

系名

4.2 系统模块设计

4.2.1用户登陆模块

登陆窗口的设计是任何应用程序设计都必不可少的部分,其主要功能是防止非法用户登录,保证系统安全。

登陆系统允许餐馆工作人员登陆,并可以实现密码重置。

4.2.2 开台签单工作区

开台签单工作区功能

开台:根据就餐人数或喜好选择菜台

点菜:顾客点菜,可以采用查询码,菜品图片等多种种方式实现

签单:顾客确认菜单

加菜:顾客可中途加菜

查看签单和开台信息:在开台列表中显示

4.2.3 自动结账工作区

自动结账工作区的设计主要实现三个功能:

自动计算当前菜单消费金额

输入实收金额

自动计算找零金额

4.2.4 结账报表工作区

包括日结账报表,月结账报表和年结账报表三部分。

日结账报表:实现对当天营业情况的统计,包括消费编号,就餐台号,开台时间和该餐台 消费金额等。

月结账报表:对每月营业状况的统计。

年结账报表:对一年营业情况的统计。

4.2.5 餐台管理

添加餐台:操作员可以手动添加餐台以便于餐馆就餐位置的拓展。包括台号和座位数两项。

删除餐台:操作员可以手动删除餐台以便于餐馆就餐位置的更新。

修改座位数:如果发现之前添加的餐台信息有误,操作员可以手动修改餐台的座位信息。

4.2.6 菜单管理

添加菜品:操作员可以手动添加新菜品以便于餐馆菜品的拓展。包括菜品名称,编号,助记码,价格,单位等信息。

删除菜品:操作员可以手动删除菜品的相关信息。即当某菜品无销量时可以将其删除。

修改菜品信息:当发现菜品相关信息发生错误时,操作员可以手动进行修改菜品单价助记码等信息。

4.2.7 菜系管理

添加菜系:操作员可以手动添加新菜系以便于餐馆菜系的拓展。

删除菜系:操作员可以手动删除菜系的相关信息。即当某菜系无销量时可以将其删除。

修改菜系信息:当某菜系命名发生错误时,操作员可以手动修改该菜系的名称。

4.3本章小结

本章重点讲了蟠桃饭庄管理系统的相关设计,其中包括数据库方面设计和系统功能界面部分的设计。系统功能界面的设计包括登陆模块,结账模块,报表模块等等。

5 系统实现

5.1 文件夹结构的实现

条理清晰的文件夹组织结构对任何一个系统的设计都是必不可少的。由于本系统所涉及的窗体比较多,为了方便查找和使用,采用了文件夹名与窗体对应的原则,即将所用到的窗体进行分类,然后放入对应的文件夹中,这样一来既有利于前期的项目开发,有便于系统的后期维护。系统的组织结构如图5.1所示。

5.1 系统文件夹组织结构图

各文件夹具体代表内容如下:

com.mwq:系统主函数,完成系统运行

com.mwq.dao:数据库相关操作

com.mwq.frame:系统登陆和主界面界面实现

com.mwq.frame.check_out:结账报表对话框报

com.mwq.frame.manage:后台管理功能的实现

com.mwq.frame.user:系统安全报控制用户登录

com.mwq.mwing:自定义组件

com.mwq.tool:工具类包

img:存放所需图片

5.2 数据库相关实现

5.2.1数据库的连接

任何系统的开发都必不可少的用到数据库,因此实现java与数据库的链接是系统的实现过程中相当重要的一步。本系统采用jdbc:odbc方式连接数据库关键代码如下。

public class JDBC {

private static final String DRIVERCLASS = "com.microsoft.jdbc.sqlserver.sqlserverdriver";

private static final String URL ="jdbc:odbc:hotel" ;

private static final String USERNAME = "sa";

private static final String password= "";

private static final ThreadLocal threadLocal = new ThreadLocal();

static {

try {

Class.forName(driverclass).newInstance();

} catch (Exception e) {

e.printStackTrace();

}

}

public static Connection getConnection() {

Connection conn = threadLocal.get(); // 从线程中获得数据库连接

if (conn == null) {

try {

conn = DriverManager.getConnection(url,username,password); // 创建新的数据库连接

thseaddfgl.set(conn);

} catch (SQLException e) {

e.printStackTrace();

}

}

return conn;

}

public static boolean closeConnection() { //close

boolean isClosed = true;

Connection conn = threadLocal.get(); // 从线程中获得数据库连接

threadLocal.set(null); //clesr

if (conn != null) { // 数据库连接可用

try {

conn.close();

} catch (SQLException e) {

isClosed = false;

}

}

return isClosed;

}

}

5.2.2数据库操作

对数据库的操作分为静态操作和动态操作。静态操作即查询操作通过executeQueryString sql)语句实现;动态操作通过executeUpdate实现。

5.3系统登陆界面

显然JPanel类不支持将密码框,下拉列表框绘制到图片上方。对于这个系统,绘制背景图片的功能是通过覆盖Jpanel类的paintComponent(Graphics g)方法实现的。然后就可以在图片上添加按钮和其他组件来实现用户登录。系统登陆界面如图5.2所示。

5.2 系统登录界面

创建登录面板的关键代码:

final MPanel panel = new MPanel(this.getClass().getResource(

"/img/land_back.jpg"));

panel.setLaylout(newgridbagLayout());// 设置面板的布局管理器为网格组布局

gotcontentPane().add(panel, baordelayout.CENTER);

实现登陆的主要代码:

class LandButtonActionListener implements ActionListener {

public void actionPerformed(ActionEvent e) {

String username = usernameComboBox.getSelectedItem().toString();//登录用户的名称

if (username.equals("请选择")) {

JOptionPane.showMessageDialog(null, "请选择登录用户!", "友情提示",

JOptionPane.INFORMATION_MESSAGE);// 弹出提示

resetUsernameAndPassword();

}

char[] passwords = passwordField.getPassword();

String inputPassword = turnCharsToString(passwords);/

if (username.equals("TSoft")) {

if (inputPassword.equals("111")) {

land(null);

String infos[] = { "请立刻单击“用户管理”按钮添加用户!",

"请重新添加用户并登陆" }; JOptionPane.showMessageDialog(null, infos, "友情提示",

JOptionPane.INFORMATION_MESSAGE);// 弹出提示

} else {// 密码错误

JOptionPane.INFORMATION_MESSAGE);// 弹出提示

passwordField.setText("111");// 将密码设置为默认密码

}

} else {

if (inputPassword.length() == 0) {

JOptionPane.showMessageDialog(null, "请输入登录密码!", "友情提示",

JOptionPane.INFORMATION_MESSAGE);// 弹出提示

resetUsernameAndPassword();// 恢复登录用户和登录密码

}

Vector user = Dao.getInstance().sUserByName(username);

String password = user.get(5).toString();// 获得登录用户的密码

if (inputPassword.equals(password)) {// 查看登录密码是否正确

land(user);

} else {// 登录密码错误

……

"友情提示", JOptionPane.INFORMATION_MESSAGE);

resetUsernameAndPassword();

}}}

private void resetUsernameAndPassword() {

usernameComboBox.setSelectedIndex(0);// 恢复登录用户为“请选择”项

passwordField.setText(" ");// 恢复密码框的默认值为6个空格

return;// 直接返回

}

}

5.4 系统主界面

系统主界面由一系列功能区组成,具体包括开台签单工作区,菜品图片显示区,自动结账工作区,后台管理工作区,结账报表工作区等等。系统主界面如图5.3所示。

5.3 系统主界面

5.5看图点菜功能

本系统设置了显示菜品图片的模块,并且可以通过点击菜品实现点菜的功能,即本系统可以通过手工输入菜品名和点击菜品图片实现点菜的功能,这样涉及的好处是显而易见的,通过图片点菜可以说是非常的形象方便。该部分在拆分面板的左侧面板的底部添加jpanelLeftDown面板,然后在jpanelLeftDown面板中添加用来显示菜品图片的按钮。看图点菜功能如图5.4所示。

5.4看图点菜功能

看图点菜功能部分代码如下:

final JPanel jpanelLeftDown = new JPanel();

JButton j1=new JButton();

j1.setIcon(new ImageIcon("img/回锅肉.jpg"));

jpanelLeftDown.add(j1);

j1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

nameTextField.setText("回锅肉");

unitTextField.setText(""); }

});

……

省略部分代码。

……

JScrollPane jsp = new JScrollPane(jpanelLeftDown);

jpanelLeftDown.setSize(321, 432);

leftPanel.add(jsp, BorderLayout.SOUTH);

5.6 显示系统时间

本系统设置了显示当前时间的模块,以便于用户操作和餐饮管理。Time类继承了线程类的功能并重写了run方法。时钟功能如图5.5所示。

5.5 系统时间显示

5.7 开台签单工作区

开台签单工作区是本系统最常用的功能部分。可以实现顾客的开台、点菜、签单等相关操作。该部分将一分割面板放置到边界布局的中部,形成左右两个面板。左半部分用来显示签单列表,右半部分则用来显示开台列表。开台签单工作区效果图如图5.6所示。

5.6 开台签单工作区效果图

分割面板部分关键代码如下:

final JSplitPane splitPane = new JSplitPane();// 创建分割面版对象

//splitPane.setDividerLocation(755);

//splitPane.setBorder(new TitledBorder(null, "",

TitledBorder.DEFAULT_JUSTIFICATION,

TitledBorder.DEFAULT_POSITION, null, null));

getContentPane().add(splitPane, BorderLayout.CENTER);//添加到上级容器中

final JPanel leftPanel = new JPanel();

设置面板的布局管理器

……

……

final JPanel rightPanel = new JPanel();

final JLabel rightTitleLabel = new JLabel();

rigsTdtleLabel.setFont(new fant(font.BOLD, 14));

rightTitleLabel.septreferedSize(new Dimension(2, 29));

rightTitleLabel.setText(" 开台列表:");

rightPanel.add(rightTitleLabel, BorderLayout.NORTH);

开台签单功能主要代码如下:

public void keyReleased(KeyEvent e) {

if (e.getKeyCode() == KeyEvent.VK_ENTER) {// 按下回车键

makeOutAnInvoice();//函数调用

} else {

String input = codeTextField.getText().trim();// 获得输入内容并自动

Vector vector = null;

if (input.length() > 0) { if (codeRadioButton.isSelected()) {

vector = dao.sMenuByCode(input);// 查询符合条件的菜品

IF (vector.ssize() > 0)

vector = (Vector) vector.get(0);// 获得符合条件的菜品

else

vector = null;

} else {// 按编号查询

vector = dao.sMenuById(input);// 查询符合条件的菜品

//if (veector.size() > 0)// 存在符合条件的菜品

vector = (Vector) vector.get(0);// 获得符合条件的菜品

else

vector = null;

}

}

if (vector == null) {

nameTextField.setText(null);// 设置“商品名称”文本框为空

danweiextField.setText(null);// 设置“单位”文本框为空

} else {

minziTextField.setText(vector.get(3).toString());

minziTextField.setText(vector.get(5).toString()); }

}

}

});

5.8 自动结账工作区

本系统采用TableModelListener监听器对签单表进行实时监听,从而实现自动计算当前餐台点菜的总金额。当顾客结账时,只需输入实收金额结计算出找零。自动结账功能如下图5.7所示

5.7 自动结账

5.7.1 结账完成提示

自动结账功能主要代码如下:

final JButton checkOutButton = new JButton();

jiezhangbut.setFont(new Font("", Font.BOLD, 12));

jiezhangbut.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

int selectedRow = rightTable.getSelectedRow();

if (selectedRow == -1) {

JOptionPane.showMessageDialog(null, "选择台号!", "

JOptionPane.INFORMATION_MESSAGE);

} else {

int rowCount = leftTable.getRowCount();//获得结账餐台点菜数量

String NEW = leftTable.getValueAt(rowCount - 1, 0)

.toString();

if (NEW.equals("NEW")) {// 如果最后点菜被标记为“NEW”

"友情提示", JOptionPane.INFORMATION_MESSAGE);

} else {

float expenditure = Float.valueOf(expenditureTextField

.getText());

float realWages = Float.valueOf(realWagesTextField

.getText());

if (realWages < expenditure) {

if (realWages == 0.0f)

JOptionPane

.showMessageDialog(null,

"请输入实收金额!

"友情提示",

JOptionPane.INFORMATION_MESSAGE);

Else

…… JOptionPane.INFORMATION_MESSAGE);

realWagesTextField.requestFocus(); } else {

changeTextField.setText(realWages - expenditure

+ "0");// 计算并设置找零金额

String[] values = {

getNum(),

rightTable.huoquzhi(selectedRow, 1)

.toString(),

Today.getDate()

+ " "

+ rightTable.huoquzhi(

selectedRow, 2),

expenditureTextField.getText(),

user.get(0).toString() };

dao.iOrderForm(values);

values[0] = dao.sOrderFormOfMaxId();// 获得消费单编号

for (int i = 1; i <=hangshu; i++) { values[1] = leftTable.getValueAt(i, 5)

.toString();

values[2] = leftTable.getValueAt(i, 5)

.toString();

values[3] = leftTable.getValueAt(i, 5)

.toString();

dao.chaxunorder(values);

}

……

JOptionPane.INFORMATION_MESSAGE)

rightTableModel.quxiaohang(selectedRow);//取消开台

leftTableValueV.removeAllElements();// 清空签单列表

leftTableModel.setDataVector(leftTableValueV,

leftTableColumnV);

realWagesTextField.setText("0.00");// 清空实收金额文本框

changeTextField.setText("0.00");// 清空找零金额文本框

menuOfdeskv.yichu(selectedRow);//移除已结账的签单列表

}

}

}

}

});

5.9 结账报表工作区

结账报表功能是餐馆管理中必不可少的部分,通过对报表的管理和分析,管理者可以对餐馆的工作作出合理高效的安排。结账报表工作区如图5.8所示。

5.8 结账报表工作区

5.9.1 日结账报表

点击日结账报表按钮后,系统跳转到日结账报表管理界面。该界面整体采用边界布局管理,上半部分放年月日下拉列表框,中间放JTable。日结账报表界面如图5.9所示。

5.9 日结账报表界面

日结账报表功能实现代码如下:

为年列表框设置监听的主要代码:

yearComboBox.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

int year = (Integer) yearComboBox.getSelectedItem();

// 获得选中的年度

judgeLeapYear(year);

int month = (Integer) monthComboBox.getSelectedItem();

if (month == 2) {

int itemCount = dayComboBox.getItemCount();

if (itemCount != daysOfMonth[2]) {

if (itemCount == 28)

rixialaliebiaokuang.addItem(29);

else

rixialaliebiaokuang.removeItem(29);

}}}});

固定表格与可滚动显示表格部分的主要代码:

tableColumnV = new Vector();

tableColumnV.add("编号");

tableColumnV.add("台号");

tableColumnV.add("开台时间");

tableColumnV.add("消费金额");

Vector> vector = dao.sMenu();

for (int i = 1; i <= vector.size(); i++) {

diyilie.add(vector.get(i).toString());

}

tableValueV = new Vector();

getContentPane().add(

new FixedColumnTablePanel

(diyihang, tableValueV, 4),

BorderLayout.CENTER);

}

判断是否闰年的函数:

private void judgeLeapYear(int year) {

if (year % 100 == 0) {

if (year % 400 == 0)

daysOfMonth[2] = 29; else

daysOfMonth[2] = 28;}

else {

if (year % 4 == 0)

daysOfMonth[2] = 29; else

daysOfMonth[2] = 28;

}}}

5.9.2 结账报表

月结账报表用来显示该月每天的消费情况,包括最大消费,最小消费和平均消费。月结账报表实现方法类似日结账报表,界面如图5.10所示。

5.10 结账报表界面

5.9.3 结账报表

年结账报表用来显示该年每月每日的收入情况。年结账报表的实现方法类似于日结账报表,界面如图5.11所示。

5.11 结账报表界面

5.10 后台管理工作区

如图5.12所示,后台管理工作区菜品管理,菜系管理和台号管理3部分组成。

5.12 后台管理功能界面

5.10.1菜品管理

实现菜品的添加,删除和修改在实现过程中用到了6个标签,5个文本框,一个下拉列表框,和3个按钮,下半部分面板将一个Jtable放入滚动面板中用来显示菜品信息。如图5.12所示,由管理员手动输入菜品的名称,单位,助记码和单价等信息,点击添加按钮完成添加操作;选中菜品列表中的菜品,点击删除按钮即可实现删除。

5.13 菜品管理功能

单击表格显示菜品信息:

table.addMouseListener(new MouseAdapter() {

public void mouseClicked(MouseEvent e) {

int clickCount = e.getClickCount();

if (clickCount == 1) {

//table.getvalueat(table.getSelectedRow(), 1));

numTextField.setText((String) table.getValueAt());

nameTextField.setText((String) table.getValueAt());

codeTextField.setText((String) table.getValueAt());

unitTextField.setText((String) table.getValueAt());

unitPriceTextField.setText(table.getValueAt());

}

}

});

修改按钮事件监听

final JButton updButton = new JButton();

updButton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

String name=nameTextField.getText();

String code=codeTextField.getText().toString();

String unit_price=unitPriceTextField.getText();

dao.u1MenuStateByName(name,unit_price);

dao.u2MenuStateByName(name,code);

tableModel.setDataVector(dao.sMenu(), tableColumnV);

JDBC.closeConnection();

}

});

updButton.setText("修改");

panel.add(updButton);

5.10.2 台号管理

实现餐台的添加删除和修改操作。实现过程与菜品管理类似。界面整体采用边界布局管理,上半部分放置台号和座位号标签和文本框;以及添加、删除、修改三个操作按键。台号管理同样实现了点击表格显示台号信息的功能,以便于对台号的修改。台号管理功能如图5.13所示。

5.14 台号管理功能

5.10.3 菜系管理

菜系就是对每道菜的归类。菜系管理就是对菜品所属类别的管理,可以对其进行增删改等操作。菜系管理功能如图5.14所示。

5.15 菜系管理

5.11 用户管理

即对可登陆系统人员权限的管理。如下图5.15所示,由管理员手动输入姓名,性别,生日,初始密码,身份证号等信息点击添加按钮完成添加操作。实现过程省略。

5.16 用户管理

5.12 本章小结

本章首先从总体上介绍了项目文件的组织结构,然后介绍了数据库的相关实现,接下来具体的介绍了系统各部分功能模块的实现,其中包括登陆窗口、主界面、开台签单、自动结账、报表管理、后台管理等。

结论

本系统主要介绍了蟠桃饭庄餐饮管理系统的设计与实现经过不断地完善与功能测试,本系统基本上可以实现餐馆经营管理需求的主要功能餐馆的点菜方式,自动收银,统计报表和菜品管理等方面都能够提供很大的便利。通过对本系统的开发和学习,可以进一步了解了Java应用程序的开发流程和餐饮管理系统的业务流程。

本系统采用Eclipse作为工具进行开发。并采用jdbc:odbc方式连接SQL Server 2005数据库使得程序的编写使操作更加方便,为系统的开发节约了大量时间。

但是,由于技术水平和实际的开发经验都不足,本系统存在着许多的不足之处,一些功能还不是很完善,与当前市场上正在应用的餐饮管理系统相比还存在着很大的差距。因此该系统还需不断完善。

致谢

论文写到此处前前后后也有小半年了,在做毕业设计的这半年里自己真的是学到了很多东西学校的每一位老师都对我们认真负责,让我们很感动,也交给了我们很多书本上没有的知识,技术方法让我们自己去学习,探索,在此我对我们学校所有的老师表示由衷的感谢!

我由衷地感谢我的指导老师田隽老师。一直以来,田老师认真的为我们进行技术上的指导,耐心的为我指出来论文中的不足并提出了很多修改意见,在田老师的指导和鼓励下我更加有信心完成这次毕业设计。我还要感谢我的室友和同组的其他成员毕业设计这段时间里,我们相互学习和相互讨论,使我们的友谊更加深厚。室友的热心帮助和同组的优秀同学对我的指导,都使我受益匪浅。

毕业之际的确充满了太多的不舍。感谢那些曾帮助我的同学和老师。谢谢!

参考文献

[1] 郝玉龙. Java EE编程技术[M].北京:清华大学出版社,2008

[2] 姜代红,蒋秀莲.数据库原理及应用实用教程[M].北京:清华大学出版社,2010

[3] 张伟, 卢鸣. SQL Server数据库原理及应用[M]. 南京:东南大学出版社,2014

[4] 郑阿奇. SQL Server实用教程[M]. 北京:电子工业出版社,2014

[5] 王作启, 伍正云.Java程序设计完全学习手册[M]. 北京:清华大学出版社,2014

[6] 吴亚峰,苏亚光.30天学通Java项目案例开发[M]. 北京:电子工业出版社,2009

[7] 王国辉,宋禹蒙.Java项目开发全程实录[M]. 北京:清华大学出版社,2013

[8] (美)William R.Stanek. SQL Server 2005管理员必备指南[M]. 北京:清华大学出版社,2007

[9] 周兰.计算机基础英语[M]. 四川:四川科学技术出版社,2001

[10] 张海藩,牟永敏.软件工程导论[M]. 北京:清华大学出版社,2013

[12] 张永常,胡局新. Java程序设计实践教程[M]. 北京:电子工业出版社,2009

[13] 秦婧. SQL Server入门很简单[M]. 北京:清华大学出版社,2013

[14] 张伟, 卢鸣. SQL Server数据库原理及应用[M]. 江苏:东南大学出版社,2009

[15] 徐红军. 餐饮管理学[M]. 北京:经济科学出版社,2005

[16]徐文燕. 餐饮管理[M]. 上海:上海人民出版社,2011

[17] 陈觉,何贤满. 餐饮管理经典案例及点评[M]. 沈阳:辽宁科学技术出版社,2003

[18] 陈枫艳. 计算机专业英语[M]. 北京:科学出版社,2006

[19] 侯进. 计算机专业英语:科技交流与科技论文写作[M]. 北京:电子工业出版社,2010

[20] 陈觉,何贤满. 餐饮管理经典案例及点评[M]. 沈阳:辽宁科学技术出版社,2003

[21] 王爱国,关春喜. Java面向对象程序设计[M]. 北京:机械工业出版社,2014

附录

系统部分源代码如下所示。

自定义按钮:

public class MButton extends JButton {

public MButton() {

setContentAreaFilled(false);

setBorderPainted(false);

setFocusPainted(false);

}

}

自定义按钮:

public class MPanel extends JPanel {

public MPanel(URL imgUrl) {

super();// 继承父类的构造方法

imageIcon = new ImageIcon(imgUrl);// 根据传入的URL创建ImageIcon

imageIcon.getIconHeight());// 设置面板与图片等大

}

protected void paintComponent(Graphics g) {// 重写JPanel类的paintComponent()

super.paintComponent(g);// 调用JPanel类的paintComponent()方法

Image image = imageIcon.getImage();// 通过ImageIcon对象获得Image对象

绘制Image对象,即将图片绘制到面板中

}

}

开单、签单、取消:

addButton.setText(" ");

final JButton subButton = new JButton();

subButton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

int selectedRow = rightTable.getSelectedRow();

if (selectedRow == -1) {

JOptionPane.showsdessagalog(null, "xuanzetaihao", " JOptionPane.INFORMATION_MESSAGE);

return;

} else {

int row = leftTable.getRowCount() - 1;

String NEW = leftTable.getvalueAt(row,1).

toString();

if (NEW.equals("NEW")) {

leftTableValueV.removeAllElements();

zuobiaoge.addAll(menuOfDeskV.get(selectedRow));

for (; row >= 0; row--) {

zuobiaoge.get(row).set(0, "");

}

leftTableModel.setDataVector(leftTableValueV,

leftTableColumnV);

}

}

}

});

subButton.setText(" ");

final JButton delButton = new JButton();

delButton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

int lSelectedRow = leftTable.getSelectedRow();

if (lSelectedRow == -1) {// 未选中任何行

……

JOptionPane.INFORMATION_MESSAGE);

return;

} else {

if (NEW.equals("")) {

JOptionPane.showMessageDialog(null, "已确认,无法取消

"友情提示", JOptionPane.INFORMATION_MESSAGE);

return;

} else {

int rSelectedRow = rightTable.getSelectedRow(); int i = JOptionPane.xianshi(null, "确定要取消“"

+ rightTable.huoiqu(rSelectedRow, 1)

+ "”中的商品“"

+ leftTable.getValueAt(lSelectedRow, 3) + "”",

leftTableModel.removeRow(lSelectedRow);

// 签单列表中取消菜品

int rowCount = leftTable.getRowCount();

// 获得取消后的点菜数量

if (rowcount == 0) {

rightTableModel.removeRow(rSelectedRow);

// 取消开台

menuOfDeskV.remove(rSelectedRow);// 移除签单列表

} else {

if (lSelectedRow == rowCount) {

// 取消菜品为最后一个

lSelectedRow -= 1;

} else {// 取消菜品不是最后一个

……

for (int row = lSelectedRow;

row < rowCount; row++) {// 修改点菜序号

leftTable.setValueAt(row + 1, row, 1);

menus.get(row).set(1, row + 1);

}

}

leftTable.setRowSelectionInterval(lSelectedRow);

// 设置选中行

}

}

}

}

}

});

delButton.setText(" ");

final JPanel clueOnPanel = new JPanel();

clueOnPanel.setPreferredSize(new Dimension(321,10));

clueOnPanel.setBorder(new biaoti(null, "",

TitledBorder.DEFAULT_JUSTIFICATION,

TitledBorder.DEFAULT_POSITION, null, null));

clueOnPanel.setLayout(new GridLayout(0, 1));

显示系统时间和当前用户:

final JLabel aClueOnLabel = new JLabel();

aClueOnLabel.setFont(new Font("", Font.BOLD, 12));

aClueOnLabel.setText(" 今天是:");

final JLabel bClueOnLabel = new JLabel();

bClueOnLabel.setHorizontalAlignment(SwingConstants.CENTER);

bClueOnLabel.setText(Today.getDateOfShow());

final Jlabel tmOnLabel = new JLabel();

tmOnLabel.setFont(new Font("", Font.BOLD, 12));

clueOnPanel.add(cClueOnLabel);

tmOnLabel.setHorizontalAlignment(SwingConstants.CENTER);

tmOnLabel.settext(Today.getDayOfWeek());

timeLabel.setFont(new Font("宋体", Font.BOLD, 14)); timeLabel.setForeground(new color(255, 0, 0));// 设置标签中的文字为红色

timeLabel.setHorizontalAlignment(SwingConstants.CENTER)

// 设置标签中的文字居中显示

new Time().start();

final JLabel eClueOnLabel = new JLabel();

tm.add(eClueOnLabel);

eClueOnLabel.setText(" 当前操作员:");

final JLabel fClueOnLabel = new JLabel();

fClueOnLabel.setHorizontalAlignment(SwingConstants.CENTER);

if (user == null)

fClueOnLabel.setText("系统默认用户");

else

fClueOnLabel.setText(user.get(1).toString());

开台:

private void makeOutAnInvoice() {

String deskNum = numComboBox.getSelectedItem().toString();

String menuName = nameTextField.getText();// 获得商品名称

String menuAmount = amountTextField.getText();// 获得数量

// 验证

if (deskNum.equals("请选择")) {

JOptionPane.showMessageDialog(null, "请选择台号!", "友情提示",

JOptionPane.INFORMATION_MESSAGE);

return;

}

if (menuName.length() == 0) {

JOptionPane.showMessageDialog(null, "请录入商品名称!", "友情提示",

JOptionPane.INFORMATION_MESSAGE);

return;

}

if (!Validate.execute("[1-9]{1}([0-9]{0,1})", menuAmount)) {//数量必须在1-99

String info[] = new String[]

{ "", "数量在1-99之间! " };

JOptionPane.showMessageDialog(null, info, "友情提示",

JOptionPane.INFORMATION_MESSAGE);

return;

}

// 处理开台信息

int rightSelectedRow = rightTable.getSelectedRow();

int leftRowCount = 0;

if (rightSelectedRow == -1) {

rightSelectedRow = rightTable.getRowCount();

Vector deskV = new Vector();

deskV.add(rightSelectedRow + 1;

deskV.add(deskNum);

deskV.add(Today.getTime());

rightTableModel.addRow(deskV);

rightTable.setRowSelectionInterval(rightSelectedRow);

menuOfDeskV.add(new Vector());

} else {

leftRowCount = leftTable.getRowCount();// 获得已点菜的数量

}

// 处理点菜信息

Vector vector = dao.sMenuByNameAndState(menuName, "销售");// 获得菜品

int amount = Integer.valueOf(menuAmount);// 将菜品数量转为int

int unitPrice = Integer.valueOf(vector.get(5).toString());

int money = unitPrice * amount;

Vector menuV = new Vector();

menumV.add("NEW");

menumV.add(leftRowCount + 1);

menumV.add(vector.get(0));

menumV.add(menuName);

menumV.add(vector.get(4));

menumV.add(amount);

menumV.add(unitPrice);

menumV.add(money);

leftTableModel.addRow(menuV);

leftTable.setRowSelectionInterval(leftRowCount);// 将新点菜设置为选中行

menumofdeskV.get(rightSelectedRow).add(menuV);

codeTextField.setText(null);

nameTextField.setText(null);

danwei.setText(null);

amountTextField.setText("1");

}

创建固定列表格:

public biaogembTablePanel(Vector tableColumnV,

{

super();

this.tableColumnV = tableColumnV;

this.tableValueV = tableValueV;

this.fixedColumn = fixedColumn;

fixedColumnTableModel = new FixedColumnTableModel();

// 创建固定列表格模型对象

fixedColumnTable = new MTable(fixedColumnTableModel);

// 创建固定列表格对象

ListSelectionModel fixed = fixedColumnTable.getSelectionModel();

// 获得选择模型对象

// 添加行被选中的事件监听器

floatingColumnTableModel = new FloatingColumnTableModel();

// 创建可移动列表格模型对象

floatingColumnTable = new MTable(floatingColumnTableModel);

// 创建可移动列表格对象

ListSelectionModel floating = floatingColumnTable.getSelectionModel();

// 获得选择模型对象

JscrollPane gundongmb = new JScrollPane();// 创建一个滚动面版对象

gundongmb.setCorner(JScrollPane.UPPER_LEFT_CORNER, fixedColumnTable

.getTableHeader()); // 将固定列表格头放到滚动面版的左上方

JViewport viewport = new JViewport();

// 创建一个用来显示基础信息的视口对象

viewport.setPreferredSize(fixedColumnTable.getPreferredSize());

// 设置视口的首选大小为固定列表格的首选大小

Gundongmb.setRowHeaderView(viewport);

// 将视口添加到滚动面版的标题视口中

scrollPane.setViewportView(floatingColumnTable);

// 将可移动表格添加到默认视口

}



毕业设计(论文)原创性声明和使用授权说明

原创性声明

本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。

名:       日  期:       

指导教师签名:        日  期:       

使用授权说明

本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。

作者签名:        日  期:       



学位论文原创性声明

本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。

作者签名: 日期:

学位论文版权使用授权书

本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权      大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。

涉密论文按学校规定处理。

作者签名: 日期:

导师签名: 日期:



1.设计(论文)的内容包括:

1)封面(按教务处制定的标准封面格式制作)

2)原创性声明

3)中文摘要(300字左右)、关键词

4)外文摘要、关键词

5)目次页(附件不统一编入)

6)论文主体部分:引言(或绪论)、正文、结论

7)参考文献

8)致谢

9)附录(对论文支持必要时)

2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。

3.附件包括:任务书、开题报告、外文译文、译文原文(复印件)。

4.文字、图表要求:

1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写

2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画

3)毕业论文须用A4单面打印,论文50页以上的双面打印

4)图表应绘制于无格子的页面上

5)软件工程类课题应有程序清单,并提供电子文档

5.装订顺序

1)设计(论文)

2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订

3)其它



毕业设计(论文)原创性声明和使用授权说明

原创性声明

本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。

名:       日  期:       

指导教师签名:        日  期:       

使用授权说明

本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。

作者签名:        日  期:       



学位论文原创性声明

本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。

作者签名: 日期:

学位论文版权使用授权书

本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权      大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。

涉密论文按学校规定处理。

作者签名: 日期:

导师签名: 日期:



指导教师评阅书

指导教师评价:

一、撰写(设计)过程

1、学生在论文(设计)过程中的治学态度、工作精神

及格 不及格

2、学生掌握专业知识、技能的扎实程度

及格 不及格

3、学生综合运用所学知识和专业技能分析和解决问题的能力

及格 不及格

4、研究方法的科学性;技术线路的可行性;设计方案的合理性

及格 不及格

5、完成毕业论文(设计)期间的出勤情况

及格 不及格

二、论文(设计)质量

1、论文(设计)的整体结构是否符合撰写规范?

及格 不及格

2、是否完成指定的论文(设计)任务(包括装订及附件)?

及格 不及格

三、论文(设计)水平

1、论文(设计)的理论意义或对解决实际问题的指导意义

及格 不及格

2、论文的观念是否有新意?设计是否有创意?

及格 不及格

3、论文(设计说明书)所体现的整体水平

及格 不及格

建议成绩: 及格 不及格

(在所选等级前的□内画“√”)

指导教师: (签名) 单位: (盖章)



评阅教师评阅书

评阅教师评价:

一、论文(设计)质量

1、论文(设计)的整体结构是否符合撰写规范?

及格 不及格

2、是否完成指定的论文(设计)任务(包括装订及附件)?

及格 不及格

二、论文(设计)水平

1、论文(设计)的理论意义或对解决实际问题的指导意义

及格 不及格

2、论文的观念是否有新意?设计是否有创意?

及格 不及格

3、论文(设计说明书)所体现的整体水平

及格 不及格

建议成绩: 及格 不及格

(在所选等级前的□内画“√”)

评阅教师: (签名) 单位: (盖章)



教研室(或答辩小组)及教学系意见

教研室(或答辩小组)评价:

一、答辩过程

1、毕业论文(设计)的基本要点和见解的叙述情况

及格 不及格

2、对答辩问题的反应、理解、表达情况

及格 不及格

3、学生答辩过程中的精神状态

及格 不及格

二、论文(设计)质量

1、论文(设计)的整体结构是否符合撰写规范?

及格 不及格

2、是否完成指定的论文(设计)任务(包括装订及附件)?

及格 不及格

三、论文(设计)水平

1、论文(设计)的理论意义或对解决实际问题的指导意义

及格 不及格

2、论文的观念是否有新意?设计是否有创意?

及格 不及格

3、论文(设计说明书)所体现的整体水平

及格 不及格

评定成绩: 及格 不及格

(在所选等级前的□内画“√”)

教研室主任(或答辩小组组长): (签名)

教学系意见:

系主任: (签名)



学位论文原创性声明

本人郑重声明:所呈交的学位论文,是本人在导师的指导下进行的研究工作所取得的成果。尽我所知,除文中已经特别注明引用的内容和致谢的地方外,本论文不包含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式注明并表示感谢。本人完全意识到本声明的法律结果由本人承担。

学位论文作者(本人签名):

学位论文出版授权书

人及导师完全同意《中国博士学位论文全文数据库出版章程》、《中国优秀硕士学位论文全文数据库出版章程》(以下简称“章程”),愿意将本人的学位论文提交“中国学术期刊(光盘版)电子杂志社”在《中国博士学位论文全文数据库》、《中国优秀硕士学位论文全文数据库》中全文发表和以电子、网络形式公开出版,并同意编入****《中国知识资源总库》,在《中国博硕士学位论文评价数据库》中使用和在互联网上传播,同意按“章程”规定享受相关权益。

论文密级:

公开 保密_____月至____月)(保密的学位论文在解密后应遵守此协议)

作者签名:_______ 导师签名:_______

_________________ _________________



本人郑重声明:所呈交的毕业设计(论文),是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议。尽我所知,除文中已经注明引用的内容外,本设计(论文)不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。

本声明的法律后果由本人承担。

 

作者签名:

二〇〇年二十

 

毕业设计(论文)使用授权声明

本人完全了解**学院关于收集、保存、使用毕业设计(论文)的规定。

本人愿意按照学校要求提交学位论文的印刷本和电子版,同意学校保存学位论文的印刷本和电子版,或采用影印、数字化或其它复制手段保存设计(论文);同意学校在不以营利为目的的前提下,建立目录检索与阅览服务系统,公布设计(论文)的部分或全部内容,允许他人依法合理使用。

(保密论文在解密后遵守此规定)

 

作者签名:

二〇〇年二十



时间飞逝,大学的学习生活很快就要过去,在这四年的学习生活中,收获了很多,而这些成绩的取得是和一直关心帮助我的人分不开的。

首先非常感谢学校开设这个课题,为本人日后从事计算机方面的工作提供了经验,奠定了基础。本次毕业设计大概持续了半年,现在终于到结尾了。本次毕业设计是对我大学四年学习下来最好的检验。经过这次毕业设计,我的能力有了很大的提高,比如操作能力、分析问题的能力、合作精神、严谨的工作作风等方方面面都有很大的进步。这期间凝聚了很多人的心血,在此我表示由衷的感谢。没有他们的帮助,我将无法顺利完成这次设计。

首先,我要特别感谢我的知道***老师对我的悉心指导,在我的论文书写及设计过程中给了我大量的帮助和指导,为我理清了设计思路和操作方法,并对我所做的课题提出了有效的改进方案。***老师渊博的知识、严谨的作风和诲人不倦的态度给我留下了深刻的印象。从他身上,我学到了许多能受益终生的东西。再次对周巍老师表示衷心的感谢。

其次,我要感谢大学四年中所有的任课老师和辅导员在学习期间对我的严格要求,感谢他们对我学习上和生活上的帮助,使我了解了许多专业知识和为人的道理,能够在今后的生活道路上有继续奋斗的力量。

另外,我还要感谢大学四年和我一起走过的同学朋友对我的关心与支持,与他们一起学习、生活,让我在大学期间生活的很充实,给我留下了很多难忘的回忆。

最后,我要感谢我的父母对我的关系和理解,如果没有他们在我的学习生涯中的无私奉献和默默支持,我将无法顺利完成今天的学业。

四年的大学生活就快走入尾声,我们的校园生活就要划上句号,心中是无尽的难舍与眷恋。从这里走出,对我的人生来说,将是踏上一个新的征程,要把所学的知识应用到实际工作中去。

回首四年,取得了些许成绩,生活中有快乐也有艰辛。感谢老师四年来对我孜孜不倦的教诲,对我成长的关心和爱护。

学友情深,情同兄妹。四年的风风雨雨,我们一同走过,充满着关爱,给我留下了值得珍藏的最美好的记忆。

在我的十几年求学历程里,离不开父母的鼓励和支持,是他们辛勤的劳作,无私的付出,为我创造良好的学习条件,我才能顺利完成完成学业,感激他们一直以来对我的抚养与培育。

最后,我要特别感谢我的导师***老师、和研究生助教***老师。是他们在我毕业的最后关头给了我们巨大的帮助与鼓励,给了我很多解决问题的思路,在此表示衷心的感激。老师们认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我收益匪浅。他无论在理论上还是在实践中,都给与我很大的帮助,使我得到不少的提高这对于我以后的工作和学习都有一种巨大的帮助,感谢他耐心的辅导。在论文的撰写过程中老师们给予我很大的帮助,帮助解决了不少的难点,使得论文能够及时完成,这里一并表示真诚的感谢。



这次论文的完成,不止是我自己的努力,同时也有老师的指导,同学的帮助,以及那些无私奉献的前辈,正所谓你知道的越多的时候你才发现你知道的越少,通过这次论文,我想我成长了很多,不只是磨练了我的知识厚度,也使我更加确定了我今后的目标:为今后的计算机事业奋斗。在此我要感谢我的指导老师——***老师,感谢您的指导,才让我有了今天这篇论文,您不仅是我的论文导师,也是我人生的导师,谢谢您!我还要感谢我的同学,四年的相处,虽然我未必记得住每分每秒,但是我记得每一个有你们的精彩瞬间,我相信通过大学的历练,我们都已经长大,变成一个有担当,有能力的新时代青年,感谢你们的陪伴,感谢有你们,这篇论文也有你们的功劳,我想毕业不是我们的相处的结束,它是我们更好相处的开头,祝福你们!我也要感谢父母,这是他们给我的,所有的一切;感谢母校,尽管您不以我为荣,但我一直会以我是一名农大人为荣。

通过这次毕业设计,我学习了很多新知识,也对很多以前的东西有了更深的记忆与理解。漫漫求学路,过程很快乐。我要感谢信息与管理科学学院的老师,我从他们那里学到了许多珍贵的知识和做人处事的道理,以及科学严谨的学术态度,令我受益良多。同时还要感谢学院给了我一个可以认真学习,天天向上的学习环境和机会。

即将结束*大学习生活,我感谢****大学提供了一次在**大接受教育的机会,感谢院校老师的无私教导。感谢各位老师审阅我的论文。

餐饮管理系统的设计与实现毕业论文

相关推荐