java项目之点餐系统能力提升篇

1.程序的入口,创建OrderAPP.java,代码如下:

package a;

import java.util.ArrayList;

import java.util.Scanner;

public class OrderAPP {
	public static void main(String[] args) {
		//创建集合,存放菜单
		ArrayList<Food> list=new ArrayList<>();
		//创建集合,存放用户购买美食
		ArrayList<FoodCar> listCar=new ArrayList<>();
		Scanner sc=new Scanner(System.in);
		//加载最初的美食,放在ArrayList<Food>里面
		InitialFood.initialFood(list);
		//创建厨师对象
		Cook cook=new Cook();
		//创建购物车对象
		FoodCar foodCar=new FoodCar();
		while(true){
			System.out.println("你是厨师还是消费者?请输入厨师或消费者 若输入exit则推出系统");
			String str=sc.nextLine();
			if("exit".equals(str))
				return;
			if("厨师".equals(str)){
				//厨师的登录方法
				cook.SignIn();
				//展示美食清单方法
				cook.displayFood(list);
				//展示厨师操作美食的方法,功能项
				cook.displayFounction();
				//厨师管理美食-对美食的增删改查方法
				cook.displayFounctionCase(list);
				
			}
			else if("消费者".equals(str)){
				System.out.println("欢迎光临,下表为美食信息");
				//展示美食清单方法
				cook.displayFood(list);
				//购物和计算价格方法系统方法
				foodCar.addFoodOfCarAndCountPriceSystem(list,listCar);
				//打印购物票单方法
				foodCar.PrintFinalGoodsMessAge(listCar);
				return;
			}
			else{
				System.out.println("非法输入,请重新输入");
			}
		}
	}

}

2.创建厨师类,Cook.java,详细代码如下:

package a;


import java.util.ArrayList;
import java.util.Objects;
import java.util.Scanner;

public class Cook {
	private String name;
	private String passWord;
	
	public Cook(){
		this.name="123";
		this.passWord="123";
	}
	public Cook(String name,String passWord){
		this.name=name;
		this.passWord=passWord;
	}
	
	@Override
	public int hashCode() {
		// TODO Auto-generated method stub
		return Objects.hash(name,passWord);
	}
	//厨师登录方法
	public void SignIn(){
		Scanner sc=new Scanner(System.in);
		int count=0;
		System.out.println("注意,你有三次机会登录管理美食系统机会");
		while(true){
			count++;
			System.out.println("请输入姓名:");
			String name=sc.nextLine();
			System.out.println("请输入密码:");
			String passWord=sc.nextLine();
			//创建新密码后的新厨师,跟默认的厨师进行比较
			Cook cook=new Cook();//系统默认姓名、密码创建的Cook对象
			Cook cook1=new Cook(name,passWord);//输入姓名、密码创建的对象
			if(cook.equals(cook1)){
				System.out.println("登录成功,欢迎管理美食 下表为美食信息");
				break;
			}else{
				int last=3-count;
				if(last==0){
					System.out.println("3次机会用完,无法进入美食管理系统");
					System.exit(last);
				}
				System.out.println("姓名或密码错误,请重新下输入,你还有"+last+"机会");
			}
			
		}
	}
	
	//展示美食清单方法:展示美食信息
			public void displayFood(ArrayList<Food> list){
				System.out.println("美食名字 价格");
				for(Food food:list){
					System.out.println(food);
				}
			}
			
	//展示厨师可操作美食的方法,展示厨师管理美食的功能--功能项
	public void displayFounction(){
		System.out.println("增加食物请输入1");
		System.out.println("删除食物请输入2");
		System.out.println("修改食物请输入3");
		System.out.println("查询食物请输入4");
		System.out.println("展示食物请输入5");
		System.out.println("退出管理美食系统请输入0");
	}
	//实现厨师管理美食功能-对美食的增删改查方法
	public void displayFounctionCase(ArrayList<Food> list){
		Scanner sc=new Scanner(System.in);
		while(true){
			System.out.println("请输入0/1/2/3/4/5:");
			int n=sc.nextInt();
			Cook cook=new Cook();
			if(n==0){
				break;
			}
			
			switch(n){
			  case 1:{
				  cook.addFood(list);
				  break;
			  }
			  case 2:{
				  cook.deleteFood(list);
				  break;
			  }
			  case 3:{
				  cook.setFood(list);
				  break;
			  }
			  case 4:{
				  cook.seekFood(list);
				  break;
			  }
			  case 5:{
				  cook.displayFood(list);
				  break;
			  }
			  default:
				  System.out.println("无效数字,请重新输入");
				
			}
		}
	}
	
	//添加美食
	public void addFood(ArrayList<Food> list){
		Scanner sc=new Scanner(System.in);
		System.out.println("-------------添加美食-----------------");
		System.out.println("输入样式  “番茄炒蛋 5” 请输入");
		String name=sc.next();
		for(Food food:list){
			if(name.equals(food.getName())){
				System.out.println("该美食已存在,请添加其他美食");
				return;
			}
		}
		Food food=new Food(name,sc.nextDouble());
		list.add(food);
		System.out.println("添加成功!");
		
		
	}
	//删除美食
	public void deleteFood(ArrayList<Food> list){
		Scanner sc=new Scanner(System.in);
		Cook cook=new Cook();
		System.out.println("-------------删除美食-----------------");
		System.out.println("如下是美食清单");
		cook.displayFood(list);
		
		System.out.println("请输入美食名字");
		String name=sc.nextLine();
		boolean flag=true;
		for(Food food:list){
			if(name.equals(food.getName())){
				list.remove(food);
				flag=false;
				System.out.println("删除成功");
				break;
			}
			
		}
		if(flag){
			System.out.println("该美食不存在,请删除其他美食");
		}
	}
	//修改美食
	public void setFood(ArrayList<Food> list){
		Scanner sc=new Scanner(System.in);
		System.out.println("-------------修改美食-----------------");
		System.out.println("如下是美食清单");
		//展示美食信息
		Cook cook=new Cook();
		cook.displayFood(list);
		System.out.println("请输入要修改的美食名字");
		String name=sc.nextLine();
		boolean flag=true;
		for(Food food:list){
			if(name.equals(food.getName())){
				//删除该美食,但该美食名字不变,表示同一美食
				list.remove(food);
				System.out.println("修改样式:修改后单价 请修改");
				list.add(new Food(name,sc.nextDouble()));
				System.out.println("修改成功");
				flag=false;
				break;
			}
		}
		if(flag){
			System.out.println("该美食不存在,请修改其他美食");
		}
	}
	//查询美食
	public void seekFood(ArrayList<Food> list){
		Scanner sc=new Scanner(System.in);
		System.out.println("-------------查询美食-----------------");
		System.out.println("请输入美食名字");
		String name=sc.nextLine();
		boolean flag=true;
		for(Food food:list){
			if(name.equals(food.getName())){
				
				System.out.println("美食信息如下所示");
				System.out.println(food);
				flag=false;
				break;
			}
		}
		if(flag){
			System.out.println("该美食不存在!");
		}
	}
	
	
	@Override
	public boolean equals(Object o) {
		// TODO Auto-generated method stub
		if(this==o) return true;
		if(o==null || getClass()!=o.getClass()) return false;
		Cook cook=(Cook) o;
		return Objects.equals(name,cook.name) &&
				Objects.equals(passWord, cook.passWord);
	}
}

3.创建初始美食菜单类,InitialFood.java,详细代码如下:

package a;

import java.util.ArrayList;

public class InitialFood {
	public static void initialFood(ArrayList<Food> list){
		list.add(new Food("鱼香肉丝",7));
		list.add(new Food("烩面",6));
		list.add(new Food("番茄炒蛋",5.5));
		list.add(new Food("五香牛肉",9.5));
		list.add(new Food("麻辣烫",10));
	}

}

4.创建食物类,Food.java,详细代码如下:

package a;

public class Food {
	private String name;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	private double price;
	public double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price = price;
	}
	
	
	public Food(){
	}
	public Food(String name,double price){
		this.name=name;
		this.price=price;
	}
	//重写toString方法
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return this.name+" "+this.price;
	}

}

5.创建购物车类,FoodCar.java,详细代码如下:

package a;





import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Scanner;

public class FoodCar {
	private String name;
	private double price;
	public double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price = price;
	}
	private int amount;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	
	public int getAmount() {
		return amount;
	}
	public void setAmount(int amount) {
		this.amount = amount;
	}
	
	
	
	public FoodCar(){
		
	}
	public FoodCar(String name,double price,int amount){
		this.name=name;
	    this.price=price;
	    this.amount=amount;
	}
	//购物和计算价格方法系统方法
	public void addFoodOfCarAndCountPriceSystem(ArrayList<Food> list, ArrayList<FoodCar> listCar) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		FoodCar foodCar=new FoodCar();
		double sum=0;
		System.out.println("请输入你要选择的美食的名字及数量,输入格式:美食名  数量。输入0表示不再购物");
		while(true){
			String name=sc.next();
			//输入0表示不在买美食,进入结账系统
			if(name.equals("0")){
				break;
			}
			int amount =sc.nextInt();
			boolean flag=true;
			for(Food food:list){
				if(name.equals(food.getName())){
					listCar.add(new FoodCar(name,food.getPrice(),amount));//往listCar集合里添加,购买的食物
					sum+=food.getPrice()*amount;//总金额
					flag=false;
					break;
				}
			}
			if(flag){
				System.out.println(name+"不存在,请重新选购美食");
				continue;
			}
		}
		System.out.println("您选购的美食信息如下:");
		
		//展示购物车信息  displayFoodCar()在下面
		foodCar.displayFoodCar(listCar);
		System.out.printf("需要支付%.1f元,请支付:",sum);
		double money=sc.nextDouble();
		if(money>sum){
			System.out.printf("支付成功,找您%.1f\n",money-sum);
			
		}
		else if(money==sum){
			System.out.println("支付成功");
		}
		else{
			double ca=sum-money;//还需要支付的钱数
			while(ca>0){
				System.out.printf("您支付过少请在支付%.1f\n",ca);
				double money1=sc.nextDouble();
				ca=ca-money1;
				if(ca==0.0){
					System.out.println("支付成功");
				}
				if(ca<0){
					System.out.printf("支付成功,找您%.1f\n",-1*ca);
				}
			}
		}
		
	}
	//重写toString方法
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return this.name+" "+this.price+" "+this.amount;
	}
	
	//展示购物车信息
	private void displayFoodCar(ArrayList<FoodCar> listCar) {
		// TODO Auto-generated method stub
		System.out.println("名字  价格  数量");
		//遍历排序购物车集合
		for(FoodCar foodCar:listCar){
			System.out.println(foodCar);
		}
		
	}
	//打印购物票单方法
	public void PrintFinalGoodsMessAge(ArrayList<FoodCar> listCar) {
		// TODO Auto-generated method stub
		FoodCar foodCar=new FoodCar();
		System.out.println("你的打印单:");
		//展示购物车美食信息
		foodCar.displayFoodCar(listCar);
		//创建时间对象,表示当前打印的系统时间
		Date nowTime=new Date();
		
		// 格式化时间,如何使用 SimpleDateFormat 类的 format(date) 方法来格式化时间
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		System.out.println("打印于"+sdf.format(nowTime));
		System.out.println("欢迎下次再来");
	}

}

结果:

 

 

 

猜你喜欢

转载自blog.csdn.net/dengfengling999/article/details/123699957