西南科技大学专业方向设计报告课程名称:通信专业方向设计设计名称:基于java的餐厅点菜系统姓名:**学号:******班级:通信0901指导教师:江虹起止日期:2012.11.20——2012.12.15西南科技大学信息工程学院制2方向设计任务书学生班级:通信0901学生姓名:**学号*********设计名称:基于java的餐厅点菜系统起止日期:2012.11.20——2012.12.15指导教师:江虹、罗智设计要求:1、利用java设计一个餐厅点菜系统2、有桌位号供顾客选择3、在菜单显示中,可以浏览菜品及对应的价格4、顾客可以随意选择自己喜欢的菜5、可以增删选菜记录6、生成账单7、在账单界面显示消费总额、所选菜品及菜品总数8、结账后清空数据库中的信息9、独立完成整个设计方向设计学生日志时间设计内容2012.11.21—2012.11.25熟悉餐厅点菜系统的原理2012.11.02—2012.11.30分析系统需要实现的功能,并针对每个功能做相应的准备2012.11.27—2012.12.01设计一个简单的界面,在此基础上增添基本功能2012.12.02—2012.12.10在实现功能的基础上进行调试、修改2012.12.10—2012.12.15增添功能,完善系统设计2012.12.15—2012.12.18在实现功能的基础上对系统的界面进行美化2012.12.16—2012.12.20整理文档,撰写报告2012.12.23答辩3方向设计评语表指导教师评语:成绩:指导教师:年月日4基于java的餐厅点菜系统摘要餐厅点菜系统是为了实现餐厅点菜自动化而设计的,不用人工服务员客人就可以自行完成点菜这一过程,从而避免了由于服务员的疏忽或者态度等问题为客人造成不必要的麻烦。利用点菜系统可以及时、准确、高效的为客人提供服务,减少了很多繁琐的过程。在开发餐厅点菜系统中,采用JAVA语言程序设计的基本知识,JAVA语言程序设计的基本方法和基本思想,运用数据库对表的基本操作,常用查询语句的使用以及ACCESS对表的数据的设计,利用图形化编程和JDBC技术来实现餐厅点菜系统的设计。通过系统的开发掌握软件的基本的开发流程,了解系统的功能,从而掌握软件开发整体过程,把知识运用到实际生产中。关键词点菜系统、高效、Access2003数据库、javaABSTRACTRestaurantordersystemisinordertorealizetheautomationandthedesignoftherestaurantorder,withoutartificialwaiterguestscanautomaticallycompletethisorderprocess,therebyavoidingthewaiter'scarelessnessorattitudestosuchissuesasgueststocauseunnecessarytrouble.Useordersystemcanoffertimely,accuratelyandeffectivelyservicefortheguestandreducealotofcumbersomeprocess.Inthedevelopmentoftherestaurantordersystem,usingthebasicknowledgeofJAVAprogramminglanguage,thebasicmethodandbasicidea,theuseofthebasicoperationonthedatabasetable,theuseofcommonqueriesandACCESStothedesignofthedatainthetable,theuseofgraphicalprogrammingandJDBCtechnology,toachievetherestaurantordersystemdesign.Throughthedevelopmentofthesystemtomasterthebasicsoftwaredevelopmentprocess,understandingthefunctionofthesystem,soastograspthewholeprocessofsoftwaredevelopment,usingtheknowledgetopracticalproduction一、设计目的和意义餐厅点菜系统所要完成的基本功能就是实现无服务生点菜,客人可以通过点菜系统自行点菜。在餐厅里有很多种菜谱,每一种菜有一个名称,对应一个唯一的编号和一个固定的单位价格。当有顾客来酒店时,顾客首先选择一个桌位号(也是唯一的),当顾客进入餐厅点菜系统后,就可以按照菜谱上有的菜来点菜。顾客在结账时应付的钱为:每种菜的单位价格相加为总的付款。编程语言为java,利用Access2003作为后台数据库,该系统主要面向中小型餐饮企业提供餐饮点菜功5能,系统后台数据库只有一张表,用于保存菜品名称、价格和桌位号。通过本次课程设计可以加深对java语言程序设计基本知识的理解,掌握java语言程序编写和调试的基本技能,了解有关程序设计、程序开发的思路方法,提高利用软件程序解决实际问题的能力。在设计过程中,可以培养我们分析问题、解决问题的能力,把理论与实际结合在一起,可以更好的掌握好一门语言,同时因为需要用到数据库,所以可以通过此次课程设计自学一下数据库,以及利用JDBC访问数据库。二、设计原理本设计主要用到java语言程序设计、SQL语言以及Access数据库。这是一个JavaApplication,没有浏览器提供的现成的图形界面可以直接使用,所以需要首先创建自己的图形界面。首先创建一个对话框,在其内容面板内添加两个组件按钮,当进入系统后,即可进入主菜单界面,此部分主要是要实现对按钮的监听事件,即使用addActionListener(this)事件监听器,事件处理接口的方法为actionPerformed(ActionEvente)。在主界面,首先是完成窗体整体布局,在java的GUI界面设计中,布局控制是通过为容器设置布局管理器来实现的。布局管理器负责确定组件在容器中的位置和大小。当容器需要定位组件和确定组件大小时,就会给布局管理器对象法消息,让它完成该项工作。Java.awt包中定义了5种布局管理器类,每个布局管理器类对应一种布局策略。在此系统中,用到最多的布局管理器类有BorderLayout(组件按北、南、东、西、中几个位置排列)和GridLayout(以行和列的网络形式安排组件)。然后因为要显示桌位号和菜品,利用单选按钮组来实现顾客的选菜功能,创建一个单选按钮组,提供选中/不选中两种状态,ButtonGroup是由一组互斥的按钮组成,同一时刻只能有一个按钮被选中,将桌位号的按钮组加入到此按钮组中。菜品的显示也以单选按钮的方式显示在窗体界面中,这样顾客就可以选择自己喜欢的菜品,然后点击确定后就可将数据存入数据库中。在java的编程中,需要用到Access数据库,启动进入Access后,创建一个数据库,然后定义表的列名与列的数据类型,分别用于存放桌位号、菜品名6称及菜品价格。为了实现在java程序中访问Access数据库,需要利用windows提供的工具创建指向数据库的数据源,这样在程序中通过数据源名即可访问Access中的数据库。在对数据进行操作之前,首先要建立程序与一个具体数据库的连接,而在连接数据库以前,必须注册该数据库的驱动程序。完成此项工作的是DriverManager类,它被称为驱动程序管理器,其基本功能是管理JDBC驱动程序。Driver是java定义的一个接口,每一个驱动程序类都必须实现这个接口。装载数据库驱动程序可以采用Class类的forName()方法,当对数据库的操作告一段落时,可通过调用Connection的close()方法结束会话,释放连接的数据库及JDBC资源。JDBC是一种用于访问数据库和执行SQL语句的java编程接口,由一组用java语言编写的类和接口组成。JDBC是用于java应用程序连接数据库的标准方法。JDBC对java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型。JDBC使用已有的SQL标准并支持其他数据库连接标准,JDBC实现了所有这些面向标准的、简单且高性能的接口。利用JDBC访问数据库大致包含以下三个步骤:①建立与数据库的连接②通过发送SQL语句对数据库进行读写③处理语句的执行结果,特别是查询语句的返回数据三、详细设计步骤本系统采用基本的JAVA语言编写,由于JAVA语言不同与C++语言,它具有其语言的特殊性,包含很多类,基本是每一种功能为一个类。开始有主框架类,通过按钮监听事件调用别的类,完成功能的实现。其基本的流程为:顾客来酒店选择桌号——按照菜谱上的菜的种类选择所需要的菜——然后按下确认键确定要选择的菜品——统计所选择菜的价格——结帐付款为所有菜的编号所相对应的价格相加并验证自己付款是否有误。系统主7要流程图如图1所示:顾客进入餐厅运行点菜系统进入系统退出系统选择桌号选择菜品取消否确定、结账输入桌号确定查看消费退出系统是图1总体结构框图根据功能需求,本系统包含有5个类,利用ACCESS建立一个表就可以了。通过JAVA与该数据表的连接关系对该表的数据进行输入,然后通过顾客对数据的随机选择来调用数据表的数据,实现不同的功能。系统的主要功能模块首先进入系统初始界面,此界面由一个对话框构成,由publicclassorderimplementsActionListener{}完成这个功能。通过ContainercontentPane=Dialog.getContentPane()获得其内容面板,然后新建一个中间容器,在容器内添加两个按钮,分别表示进入系统和退出系统,点击按钮时,就可触发相应的ActionEvent事件,通过getActionCommand()获得按钮标签,当点击进入系统时关闭对话框,进入点菜系统主界面,否则即可退出系统。当点击进入系统时,系统就进入点菜界面,用户可以在此窗口中选择自己喜欢的桌号和喜欢的菜品,要实现这个功能,需要用到的框架类为:publicclassMenuimplementsActionListener,ItemListener{}这部分的功能实现,首先是定义两个数组,分别用于存放餐桌号和菜品名单,8创建两个单选按钮组,并指明其文本说明标签,即用于显示桌号和菜品名单及价格,然后将单选按钮组分别极加入到两个中间容器中,这样就可以看到桌位号和菜品名称及价格。然后设置三个按钮,分别是确定、结账和取消按钮。当顾客点击确定后,就将顾客所选择的桌号和菜品名单及价格存入数据库中,当顾客点击结账后,就可进入结账界面,当顾客点击取消按钮,就可将当前所选择的菜品删除掉,然后可以再重新选择顾客喜欢的菜品。其主要流程图如图2所示:创建一个Jframe窗体布局,设置界面,添加事件监听器按钮事件监听确定设置一个布尔型的标志数组remark[],用于标置哪个单选按钮被点了建立与数据库的连接,当remark[i]true时,向数据库写入语句,分别标示其桌位号、菜品名称及价格取消保存数据并结账清空数据进入结账界面关闭数据库,返回数据图2点菜功能流程图这部分主要是要实现将顾客所选择的桌号和菜品等数据存进数据库,调用DriverManaget类的静态方法getConnection建立一个数据库连接,并定义一个remark标志,当顾客选择了哪号桌或者哪个菜时,就可以向数据库中写入语句,这样,当用户点击确定后就保存数据。这里主要是通过执行SQL语句访问数据库,然后执行查询返回的结果。当点击一个单选按钮后,返回一个remark[i],当建立与数据库的连接后,执行SQL语句的写语句,向数据库中写入语句,当点击确定后,就保存数据。当点击取消按钮时,执行SQL语句的删除语句,这样就可以将所点的菜清空,然后重新选择自己喜欢的菜