吃货联盟订餐系统

author:luckyboy!

version:1.3

知识储备:变量、数据类型、选择结构、循环结构、数组、面向对象、集合和I/O流

吃货联盟订餐系统概述

现在的互联网时代,足不出户只需要动动手指,就可在点餐并送货上门,这种网上送餐伸手人们的青睐,一起动动手指开发一个网上订餐系统吧!

功能如下:

  • 我要订餐
  • 查看餐袋
  • 签收订单
  • 删除订单
  • 我要点赞
  • 退出系统

创建 .Java 文件:Order类、Food类、OrderingMsg类和test测试类

阶段划分

  • 第一阶段:创建用来存储订单信息的Order类
  • 第二阶段:创建用来存储餐品信息的Food类
  • 第三阶段:实例化Order类和Food类并赋值2条订单信息
  • 第四阶段:完成将信息保存到文件
  • 第五阶段:完成将信息从文件中取出
  • 第六阶段:完成整体框架和退出功能
  • 第七阶段:完成我要订餐功能
  • 第八阶段:完成查看餐袋功能
  • 第九阶段:完成签收订单功能
  • 第十阶段:完成删除订单功能
  • 第十一阶段:完成我要点赞功能

第一阶段:创建用来存储订单信息的Order类

import java.io.Serializable;//订单信息类
public class Order implements Serializable{// 订餐人姓名private String names;// 餐品信息private String menus;// 送餐时间private int times;// 送餐地址private String addresses;// 订单状态private int states;// 订单总金额private double sumPrices;//无参构造方法public Order() {super();}//有参构造方法public Order(String names, String menus, int times, String addresses,int states, double sumPrices) {super();this.names = names;this.menus = menus;this.times = times;this.addresses = addresses;this.states = states;this.sumPrices = sumPrices;}//get和set方法public String getNames() {return names;}public void setNames(String names) {this.names = names;}public String getMenus() {return menus;}public void setMenus(String menus) {this.menus = menus;}public int getTimes() {return times;}public void setTimes(int times) {this.times = times;}public String getAddresses() {return addresses;}public void setAddresses(String addresses) {this.addresses = addresses;}public int getStates() {return states;}public void setStates(int states) {this.states = states;}public double getSumPrices() {return sumPrices;}public void setSumPrices(double sumPrices) {this.sumPrices = sumPrices;}//toString方法输出集合信息public String toString() {return names + "\t" + menus + "\t"+ times + "\t" + addresses + "\t" + states+ "\t" + sumPrices;}}

第二阶段:创建用来存储餐品信息的Food类

import java.io.Serializable;//菜品信息类
public class Food implements Serializable{// 菜品private String menuNames;// 单价private double prices;// 点赞数private int praiseNums;//无参构造方法public Food() {super();}//有参构造方法public Food(String menuNames, double prices, int praiseNums) {super();this.menuNames = menuNames;this.prices = prices;this.praiseNums = praiseNums;}//get和set方法public String getMenuNames() {return menuNames;}public void setMenuNames(String menuNames) {this.menuNames = menuNames;}public double getPrices() {return prices;}public void setPrices(double prices) {this.prices = prices;}public int getPraiseNums() {return praiseNums;}public void setPraiseNums(int praiseNums) {this.praiseNums = praiseNums;}//toString方法输出集合信息public String toString() {return menuNames + "\t" + prices+ "\t" + praiseNums;}}

第三阶段:实例化Order类和Food类并赋值2条订单信息

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;public class OrderingMsg {Scanner in = new Scanner(System.in);//创建ArrayList集合用来存放订单信息List<Order> orderList = new ArrayList<Order>();//创建LinkedList集合用来存放菜品信息List<Food> foodList = new LinkedList<Food>();//初始化方法public void inti(){//初始化2条Order类的订单信息Order ord1 = new Order("小汪", "红烧带鱼 ×1份", 12, "亳州路110号", 1, 76.0);Order ord2 = new Order("小汪", "鱼香肉丝 ×1份", 12, "亳州路120号", 0, 23.0);//把订单信息保存到ArrayList集合orderList.add(ord1);orderList.add(ord2);writeOrder(orderList);//初始化Food类的菜品信息Food food1 = new Food("红烧带鱼", 38.0, 0);Food food2 = new Food("鱼香肉丝", 18.0, 0);Food food3 = new Food("时令蔬菜", 10.0, 0);//把菜品信息保存到LinkedList集合foodList.add(food1);foodList.add(food2);foodList.add(food3);writeFood(foodList);}

第四阶段:完成将信息保存到文件

 //将orderList集合中的信息保存到Order文件的方法@SuppressWarnings("resource")public void writeOrder(List<Order> orderList){OutputStream os;try {os = new FileOutputStream("Order.txt");ObjectOutputStream oos = new ObjectOutputStream(os);oos.writeObject(orderList);} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}//将foodList集合中的信息保存到Food文件的方法@SuppressWarnings("resource")public void writeFood(List<Food> foodList){OutputStream os;try {os = new FileOutputStream("Food.txt");ObjectOutputStream oos = new ObjectOutputStream(os);oos.writeObject(foodList);} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}

第五阶段:完成将信息从文件中取出

 //读取Order文件中的信息保存到集合中的方法@SuppressWarnings({ "resource", "unchecked" })public List<Order> readOrder(){InputStream is;try {is = new FileInputStream("Order.txt");ObjectInputStream ois = new ObjectInputStream(is);Object object = ois.readObject();ArrayList<Order> list = (ArrayList<Order>)object;return list;} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}//读取Food文件中的信息保存到集合中的方法@SuppressWarnings({ "resource", "unchecked" })public List<Food> readFood(){InputStream is;try {is = new FileInputStream("Food.txt");ObjectInputStream ois = new ObjectInputStream(is);Object object = ois.readObject();LinkedList<Food> list = (LinkedList<Food>)object;return list;} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}

第六阶段:完成整体框架和退出功能

//整体框架方法public void start(){int num;do{System.out.println("******************************");System.out.println("*       吃货联盟订餐系统              *");System.out.println("*       @auther:luckyboy!    *");System.out.println("*       version:1.2          *");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("******************************");System.out.println("请选择(序号:1-6):");int choose = in.nextInt();//如果用户选择的是1-6以外的数字,则没有此功能将重新选择while(choose < 1 || choose > 6){System.out.println("对不起,没有此功能,请重新选择(序号:1-6):");choose = in.nextInt();}//根据用户选择执行相应的功能switch(choose){case 1://我要订餐order();break;case 2://查看餐袋lookBag();break;case 3://签收订单signFor();break;case 4://删除订单delete();break;case 5://我要点赞like();break;case 6://退出系统System.out.println("*         6-> 退出系统                 *");break;}//此程序只有choose变量等于6,跳出循环,程序执行结束if(choose == 6){break;}System.out.println("输入0返回菜单:");num = in.nextInt();//如果num等于0,返回菜单;如果num不等于0,重新输入while(num != 0){System.out.println("对不起,输入错误,请输入0返回菜单:");num = in.nextInt();}}while(num == 0);System.out.println("程序运行结束,感谢使用此程序!");}
//测试类
public class Test {public static void main(String[] args) {// 实例化OrderingMsg类OrderingMsg ord = new OrderingMsg();//调用初始化方法ord.inti();//调用主题框架开始方法ord.start();}
}

第七阶段:完成我要订餐功能

 //我要订餐方法public void order(){/** 使用集合存储订单信息不需要考虑餐袋满的情况,可以一直添加订单信息,集合没有订单限制*///将Food文件中的信息取出,保存到集合List<Food> foodList = readFood();//将Order文件中的信息取出,保存到集合List<Order> orderList = readOrder();System.out.println("*         1-> 我要订餐                 *");//输出Food类的菜品信息,供用户选择System.out.println("序号\t菜品\t    单价");for (int i = 0; i < foodList.size(); i++) {System.out.println((i+1) + "\t" +foodList.get(i).getMenuNames() + "\t  "+ foodList.get(i).getPrices());}//接收用户输入的订单信息System.out.println("请选择您要点的餐品序号:");int menuId = in.nextInt();System.out.println("请选择您需要的份数:");int number = in.nextInt();String menu = foodList.get(menuId-1).getMenuNames() + " ×" + number + "份";System.out.println("请输入订餐人姓名:");String name = in.next();System.out.println("请输入送餐时间(送餐时间是10点至20点间整点送餐)::");int time = in.nextInt();while(time < 10 || time > 20){System.out.println("对不起,送餐时间是10点至20点间整点送餐,请重新输入送餐时间:");time = in.nextInt();}System.out.println("请输入送餐地址:");String address = in.next();//计算订单总金额,餐费 = 菜品单价 × 份数;配送费是餐费>50免配送费,餐费<50收5元配送费double sumPrice = foodList.get(menuId-1).getPrices() * number;double shoppingFree = sumPrice > 50 ? 0 : 5.0;double sum = sumPrice + shoppingFree;//输出订单信息System.out.println("订餐成功!");System.out.println("您订的是:"+menu);System.out.println("订餐人姓名:" + name);System.out.println("送餐时间:" + time);System.out.println("送餐地址:" + address);System.out.println("餐费:" + sumPrice +",配送费:" + shoppingFree);System.out.println("订单总金额:" + sum);//保存用户输入的订单信息Order order = new Order(name, menu, time, address, 0, sum);orderList.add(order);//将集合中的信息保存到Order文件writeOrder(orderList);}

第八阶段:完成查看餐袋功能

 //查看餐袋方法public void lookBag(){/** 查看餐袋是输出保存在ArrayList集合中的Order订单信息*///将Order文件中的信息取出保存到结合List<Order> orderList = readOrder();System.out.println("*         2-> 查看餐袋                 *");System.out.println("序号\t姓名\t餐品\t\t时间\t地址\t\t状态\t总金额");for (int i = 0; i < orderList.size(); i++) {String time = orderList.get(i).getTimes() + "点";String stat = orderList.get(i).getStates() == 0 ? "已预定" : "已完成";String sumPrice = orderList.get(i).getSumPrices()+"元";System.out.println((i+1) + "\t" + orderList.get(i).getNames() + "\t" + orderList.get(i).getMenus() + "\t" + time + "\t" + orderList.get(i).getAddresses() + "\t" + stat + "\t" + sumPrice);}}

第九阶段:完成签收订单功能

 //签收订单方法public void signFor(){/** 用户输入的序号小于集合长度,匹配到订单,订单状态是已预定,可以签收订单,将集合中的此订单状态改为已完成* 用户输入的序号小于集合长度,匹配到订单,订单状态是已完成,不能签收订单* 用户输入的序号大于集合长度,没有匹配到订单,此订单不存在,则重新选择*///将Oredr文件中的信息取出保存到集合List<Order> orderList = readOrder();System.out.println("*         3-> 签收订单                 *");System.out.println("请输入您要签收的订单序号:");int number = in.nextInt();//如果用户输入的订单序号大于存放订单信息集合的长度,则订单不存在,重新输入while(number > orderList.size() || number < 0){System.out.println("对不起,订单不存在,请重新输入您要签收的订单序号:");number = in.nextInt();}//匹配用户输入的订单号for (int i = 0; i < orderList.size(); i++) {//如果订单状态是已预定,用户输入订单序号和集合订单序号相同,订单可以签收if(orderList.get(number-1).getStates() == 0 && number == i+1){orderList.get(i).setStates(1);//将集合中的信息保存到文件writeOrder(orderList);System.out.println("订单签收成功!");}//如果订单状态是已完成,用户输入订单序号和集合订单序号相同,订单不能签收else if(orderList.get(number-1).getStates() == 1 && number == i+1){System.out.println("对不起,此订单已完成,不能重复签收!");}}}

第十阶段:完成删除订单功能

 //删除订单方法public void delete(){/** 用户输入的序号小于集合长度,匹配到订单,订单状态是已完成,可以删除订单,将集合中的此订单信息删除* 用户输入的序号小于集合长度,匹配到订单,订单状态是已预定,不能删除订单* 用户输入的序号大于集合长度,没有匹配到订单,此订单不存在,则重新选择*///将Order文件中的信息取出保存到集合中List<Order> orderList = readOrder();System.out.println("*         4-> 删除订单                 *");System.out.println("请输入您要签收的订单序号:");int number = in.nextInt();//如果用户输入的订单序号大于存放订单信息集合的长度,则订单不存在,重新输入while(number > orderList.size() || number < 0){System.out.println("对不起,订单不存在,请重新输入您要删除的订单序号:");number = in.nextInt();}//匹配用户输入的订单号for (int i = 0; i < orderList.size(); i++) {//如果订单状态是已完成,用户输入订单序号和集合订单序号相同,订单可以删除if(orderList.get(number-1).getStates() == 1 && number == i+1){orderList.remove(number-1);//将集合中的信息保存到Order文件writeOrder(orderList);System.out.println("订单删除成功!");}//如果订单状态是已预定,用户输入订单序号和集合订单序号相同,订单不能删除else if(orderList.get(number-1).getStates() == 0 && number == i+1){System.out.println("对不起,此订单已预定,不能删除!");}}}

第十一阶段:完成我要点赞功能

 //我要点赞方法public void like(){/** 用户输入的序号小于集合长度,匹配到菜品,则菜品赞数加1* 用户输入的序号大于集合长度,则菜品不存在,重新选择*///将Food文件中的信息取出保存到集合List<Food> foodList = readFood();System.out.println("*         5-> 我要点赞                 *");//输出菜品信息System.out.println("序号\t菜品\t 单价\t赞");for (int i = 0; i < foodList.size(); i++) {System.out.println((i+1) + "\t" +foodList.get(i));}System.out.println("请选择您需要点赞的菜品序号:");int number = in.nextInt();//如果用户输入的菜品序号大于存放菜品信息集合的长度,则菜品不存在,重新输入while(number > foodList.size() || number < 0){System.out.println("对不起,菜品不存在,请重新输入您要点赞的菜品序号:");number = in.nextInt();}//将用户需要点赞的菜品赞数取出加1int sum = foodList.get(number-1).getPraiseNums() + 1;//再将用户需要点赞的菜品赞数传递回去;foodList.get(number-1).setPraiseNums(sum);//将集合中的信息保存到Food文件writeFood(foodList);//输出菜品点赞成功System.out.println(foodList.get(number-1).getMenuNames() +"点赞成功!");}

完整代码如下

Order类

import java.io.Serializable;//订单信息类
public class Order implements Serializable{// 订餐人姓名private String names;// 餐品信息private String menus;// 送餐时间private int times;// 送餐地址private String addresses;// 订单状态private int states;// 订单总金额private double sumPrices;//无参构造方法public Order() {super();}//有参构造方法public Order(String names, String menus, int times, String addresses,int states, double sumPrices) {super();this.names = names;this.menus = menus;this.times = times;this.addresses = addresses;this.states = states;this.sumPrices = sumPrices;}//get和set方法public String getNames() {return names;}public void setNames(String names) {this.names = names;}public String getMenus() {return menus;}public void setMenus(String menus) {this.menus = menus;}public int getTimes() {return times;}public void setTimes(int times) {this.times = times;}public String getAddresses() {return addresses;}public void setAddresses(String addresses) {this.addresses = addresses;}public int getStates() {return states;}public void setStates(int states) {this.states = states;}public double getSumPrices() {return sumPrices;}public void setSumPrices(double sumPrices) {this.sumPrices = sumPrices;}//toString方法输出集合信息public String toString() {return names + "\t" + menus + "\t"+ times + "\t" + addresses + "\t" + states+ "\t" + sumPrices;}}

Food类

import java.io.Serializable;//菜品信息类
public class Food implements Serializable{// 菜品private String menuNames;// 单价private double prices;// 点赞数private int praiseNums;//无参构造方法public Food() {super();}//有参构造方法public Food(String menuNames, double prices, int praiseNums) {super();this.menuNames = menuNames;this.prices = prices;this.praiseNums = praiseNums;}//get和set方法public String getMenuNames() {return menuNames;}public void setMenuNames(String menuNames) {this.menuNames = menuNames;}public double getPrices() {return prices;}public void setPrices(double prices) {this.prices = prices;}public int getPraiseNums() {return praiseNums;}public void setPraiseNums(int praiseNums) {this.praiseNums = praiseNums;}//toString方法输出集合信息public String toString() {return menuNames + "\t" + prices+ "\t" + praiseNums;}}

OrderingMsg类

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;public class OrderingMsg {Scanner in = new Scanner(System.in);//创建ArrayList集合用来存放订单信息List<Order> orderList = new ArrayList<Order>();//创建LinkedList集合用来存放菜品信息List<Food> foodList = new LinkedList<Food>();//初始化方法public void inti(){//初始化2条Order类的订单信息Order ord1 = new Order("小汪", "红烧带鱼 ×1份", 12, "亳州路110号", 1, 76.0);Order ord2 = new Order("小汪", "鱼香肉丝 ×1份", 12, "亳州路120号", 0, 23.0);//把订单信息保存到ArrayList集合orderList.add(ord1);orderList.add(ord2);writeOrder(orderList);//初始化Food类的菜品信息Food food1 = new Food("红烧带鱼", 38.0, 0);Food food2 = new Food("鱼香肉丝", 18.0, 0);Food food3 = new Food("时令蔬菜", 10.0, 0);//把菜品信息保存到LinkedList集合foodList.add(food1);foodList.add(food2);foodList.add(food3);writeFood(foodList);}//将orderList集合中的信息保存到Order文件的方法@SuppressWarnings("resource")public void writeOrder(List<Order> orderList){OutputStream os;try {os = new FileOutputStream("Order.txt");ObjectOutputStream oos = new ObjectOutputStream(os);oos.writeObject(orderList);} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}//将foodList集合中的信息保存到Food文件的方法@SuppressWarnings("resource")public void writeFood(List<Food> foodList){OutputStream os;try {os = new FileOutputStream("Food.txt");ObjectOutputStream oos = new ObjectOutputStream(os);oos.writeObject(foodList);} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}//读取Order文件中的信息保存到集合中的方法@SuppressWarnings({ "resource", "unchecked" })public List<Order> readOrder(){InputStream is;try {is = new FileInputStream("Order.txt");ObjectInputStream ois = new ObjectInputStream(is);Object object = ois.readObject();ArrayList<Order> list = (ArrayList<Order>)object;return list;} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}//读取Food文件中的信息保存到集合中的方法@SuppressWarnings({ "resource", "unchecked" })public List<Food> readFood(){InputStream is;try {is = new FileInputStream("Food.txt");ObjectInputStream ois = new ObjectInputStream(is);Object object = ois.readObject();LinkedList<Food> list = (LinkedList<Food>)object;return list;} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}//整体框架方法public void start(){int num;do{System.out.println("******************************");System.out.println("*       吃货联盟订餐系统              *");System.out.println("*       @auther:luckyboy!    *");System.out.println("*       version:1.2          *");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("******************************");System.out.println("请选择(序号:1-6):");int choose = in.nextInt();//如果用户选择的是1-6以外的数字,则没有此功能将重新选择while(choose < 1 || choose > 6){System.out.println("对不起,没有此功能,请重新选择(序号:1-6):");choose = in.nextInt();}//根据用户选择执行相应的功能switch(choose){case 1://我要订餐order();break;case 2://查看餐袋lookBag();break;case 3://签收订单signFor();break;case 4://删除订单delete();break;case 5://我要点赞like();break;case 6://退出系统System.out.println("*         6-> 退出系统                 *");break;}//此程序只有choose变量等于6,跳出循环,程序执行结束if(choose == 6){break;}System.out.println("输入0返回菜单:");num = in.nextInt();//如果num等于0,返回菜单;如果num不等于0,重新输入while(num != 0){System.out.println("对不起,输入错误,请输入0返回菜单:");num = in.nextInt();}}while(num == 0);System.out.println("程序运行结束,感谢使用此程序!");}//我要订餐方法public void order(){/** 使用集合存储订单信息不需要考虑餐袋满的情况,可以一直添加订单信息,集合没有订单限制*///将Food文件中的信息取出,保存到集合List<Food> foodList = readFood();//将Order文件中的信息取出,保存到集合List<Order> orderList = readOrder();System.out.println("*         1-> 我要订餐                 *");//输出Food类的菜品信息,供用户选择System.out.println("序号\t菜品\t    单价");for (int i = 0; i < foodList.size(); i++) {System.out.println((i+1) + "\t" +foodList.get(i).getMenuNames() + "\t  "+ foodList.get(i).getPrices());}//接收用户输入的订单信息System.out.println("请选择您要点的餐品序号:");int menuId = in.nextInt();System.out.println("请选择您需要的份数:");int number = in.nextInt();String menu = foodList.get(menuId-1).getMenuNames() + " ×" + number + "份";System.out.println("请输入订餐人姓名:");String name = in.next();System.out.println("请输入送餐时间(送餐时间是10点至20点间整点送餐)::");int time = in.nextInt();while(time < 10 || time > 20){System.out.println("对不起,送餐时间是10点至20点间整点送餐,请重新输入送餐时间:");time = in.nextInt();}System.out.println("请输入送餐地址:");String address = in.next();//计算订单总金额,餐费 = 菜品单价 × 份数;配送费是餐费>50免配送费,餐费<50收5元配送费double sumPrice = foodList.get(menuId-1).getPrices() * number;double shoppingFree = sumPrice > 50 ? 0 : 5.0;double sum = sumPrice + shoppingFree;//输出订单信息System.out.println("订餐成功!");System.out.println("您订的是:"+menu);System.out.println("订餐人姓名:" + name);System.out.println("送餐时间:" + time);System.out.println("送餐地址:" + address);System.out.println("餐费:" + sumPrice +",配送费:" + shoppingFree);System.out.println("订单总金额:" + sum);//保存用户输入的订单信息Order order = new Order(name, menu, time, address, 0, sum);orderList.add(order);//将集合中的信息保存到Order文件writeOrder(orderList);}//查看餐袋方法public void lookBag(){/** 查看餐袋是输出保存在ArrayList集合中的Order订单信息*///将Order文件中的信息取出保存到结合List<Order> orderList = readOrder();System.out.println("*         2-> 查看餐袋                 *");System.out.println("序号\t姓名\t餐品\t\t时间\t地址\t\t状态\t总金额");for (int i = 0; i < orderList.size(); i++) {String time = orderList.get(i).getTimes() + "点";String stat = orderList.get(i).getStates() == 0 ? "已预定" : "已完成";String sumPrice = orderList.get(i).getSumPrices()+"元";System.out.println((i+1) + "\t" + orderList.get(i).getNames() + "\t" + orderList.get(i).getMenus() + "\t" + time + "\t" + orderList.get(i).getAddresses() + "\t" + stat + "\t" + sumPrice);}}//签收订单方法public void signFor(){/** 用户输入的序号小于集合长度,匹配到订单,订单状态是已预定,可以签收订单,将集合中的此订单状态改为已完成* 用户输入的序号小于集合长度,匹配到订单,订单状态是已完成,不能签收订单* 用户输入的序号大于集合长度,没有匹配到订单,此订单不存在,则重新选择*///将Oredr文件中的信息取出保存到集合List<Order> orderList = readOrder();System.out.println("*         3-> 签收订单                 *");System.out.println("请输入您要签收的订单序号:");int number = in.nextInt();//如果用户输入的订单序号大于存放订单信息集合的长度,则订单不存在,重新输入while(number > orderList.size() || number < 0){System.out.println("对不起,订单不存在,请重新输入您要签收的订单序号:");number = in.nextInt();}//匹配用户输入的订单号for (int i = 0; i < orderList.size(); i++) {//如果订单状态是已预定,用户输入订单序号和集合订单序号相同,订单可以签收if(orderList.get(number-1).getStates() == 0 && number == i+1){orderList.get(i).setStates(1);//将集合中的信息保存到文件writeOrder(orderList);System.out.println("订单签收成功!");}//如果订单状态是已完成,用户输入订单序号和集合订单序号相同,订单不能签收else if(orderList.get(number-1).getStates() == 1 && number == i+1){System.out.println("对不起,此订单已完成,不能重复签收!");}}}//删除订单方法public void delete(){/** 用户输入的序号小于集合长度,匹配到订单,订单状态是已完成,可以删除订单,将集合中的此订单信息删除* 用户输入的序号小于集合长度,匹配到订单,订单状态是已预定,不能删除订单* 用户输入的序号大于集合长度,没有匹配到订单,此订单不存在,则重新选择*///将Order文件中的信息取出保存到集合中List<Order> orderList = readOrder();System.out.println("*         4-> 删除订单                 *");System.out.println("请输入您要签收的订单序号:");int number = in.nextInt();//如果用户输入的订单序号大于存放订单信息集合的长度,则订单不存在,重新输入while(number > orderList.size() || number < 0){System.out.println("对不起,订单不存在,请重新输入您要删除的订单序号:");number = in.nextInt();}//匹配用户输入的订单号for (int i = 0; i < orderList.size(); i++) {//如果订单状态是已完成,用户输入订单序号和集合订单序号相同,订单可以删除if(orderList.get(number-1).getStates() == 1 && number == i+1){orderList.remove(number-1);//将集合中的信息保存到Order文件writeOrder(orderList);System.out.println("订单删除成功!");}//如果订单状态是已预定,用户输入订单序号和集合订单序号相同,订单不能删除else if(orderList.get(number-1).getStates() == 0 && number == i+1){System.out.println("对不起,此订单已预定,不能删除!");}}}//我要点赞方法public void like(){/** 用户输入的序号小于集合长度,匹配到菜品,则菜品赞数加1* 用户输入的序号大于集合长度,则菜品不存在,重新选择*///将Food文件中的信息取出保存到集合List<Food> foodList = readFood();System.out.println("*         5-> 我要点赞                 *");//输出菜品信息System.out.println("序号\t菜品\t 单价\t赞");for (int i = 0; i < foodList.size(); i++) {System.out.println((i+1) + "\t" +foodList.get(i));}System.out.println("请选择您需要点赞的菜品序号:");int number = in.nextInt();//如果用户输入的菜品序号大于存放菜品信息集合的长度,则菜品不存在,重新输入while(number > foodList.size() || number < 0){System.out.println("对不起,菜品不存在,请重新输入您要点赞的菜品序号:");number = in.nextInt();}//将用户需要点赞的菜品赞数取出加1int sum = foodList.get(number-1).getPraiseNums() + 1;//再将用户需要点赞的菜品赞数传递回去;foodList.get(number-1).setPraiseNums(sum);//将集合中的信息保存到Food文件writeFood(foodList);//输出菜品点赞成功System.out.println(foodList.get(number-1).getMenuNames() +"点赞成功!");}
}

Test类

//测试类
public class Test {public static void main(String[] args) {// 实例化OrderingMsg类OrderingMsg ord = new OrderingMsg();//调用初始化方法ord.inti();//调用主题框架开始方法ord.start();}
}

Java吃货联盟订餐系统1.3-面向对象+I/O流相关推荐

  1. Java吃货联盟订餐系统

    OrderingUtil类 import java.util.Scanner;public class OrderingUtil {Scanner input = new Scanner(System ...

  2. Java——吃货联盟订餐系统(基础知识)

    项目需求     (1)现今已经进入网络时代,人们的日常生活已经离不开网络,如网上购物.看新闻.交友等.     (2)"只要点点手指,就能送餐上门",网上订餐越来越受到都市年轻人 ...

  3. 10、Java——吃货联盟订餐系统(基础知识)

    目录 项目需求 项目环境准备 案例覆盖的技能点 难点分析 1. 使用数组对象保存订单信息 2.访问订单信息 3. 删除订单信息 4. 计算订单的总金额 项目实现思路 1. 数据初始化 2. 实现菜单切 ...

  4. 29、Java——吃货联盟订餐系统(对象+XML)

    ​ ✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进.

  5. 11、Java——吃货联盟订餐系统(对象+数组)

    ✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进.

  6. 37、Java——吃货联盟订餐系统(JDBC+MySQL+Apache DBUtils)

    ✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进.

  7. Java面向对象 --- 吃货联盟订餐系统(完整版)

    文章目录 为什么使用面向对象 划分类 代码编写 为什么使用面向对象 Java面向对象版本的吃货联盟订餐系统: 因为基础版本都在一个类中实现的功能,太过于麻烦,不清楚 ,所以说我们利用面向对象制作吃货联 ...

  8. java吃货联盟app讲解_吃货联盟订餐系统——JAVA实现

    package com.chihuo; import java.util.Scanner; public class OrderingMgr { public static void main(Str ...

  9. java吃货联盟app讲解_java吃货联盟订餐系统

    ackage cn.practice1200; import java.util.Scanner; public class Eater_Alliance { /** * 吃货联盟订餐系统 * * @ ...

最新文章

  1. Web Service 的工作原理
  2. Struts编程心得
  3. 假导出Excel功能实现,按CSV格式快速导出功能代码参考(追求代码追求简洁复用)...
  4. 宽屏系统上播放幻灯片的设想
  5. 20191009每日一句
  6. ubuntu mongodb安装
  7. java xml注释多行_如何在XML中注释单行?
  8. centos服务器修改密码,linux centos默认的密码
  9. 一种简易的直流电机正反转限位电路
  10. OmegaT术语库介绍与分享
  11. linux deploy安装kali和磁盘扩容
  12. 基于IP的设计学习1:ug896.一些基本概念
  13. 百度飞桨蜜度文本智能较对大赛经验分享(17/685)
  14. ACE_INET_Addr
  15. .Net C# 发送带背景图html邮件(解决Outlook不显示背景图问题)
  16. day45--冒泡排序
  17. objdump使用方法
  18. 一个普通码农在汽车领域的创业失败复盘!
  19. 程序员踩点下班,领导:不想干的请办理离职,我这里不养闲人与废物
  20. 高博关于单目的介绍及推导

热门文章

  1. katalon 学习笔记(三)
  2. 被低估的Z11 mini,被埋没的亮点
  3. 【Life系列】挑战成功37公里的徒步毅行!
  4. 【游戏建模全流程】Maya如何建模神秘的房子模型
  5. android dbflow引起内存泄漏,DBFlow使用说明(1)快速入门
  6. 微信小程序中new Date()转换时间时间格式时IOS 显示NaN异常问题
  7. 哪些高校计算机专业认证,关于公布北京交通大学机械工程等402个专业认证结论的通知...
  8. 博..条码打印机的java开发
  9. 【宇麦科技】数据呈现爆发式增长,企业需要怎样的群晖存储解决方案?
  10. avue源码修改过程(持续更新)