JAVA项目开发案例全程实录 第4章

所需积分/C币:49 2012-09-08 09:24:00 20.76MB PDF
收藏 收藏 1
举报

《JAVA项目开发案例全程实录》是本人购买来的电子书,特在此奉献。此后还会有第五章、第六章等章节哦!
第4章酒店管理系统( Swing+ SQL Server2005实现) 区操作简单方便、界面简洁大方 区方便、快捷的开台点菜功能。 区智能化定位菜品的功能。 区快速查看开台点菜信息的功能。 回自动结账功能 区按开台和商品实现的日结账功能。 区按日消费额汇总统计实现的月结账功能。 区按日营业额实现的年结账功能。 回系统运行稳定、安全可靠 4.3.2系统功能结构 酒店管理系统的功能结构如图4.1所示。 酒店管理系统 前台服务 后台服务 结账报表 系统安全 开//能 自台菜菜 日月年 结结结 修用 台 动 系品 改户 点取账 结 管管管 密管 菜\菜 理|理理 报报报 表表表 码理 品 图41酒店管理系统功能结构 4.3.3系统预览 酒店管理系统由多个程序界面组成,下面仅列出几个典型界面,其他界面效果参见配书光盘中的 源程序。 酒店管理系统的主窗体效果如图42所示,窗体的中间部分用来显示当前的开台及点菜信息,下方 则用来操作该系统,例如开台点菜,自动结账,台号、菜系和菜品的维护,营业额报表等。 单击图4.2中右下方的“台号管理”按钮,将打开如图43所示的“台号管理”对话框,该对话框 用来维护台号信息,包括台号及座位数。 单击图42中右下方的“菜品管理”按钮,将打开如图44所示的“菜品管理”对话框,该对话 框用来维护菜品信息,包括名称、助记码、菜系、单位和单价,其中助记码用来在点菜时快速获取菜 品信息(建议设置为菜品名称的首字母,例如将菜品“雪蔓火焰山”的助记码设置为“ emmys”)。 147 PDF文件使用" pdfFactory Pro"试用版本创建ww, fineprint,cn Java项目开发案例全程实录(第2版) T酒店理系统 开隽, :(m[[C 费金额 42800无 年位26日 收金, 000元 当操作路 找金:00元 图42酒店管理系统主窗体效果(光盘…… TipwizardFrame. java) 台号管理 菜品管理 号:8006 唾位数:8 添加门[B牌 号:0712209名称:清蒸鱼 单位:盘 座位数 动记码:qay 系:纯炒类 单价:67 6 编号 名称 助记码菜系单位单价 101201红驿子头|hst炒类 :68 0122402虾兵蝠将xhx)纯抄 皇盘盘 128 3071240雪英火焰山 原英 18 a12404水童肉片 凡抄类 02s纯生 水1 0712408可乐 k水页 70z水饺 主斤16 「遷出 遭出 图43台号管理(光盘… manage\DeskNum Dialog java)图44菜品管理(光盘…Ⅷ manage Dialog java) 单击图4.2中右下方的“日结账”按钮,将打开如图4.5所示的“日结账”对话框,该对话框用来 统计指定日期的销售情况,包括日营业额总计和各个商品的日营业额。 L日结账 200年12月24日「确定 编号 台号开台时间消费金额红烧狮子头虾兵将雪蔓火焰山|水煮肉片纯生 002400600112563 Bs 2007122400280012:56:33 200712240038002 12:56:33 28 2007122400400012:56:3 20071224005600613:09:46246 2007122400800813:09:46300 2 岛计 1397 图4.5日结账窗体效果(光盘… \check out Day Dialog java) 说眀:由于路径太长,因此省略了部分路径,省略的路径是:“TMO4 Drinkery Managesrc\com mwq frame 148 PDF文件使用" pdfFactory Pro"试用版本创建ww, fineprint,cn 第4章酒店管理系统( Swing+ SQL Server2005实现) 4.34业务流程图 酒店管理系统的业务流程如图46所示。 退出 前台服务台管理菌结账报表[系统安全 开台点菜 添加菜品/≈维维 结结结 修用 护护1 自报报报密管 匚结账了 叫表表表 图46酒店管理系统的业务流程图 435文件夹结构设计 每个项目都会有相应的文件夹组织结构。当项目中的窗体过多时,为了便于查找和使用,可以将 窗体进行分类,放入不同的文件夹中,这样既便于前期开发,又便于后期维护。酒店管理系统文件夹 组织结构如图4.7所示。 s Drinkeryiflanage -1 re 出m.4 出com,qda 持久化层包 t.D BaseDao jav 用来封装基本的操作数据库的方法 t团Da.jya 用来封装具体操作数据库的方法,该类继承了Ba4D类 用来加载数据库死动程序,并且提供创建和关闭数宪库连接的方法 由com.m4fr 图层包 +D Andrae.java 用来实现置录窗口 D Tiptizadramejava 用来实现系统主窗体,提供系统的操作向导 =iB com. mwq frame check_out 结账对语框包 +① dIalog java 日结账报表对话框 D MonthDidog java 月结账报表对话框 .D YearDidlog j 年结账报表对话框 出c0.mw红轴t.4 后台管理包 t n DeskdunDi alot java 台号管理对话框 tD慧 lenudi slot jav 菜品管理对话框 山 SortDialog java- 菜系管理对话框 出e0 m.wa frar 系统安全包 UpdatePasswor山igj—修改密码对话框 +D VserllanagerDidlok 用户管理对话框 +ts com. mvg. img 系统界面图片包 出com. q- nwine 自定义组件类包 团 MButton jav 自定义按钮组件 I MAble.java 月定义表格组伴 日由c,mqte1 工具类包 团oday.java 获得当天日期信息 D Validatejava 正表达式 图47酒店管理系统文件夹结构 149 PDF文件使用" pdfFactory Pro"试用版本创建ww, fineprint,cn Java项目开发案例全程实录(第2版) 44数据库设计 在开发应用程序时,对数据库的操作是必不可少的,而一个数据库的设计优秀与否,将直接影响 到软件的开发进度和性能,所以对数据库的设计就显得尤为重要。数据库的设计要根据程序的需求及 其功能而定,如果在开发软件之前不能很好地设计数据库,在开发过程中将反复修改数据库,必将严 重影响开发进度。 441数据库分析 酒店管理系统的需求包括开台点菜功能、智能化获取菜品功能、自动结账功能、营业额报表功能 等。在这些功能中主要涉及到的数据表包括台号表、菜品表、消费单表;为了使系统更完善,还需要 为菜品分类,即需要用到菜系表;为了实现菜品的日销售情况统计,还要建立一个消费项目表,用来 记录消费单消费的菜品。 4.4.2数据库概念设计 数据库设计是系统设计过程中的重要组成部分,它是通过管理系统的整体需求而制定的,数据库 设计的好坏直接影响到系统的后期开发。下面对本系统中具有代表性的数据库设计进行详细说明。 餐台和菜系在本系统中是最简单的实体,在本系统中用来描述餐台信息的只有台号和座位数,而 描述菜系的主要是名称。餐台实体ER图如图48所示,菜系实体ER图如图49所示。 餐台 菜系 台号 座位数 序号 名称 图48餐台实体ER图 图49菜系实体ER图 在描述菜品实体时,加入了助记码,目的是为了实现智能化获取菜品功能,通过这一功能系统操 作员可以快速地获取顾客所点的菜品信息。菜品实体E-R图如图4.10所示。 菜品 编号)(名称)(所属菜系)(助记吗)(单位)(单价) 图410菜品实体ER图 消费单用来记录每次消费的相关信息,例如消费时使用的餐台、消费时间、消费金额等。消费单 实体ER图如图411所示。 PDF文件使用" pdfFactory Pro"试用版本创建ww, fineprint,cn 第4章酒店管理系统( Swing+ SQL Server2005实现) 消费单 编号)(消费餐台(消费时间)(消费金额)(操作用户 图411消费单实体ER图 消费项目用来记录每个消费单消费的菜品,记录的主要信息有所属消费单、消费菜品的名称、消 费数量、消费额。消费项目实体ER图如图412所示。 消费项目 所属消费单)(消费菜品)(消费数量)(消费额 图412消费项目实体ER图 443数据库逻辑结构设计 在数据库概念设计中已经分析了菜品、消费单、消费项目等主要的数据库实体对象,这些实体对 象是数据表结构的基本模型,最终的数据模型都要实施到数据库中,形成整体的数据结构。可以使用 PowerDesigner工具完成这个数据库的建模,具体的模型结构如图4.l3所示。 t menu tb order item to sort shar(8)1 <ok2 int sok2 Int sort id int order_ form num chard11)<fk> name varchar(20) REFERE name varchar(20) menu num char(8) <fk> code archar(10) RE FEREN amount nt unit varchar( 4) total unit pr ce int FK_TB_ITEMI_REFERENCE_TB- ORDER tb user id name varchar③8) tb_order_fom char2) char(11 (pk2 tb desk birthday datetime PER-REFERENCE desk_num varchar(5)<fk> eschar) <pk id_card varchar) REFER seating int password varchar money int freeze char) user id int 图43酒店管理系统数据库模型 444视图设计 完成数据库建模后,还可以根据实际需要建立一些视图,通过对视图的应用,可以减少在程序中 编写复杂的SoL语句。在开发酒店管理系统的日结账功能时,需要查询指定日期的所有消费单,然后 根据消费单查询消费项目并关联查询项目名称,所以为表 tb menu和表 tb order item建立了一个视图 y order item and menu,如图414所示 151 PDF文件使用" pdfFactory Pro"试用版本创建ww, fineprint,cn Java项目开发案例全程实录(第2版) tb menu tb order item char(8)) <pk2 id int <pk2 name varchar(20) dmenu num char(8)<fo code varchar(10) REFERENq amount int varchar(4) total it pnce Int y order item and menu order form num name amount dbo tb menu dbo tb order item B dbo tb_menu. num=dbo b_order_itemmenu_num 图414酒店管理系统用到的视图 4.5公共模块设计 4.51编写数据库连接类 数据库连接类负责加载数据库驱动程序,以及创建和关闭数据库连接。为了最大程度地应用每个 已经创建的数据库连接,这里将其保存到了 ThreadLocal类的对象中。 首先在数据库连接类中定义一些常量,包括连接数据库使用的驱动程序、连接数据库的路径、连 接数据库使用的用户名和密码,并且定义一个 Thread Local类的对象,用来保存已经创建的数据库连接。 具体代码如下: 例程01代码位置:光盘mr04 Drinkery Managelsrclcommwq dao\ JDBC. java private static final String DRIVERCLASS=" com. microsoft jdbc sqlserver. SQLServerDriver";∥数据库驱动 private static final String URL="jdbc: microsoft: sqlserver://localhost: 1433; Database Name=db Drinkery Manage" //E&4E private static final String USERNAME="sa"; ∥连接数据库的用户名 private static final String PASSWORD ∥连接数据库的密码 private static final ThreadLocal< Connection> threadLocal= new ThreadLocal< Connection>O;∥创建保存连接的对象 然后编写用来加载数据库驱动程序的代码,通常情况下将其放到静态代码块中,这样做的好处是 只在该类第一次被加载(即第一次被调用)时执行加载数据库驱动程序的动作,避免了反复加载数据 库驱动程序,从而提高软件的性能。具体代码如下: 例程02代码位置:光盘wmr04 DrinkeryManage\srcicom dao\ JDBC. java static ∥通过静态方法加载数据库驱动 try t Class forName(DRIVERCLASS) newlnstance0; ∥加载数据库驱动 3 catch(Exception e)i e. printStackTraceO 152 PDF文件使用" pdfFactory Pro"试用版本创建ww, fineprint,cn 第4章酒店管理系统( Swing+ SQL Server2005实现) 最后编写用来创建和关闭数据库连接的方法,这里将这两个方法均定义为静态的,这样通过类名 就可以调用方法,方便使用。在这两个方法中,首先从 ThreadLocal类的对象中获得数据库连接,然后 判断是否存在可用的数据库连接,如果存在则直接返回或关闭,否则重新创建。具体代码如下: 例程03代码位置:光盘mri04 Drinkery Manage src\com mwqldao\ JDBC. java public static Connection getConnectionO ∥创建数据库连接的方法 Connection conn= threadLocal geto ∥从线程中获得数据库连接 if(conn=null)( ∥没有可用的数据库连接 con= DriverManager get Connection(URL, USERNAME, PASSWORD);∥创建新的数据库连接 threadLocal set(conn) ∥将数据库连接保存到线程中 3 catch(SQLException e)f e. printStackTraceO: return conn public static boolean close Connection ∥关闭数据库连接的方法 boolean isClosed=true. ∥默认关闭成功 Connection conn-threadLocal geto ∥从线程中获得数据库连接 threadLocal set(null) 清空线程中的数据库连接 if (conn I=null)( ∥.数据库连接可用 try i conn close(; ∥关闭数据库连接 catch(SQLException e)( isClosed= false ∥关闭失败 e. printStackTraceo return isclosed 4.5.2封装常用的操作数据库的方法 对数据库的操作包括查询、添加、修改和删除,其中查询是通过 execute Query( String sq)方法执行 SQL语句实现的,添加、修改和删除是通过 executeUpdate( String sql方法执行sOL语句实现的。在本 系统中共提供了4个用来执行查询的方法,分别用来查询多个记录、查询指定记录、查询多个记录的 指定值和査询指定记录的指定值;1个用来添加、修改和删除记录的方法。由于篇幅有限,在这里只介 绍用来查询多个记录的方法,以及用来添加、修改和删除记录的方法。 下面的方法用来査询多个记录。为了将检索结果直接应用于表格组件,这里全部用 Vector向量对 象封装查询结果,并且为代表每一行的向量添加了行序号。具体代码如下: 例程04代码位置:光盘 mr04\Drinkery Manage\srclcomlmwq dao\ Base Dao. java protected Vector selectSome Note(String sql) Vectorsvector<Object>> vector= new Vector<Vector< Object>O,∥创建结果集向量 Connection conn=JDBC. getConnectionO ∥获得数据库连接 153 PDF文件使用" pdfFactory Pro"试用版本创建ww, fineprint,cn Java项目开发案例全程实录(第2版) try t Statement stmt= conn create Statement ∥l创建连接状态对象 Resultset rs= stmt. execute Query(sql) ∥执行SQL语句获得查询结果 int column Count=rs. getMetaDataO get Column Counto 获得查询数据表的列数 int row=1. ∥定义行序号 while(rs nexto)( ∥遍历结果集 Vector<Object> rowV=new Vector<Object>o ∥刨创建行向量 row V. add(new Integer(row++)) ∥/加行序号 for (int column=1; column < column Count; column++)( rowV.add(rs getobject(column); ∥添加列值 vector. add(row) ∥将行向量添加到结果集向量中 e 0; rs close( ∥关闭结果集对象 stmt. close ∥关闭连接状态对象 3 catch(SQLException e) e. printStackTraceO return vector: ∥返回结果集向量 下面的方法用来添加、修改和删除记录。这里采用手动提交,目的是捕获持久化异常,并回退数 据库,以保证数据的合法性。具体代码如下。 例程05代码位置:光盘mr04 Drinkery Managelsrclcomlmwq\dao\ Base Dao java public boolean long Haul(String sqD)( boolean isLongHaul = true ∥默认持久化成功 Connection conn=JDBC. getConnectionO ∥获得数据库连接 try connsetAutoCommit(false) ∥设置为手动提交 Statement stmt=conn create Statement ∥创建连接状态对象 stmt.executeUpdate(sql) ∥执行SQL语句 stmt.close ∥关闭连接状态对象 conn commit ∥提是交持久化 3 catch(SQLException e)( isLong Haul= false ∥持久化失败 try connrollback; ∥回退 )catch(SQLException el)i el. printStackTraceO: e. printStackTraceO return isLong Haul; ∥返回持久化结果 4.53自定义表格组件 在使用表格时,通常情况下将表格列的值设置为居中显示,这样看起来更美观。由 JTable组件实 15 PDF文件使用" pdfFactory Pro"试用版本创建ww, fineprint,cn

...展开详情
试读 48P JAVA项目开发案例全程实录 第4章
立即下载 低至0.43元/次 身份认证VIP会员低至7折
    一个资源只可评论一次,评论内容不能少于5个字
    w520h718z 不错。如果有源码就好了
    2013-01-24
    回复
    abc702702 案例很详细 对我很有帮助,谢谢了
    2012-12-03
    回复
    hai_ke 书中案例详解非常清晰!
    2012-09-08
    回复
    上传资源赚积分,得勋章
    最新推荐
    JAVA项目开发案例全程实录 第4章 49积分/C币 立即下载
    1/48
    JAVA项目开发案例全程实录 第4章第1页
    JAVA项目开发案例全程实录 第4章第2页
    JAVA项目开发案例全程实录 第4章第3页
    JAVA项目开发案例全程实录 第4章第4页
    JAVA项目开发案例全程实录 第4章第5页
    JAVA项目开发案例全程实录 第4章第6页
    JAVA项目开发案例全程实录 第4章第7页
    JAVA项目开发案例全程实录 第4章第8页
    JAVA项目开发案例全程实录 第4章第9页
    JAVA项目开发案例全程实录 第4章第10页
    JAVA项目开发案例全程实录 第4章第11页
    JAVA项目开发案例全程实录 第4章第12页
    JAVA项目开发案例全程实录 第4章第13页
    JAVA项目开发案例全程实录 第4章第14页
    JAVA项目开发案例全程实录 第4章第15页

    试读已结束,剩余33页未读...

    49积分/C币 立即下载 >