




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录 前言前言 .1 1 1 系统功能系统功能分分析析 .2 2 2 开发技术介绍开发技术介绍 .3 3 3 数据库设计数据库设计 .4 3.1 数据库中的数据表4 3.2 数据库中的 e-r 图5 4 4 详细设计详细设计 .6 4.1 系统功能模块划分6 4.2 前台服务7 4.2.1 开台点菜.7 4.2.2 智能化获取菜品.8 4.2.3 消费结账.9 4.3 基础信息10 4.3.1 菜品管理.10 4.3.2 菜系管理.12 4.3.3 台号管理.13 4.4 结账报表14 4.4.1 日结账报表.14 4.4.2 月结账报表.14 4.4.3 年结账报表.15 4.5 系统安全16 4.5.1 修改密码.16 4.5.2 用户管理.16 5 5 课程设计小结课程设计小结 .17 6 6 致谢致谢 .17 7 7 参考文献参考文献 .18 8 8 附录附录 .18 前言 java java 技术是当今最流行最实用的计算机技术,是二十世纪九十年代的计算机技术 的重大发明,java 语言是一种纯粹面向对象的高级编程语言,是因特网上的世界语;当前 java 应用形势一片大好,是整个企业系统的宠儿; 掌握 java 技术是每一个关心和立志从 事 it 事业的人的内功, 也是当前市场的迫切需要, 更是振兴中华软件的绝好机会。 java 是现在全球最时髦的开发工具之一,它拥有一套庞大且完善的类库,内置了其他语言 需要靠库甚至是操作系统才能支持的功能,拥有一个虚拟机,总之,java 的出现,确实给整个程 序界带来了巨大的冲击,也许现在还无法准确评估 java 为整个 it 业带来的影响,但是有一点 却毋庸置疑-java 将不可避免地影响一代程序员. java 是面积网络的设计语言,用来让程序员创建应用程序,这些应用程序可以通过下载, 而且可在任何计算平台上安全地运行,如果再加上互联网和公司企业内部网体系,你将会拥有 一个未准的网络计算环境,java 作为一个分布式的,面向对象的程序设计各方,可以让位于任 何地方的任何计算机应用网络上的的应用程序. 综合上述,java 的生命力体现在如下方面: 1. java 产生与流行是 internet 发展的客观要求. 2.是一门各方面性能都很好的编程语言,它的基本特点是简单,面向对象,分布式,解释的,健 壮的,完全的,结构中立的,可移植的,性能很优异的,多线程的,动态的,适合的 internet 环境上开 发应用系统. 3.java 可以制作大部分网络应用程序系统,而且与如今流行的 www 浏览器结合很好. 4.java 不仅仅是一种各方,更重要的是一种区别于传统系统,遵守“网络就是计算机“信条的 平台技术.java 平台将面向对象系统扩展成包括程序和数据的网络计算机(nc),而这个平台 的核心就是 java 虚拟机,许多使 java 成为万能开发平台的属性都源于 java 虚拟机的概念和 实现. java 语言是一种功能强大的编程语言,分为 j2se、j2me、j2ee 几个版本,作为初 学者,我们先学习 j2se,在此基础上我们做了一个关于酒店管理的系统。 2 1 系统功能分析 酒店管理系统是针对酒店设计的一个软件,用户分为管理员用户和普通用户,普通用 户只有前台服务中的前台点菜,获取菜品和修改密码的权限。管理员拥有前台服务中的开 台点菜、智能化获取菜品、消费结账;基础信息中的菜品管理、菜系管理、台号管理;结 账报表中的日结账报表、月结账报表、年结账报表以及结账报表添加导出功能;系统安全 中的修改密码、用户管理。系统的具体流程图如下 1-1 所示: 图 1-1 系统流程图 3 2 开发技术介绍 java 的开发中主要用到得技术 java se,java se 是 java 平台标准版的简称 (java platform, standard edition) (also known as java 2 platform) ,用 于开发和部署桌面、服务器以及嵌入设备和实时环境中的java 应用程序。 java se 包括用于开发 java web 服务的类库,同时, java se 为 java ee 提供了基础。 java se(java platform, standard edition,java 标准版)就是基于 jdk 和 jre 的。 common dbutils 是操作数据库的组件,对传统操作数据库的类进行二次 封装,可以把结果集转化成 list。 dbutils 包括 3 个包: mons.dbutils mons.dbutils.handlers mons.dbutils.wrappers dbutils 封装了对 jdbc 的操作,简化了 jdbc 操作,可以少写代码。 mons.dbutils dbutils 关闭链接等操作 queryrunner 进行查询的操作 mons.dbutils.handlers arrayhandler :将 resultset 中第一行的数据转化成对象数组 arraylisthandler 将 resultset 中所有的数据转化成 list,list 中 存放的是 object beanhandler :将 resultset 中第一行的数据转化成类对象 beanlisthandler :将 resultset 中所有的数据转化成 list,list 中存放的是类对象 columnlisthandler :将 resultset 中某一列的数据存成 list,list 中存放的是 object 对象 keyedhandler :将 resultset 中存成映射, key 为某一列对应为 map。map 中存放的是数据 maphandler :将 resultset 中第一行的数据存成 map 映射 maplisthandler :将 resultset 中所有的数据存成 list。list 中 存放的是 map scalarhandler :将 resultset 中一条记录的其中某一列的数据存成 object mons.dbutils.wrappers sqlnullcheckedresultset :对 resultset 进行操作,改版里面的值 stringtrimmedresultset :去除 resultset 中中字段的左右空格。 trim() 4 3 数据库设计 3.1 数据库中的数据表 系统的数据库中一共用了六张数据表,分别是 tb_desk,tb_menu, tb_order_form,tb_order_item,tb_sort ,tb_sort tb_user 表中的具体字段及各个字段的意义 见下列各表: (1)桌子信息表用于存放台号及其座位数如下表 3-1 所示: 字段名称字段说明字段类型 num 桌子号 varchar seating 桌子的座位数 int 表 3-1 桌子信息表 tb_desk (2)菜基本信息表 tb_menu,主用于存放菜品编号、名称、单价等菜品信息。菜品信 息表如下表 3-2 所示: 字段名称字段说明字段类型 num 菜的编号 char(8) sort_id 菜系编号 int name 菜名varchar(20) code 助记符varchar(10) unit 单位varchar(4) unit_price 单价 int state 状态 char(4) 表 3-2 菜基本信息表 tb_menu (3)顾客点菜表 tb_order_form:用于存放签单编号、时间、总消费额等签单信息。如表 3-3 所示: 字段名称字段说明字段类型 num 顾客菜单编号 char(11) desk_num 顾客桌子号 varchar(5) datetime 点菜时间 datetime money 消费金额 int user_id 外键,当前操作人员编号 int 表 3-3 顾客点菜表 tb_order_form (4)顾客点菜统计表 tb_order_item:用于存放签单所签菜品编号、消费数量等签单 详细信息。如下表 3-4 所示: 字段名称字段说明字段类型 id 主键 varchar order_form_num 顾客菜单编号 char(11) menu_num 对应菜单编号 char(8) amount 总共点菜数 int total 总价 int 5 表 3-4 顾客点菜统计表 tb_order_item (5)菜系类别表 tb_sort:存放菜类名称等信息,如下表 3-5 所示: 表 3-5 菜系类别表 tb_sort 字段名称字段说明字段类型 id 菜系编号 int name 菜系名varchar(20) (6)管理员信息表 tb_user:存放操作员账号密码、权限级别及其基本信息。如下表 3-6 所示: 表 3-6 管理员信息表 tb_user 字段名称字段说明字段类型 id 用户编号 int name 用户名varchar(8) sex 性别 char(2) birthday 出生日期 datetime id_card 身份证号varchar(20) password 登录密码varchar(50) freeze 使用状态 char(4) 3.2 数据库中的 e-r 图 e-r 图是反映各个实体之间的关系的,以及实体的属性,为数据库提供了一个很直观 的效果。e-r 图如下图 3-1 所示: 6 图 3-1 全局 e-r 图 4 详细设计 详细设计也即过程设计,确定如何具体地实现酒店管理系统所需的功能,准确描述概 要设计中划分的各模块具体执行过程,从而在编码阶段可以直接把这个描述翻译成某种语 言书写的程序。 4.1 系统功能模块划分 按结构化设计方法,在系统功能逐层分解的基础上,对系统各功能模块进行设计。酒店管 理系统,包含四个模块:前台服务、基础信息、结账报表和系统安全;具体的结构设计图 hipo 图如下: 7 酒店管理系统 前台服务1.0基础信息2.0结账报表3.0系统安全4.0 登 陆 1.1 点 菜 开 单 1.2 消 费 结 账 1.3 台 号 管 理 2.1 菜 品 管 理 2.2 菜 系 管 理 2.3 日 报 表 3.1 月 报 表 3.2 年 报 表 3.3 用 户 密 码 修 改 4.1 用 户 管 理 4.2 添 加 删 除 添 加 添 加 删 除 图 4-1 结构设计图 hipo 4.2 前台服务 前台服务主要是为了提供酒店日常运营时候的各个功能,可以进行用户登录、开台点 菜、智能化获取菜品和常用的消费结账。 4.2.1 用户登录 用户登录用于用户登录进入主界面,由于进行运行方便的需要,默认用户名和密码改 为系统默认帐号和密码。用户登录效果如图 4-2 所示: 图 4-2 用户登录图 4.2.2 开台点菜 开台点菜是当有顾客需要点菜的时候,直接选择酒店的某一台号,然后添加若干菜品 8 开单,可在签单前取消所选菜品,签单后不可取消,同时要求在选择菜品时显示该台的消 费金额,在经客人确定后签单该台的点菜。 智能化获取菜品功能是可根据菜品的编码或者助记码(拼音首字母)选择菜品,在输 入相关信息的同时显示有关菜品,可通过“开单”按钮或回车键开单。开台点菜和智能化 获取菜品功能效果如下图 4-3 所示: 图 4-3 开台点菜图 4.2.3 消费结账 消费结账是在客人签完单之后结账的时候需要的,并显示找零金额信息。具体效果如 下图所示: 9 图 4-4 消费结账图 4.3 基础信息 基础信息模块可以对菜品,菜系以及台号进行管理,在菜品管理中可以对菜品进行添 加删除功能;在菜系管理中可以对菜系进行添加、删除;在台号管理中可以对台号进行添 加、删除的功能。 4.3.1 菜品管理 菜品管理可以添加和删除菜品;菜品信息包括编号(自动产生) 、名称、单位、助记码、 菜系、单价信息。添加和删除功能效果如下图 4-5 所示: 图 4-5 菜品管理窗体效果图 10 4.3.2 菜系管理 菜系管理是对酒店所有的菜系进行管理,如添加、删除菜系名称;添加和删除功能效 果图如图 4-7 所示: 图 4-7 菜系管理窗体效果图 4.3.3 台号管理 台号管理是针对桌子的号码以及座位数进行添加,删除操作的;添加和删除效果如图 4-9 所示: 11 图 4-9 台号管理窗体效果图 4.4 结账报表 4.4.1 日结账报表 日结账报表可以显示与查询日结账报表,包括编号、台号、开台时间、消费金额以及 该单中消费的菜品与数量信息;显示效果如图 4-11 所示: 12 图 4-11 日结账报表图 4.4.2 月结账报表 月结账报表是显示与查询月结账报表,包括日期、开台总数、消费总额、平均消费额、 最大消费额、最小消费额信息;显示效果如图 4-12 所示: 图 4-12 月结账报表图 13 4.4.3 年结账报表 年结账报表是显示与查询年结账报表,包括一年中每个月每天的消费金额以及每个月 消费总计与每个月同一天的消费总计信息;显示效果如图 4-13 所示: 图 4-13 年结账报表图 4.5 系统安全 4.5.1 修改密码 修改密码功能为用户的安全考虑,用户可以修改自己的用户密码;显示效果如图 4-14 所示: 图 4-14 修改用户密码图 14 4.5.2 用户管理 用户管理模块可以添加、删除用户,包括姓名、性别、出生日期、登录密码、身份证 号信息;效果显示图如 4-15 所示: 图 4-15 用户管理图 5 课程设计小结 此次课程设计由于时间紧迫,被允许由三到四人合作分工完成,在此过程中遇到诸多 问题,例如数据库链接、java 类命名和 java 程序完成后的模块组装等问题。 在此次设计中,张海峰负责菜品管理模块、李志芳负责结账管理模块、我(徐聪)负 责前台服务和用户管理模块。由于本组中有男女组合,沟通问题受到极大挑战。 通过此次课程设计,极大提升了我们的 java 设计能力以及理解能力,并加大了我们的 java 合作设计的了解度。 6 致谢 在这个项目的制作的过程中,得到了很多人的帮助,首先感谢学校提供给了我们这样 的机会来将理论知识转化为实际经验;其次感谢陈涛老师在这个项目上的指导和提供的帮 助;最后感谢很多热心的同学的帮忙,很多困难都是在大家的讨论中得到解决的办法的。 15 7 参考文献 1 胡伏湘 雷军环. java 程序设计实用教程 北京:清华大学出版社,2009.8 2 张跃平 耿祥义. java 大学实用教程学习指导 北京:电子工业出版社,2008.5 3 谭浩强. java 编程技术 北京:人民邮电出版社,2003.4 8 附录 部分主要代码: 1)登录模块的主要代码: public class landframe extends jframe private jlabel namelabel; / 用户名文本输出显示 private jlabel pswlabel; / 密码文本输出显示 private jpasswordfield passwordfield; / 密码框 private jcombobox usernamecombobox; / 用户名下拉菜单 private jlabel eplabel1,eplabel2; / 按钮之间的空格 public static void main(string args) try landframe frame = new landframe(); frame.setvisible(true); catch (exception e) e.printstacktrace(); public landframe() / 首先设置窗口的相关信息 settitle(“酒店管理系统-登录“); / 设置窗 口的标题 setresizable(false); / 设置窗 口不可以改变大小 setalwaysontop(true); / 设置窗 口总在最前方 setbounds(100, 100, 300, 200); / 设置 窗口的大小 setdefaultcloseoperation(jframe.exit_on_close); / 设置当关闭窗口时执行的动作 / 下面将创建一个面板对象并添加到窗口的容器中 final jpanel panel = new jpanel(); / 创建 16 一个面板对象 panel.setlayout(new gridbaglayout(); / 设 置面板的布局管理器为网格组布局 getcontentpane().add(panel, borderlayout.center); / 将面板添加到窗体中 /添加用户名输入前的文本输出显示 namelabel=new jlabel(); namelabel.settext(“用户名 :“); namelabel.setfont(new font(“宋体“,font.bold,16); final gridbagconstraints g1 = new gridbagconstraints(); g1.insets=new insets(15,0,0,0); /将顶部、 左边、底部、右边设置为指定值 g1.gridx = 1; / 设置行索 引为2 g1.gridy = 1; / 设置列索 引为1 panel.add(namelabel, g1);/ 将组件按指定的布局管理器添加到面板中 / 创建并设置用户名下拉菜单 usernamecombobox = new jcombobox(); / 创建 用户名下拉菜单组件对象 usernamecombobox.setmaximumrowcount(5); / 设 置下拉菜单最多可显示的选项数 usernamecombobox.additem(“徐聪“); / 为下 拉菜单添加提示项 usernamecombobox.addactionlistener(new usernamecomboboxactionlistener(); / 为下拉菜单添加事件监听器 g1.anchor = gridbagconstraints.west; / 设置 为靠左侧显示 g1.insets=new insets(15,0,0,0); / 将顶 部、左边、底部、右边设置为指定值 g1.gridy = 1; / 设置行索 引为1 g1.gridx = 2; / 设置列索 引为2 panel.add(usernamecombobox, g1); / 将组 件按指定的布局管理器添加到面板中 / 添加密码输入前的文本输出显示 pswlabel=new jlabel(); pswlabel.settext(“密 码 :“); pswlabel.setfont(new font(“宋体“,font.bold,16); g1.insets=new insets(15,0,0,0); g1.gridx = 1; g1.gridy = 2; panel.add(pswlabel, g1); 17 / 创建并设置密码框 passwordfield = new jpasswordfield(); passwordfield.setcolumns(10); / 设置 密码框可显示的字符数 passwordfield.settext(“111“); / 设置 密码框默认显示三个一 g1.insets = new insets(5, 0, 0, 0); / 设 置组件外部上方的填充量为5像素 g1.anchor = gridbagconstraints.west; g1.gridy = 2; g1.gridx = 2; panel.add(passwordfield, g1); / 创建并设置一个用来添加三个按钮的面板 final jpanel buttonpanel = new jpanel(); / 创 建一个用来添加按钮的面板 buttonpanel.setopaque(false); / 设置 面板的背景为透明 buttonpanel.setlayout(new boxlayout(buttonpanel, boxlayout.x_axis); / 设置面板采用水平箱布局 final gridbagconstraints g2 = new gridbagconstraints(); / 创建网格组布局管理器对象 g2.insets = new insets(10, 0, 0, 0); / 设 置组件外部上方的填充量为10像素 g2.gridwidth = 2; / 设置其 占两列 g2.gridy = 3; / 设置行 索引为3 g2.gridx = 1; / 设置列 索引为1 panel.add(buttonpanel, g2); / 将组 件按指定的布局管理器添加到面板中 / 创建并设置一个登录按钮,并将其添加到用来添加按钮的面板中 final jbutton landbutton = new jbutton(); / 创 建登录按钮组件对象 landbutton.settext(“登 陆“); landbutton.setmargin(new insets(0, 0, 0, 0); / 设置按钮边框和标签之间的间隔 landbutton.setcontentareafilled(false); / 设 置不绘制按钮的内容区域 landbutton.setborderpainted(true); / 设 置不绘制按钮的边框 landbutton.addactionlistener(new landbuttonactionlistener(); buttonpanel.add(landbutton); / 将登 录按钮添加到用来添加按钮的面板中 18 eplabel1=new jlabel(); eplabel1.settext(“ “); buttonpanel.add(eplabel1); / 重置按钮的创建和添加 final jbutton resetbutton = new jbutton(); resetbutton.settext(“重 置“); resetbutton.setmargin(new insets(0, 0, 0, 0); resetbutton.setcontentareafilled(false); resetbutton.setborderpainted(true); resetbutton.addactionlistener(new resetbuttonactionlistener(); buttonpanel.add(resetbutton); eplabel2=new jlabel(); eplabel2.settext(“ “); buttonpanel.add(eplabel2); / 退出按钮的创建和添加 final jbutton exitbutton = new jbutton(); exitbutton.settext(“退 出“); exitbutton.setmargin(new insets(0, 0, 0, 0); exitbutton.setcontentareafilled(false); exitbutton.setborderpainted(true); exitbutton.addactionlistener(new exitbuttonactionlistener(); buttonpanel.add(exitbutton); / 初始化用户名下拉菜单 vector usernamev = dao.getinstance().susernameofnotfreeze(); if (usernamev.size() = 0) / 添 加复选框选项内容 usernamecombobox.additem(“徐聪“); else for (int i = 0; i usernamev.size(); i+) usernamecombobox.additem(usernamev.get(i); 2)用户管理模块的主要代码 public usermanagerdialog() super(); setmodal(true); settitle(“酒店管理系统-用户管理“); setbounds(100, 100, 500, 375); final jpanel inputpanel = new jpanel(); inputpanel.setlayout(new gridbaglayout(); getcontentpane().add(inputpanel, borderlayout.north); 19 final jlabel namelabel = new jlabel(); namelabel.settext(“姓 名:“); final gridbagconstraints gridbagconstraints_13 = new gridbagconstraints(); gridbagconstraints_13.insets = new insets(10, 0, 0, 0); inputpanel.add(namelabel, gridbagconstraints_13); nametextfield = new jtextfield(); nametextfield.setcolumns(6); final gridbagconstraints gridbagconstraints = new gridbagconstraints(); gridbagconstraints.insets = new insets(10, 0, 0, 0); gridbagconstraints.gridy = 0; gridbagconstraints.gridx = 1; inputpanel.add(nametextfield, gridbagconstraints); final jlabel sexlabel = new jlabel(); sexlabel.settext(“性别:“); final gridbagconstraints gridbagconstraints_1 = new gridbagconstraints(); gridbagconstraints_1.insets = new insets(10, 15, 0, 0); gridbagconstraints_1.gridy = 0; gridbagconstraints_1.gridx = 2; inputpanel.add(sexlabel, gridbagconstraints_1); final jradiobutton manradiobutton = new jradiobutton(); buttongroup.add(manradiobutton); manradiobutton.settext(“男“); manradiobutton.setselected(true); final gridbagconstraints gridbagconstraints_2 = new gridbagconstraints(); gridbagconstraints_2.insets = new insets(10, 0, 0, 0); gridbagconstraints_2.gridy = 0; gridbagconstraints_2.gridx = 3; inputpanel.add(manradiobutton, gridbagconstraints_2); final jradiobutton womanradiobutton = new jradiobutton(); buttongroup.add(womanradiobutton); womanradiobutton.settext(“女“); final gridbagconstraints gridbagconstraints_3 = new gridbagconstraints(); gridbagconstraints_3.insets = new insets(10, 0, 0, 0); gridbagconstraints_3.gridy = 0; 20 gridbagconstraints_3.gridx = 4; inputpanel.add(womanradiobutton, gridbagconstraints_3); final jlabel birthdaylabel = new jlabel(); birthdaylabel.settext(“出生日期:“); final gridbagconstraints gridbagconstraints_4 = new gridbagconstraints(); gridbagconstraints_4.insets = new insets(10, 15, 0, 0); gridbagconstraints_4.gridy = 0; gridbagconstraints_4.gridx = 5; inputpanel.add(birthdaylabel, gridbagconstraints_4); birthdaytextfield = new jtextfield(); birthdaytextfield.setcolumns(10); final gridbagconstraints gridbagconstraints_5 = new gridbagconstraints(); gridbagconstraints_5.insets = new insets(10, 0, 0, 0); gridbagconstraints_5.gridy = 0; gridbagconstraints_5.gridx = 6; inputpanel.add(birthdaytextfield, gridbagconstraints_5); final jlabel passwordlabel = new jlabel(); passwordlabel.settext(“登录密码:“); final gridbagconstraints gridbagconstraints_8 = new gridbagconstraints(); gridbagconstraints_8.insets = new insets(5, 0, 0, 0); gridbagconstraints_8.gridy = 1; gridbagconstraints_8.gridx = 0; inputpanel.add(passwordlabel, gridbagconstraints_8); passwordtextfield = new jtextfield(); passwordtextfield.setcolumns(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年出借咨询及风险管理合作协议正范本16
- 2025版标准型二手叉车买卖合同模板
- 2025版电子商务股份收购合同样本
- 2025版智慧家居系统技术服务合同样本
- 2025雕塑加工技术改造与升级合同范本
- 2025版历史文化名城保护工程设计合同示范文本GF
- 岩浆岩石学邱家骧课件
- 山西阳泉煤炭概述
- 大麦虫养殖知识培训课件
- 山西中药材品种实训课件
- 测绘项目投标技术文件范例
- 项目5 5.1 植物的光合作用(1)(课件)-《植物生产与环境》(高教版第4版)
- 《蒙牛乳业集团财务共享服务中心优化研究》
- 混凝土搅拌站实验室质量管理手册(正本)
- 消防应急灯安装工程安装方案
- 小儿便秘的中医护理
- 供货及时性保证措施
- 梨白粉病抗性鉴定技术规程
- 对2024年高考数学试题源于教材出处的分析暨对2025年复习备考的启示
- 医院污水处理运维服务投标方案(技术方案)
- 幼儿园环境创设色彩搭配指导
评论
0/150
提交评论