使用学习的数组操作和循环操作实现一个点餐系统
package com.qf.test;
import java.util.Scanner;
public class Test08 {
public static void main(String[] args) {
//动态初始化创建数组
String [] names = new String[4];//表示用户名字
String [] disMsg = new String[4];//表示餐品信息
int [] times = new int[4];//表示送餐时间
String [] addres =new String[4];//表示送餐地址
double [] sumPrice = new double[4];//表示总金额
int [] state = new int[4];
//给数组元素赋值
names[0]="张三";
disMsg[0]="红烧猪脚两分";
times[0]=12;
addres[0]="千锋教育";
sumPrice[0]=50.0;
state[0]=1;
names[1]="李四";
disMsg[1]="烧鹅饭一份";
times[1]=10;
addres[1]="千锋教育";
sumPrice[1]=20;
state[1]=0;
//定义数组保存菜品信息和单价
String [] disMes ={"红烧带鱼","鱼香肉丝","时令鲜蔬"};
double [] price = {38,20,10};
//定义一个数组表示点赞数
int [] arrays = {0,0,0};
//实例化Scanner
Scanner input = new Scanner(System.in);
System.out.println("欢迎来到千锋订餐系统");
//定义一个标记表示是否进行循环
boolean flag = true;
do {
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("请输入编号");
int noId = input.nextInt();
//使用switch等值判断
switch (noId){
case 1:
//找到指定行插入数据
for (int i=0;i<names.length;i++){
if (names[i]==null){
System.out.println("***我要点餐***");
System.out.print("请输入订餐人姓名:");
String name = input.next();
System.out.println("");
System.out.println("序号\t菜名\t单价");
//for循环遍历数组打印菜名和单价
for (int j=0;j<disMes.length;j++){
System.out.println((j+1)+"\t"+disMes[j]+"\t"+price[j]+"元");
}
System.out.print("请选择您要点的菜单编号:");
int id = input.nextInt();
System.out.print("");
System.out.print("请选择您需要的份数:");
int num = input.nextInt();
System.out.println(" ");
System.out.print("请输入送餐时间(送餐时间为10点至20点间的整数):");
int time = input.nextInt();
System.out.println(" ");
while (time<10 || time>20){
System.out.print("您的输入有误,请输入10-20间的整数:");
time = input.nextInt();
System.out.println(" ");
}
System.out.print("送餐地址:");
String adder = input.next();
System.out.println(" ");
System.out.println("订餐成功!");
System.out.println("您定的是:"+disMes[id-1]+" "+num+"份");
System.out.println("送餐时间:"+time+"点");
System.out.println("餐费:"+(price[id-1]*num)+"\t送餐费:"+((price[id-1]*num)>30?5:0)+
"\t总计:"+((price[id-1]*num)+((price[id-1]*num)<30?5:0)));
//将数据保存到数组中
names[i]=name;
disMsg[i]=disMes[id-1]+"\t"+num+"份";
times[i]=time;
addres[i]=adder;
sumPrice[i]=((price[id-1]*num)+((price[id-1]*num)<30?5:0));
state[i]=0;
break;
}
}
break;
case 2:
System.out.println("***查看钱袋***");
System.out.println("序号\t名字\t餐品信息\t\t送餐时间\t送餐地点\t总金额\t订单状态");
//使用for循环遍历打印数组
for (int i=0;i<names.length-1;i++){
//排除空元素
if (names[i]!=null){
System.out.println((i+1)+"\t\t"+names[i]+"\t"+disMsg[i]+"\t"+times[i]+"\t\t"+addres[i]+"\t"+
sumPrice[i]+"\t\t"+(state[i] == 0?"已预订":"已出餐"));
}
}
break;
case 3:
System.out.println("***签收订单***");
System.out.print("请输入要签收的序号:");
int orderId = input.nextInt();
System.out.println(" ");
//定义一个标记表示订单是否签收成功
boolean orderFlag = false;
//使用for循环寻找订单
for (int i=0;i<names.length;i++){
//使用if语句判断
if (names[i]!=null&&(orderId-1)==i&&state[i]==0){
System.out.println("订单签收成功!");
//改变订单状态
state[i]=1;
//改变标记
orderFlag = true;
//结束循环
break;
}
}
//如果签收失败
if (!orderFlag){
System.out.println("签收失败!");
}
break;
case 4:
System.out.println("***删除订单***");
System.out.print("请输入要删除订单的序号:");
int deleteId = input.nextInt();
System.out.println(" ");
//定义一个标记表示是否删除成功
boolean deleteFlag = false;
//使用for循环遍历数组寻找订单
for (int i=0;i<names.length;i++){
//用if语句判断
if (names[i]!=null&&(i==deleteId-1)&&state[i]==1){
//使用for循环覆盖
for (int j=deleteId-1;j<names.length-1;j++){
names[j]=names[j+1];
disMsg[j]=disMsg[j+1];
times[j]=times[j+1];
addres[j]=addres[j+1];
sumPrice[j]=sumPrice[j+1];
state[j]=state[j+1];
}
//将数组元素最后一个设为空值
int index = names.length-1;
names[index]=null;
disMsg[index]=null;
times[index]=0;
addres[index]=null;
sumPrice[index]=0.0;
state[index]=0;
System.out.println("订单删除成功");
//改变标记
deleteFlag = true;
//退出循环
break;
}
}
if (!deleteFlag){
System.out.println("删除订单失败");
}
break;
case 5:
System.out.println("***我要点赞***");
System.out.println("序号\t菜名\t单价\t点赞数");
//for循环遍历数组打印菜名和单价和点赞数
for (int j=0;j<disMes.length;j++){
System.out.println((j+1)+"\t"+disMes[j]+"\t"+price[j]+"元\t"+arrays[j]);
}
System.out.print("请输入要点赞的餐品序号:");
int zan = input.nextInt();
arrays[zan-1]++;
System.out.println("点赞成功");
break;
case 6:
//改变标签值 退出循环
flag = false;
break;
}
System.out.println("*********************");
}while (flag);
System.out.println("欢迎下次光临");
}
}