1.程序的入口,创建OrderAPP.java,代码如下:
package a;
import java.util.ArrayList;
import java.util.Scanner;
public class OrderAPP {
public static void main(String[] args) {
//创建集合,存放菜单
ArrayList list=new ArrayList<>();
//创建集合,存放用户购买美食
ArrayList listCar=new ArrayList<>();
Scanner sc=new Scanner(System.in);
//加载最初的美食,放在ArrayList里面
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 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 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 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 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 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 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 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 list, ArrayList 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 listCar) {
// TODO Auto-generated method stub
System.out.println("名字 价格 数量");
//遍历排序购物车集合
for(FoodCar foodCar:listCar){
System.out.println(foodCar);
}
}
//打印购物票单方法
public void PrintFinalGoodsMessAge(ArrayList 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("欢迎下次再来");
}
}
结果: