0
点赞
收藏
分享

微信扫一扫

java编程 吃货联盟订餐系统

蓝哆啦呀 2022-03-20 阅读 137
eclipsejava

最近呢,奥密克绒出现了,疫情防控严格起来了,我的线下Java程序课程暂时改成了线上了,这两天上了面向对象,对于零基础的我来说还是比较难的,唉 只能说这个进程的速度我来不及消化,趁着周五复习一下也是很老的吃货联盟订餐项目吧(欢迎有伙伴一起交流哦,尽力而为啦)。

import java.util.Scanner;

public class order02 {

public static void main(String[] args) {
// 扫描器布置,导包!
Scanner scanner = new Scanner(System.in);


// 声明变量
int choice = 0;
int dishNum = 0;
boolean isFull = true;
boolean isFind = true;
boolean isExit = false;
/* 定义菜单以及其他变量数组来存储数据信息*/
String[] menu = { "红烧鸡翅", "开水白菜", "红烧猪蹄", "农家炒肉" };/* 菜单 */
double[] price = { 24, 15, 36, 5 }; /* 单价 */
String[] DishName = new String[4];/* 顾客选的菜 */
int[] copies = new int[4];/* 菜品份数 */
String[] names = new String[4];/* 顾客姓名 */
String[] address = new String[4];/* 顾客地址 */
int[] like = new int[4];/* 点赞数 */
int[] times = new int[4]; /* 送达时间 */
double[] money = new double[4];/* 菜品份数 */
int[] con = new int[4];/* 订单状态 0代表 已订餐,1代表 已完成*/



// do while 大循环结构包含订餐首页!
do {
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("我要:");
choice = scanner.nextInt();


// 在do-while循环中,利用switch case语句执行不同的功能页.
switch (choice) {
case 1:/* 订单界面 */
System.out.println("*******我要订餐*******");
for (int i = 0; i < names.length; i++) {
if (names[i]== null) {
isFull = false;
System.out.println("请输入订餐人姓名:");
String name = scanner.next();

System.out.println("序号\t菜品\t\t单价\t点赞数");
// 利用for循环遍历菜单数组!
for (int j = 0; j < menu.length; j++) {
System.out.println((j+1)+"\t"+menu[j]+"\t"+price[j]+"\t "+like[j]);
}
// 利用dowhile循环判断输入菜品序号是否合法!
do {
System.out.println("请输入1~4之间的整数,选择相应菜品:");
dishNum = scanner.nextInt();
} while ( dishNum > 4||dishNum < 1);
System.out.println("请输入份数:");
int copy = scanner.nextInt();
System.out.println("请输入地址:");
String address1 = scanner.next();
System.out.println("请选择送达时间(输入8-20之间的整数):");
int time = scanner.nextInt();
while ( time>20||time<8) {
System.out.println("请选择送达时间(输入8-20之间的整数):");
time = scanner.nextInt();
}
int deli = (price[dishNum-1]*copy) > 50 ? 0 : 6;
double money1 = price[dishNum-1]*copy+deli ;
System.out.println("订餐成功!");
System.out.println("******订单信息确认******");
System.out.println("您选择的是:"+menu[dishNum-1]+copy+"份.");
System.out.println("您的送餐地址是:"+address1);
System.out.println("送达时间为:"+time);
System.out.println("餐费:"+price[dishNum-1]*copy+",配送费:"+deli+",总金额:"+money1+".");
// 将这些局部变量赋值给开辟好空间的全局变量数组!
DishName[i] = menu[dishNum-1];
names[i] = name;
copies[i] = copy;
address[i] = address1;
times[i] = time;
money[i] = money1;
break;
}

if (isFull) {
System.out.println("对不起,餐袋已满,请删除订单再来订餐!");

}
}

break;



case 2:/* 查看餐袋界面 */
System.out.println("*******查看餐袋*******");
// 利用for循环遍历dishName数组!
System.out.println("序号"+"\t"+"菜品"+"\t"+"\t"+"份数"+"\t"+"\t"+"订餐人"+"\t"+"地址"+"\t"+"送达时间"+"\t"+"总金额"+"\t"+"订单状态");
for (int i = 0; i < names.length; i++) {
if (names[i]!= null) {
String state = (con[i] == 0) ? "已预订":"已完成";
System.out.println((i+1)+"\t"+DishName[i]+"\t"+copies[i]+"份"+"\t"+"\t"+names[i]+"\t"+address[i]+"\t"+times[i]+"\t"+"\t"+money[i]+"\t"+state);
}
}
break;


case 3:/* 签收订单界面 */
System.out.println("*******签收订单*******");
// 首先 要判断输入要签收的订单序号是否合法,其次是订单是否存在,最后订单是否已经被签收。
System.out.println("请输入要签收的订单号:");
int SignNum = scanner.nextInt();
while(SignNum<1||SignNum>4) {
System.out.println("请输入正确的签收订单号:");
SignNum = scanner.nextInt();
}
for (int j = 0; j < con.length; j++) {
if (names[j] != null&&con[j] == 0&& SignNum ==j+1) {
con[j] = 1;
System.out.println("签收成功!");
isFind = false;
break;

}
if (names[j] != null&&con[j] == 1&& SignNum ==j+1) {
System.out.println("该订单已被签收,请勿重复签收");
isFind = false;
break;
}
if (isFind) {
System.out.println("该订单不存在!");
}
}
break;


case 4:/* 删除订单界面 */
System.out.println("*******删除订单*******");
// 首先判断要删除的订单是否合法,其次判断该订单是否存在,最后判断该订单是否还未被签收。
System.out.println("请输入要删除的订单序号:");
int delNum = scanner.nextInt();
while(delNum<1||delNum>4) {
System.out.println("请输入正确的删除订单号:");
delNum = scanner.nextInt();
}
for (int j = 0; j < names.length;j++) {
if (names[j]!= null&&con[j] == 1&& delNum ==j+1) {
/* 利用for循环将要删除的订单后面的订单去覆盖前一位的订单 */
for (int k = delNum -1; k < names.length-1; k++) {

names[k] = names[k+1];
address[k] = address[k+1];
times[k] =times[k+1];
DishName[k] =DishName[k+1];
copies[k] = copies[k+1];
con[k] = con[k+1];
money[k] = money[k+1];
}
/* 并将最后一位数据清零 */
names[names.length-1] = "null";
address[names.length-1] = "null";
times[names.length-1] =0;
DishName[names.length-1] ="null";
copies[names.length-1] = 0;
con[names.length-1] = 0;
money[names.length-1] =0;

System.out.println("删除成功!");
isFind = false;
break;
}
if (names[j]!= null&&con[j] == 0&& delNum ==j+1) {
System.out.println("该订单还未被签收,无法删除。");
isFind = false;
break;
}
if (isFind) {
System.out.println("该订单不存在!");
}
}
break;




case 5:/* 点赞界面 */
System.out.println("*******我要点赞*******");
System.out.println("序号\t菜品\t\t单价\t点赞数");
// 利用for循环遍历菜单数组!
for (int j = 0; j < menu.length; j++) {
System.out.println((j+1)+"\t"+menu[j]+"\t"+price[j]+"\t "+like[j]);
}
System.out.println("请输入要点赞的菜品序号:");
int likeNum = scanner.nextInt();
// while循环判断输入的序号是否合法
while(likeNum<1||likeNum>4) {
System.out.println("请输入正确的点赞订单号:");
likeNum = scanner.nextInt();
}
like[likeNum-1]++;
break;






case 6:/* 退出系统 */
System.out.println("*******退出系统*******");
isExit = true;
break;

default:
System.out.println("*******输入有误,退出系统*******");
isExit = true;
break;
}
if(!isExit) {
System.out.println("请输入0返回");
choice = scanner.nextInt();
}




} while (choice == 0);
// 当choice 这个变量变为0时执行首页这个循环体.


System.out.println("谢谢使用,欢迎下次光临!");
scanner.close();

}

}

里面的双斜杠和斜杠+*所标识的汉字都是我自个的标注,不写进代码不会影响的哦,写的还有些许瑕疵,欢迎伙伴找我讨论相互学习!

举报

相关推荐

0 条评论