package com.company;
import java.util.Scanner;
public class Administrator {
public static void main(String[] args) {
//吃货联盟订餐系统
//定义数据主体 菜品
String[] dishNames = {"红烧带鱼", "鱼香肉丝", "时令鲜蔬"};//菜品
double[] prices = {38.0, 20.0, 10.0};//价格
int[] likeCount = new int[4];//点赞数
//定义数据主体
// 订餐人 所订餐及份数 时间 送餐地址 状态 价格
String[] names = new String[4];//订餐人
String[] dishMsg = new String[4];//所订餐 份数
int[] times = new int[4];//10点-20点
String[] addresses = new String[4];//送餐地址
int[] states = new int[4];//已预定 0 已完成 1
double[] sum = new double[4];//满50,没有配送费,否则6元1配送费
//初始化订单信息
names[0] = "张三";
dishMsg[0] = "红烧带鱼 2份";
times[0] = 10;
addresses[0] = "幸福路232号";
states[0] = 0;
sum[0] = 76.0;
//
names[1] = "李四";
dishMsg[1] = "鱼香肉丝 1份";
times[1] = 13;
addresses[1] = "区努路123号";
states[1] = 1;
sum[1] = 26.0;
//构建主体流程框架
Scanner input = new Scanner(System.in);
int num = -1; //当num=0时返回到主菜单,每次重新赋值
//利用一个状态,来记录用户是否退出系统
boolean flag = false;//退出 true 继续false
System.out.println("欢迎使用“吃货联盟操作系统”");
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("*****************************************");
System.out.print("请选择:");
int choose = input.nextInt();
switch (choose) {
case 1:
System.out.println("\n******我要订餐*******");
//利用boolean 来表示订单满不满
boolean order = false;// 满false 不满true
for (int i = 0; i < names.length; i ++) {
if (names[i] == null) {
order = true;
System.out.print("请输入订餐人姓名:");
String orderName = input.next();
//循环输出菜单
System.out.println("序号\t菜品\t单价");
for (int j = 0; j < dishNames.length; j ++) {
System.out.println((j + 1) + "\t" + dishNames[j] + "\t" + prices[j]);
}
//选择菜品
System.out.print("请选择您要点的菜品编号:");
int dishNumber = input.nextInt();
while (dishNumber < 1 || dishNumber > dishMsg.length) {
System.out.print("您输入的编号有误,请重新输入:");
dishNumber = input.nextInt();
}
//定几份
System.out.print("请输入订单份数:");
int dishNum = input.nextInt();
//送达时间
System.out.print("请选择配送时间(10-20的整数):");
int dishTime = input.nextInt();
while (dishTime< 10 || dishTime > 20) {
System.out.print("您输入的配送时间有误,请重新输入:");
dishTime = input.nextInt();
}
//地址
System.out.print("请输入配送地址:");
String dishAddress = input.next();
//打印订单信息给用户看
System.out.println("订餐成功!");
System.out.print("您订的是:");
String dishInfo = dishNames[dishNumber - 1] + " " + dishNum + "份";
System.out.println(dishInfo);
System.out.print("送餐时间:");
String dishTimes = dishTime + "点";
System.out.println(dishTimes);
double meals = prices[dishNumber - 1] * dishNum;
double delivery = (meals < 50) ? 6.0: 0.0;
double sumPrice = meals + delivery;
System.out.println("餐费:" + meals + "\t配送费:" + delivery + "元" + "\t总计:" + sumPrice);
//存入订单信息
names[i] =orderName;
dishMsg[i] = dishInfo;
times[i] = dishTime;
addresses[i] = dishAddress;
sum[i] = sumPrice;
break;
}
}
if (!order) {
System.out.println("餐袋已满");
}
break;
case 2:
System.out.println("\n******查看餐袋*******");
System.out.println("序号\t订餐人\t所订餐及份数\t\t时间\t送餐地址\t状态\t价格");
for (int i = 0; i < names.length; i ++) {
if (names[i] != null) {//输出非空订单
String time = times[i] + "点";
String state = (states[i] == 0)? "已预定":"已完成";
//第一次调试错把单价当成商品总价一直错误,自己写的数组一定要记清楚
System.out.println((i + 1) + "\t\t" + names[i] + "\t" + dishMsg[i] + "\t\t" + time + "\t" + addresses[i] + "\t" +state + "\t\t" +sum[i]);// );
}
}
break;
case 3:
System.out.println("\n******签收订单*******");
//定义一个Boolean变量来表示能不能签收
boolean sign = false;//false--不存在 true存在 两种情况 已签收和未签收
System.out.print("请输入要签收的订单编号:");
int signNo = input.nextInt();
for (int i = 0; i < names.length; i ++) {
//判断 是否存在 是否已签收 是否找到
if (names[i] != null && states[i] == 0 && i == signNo -1) {
//false改为true 表示存在
sign = true;
states[i] = 1;
System.out.println("签收成功");
break;
} else if (names[i] != null && states[i] == 1 && i == signNo- 1) {
sign = true;
System.out.println("订单已签收");break;
}
}
if (!sign) {
System.out.println("订单不存在");
}
break;
case 4:
System.out.println("\n******删除订单*******");
//定义一个Boolean变量来表示能不能签收
boolean delete = false;//false--不存在 true存在 两种情况 已签收和未签收
System.out.print("请输入要删除的订单编号:");
int deleteNo = input.nextInt();
for (int i = 0; i < names.length; i ++) {
//判断 是否存在 是否已签收 是否找到
if (names[i] != null && states[i] == 0 && i == deleteNo -1) {
//false改为true 表示存在
delete = true;
System.out.println("该订单未签收,不能删除");
} else if (names[i] != null && states[i] == 1 && i == deleteNo- 1) {
delete = true;
//因为有j + 1 的存在所以循环的次数要进行减一,不然会超出
for (int j = i; j < names.length -1; j ++) {
names[j] = names[j + 1];
dishMsg[j] = dishMsg[j + 1];
times[j] = times[j + 1];
addresses[j] = addresses[j + 1];
states[j] = states[j + 1];
sum[j] = sum[j + 1];
}
//最后一个要置空
names[names.length -1] = null;
dishMsg[names.length -1] = null;
times[names.length -1] = 0;
addresses[names.length -1] = null;
states[names.length -1] = 0;
sum[names.length -1] = 0;
System.out.println("订单签收成功");
}
}
if (!delete) {
System.out.println("订单不存在");
}
break;
case 5:
System.out.println("\n******我要点赞*******");
System.out.println("序号\t菜品\t点赞数");
for (int j = 0; j < dishNames.length; j ++) {
String like = (likeCount[j] == 0) ? " ": likeCount[j] + "赞";
System.out.println((j + 1) + "\t" + dishNames[j] + "\t" + like);
}
System.out.print("请输入您要点赞的单号:");
int dishNumberNo = input.nextInt();
while (dishNumberNo < 1 || dishNumberNo > dishNames.length) {
System.out.print("没有这个订单,请重新输入:");
dishNumberNo = input.nextInt();
}
//哪个订单的赞数加一,是序号减一
likeCount[dishNumberNo - 1] ++;
System.out.println("点赞成功");
break;
case 6:
//退出系统
flag = true;
break;
default :
//退出系统
flag = true;
break;
}
//利用if解决case 6 不能退出系统的问题
if (!flag) { //flag = false
System.out.print("输入0返回:");
num = input.nextInt();
} else
break;
} while(num == 0);
System.out.println("谢谢使用,欢迎下次光临!");
}
}
Java吃货联盟订餐系统
最新推荐文章于 2024-08-06 09:21:05 发布