20xx级酒店点菜管理系统内容摘要:

消费的相关信息,例如消费时就餐餐台、消费时间、消费金额、消费折扣、操作的服务员等信息。 数据库、表的设计 tb_user 表(登录用户表,服务员工号为 10001 的默认为管理员) 表 31 tb_user 序号 字段名称 字段描述 字段类型 长度 备注 1 Jnumber 服务员工号 Char 20 不允许空 2 name 服务员姓名 Char 20 不许为空 3 sex 性别 Char 10 不许为空 4 Birthday 生日 Char 20 不许为空 5 Id_card 服务员身份证号 Char 20 不允许空 6 password 服务员密码 Char 20 不允许空 7 freeze 登录权限 Char 20 默认为 “ 正常 ” 用户 表主要用于存储一些服务员信息,如服务员的工号、姓名、密码、身份证号、登录权限等等,主要用于管理员、服务员登录,添加入职服务员和修改、删除服务员信息和登录权限。 消费单( consume)( consume) 折扣程度 编号 消费餐台 消费时间 操作服务员 图 36 消费单 ER图 11 tb_menu (菜品(食谱)表 )\ 表 32 tb_menu 序号 字段名称 字段描述 字段类型 长度 备注 1 num 编号 Char 8 不允许空 2 sort_id 所属菜系 Int 10 不允许空 3 name 菜名 Varchar 20 不允许空 4 code 助记码 Varchar 10 不允许空 5 unit 单 位(盘) Int 4 不允许空 6 unit_price 单价 Float 10 不允许空 7 stating 状态 Varchar 10 不允许空 菜品表主要用于存储一些食谱信息,如食物的名称、价格有无食材等等,主要用于客户点餐,使用于添加预定。 字段 unit_price 记录的是食物的单价。 当客户预定餐点时或者结账时,系统使用它来算费用。 tb_order_form(消费单和预定表) 表 33 tb_order_form 序号 字段名称 字段描述 字段类型 长度 备注 1 num 编号 Char 11 不允许空 2 desk_num 消费桌号 Varchar 5 不允许空 3 datetime 消费时间 Datetime 不允许空 4 money 消费金额 Int 10 不允许空 5 user_id 操作服务员 char 10 不允许空 6 discount 折扣程度 Float 3 允许空 消费单表主要用于存储一些用餐信息,如客户的消费餐台、消费时间、桌号和消费金额、折扣等等,主要用于记录客户的消费信息。 12 tb_order_item(消费项目信息表 ) 表 34 tb_order_item 序号 字段名称 字段描述 字段类型 长度 备注 1 id 编号 Int 5 不允许空 2 order_for_num 所属消费单 Char 11 不允许空 3 menu_num 消费菜品 Char 8 不允许空 4 amount 消费数量 Int 4 不允许空 消费项目信息表主要记录客户消费的项目,菜品、数量、等。 给客户详细列出消费项目。 tb_sort(菜系信息表 ) 表 35 tb_sort 序号 字段名称 字段描述 字段类型 长度 备注 1 id 序号 int 4 不允许空 2 name 名称 Varchar 20 不允许空 菜系信息表为了统计顾客所点的食物属于什么菜系(川菜、粤菜等等),方便顾客在就餐时查找所要点的菜品,也使服务员更快捷、更好的为客户服务。 4 系统详细设计 数据库 数据库的连接 为了方便用户的使用和维护,我们将与数据库的连接,单独写出来并进行编译,这样系统在新的环境使用时,只需改动一处数据库部分连接代码,即可立即使用,连接关键代码如下: private static final String URL = jdbc: private static final String UserName = root。 private static final String Password = guozhuo。 private static final ThreadLocalConnection threadLocal = new 13 ThreadLocalConnection()。 static {// 通过静态方法加载数据库驱动 try { ().newInstance()。 } catch (Exception e) { ()。 (null,不能加载数据驱动序 : +DRIVERCLASS,错误 ,)。 } } public static Connection getConnection() { Connection conn = ()。 // 从线程中获得数据库连接 if (conn == null) {// 没有可用的数据库连接 try { conn = (URL, UserName, Password)。 (conn)。 // 将数据库连接保存到线程中 } catch (SQLException e) { ()。 (null,不能连接数据库 : +DRIVERCLASS,错误 ,)。 // } } return conn。 } 查询数据库的方法 查询多条记录的方法 selectSomeRecord(如多个服务员用户的信息)其中使用 vector向量类,相对于 ArrayList 来说 , Vector 线程是安全的,换言之就是说是同步的。 protected Vector selectSomeRecord(String sql) { VectorVectorObject vec = new VectorVectorObject()。 // 创建结果集向量 Connection conn = ()。 // 获得数据库连接 try { Statement stmt = ()。 // 创建连接状态对象 14 ResultSet rs = (sql)。 int columnCount = ().getColumnCount()。 // 获得查询数据表中列数 int row = 1。 // 定义行序号 while (()) {// 遍历结果集 VectorObject rowS = new VectorObject()。 // 创建行向量 (new Integer(row++))。 // 添加行序号 for (int column = 1。 column = columnCount。 column++) { ((column))。 // 添加列值 } (rowS)。 // 将行向量添加到结果集向量中 } ()。 //结果集关闭 ()。 // 关闭连接状态对象 } catch (SQLException e) { ()。 } return vec。 // 返回结果集向量 } 数据表中插入数据的执行语句 public boolean isUser(String values[]) { String sql = insert into tb_user(name,sex,birthday,id_card,password,freeze) values(39。 + values[0] + 39。 ,39。 + values[1] + 39。 ,39。 + values[2] + 39。 ,39。 + values[3] + 39。 ,39。 + values[4] + 39。 ,39。 + values[5] + 39。 )。 return checkDb(sql)。 } checkDb 方法是检查数据库连通并执行 SQL 语句的方法(代码省去) 15 登录模块的实现 管理员用户系统设置为默认用户 guozhuo;登录工号为 10001,服务员通过选择用户,输入登录工号和密码进入系统,如果密码或者登录工号不正确,则不任许员工登录到系统。 登录后把服务员的基本信心赋到 SESSION 中,以 便其他工能模块能获得登录员工的基本信息。 登录界面如图 所示 关键代码如下:(在 Dao 类中用 getInstance()方法把 Dao 类实例化) Vector user = ().sUserByName(username)。 // 查询登录用户 String password = (5).toString()。 // 得到密码 userId = (0).toString()。 // 得到登录工号 if((password)amp。 amp。 (())) { land(user)。 // 登录成功 } else {// 登录密码错误 (null, 密码或工号输入错误,请确认后重新登录。 , 友情提示 , )。 resetUserIDAndPassword()。 // 恢复登录工号和登录密码 } 登录后系统主界面 通过前期的分析和设计,现将系统具体实现。 登录成功进入系统主页面。 系统主页面中主要包括的功能有:菜品管理、菜系管理、日结账、月结账、年结账、修改密码、用户管理、退出系统。 其中月结账、年结账、用户管理是专门属于管理员的权限。 图 41登录界面 16 登录后主界面如图 所示 图 42 登录主界面 图 422 开台列表 图 421 签单列表 图 423 菜品添加结账 17 用户管理 图 43 用户管理界面 图 424 显示结账 图 425 查看管理 18 将酒店有登录权限的员工的信息录入到数据 库 tb_user 表中,关键代码如下: (new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String values[] = new String[6]。 values[0] = ()。 values[1] = (() ? 男 : 女 )。 values[2] = ()。 values[3] = ()。 values[4] = ()。 values[5] = 正常。 if (values[0].length() 4) { (null, 姓名最多只能为 4 个汉字。 , 友情提示 , )。 ()。 ()。 return。 } ...... Vector rowV = new Vector()。 int row = ()。 //得到表格中已有记录行。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。