
实体类 food 类
package c.daomian;
//菜品
public class Food {
private int id;//菜品编号
private String name;//菜名
private double price;//单价
private int zan;//点赞数
public Food(int id, String name, double price, int zan) {
this.id = id;
this.name = name;
this.price = price;
this.zan = zan;
}
public Food() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public int getZan() {
return zan;
}
public void setZan(int zan) {
this.zan = zan;
}
@Override
public String toString() {
return "Food{" +
"id=" + id +
", name='" + name + '\'' +
", price=" + price +
", zan=" + zan +
'}';
}
}
订单类
package c.daomian;
import java.util.List;
public class Order {
private int id;//订单编号
private String username;//订单人
private int time;//配送时间
private String address;//配送地址
private boolean sign;//是否签收
private double peiSong;//配送费
private double total;//订单总价格
private List<OrderItem> orderItems;//订单项
public Order(int id, String username, int time, String address, boolean sign, double peiSong, double total) {
this.id = id;
this.username = username;
this.time = time;
this.address = address;
this.sign = sign;
this.peiSong = peiSong;
this.total = total;
}
public Order() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getTime() {
return time;
}
public void setTime(int time) {
this.time = time;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public boolean isSign() {
return sign;
}
public void setSign(boolean sign) {
this.sign = sign;
}
public double getPeiSong() {
return peiSong;
}
public void setPeiSong(double peiSong) {
this.peiSong = peiSong;
}
public double getTotal() {
total=0;
for (OrderItem item : orderItems) {
total+=item.getSubTotal();
}
total+=peiSong;
return total;
}
public void setTotal(double total) {
this.total = total;
}
public List<OrderItem> getOrderItems() {
return orderItems;
}
public void setOrderItems(List<OrderItem> orderItems) {
this.orderItems = orderItems;
}
}
订单
package c.daomian;
public class OrderItem {
private Food food;//菜品
private int count;//份数
private double subTotal;//餐费小计
public OrderItem(Food food, int count) {
this.food = food;
this.count = count;
}
public OrderItem() {
}
public Food getFood() {
return food;
}
public void setFood(Food food) {
this.food = food;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public double getSubTotal() {
return count*food.getPrice();
}
}
入口
package c;
import c.view.FoodView;
public class Main {
public static void main(String[] args){
FoodView foodView = new FoodView();
foodView.main();
}
}
界面
package c.view;
import c.daomian.Food;
import c.daomian.Order;
import c.daomian.OrderItem;
import c.service.FoodService;
import c.service.OrderService;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
public class FoodView {
private FoodService foodService=new FoodService();
private OrderService orderService=new OrderService();
private Scanner scanner=new Scanner(System.in);
public void main() {
while (true) {
menu();
System.out.println("请选择:");
int i = scanner.nextInt();
switch(i){
case 1:
order();
break;
case 2:
view();
break;
case 3:
sign();
break;
case 4:
del();
break;
case 5:
zan();
break;
case 6:
return;
default:
break;
}
}
}
private void zan() {
System.out.println("FoodView.zan([])方法");
}
private void del() {
System.out.println("订单删除");
System.out.println("请输入要删除的定单号:");
int id = scanner.nextInt();
Order order = orderService.findById(id);
if (order==null){
System.out.println("您选择的订单不存在");
}
else if (!order.isSign()){
System.out.println("该订单仍未签收,不能被删除!");
}
else{
orderService.del(id);
System.out.println("删除订单成功!");
}
}
private void sign() {
System.out.println("签收订单");
System.out.println("请选择需要签收的订单编号:");
int id = scanner.nextInt();
Order order=orderService.findById(id);
if (order==null){
System.out.println("您选择的订单不存在!");
}
else if (order.isSign()){
System.out.println("您选择的订单已经签收,不能再次签收!");
}
else{
orderService.sign(order);
System.out.println("签收成功!");
}
}
private void view() {
System.out.println("查看餐袋");
System.out.println("序号\t订餐人\t餐品信息");
List<Order> list=orderService.list();
//循环遍历订单order
for (Order order : list) {
System.out.print(order.getId()+"\t\t"+order.getUsername()+"\t");
//循环遍历订单项orderItem
List<OrderItem> items = order.getOrderItems();
for (OrderItem item : items) {
System.out.print(item.getFood().getName()+item.getCount()+"份\t");
}
System.out.println();//换行
}
}
private void order() {
System.out.println("我要订餐");
System.out.println("请输入用户名:");
String username = scanner.next();
//循环点餐:点多个菜品
boolean end=false;
Map<Integer,Integer> map=new HashMap<>();
do{
//菜品的菜单
foodMenu();
System.out.println("请输入你选择的菜品的序号:");
int id = scanner.nextInt();
System.out.println("请输入购买的份数:");
int count = scanner.nextInt();
//判断map原来点过菜品
if (map.containsKey(id)){//点过该菜品
Integer oldCount = map.get(id);
map.put(id, count+oldCount);
}else{
map.put(id, count);
}
//是否继续点餐
System.out.println("继续点餐(y/n)?");
String s = scanner.next();
if (!s.equals("y")){
end=true;
}
}while (!end);
int time=0;//送餐时间
do {
System.out.println("请输入配送时间(10-20的整点)送餐:");
time=scanner.nextInt();
//判断:提示
if (!(time>=10 && time<=20)){
System.out.println("配送时间输入错误,请重新输入!");
}
}while (!(time>=10 && time<=20));
//请输入送餐地址:
System.out.println("请输入送餐地址:");
String adress = scanner.next();
//添加订单
Order order = orderService.add(map, username, time, adress);
System.out.println("订餐成功!");
System.out.print("您的订餐是");
//得到订单项集合
List<OrderItem> orderItems = order.getOrderItems();
//循环遍历集合
for (OrderItem item : orderItems) {
System.out.println(item.getFood().getName()+item.getCount()+"份,餐费是"+item.getSubTotal());
}
System.out.println(",配送费是"+order.getPeiSong()+",总金额是:"+order.getTotal());
}
private void foodMenu() {
//把dao的菜品集合返回
List<Food> list=foodService.list();
//循环遍历集合显示菜品
System.out.println("序号\t菜名\t单价\t点赞数");
for (Food food : list) {
System.out.println(food.getId()+"\t\t"+food.getName()+"\t"+food.getPrice()+"\t"+(food.getZan()>0?food.getZan()+"赞":""));
}
}
private void menu(){
System.out.println("欢迎进入吃货联盟系统");
System.out.println("*********************");
System.out.println("1.我要订餐");
System.out.println("2.查看餐袋");
System.out.println("3.签收订单");
System.out.println("4.删除订单");
System.out.println("5.我要点赞");
System.out.println("6.退出系统");
System.out.println("*********************");
}
}
订单处理逻辑Service
package c.service;
import c.dao.FoodDao;
import c.dao.OrderDao;
import c.daomian.Food;
import c.daomian.Order;
import c.daomian.OrderItem;
import java.util.*;
//处理订单业务逻辑
public class OrderService {
private static int num=1;
private FoodDao foodDao=new FoodDao();
private OrderDao orderDao=new OrderDao();
public Order add(Map<Integer, Integer> map, String username, int time, String adress) {
//创建订单对象
Order order = new Order();
//创建List<OrderItem>对象
List<OrderItem> orderItems=new ArrayList<>();
//循环遍历map(定的菜品id和份数)
Set<Integer> keySet = map.keySet();
for (Integer id : keySet) {
//根据菜品的id得到菜品
Food food=foodDao.findById(id);//根据菜品的id得到Food对象
//创建订单项OrderItem对象
OrderItem orderItem = new OrderItem(food, map.get(id));
//计算订单的总价格
// order.setTotal(order.getTotal()+orderItem.getSubTotal());
//加入到list
orderItems.add(orderItem);
}
order.setOrderItems(orderItems);
order.setId(num++);
order.setUsername(username);
order.setTime(time);
order.setAddress(adress);
order.setSign(false);
order.setPeiSong(0);
//存储到订单集合中去
orderDao.add(order);
return order;
}
public List<Order> list() {
return orderDao.list();
}
public Order findById(int id) {
return orderDao.findById(id);
}
public void sign(Order order) {
order.setSign(true);
}
public void del(int id) {
orderDao.del(id);
}
}
食品处理逻辑server
package c.service;
import c.dao.FoodDao;
import c.daomian.Food;
import java.util.List;
public class FoodService {
private FoodDao foodDao=new FoodDao();
public List<Food> list() {
return foodDao.list();
}
}
食品dao类
package c.dao;
import c.daomian.Food;
import java.util.*;
public class FoodDao {
//菜品数据存储在dao,数据结构Map<Integer,Food>
private static Map<Integer, Food> foodMap;
static {
foodMap=new LinkedHashMap<>();
foodMap.put(1,new Food(1, "大肘子", 59, 6));//1 大肘子 59.0 6赞
foodMap.put(2,new Food(2, "锅包肉", 58, 5));//2 锅包肉 58.0 5
foodMap.put(3,new Food(3, "辣鸭头", 48, 0));//3 辣鸭头 48.0
foodMap.put(4,new Food(4, "麻辣虾", 69, 0));//4 麻辣虾 69.0
}
public List<Food> list() {
Collection<Food> values = foodMap.values();
return new ArrayList<>(values);
}
public Food findById(Integer id) {
return foodMap.get(id);
}
}
订单dao类
package c.dao;
import c.daomian.Order;
import java.util.ArrayList;
import java.util.List;
//处理订单的数据
public class OrderDao {
private static List<Order> orders=new ArrayList<>();
public void add(Order order) {
orders.add(order);
}
public List<Order> list() {
return orders;
}
public Order findById(int id) {
//循环遍历订单
for (Order order : orders) {
if (order.getId()==id){
return order;
}
}
return null;
}
public void del(int id) {
for (int i = 0; i < orders.size(); i++) {
if (orders.get(i).getId()==id){
orders.remove(i);
break;
}
}
}
}
这是一个简单的餐饮系统实现,包括Food、Order和OrderItem类,用于表示菜品、订单和订单项。系统提供点餐、查看餐袋、签收、删除订单和点赞等功能。用户可以输入菜品编号和数量进行点餐,并设置配送时间和地址。订单处理逻辑在OrderService中实现,包括添加订单、查找订单、签收和删除订单的方法。FoodDao和OrderDao负责数据存储,使用静态Map模拟数据库操作。
11万+

被折叠的 条评论
为什么被折叠?



