Java吃货联盟订餐系统1.3-面向对象+I/O流
吃货联盟订餐系统
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流相关推荐
- Java吃货联盟订餐系统
OrderingUtil类 import java.util.Scanner;public class OrderingUtil {Scanner input = new Scanner(System ...
- Java——吃货联盟订餐系统(基础知识)
项目需求 (1)现今已经进入网络时代,人们的日常生活已经离不开网络,如网上购物.看新闻.交友等. (2)"只要点点手指,就能送餐上门",网上订餐越来越受到都市年轻人 ...
- 10、Java——吃货联盟订餐系统(基础知识)
目录 项目需求 项目环境准备 案例覆盖的技能点 难点分析 1. 使用数组对象保存订单信息 2.访问订单信息 3. 删除订单信息 4. 计算订单的总金额 项目实现思路 1. 数据初始化 2. 实现菜单切 ...
- 29、Java——吃货联盟订餐系统(对象+XML)
✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进.
- 11、Java——吃货联盟订餐系统(对象+数组)
✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进.
- 37、Java——吃货联盟订餐系统(JDBC+MySQL+Apache DBUtils)
✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进.
- Java面向对象 --- 吃货联盟订餐系统(完整版)
文章目录 为什么使用面向对象 划分类 代码编写 为什么使用面向对象 Java面向对象版本的吃货联盟订餐系统: 因为基础版本都在一个类中实现的功能,太过于麻烦,不清楚 ,所以说我们利用面向对象制作吃货联 ...
- java吃货联盟app讲解_吃货联盟订餐系统——JAVA实现
package com.chihuo; import java.util.Scanner; public class OrderingMgr { public static void main(Str ...
- java吃货联盟app讲解_java吃货联盟订餐系统
ackage cn.practice1200; import java.util.Scanner; public class Eater_Alliance { /** * 吃货联盟订餐系统 * * @ ...
最新文章
- Web Service 的工作原理
- Struts编程心得
- 假导出Excel功能实现,按CSV格式快速导出功能代码参考(追求代码追求简洁复用)...
- 宽屏系统上播放幻灯片的设想
- 20191009每日一句
- ubuntu mongodb安装
- java xml注释多行_如何在XML中注释单行?
- centos服务器修改密码,linux centos默认的密码
- 一种简易的直流电机正反转限位电路
- OmegaT术语库介绍与分享
- linux deploy安装kali和磁盘扩容
- 基于IP的设计学习1:ug896.一些基本概念
- 百度飞桨蜜度文本智能较对大赛经验分享(17/685)
- ACE_INET_Addr
- .Net C# 发送带背景图html邮件(解决Outlook不显示背景图问题)
- day45--冒泡排序
- objdump使用方法
- 一个普通码农在汽车领域的创业失败复盘!
- 程序员踩点下班,领导:不想干的请办理离职,我这里不养闲人与废物
- 高博关于单目的介绍及推导
热门文章
- katalon 学习笔记(三)
- 被低估的Z11 mini,被埋没的亮点
- 【Life系列】挑战成功37公里的徒步毅行!
- 【游戏建模全流程】Maya如何建模神秘的房子模型
- android dbflow引起内存泄漏,DBFlow使用说明(1)快速入门
- 微信小程序中new Date()转换时间时间格式时IOS 显示NaN异常问题
- 哪些高校计算机专业认证,关于公布北京交通大学机械工程等402个专业认证结论的通知...
- 博..条码打印机的java开发
- 【宇麦科技】数据呈现爆发式增长,企业需要怎样的群晖存储解决方案?
- avue源码修改过程(持续更新)