外面点餐系统(部分)
泛型接口
1.定义一个泛型接口DAO 创建以下方法:
(1)Public void insert(T t) 添加T类型对象到Map中
(2)Public T findById(String id); 根据id获取Map中的元素
(3)Public List findAll(); 返回map中的所有元素值集
(4)Public void delete(String id); 根据id删除Map中的元素
package com.peng.lesson23.restaurant;
import java.util.List;
public interface DAO<T> {
public void insert(T t);// 添加T类型对象到Map中
public T findById(int id);// 根据id获取Map中的元素
public List<T> findAll();// 返回Map中的所有元素值
public void delete(String id);// 根据id删除Map中的元素
}
定义四个实体类
2.使用基于以上的接口完成一个外卖点餐系统部分模块设计,其中包含实体类:
(1)菜品类(菜品id,菜品名,菜品类型,上架时间,单价,月销售,总数量)
(2)管理员类(管理员id,账号,密码)
(3)客户类(客户id,客户名,性别,密码,送餐地址,手机号,创建时间)
(4)订单类(订单号,订单创建时间,菜品id,购买数,客户id,总价格,订单状态)
说明:
1)菜品类型可自行设计数据类型(int或String),如1:面食 2:米饭 3:湘菜 …
2)菜品上架时间、客户创建时间、订单创建时间根据添加时间自动分配系统时间
3)订单状态类型为int(0:未支付 1:已支付 2:配送中 3:已完成)
要求实现如下功能:
1.实现不同角色用户登录系统
(1)管理员登录系统看到如下菜单:
①添加菜品
②查看所有菜品信息(包含分页功能)
③查看指定类别的菜品信息
④根据菜品id修改菜品价格
⑤删除指定id的菜品
⑥添加客户
⑦查看客户列表
⑧删除指定id的客户
⑨订单列表显示
⑩根据订单id修改订单状态
⑪退出
(2)客户登录看到如下菜单:
①显示所有菜品(按菜品销量从高到低排序输出)
1)点餐(输入菜品id和购买数量)
②根据菜品类别显示所有菜品
③查看所有订单(当前登录用户的)
④修改密码(当前登录用户的)
⑤个人信息显示
除实体类其他的几个类结构如下:
FoodsManager类
package com.peng.lesson23.restaurant;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
public class FoodsManager implements DAO<Foods> {
static Map<Integer, Foods> foods = new HashMap<>();
//默认菜品
static {
foods.put(1, new Foods(1, "北京烤鸭", "京菜", LocalDate.of(2017, 6, 22), 58.0, 236, 999));
foods.put(2, new Foods(2, "麻婆豆腐", "川菜", LocalDate.of(2018, 3, 13), 22.0, 121, 999));
foods.put(3, new Foods(3, "农家小炒肉", "湘菜", LocalDate.of(2018, 5, 19), 36.0, 225, 999));
foods.put(4, new Foods(4, "秘制油焖大虾", "川菜", LocalDate.of(2018, 5, 19), 88.8, 371, 999));
foods.put(5, new Foods(5, "清蒸武昌鱼", "鄂菜", LocalDate.of(2018, 5, 19), 59.0, 159, 999));
foods.put(6, new Foods(6, "排骨藕汤", "鄂菜", LocalDate.of(2018, 5, 19), 30.0, 162, 999));
foods.put(7, new Foods(7, "东安子鸡", "湘菜", LocalDate.of(2018, 7, 2), 45.0, 228, 999));
foods.put(8, new Foods(8, "腊味合蒸", "湘菜", LocalDate.of(2018, 7, 2), 45.0, 109, 999));
foods.put(9, new Foods(9, "广式烧鹅", "粤菜", LocalDate.of(2018, 7, 2), 58.0, 143, 999));
foods.put(9, new Foods(10, "京酱肉丝", "京菜", LocalDate.of(2017, 10, 21), 45.0, 192, 999));
foods.put(9, new Foods(11, "白切鸡", "粤菜", LocalDate.of(2018, 10, 21), 58.0, 162, 999));
foods.put(9, new Foods(12, "宫保鸡丁", "川菜", LocalDate.of(2018, 10, 21), 58.0, 297, 999));
}
@Override
// 菜品添加
public void insert(Foods t) {
foods.put(t.getFid(), t);
}
@Override
// 根据菜品id查询菜品
public Foods findById(int id) {
return foods.get