Java课程设计报告_第1页
Java课程设计报告_第2页
Java课程设计报告_第3页
Java课程设计报告_第4页
Java课程设计报告_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、武汉长江工商学院电子信息与计算机技术系项目名称: 酒店管理系统 学号姓名: 陆炳湛 胡伟涛 沈彬 谢威 班级: 08801 指导教师: 陈涛 徐杨 2011年6月25日目录前言11 开发工具及技术介绍11.1 Eclipse11.2 JDBC21.3 J2SE21.4 SQL Server 2005 Express Edition22总体设计22.1 功能模块的划分22.2 系统E-R图32.3 系统流程图42.4 数据库设计53 详细设计73.1系统名称73.2 系统功能分析73.3 程序结构功能分析74 系统功能模块实现84.1 系统主界面84.2 前台服务模块94.3 后台管理模块94.

2、4 菜品管理模块104.5 菜系管理模块104.6 台号管理模块115 设计小结11参考文献12附录12前言Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。 当1995年SUN推出Java语言之后,全世界的目光都被这个神奇的语言所吸引。那么Java到底有何神奇之处呢? Java语言其实最早诞生于1991年,起初被称为OAK语言,是SUN公司为一些消费性电子产品而设计的一个通用环境。他们最初的目的只是为了开发一种独立于平台的软件技术,而且在网络出现之前,OAK可以说是默默无闻,甚至差点夭折。但是,网络的出现改变了OAK的命运。

3、在Java出现以前,Internet上的信息内容都是一些乏味死板的HTML文档。这对于那些迷恋于WEB浏览的人们来说简直不可容忍。他们迫切希望能在WEB中看到一些交互式的内容,开发人员也极希望能够在WEB上创建一类无需考虑软硬件平台就可以执行的应用程序,当然这些程序还要有极大的安全保障。对于用户的这种要求,传统的编程语言显得无能为力。SUN的工程师敏锐地察觉到了这一点,从1994年起,他们开始将OAK技术应用于WEB上,并且开发出了HotJava的第一个版本。当SUN公司1995年正式以Java这个名字推出的时候,几乎所有的WEB开发人员都心生感叹:噢,这正是我想要的!于是Java成了一颗耀眼

4、的明星,丑小鸭一下子变成了白天鹅。Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。特别是Java企业应用编程接口(Java Enterprise APIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类。我们所开发的酒店管理系统正是基于这一神奇语言。1 开发工具及技术介绍1.1 Eclipse Eclipse是一个开放源代码的软件开发项目,专注于为

5、高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成Eclipse Platform、JDT、CDT和PDE。JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,Eclipse Platform则是一个开放的可扩展IDE,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。Eclipse Platform允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。1.2 JDBCJDBC(Jav

6、a Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。Java数据库连接体系结构是用于Java应用程序连接数据库的标准方法。JDBC对Java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型。作为API,JDBC为程序开发提供标准的接口,并为数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。JDBC使用已有的SQL标准并支持与其它数据库连

7、接标准,如ODBC之间的桥接。JDBC实现了所有这些面向标准的目标并且具有简单、严格类型定义且高性能实现的接口。 1.3 J2SE J2SE是Java技术的基础,很多基础都是先从介绍它开始,它和J2EE的区别就是JDK不同,J2EE比J2SE的JDK要大一些,多一些类包,但那些是在J2SE中用不到的,J2SE不光是基础,也是Java技术的一个应用方向,就是利用Swing开发桌面应用程序,但在Windows平台上,M$的地位是无法撼动的,再加上Swing开发起来不是很容易,所以在J2SE领域上,Java一直处于劣势,发展很慢。J2SE中的元数据特性提供这样的能力,即向 Java 类、接口、方法和

8、字段关联附加的数据。这些附加的数据或者注释,可以被 javac 编译器或其他工具读取,并且根据配置不同,可以被保存在类文件中,也可以在运行时使用 Java 反射 API 被发现。1.4 SQL Server 2005 Express EditionSQL Server Express 是一个免费、易用且便于管理的数据库。SQL Server Express 与 Microsoft Visual Studio 2005 集成在一起,可以轻松开发功能丰富、存储安全、可快速部署的数据驱动应用程序。SQL Server Express 是免费的,可以再分发(受制于协议),还可以起到客户端数据库以及基本

9、服务器数据库的作用。SQL Server Express 是低端 ISV、低端服务器用户、创建 Web 应用程序的非专业开发人员以及创建客户端应用程序的编程爱好者的理想选择。2总体设计2.1 功能模块的划分 根据需求分析的结果,本系统主要划分为以下七个子模块:登录模块、前台服务模块、后台管理模块、销售统计管理模块 、系统安全模块、人员管理模块、初始化系统模块。其对应的总体模块划分图如下图2-1所示:酒店管理系统登录前台服务后台管理销售统计系统安全人员管理初始化图2-1 系统总体框图2.2 系统E-R图系统总体E-R图如下图2-2所示:管理员菜单员工桌子查看管理管理属于管理销售清单111m111

10、mmn图2-2 系统E-R图2.3 系统流程图 酒店管理系统流程图如下图2-3所示:开始用户登录界面查找数据清单是否存在记录进入系统界面管理员管理界面添加管理员分析用户权限进入各功能模块图2-3 系统流程图2.4 数据库设计数据库设计主要是进行数据库的逻辑设计,即将数据按一定的分类、分组系统和逻辑层次组织起来,是面向用户的。数据库设计时需要综合企业各个部门的存档数据和数据需求,分析各个数据之间的关系,按照数据库提供的功能和描述工具,设计出规模适当、正确反映数据关系、数据冗余少、存取效率高、能满足多种查询要求的数据模型。系统中的数据表如下:列名数据类型长度是否允许为空NumSeatingStat

11、evarcharintchar644不允许空(主键)不允许空不允许空 表2-1 desk表结构 表2-1是酒店桌台信息表,其中包含了桌台号、座位数等信息。 列名数据类型长度是否允许为空IdRecord_numPasswordPurview_systemPurview_sellPurview_personnelPurview_initintcharvarcharcharcharcharchar49202222不允许空(主键)不允许空不允许空允许空允许空允许空允许空表2-2 manager表结构表2-2是管理员登录表,其中包含了管理员ID,登录帐号、密码,管理员权限等。修改此表数据能对管理员进行相

12、应管理,如修改密码、权限,删除、增加管理员等。列名数据类型长度是否允许为空NumSort_idNameCodeUnitUnit_priceStatecharintvarcharvarcharvarcharintchar942010444允许空(主键)允许空允许空允许空允许空允许空允许空 表2-3 menu表结构表2-3是酒店菜单信息表,其中包含了菜的编号、菜品、菜名、助记码、单位、单价。管理员可以通过修改此表信息来即时更新菜肴信息。列名数据类型长度是否允许为空NumDesk_numConsume_dateExpenditureRecord_numcharvarchardatetimeintch

13、ar116849允许空(主键)允许空允许空允许空允许空表2-4 order_form表结构表2-4为点菜信息表,其中包含了点菜的桌台号、开台时间、所点菜肴及其分数等。管理员可以通过前台操作将这些信息储存在该表里,以备结账之用。列名数据类型长度是否允许为空IdOrder_form_numMenu_numAmountTotalintcharcharintint411944允许空(主键)允许空允许空允许空允许空表2-5 order_item表结构表2-5是顾客结账表,其中包含了顾客的桌台号以及消费情况。管理员可以直接利用此表数据进行前台结账。列名数据类型长度是否允许为空NumNameSexBirth

14、dayId_cardAddressStatecharvarcharchardatetimevarcharvarcharchar9828201004允许空(主键)允许空允许空允许空允许空允许空允许空表2-6 record表结构表2-6用于储存客户信息资料,便于管理。管理员可以通过操作修改此表数据实现对顾客资料的修改、删除、添加。列名数据类型长度是否允许为空IdNameStateintvarcharchar4204允许空(主键)允许空允许空 表2-7 sort表结构表2-7是菜系表,其中包含了菜系编号和菜系名,方便顾客点菜。3 详细设计3.1系统名称 酒店管理系统酒店管理是一个比较繁琐的管理工作,

15、而且非常容易出错,难以管理,但如果开发出一个关于酒店管理的计算机管理系统,那么相对来说人力、物力资源就可以减少。本系统通过用电脑联网来促使各部门一体化,提高效率,为酒店减少人力支出,提高酒店的运营效益,从而使得管理者能够准确,有效的管理酒店。3.2 系统功能分析 通过系统需求分析可知该系统所需求的主要功能如下: (1) 前台服务:该模块主要包括开台点菜、维护菜品、签单、结账等功能,其中维护菜品功能包括添加和取消菜品,能够取消菜品的前提条件是尚未签单,即处于开单状态,结账时则要求所有商品都要签单,否则不允许结账。 (2) 后台管理:该模块主要台号管理、菜系管理和菜品管理功能,其中菜系用来对菜品进

16、行分类。 (3) 系统安全:该模块主要包括交接班、锁定系统和修改密码功能,其中交接班功能在操作员换岗时使用,锁定系统在操作员临时离开时使用。 (4) 人员管理:该模块主要包括档案管理、管理员管理和操作权限管理功能,其中管理员管理功能用来管理系统的操作员,权限管理功能用来管理系统操作员具有的操作权限。(5) 初始化系统:该功能用来对系统进行初始化,初始化后系统数据将全部被删除。3.3 程序结构功能分析 为了完成这个系统,在eclipse 下先建立一个工程,在工程下建立各个包,逐渐完成各个功能。如图3-1所示: 图3-1首先建立的是hotel工程,在工程下有buttonlink包,创建的是主界面所

17、有button控件的事件所要执行的类,connect包下建立的是连接SQL 2005的代码。任何需要连接数据库的程序,只要把这个包导入,就可以执行连接,gentime包是获取时间的包,用到了线程的技术,获取的时间是和系统时间保持一致的,jslitpanelpackage 包是继承分割面板类的,一个是按X抽分割继承,另一个是按Y抽分割继承的,login包是包含登陆和主界面的两个类,首先执行的是登陆界面。登陆成功后,跳转到主界面。最后一个是存放sql的驱动包,java要连接数据库,必须有驱动程序驱动。以上就是系统的功能结构分析。4 系统功能模块实现4.1 系统主界面本系统主要完成对酒店餐饮的管理,

18、包括前台点菜,数据统计,菜品管理 ,员工管理,系统维护等功能并可以不断扩充其功能。系统可以完成对各类信息的浏览、查询、添加、删除、修改。系统的核心是信息输入、存储记录二者之间的联系,每一个表的修改都将联动的影响其它的表,当完成信息输入时系统会自动地完成对数据的修改。查询功能也是系统的核心之一,在系统中即有单条件查询和多条件查询,也有精确查询和模糊查询,其目的都是为了方便用户使用。系统有完整的用户添加、删除和密码修改功能。主界面如图4-1所示:图4-1 主界面4.2 前台服务模块该模块主要包括开台点菜、维护菜品、签单、结账等功能。维护菜品功能包括添加和取消菜品,能够取消菜品的前提条件是尚未签单,

19、即处于开单状态,结账时则要求所有商品都要签单,否则不允许结账,并且结帐时如果交付金额大于消费金额,系统会显示应找回金额。如图4-2所示:图4-2 前台服务4.3 后台管理模块该模块是管理员用来修改、添加、删除一些信息的。管理员通过该功能可以对数据库中的数据进行更改,比如桌子的编号、菜的种类、菜系的划分,以及人员的信息。如图4-3所示:图4-3后台管理4.4 菜品管理模块该模块是用来主要用来及时更新酒店菜品信息,管理员通过操作输入相应数据实现菜品的添加或者选中其中一列单击删除来删除相应的菜品,如图4-4所示:图4-4 菜品管理4.5 菜系管理模块同菜品管理模块一样,管理员可以通过该模块输入相应数

20、据来实现菜系的添加或者选中想要删除的菜系单击删除按钮来进行删除,如图4-5所示:图4-5 菜系管理4.6 台号管理模块该模块主要是实现对酒店桌台的管理。在本模块中的文本区域输入相应数据来添加台号和该台号的座位数,也可以选中想要删除的台号单击删除按钮进行桌台信息的删除,如图4-6所示:图4-6 台号管理5 设计小结 针对这次酒店管理系统的设计,我通过参考其它软件工程、数据库和Java方面的资料,首先按照软件工程设计的基本步骤进行了可行性分析和需求分析。其中可行性分析包括了技术可行性、市场可行性和经济可行性。需求分析则确定了该软件开发的目标,要实现的功能和应用范围和软件设计的大致方向。接下来该是交

21、互设计了。首先是外部设计,其中最重要的就是界面设计。通常人们通过界面与软件传递彼此的信息,也意味着只有界面才能回答用户的需求,一个好的界面无疑能让用户更快速、更准确的掌握软件的使用方法。做完外部设计就要进行内部详细设计了,基本任务包括:算法设计、数据结构设计、数据库物理设计。详细设计设计的模块质量如何是软件工程的研究课题之一。虽然可以用软件概要设计阶段的基本远离衡量模块的质量,但这种衡量只能是定性的,人们希望能进一步定量的度量软件的质量。通过编码实现了前台和后台的管理、人员的管理以及销售统计和系统安全的功能,管理员可以完成对各类信息的浏览、查询、添加、删除、修改。为了找出软件中潜在的各种错误和

22、缺陷,我们还需对软件进行测试。在各模块输入正确的信息看是否能达到预期效果,同时也要设计不合理的输入条件,程序应该拒绝接受,并给出相应的提示。 在这次课程设计中,我遇到了一些问题:如何实现多个餐桌同时结帐。对于这个问题最好的解决方法就是使用同时分层管理,多个餐桌可以在不同的层次实现同时结帐管理。当然,要完成一个完美的系统,只靠课本知识是不够的,参考一些课外资料是必须准备的,而且自己做的系统必须是符合实际情况的,从课外资料上我们可以更全面的了解一个系统需要实现的功能,从而做出相应的实现方法使系统更完善。在学习其它专业课的时候也要注意理论联系实际,将课本上的知识应用到日常的操作中,真正做到学以致用。

23、只有这样,才能做到目的明确,才能有足够的学习动力。 通过这次课程设计,跟同组成员一起真正达到了学与用的结合,在学习java编程的同事也增强了对软件工程学方面应用的理解,为自己今后研究软件工程积累了不少经验。同时,从设计过程中看出了自己的知识面的欠缺,需要学习的还有很多很多。参考文献1邵丽萍,邵光亚.Java语言程序设计(第3版) M. 北京:清华大学出版社,2004 2王国辉等.java数据库系统开发案例精选(第1版) M. 北京:人民邮电出版社,20073张海藩.软件工程导论(第5版) M. 北京:清华大学出版社,20084陈嵩等.新手学Java(第1版) M.北京:希望电子出版社,2010

24、5曲培新.Java项目开发案例精粹(第1版) M.北京:电子工业出版社,2010附录连接数据库程序代码如下:import java.sql.*;import java.text.SimpleDateFormat; import java.util.Date; import javax.swing.*; public class gettimes extends Thread JLabel label; public gettimes(JLabel label) this.label=label; public void run() try while(true) SimpleDateForma

25、t sdf = new SimpleDateFormat( 今天是: yyyy-MM-dd hh:mm:ss EEE ); label.setText(sdf.format(new Date(); sleep(1000); catch (Exception ex) ex.printStackTrace(); 菜品管理模块主要程序代码如下:package Bottonlink;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.table.*;import java.util.*;im

26、port java.sql.*;public class menu extends JFrame implements ActionListener private JFrame frm;private JPanel panel;private JButton b1;private JButton b2;private JTextField numTextField;private JTextField nameTextField;private JTextField unitTextField;private JTextField codeTextField;private JTextFie

27、ld sortTextField;private JTextField unitPriceTextField;private JTable table;private DefaultTableModel model;private JDBC con;private Connection comm;/*public static void main(String args) new menu();*/public menu() frm = new JFrame(菜品管理);panel = new JPanel();panel.setLayout(new BorderLayout();frm.se

28、tSize(600, 550);frm.setResizable(false);/ 设置窗口大小不可改变final JPanel operatePanel = new JPanel();operatePanel.setLayout(new FlowLayout();operatePanel.setLayout(new GridBagLayout();panel.add(operatePanel, BorderLayout.NORTH);final JLabel numLabel = new JLabel();numLabel.setText(编 号:);final GridBagConstra

29、ints gridBagConstraints_6 = new GridBagConstraints();gridBagConstraints_6.insets = new Insets(15, 0, 0, 0);gridBagConstraints_6.gridx = 0;gridBagConstraints_6.gridy = 0;operatePanel.add(numLabel);numTextField = new JTextField();numTextField.setColumns(5);final GridBagConstraints gridBagConstraints_1

30、5 = new GridBagConstraints();gridBagConstraints_15.insets = new Insets(15, 0, 0, 0);gridBagConstraints_15.gridx = 1;gridBagConstraints_15.gridy = 0;operatePanel.add(numTextField);final JLabel nameLabel = new JLabel();final GridBagConstraints gridBagConstraints = new GridBagConstraints();gridBagConst

31、raints.insets = new Insets(15, 15, 0, 0);gridBagConstraints.gridx = 2;gridBagConstraints.gridy = 0;operatePanel.add(nameLabel);nameLabel.setText(名称:);nameTextField = new JTextField();final GridBagConstraints gridBagConstraints_1 = new GridBagConstraints();gridBagConstraints_1.insets = new Insets(15,

32、 0, 0, 0);gridBagConstraints_1.gridx = 3;gridBagConstraints_1.gridy = 0;operatePanel.add(nameTextField);nameTextField.setColumns(5);final JLabel unitLabel = new JLabel();unitLabel.setText(助记符:);final GridBagConstraints gridBagConstraints_8 = new GridBagConstraints();gridBagConstraints_8.insets = new

33、 Insets(10, 15, 0, 0);gridBagConstraints_8.gridx = 4;gridBagConstraints_8.gridy = 0;operatePanel.add(unitLabel);unitTextField = new JTextField();unitTextField.setColumns(5);final GridBagConstraints gridBagConstraints_11 = new GridBagConstraints();gridBagConstraints_11.gridwidth = 2;gridBagConstraint

34、s_11.insets = new Insets(10, 0, 0, 0);gridBagConstraints_11.gridx = 5;gridBagConstraints_11.gridy = 0;operatePanel.add(unitTextField);final JLabel codeLabel = new JLabel();final GridBagConstraints gridBagConstraints_2 = new GridBagConstraints();gridBagConstraints_2.insets = new Insets(15, 0, 0, 0);g

35、ridBagConstraints_2.gridx = 0;gridBagConstraints_2.gridy = 1;operatePanel.add(codeLabel, gridBagConstraints_2);codeLabel.setText(菜系:);sortTextField = new JTextField(5);final GridBagConstraints gridBagConstraints_7 = new GridBagConstraints();gridBagConstraints_7.anchor = GridBagConstraints.WEST;gridB

36、agConstraints_7.insets = new Insets(10, 0, 0, 0);gridBagConstraints_7.gridx = 1;gridBagConstraints_7.gridy = 1;operatePanel.add(sortTextField, gridBagConstraints_7);final JLabel sortLabel = new JLabel();sortLabel.setText(单位:);final GridBagConstraints gridBagConstraints_4 = new GridBagConstraints();g

37、ridBagConstraints_4.insets = new Insets(10, 15, 0, 0);gridBagConstraints_4.gridx = 2;gridBagConstraints_4.gridy = 1;operatePanel.add(sortLabel, gridBagConstraints_4);codeTextField = new JTextField();codeTextField.setColumns(5);final GridBagConstraints gridBagConstraints_3 = new GridBagConstraints();

38、gridBagConstraints_3.insets = new Insets(15, 0, 0, 0);gridBagConstraints_3.gridx = 3;gridBagConstraints_3.gridy = 1;operatePanel.add(codeTextField, gridBagConstraints_3);final JLabel unitPriceLabel = new JLabel();unitPriceLabel.setText(单价:);final GridBagConstraints gridBagConstraints_9 = new GridBag

39、Constraints();gridBagConstraints_9.insets = new Insets(10, 15, 0, 0);gridBagConstraints_9.gridx = 4;gridBagConstraints_9.gridy = 1;operatePanel.add(unitPriceLabel, gridBagConstraints_9);unitPriceTextField = new JTextField();unitPriceTextField.setColumns(5);final GridBagConstraints gridBagConstraints

40、_12 = new GridBagConstraints();gridBagConstraints_12.insets = new Insets(10, 0, 0, 0);gridBagConstraints_12.gridx = 5;gridBagConstraints_12.gridy = 1;operatePanel.add(unitPriceTextField, gridBagConstraints_12);final JLabel label = new JLabel();label.setText(元);final GridBagConstraints gridBagConstra

41、ints_5 = new GridBagConstraints();gridBagConstraints_5.insets = new Insets(10, 0, 0, 0);gridBagConstraints_5.gridx = 6;gridBagConstraints_5.gridy = 1;operatePanel.add(label, gridBagConstraints_5);frm.add(panel);b1 = new JButton(添加);b1.addActionListener(this);b2 = new JButton(删除);b2.addActionListener

42、(this);final JPanel p = new JPanel();p.add(b1);p.add(b2);panel.add(p, BorderLayout.CENTER);JScrollPane pa = new JScrollPane();frm.getContentPane().add(pa);String headNameStr1 = num, sort_id, name, code, unit,unit_price ;model = new DefaultTableModel(headNameStr1, 0);table = new JTable(model);table.s

43、etBackground(Color.white);pa.setViewportView(table);panel.add(pa, BorderLayout.SOUTH);frm.add(panel);frm.setVisible(true);con = new JDBC();try comm = con.getConnection();Statement st = comm.createStatement();ResultSet rs = st.executeQuery(select * from tb_menu);ResultSetMetaData meta = rs.getMetaData();while (rs.next() Vector vectmp = new Vector();for (int i = 1; i = meta.getColumnCount(); i+) vectmp.add(rs.getString(i);model.addRow(vectmp); c

温馨提示

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

评论

0/150

提交评论