2017.11.29T19_B1_9zuoye chihuolianmeng

package com.whxiong9;

import java.util.*;

public class Practise9 {

 /**
  * @author whxiong
  * 吃货联盟订单系统
  */
 public static void main(String[] args) {
  Scanner input = new Scanner(System.in);
  // information是新订单的信息,zan是点赞次数
  int num;
  int information = 0;
  int[] zan = new int[30];
  // 初始化订餐信息
  String[] name = new String[30];// 订餐人姓名
  int[] time = new int[30]; // 送餐时间
  int[] states = new int[30]; // 判断订单信息,0表示已预订,1表示已完成
  String[] Add = new String[30];// 送餐地址
  double[] money = new double[30];// 订餐费
  String[] dish = new String[30];// 订餐类型
  name[0] = "张晴";
  dish[0] = "红烧带鱼  2份";
  time[0] = 12;
  Add[0] = "天成路207号";
  states[0] = 1;
  money[0] = 76;
  name[1] = "张晴";
  dish[1] = "鱼香肉丝  2份";
  time[1] = 18;
  Add[1] = "天成路207号";
  states[1] = 0;
  money[1] = 45;
  // 菜品和单价
  String[] food = new String[] { "红烧带鱼", "鱼香肉丝", "时令鲜蔬" };// 菜品种类
  double[] money0 = new double[] { 38.0, 20.0, 10.0 }; // 菜品价格
  System.out.println("欢迎使用“吃货联盟订餐系统”");
  // 进入do-while循环选择需要执行的功能
  do {// 主菜单循环
   do {
    System.out.println("********************************** ");
    System.out
      .println("1.我要订餐 2.查看餐袋 3.签收订单 4.删除订单 5.我要点赞 6.退出系统");
    System.out.println("********************************** ");
    System.out.println("请选择:");
    num = input.nextInt();
    if (num <= 0 || num > 6) {
     System.out.println("输入错误请重新输入");
    }
   } while (num <= 0 || num > 6);
   // 用switch选择结构输入数字执行所需的功能,输入0则返回上一级菜单
   switch (num) {
   case 1:
    do {
     System.out.println("***我要订餐***");
     // 输入订餐人姓名
     System.out.println("请输入订餐人姓名:");
     String name1 = input.next();
     // 用for循环来输出菜单
     System.out.println("序号 菜名 单价 点赞数");
     for (int i = 0; i < food.length; i++) {
      System.out.println((i + 1) + " " + food[i] + " "
        + money0[i] + "元 0");
     }
     System.out.println("请输入您要点的菜品号:");   
      int num0 = input.nextInt();
      //判断菜品序号是否输入正确
     while(num0!=1&&num0!=2&&num0!=3){
      System.out.println("输入错误,请重新输入:");
       num0=input.nextInt();
     }
     System.out.println("请选择您需要的份数:");
     int num1 = input.nextInt();
     /*
      * 选择完菜品和份数后计算所付金额
      * 因为菜品价格(money)的下标是从0开始 num0标号是从1开始
      * 所以显示所需菜品价格的时候不能直接输入money[num0]
      * 应该输入money[num0-1]
      */
     double money1 = num1 * money0[num0 - 1];
     /*
      * 赋值: 如果所付金额小于50则需运费5元
      * 用if结构给出条件如果所付金额大于50元则免运费
      */
     int money2 = 5;
     if (money1 > 50) {
      money2 = 0;
     }/*
      * 输入送餐时间 用while循环结构判断是否输入的是正确的送餐时间
      * 如果没到10点或者超过20点则需要重新输入
      * 直到输入正确时间
      */
     System.out.println("请输入送餐时间(送餐时间是10点到20点间整点送餐):");
     int time1 = input.nextInt();
     //判断时间是否输入正确
     while (time1 < 10 || time1 > 20) {
      System.out.println("您的输入有误,请重新输入:");
      time1 = input.nextInt();
     }
     System.out.println("请输入送餐地址:");
     String Add1 = input.next();
     System.out.println("订餐成功!");
     // 将新订单的信息累计,之后存入订单中
     information++;
     /*
      * 因为菜品(food)的下标是从0开始 菜品标号赋值于》》num0 num0标号是从1开始
      * 所以显示所需菜品的时候不能直接输入food[num0] 应该输入food[num0-1]
      */
     String xinxi = (food[num0 - 1] + "  " + num1 + "份");
     double zongji = (money2 + money1);
     System.out.println("您订的是:" + xinxi);
     System.out.println("送餐时间是:" + time1 + "点");
     System.out.println("您的地址是:" + Add1);
     System.out.println("餐费:" + money1 + "元" + "  送餐费" + money2
       + "  总计" + zongji);
     // 将输入的订餐信息保存到餐袋中
     name[1 + information] = name1;
     dish[1 + information] = xinxi;
     time[1 + information] = time1;
     Add[1 + information] = Add1;
     states[1 + information] = 0;
     money[1 + information] = zongji;
     // 判断是否需要继续输入或者结束
     System.out.println("输入1继续,输入0返回:");
      num = input.nextInt();
    } while (num == 1);
    break;
   case 2:
    do{
     System.out.println("***查看餐袋***");   
    System.out.println("序号 订餐人 餐品信息 送餐时间 送餐地址 总金额 订单状态");
    // 应用for循环实现查看餐袋信息
    for (int i = 0; i < name.length; i++) {
     if (name[i] != null) {
      System.out.println((i + 1) + " " + name[i] + " "
        + dish[i] + " " + time[i] + "点 " + Add[i]
        + " " + money[i] + " " + states[i]);
     }
     }// 判断是否需要继续输入或者结束
    System.out.println("输入1继续,输入0返回:");
     num = input.nextInt();
    } while (num == 1);
    break;
   case 3:
    do {
     System.out.println("***签收订单***");
     // 标记订单是否存在
     boolean dingdan = false;
     // 输入要签收的订单号
     System.out.println("请选择要签收的订单号:");
     int num2 = input.nextInt();
     /*
      * 如果姓名不为空并且是预订但未完成则可以签收成功并且将订单信息改为完成状态
      */
     for (int i = 0; i < name.length; i++) {
      if (name[i] != null && states[i] == 0 && num2 == i + 1) {
       states[i] = 1;
       System.out.println("订单签收成功!");
       dingdan = true;
      }
      /*
       * 如果姓名不为空但订单时完成状态则不能签收
       */
      else if (name[i] != null && states[i] == 1
        && num2 == i + 1) {
       System.out.println("您选择的订单已完成签收,不能再次签收!");
       dingdan = true;
      }
     }
     // 如果订单不存在,则输出不存在
     if (!dingdan) {
      System.out.println("您选择的订单不存在!");
     }
     // 判断是否需要继续循环此功能
     System.out.println("输入1继续,输入0返回:");
     num = input.nextInt();
    } while (num == 1);
    break;
   case 4:
    do {
     System.out.println("***删除订单***");
     // 标记订单是否存在
     boolean dingdan = false;
     // 输入需要删除的订单号
     System.out.println("请输入您要删除的订单号:");
     int num3 = input.nextInt();
     for (int i = 0; i < name.length; i++) {
      // 姓名不为空并且订单状态为预订,则不能删除
      if (name[i] != null && states[i] == 0 && num3 == i + 1) {
       System.out.println("对不起,您选择的订单还未签收,不能删除!");
       dingdan = true;
      }
      // 姓名不为空且状态为完成,则可以完成删除
      if (name[i] != null && states[i] == 1 && num3 == i + 1) {
       dingdan = true;
       // 将删除订单后面的订单信息依次前移一位
       for (int k = num3 - 1; k < name.length - 1; k++) {
        name[k] = name[k + 1];
        dish[k] = dish[k + 1];
        time[k] = time[k + 1];
        Add[k] = Add[k + 1];
        states[k] = states[k + 1];
        money[k] = money[k + 1];
       }
       // 将订单信息的最后一单信息清空
       int endnum = name.length - 1;
       name[endnum] = null;
       dish[endnum] = null;
       time[endnum] = 0;
       Add[endnum] = null;
       states[endnum] = 0;
       money[endnum] = 0;
       System.out.println("您选择的订单已删除!");
       break;
      }
     }
     // 订单信息不存在,则输出不存在
     if (!dingdan) {
      System.out.println("您选择的订单不存在!");
     }
     // 判断此功能是否需要继续,否则结束
     System.out.println("输入1继续,输入0返回:");
     num = input.nextInt();
    } while (num == 1);
    break;
   case 5:
    do {
     System.out.println("***我要点赞***");
     // 输出菜单
     System.out.println("序号 菜名 单价 点赞数");
     for (int i = 0; i < food.length; i++) {
      System.out.println((i + 1) + " " + food[i] + " "
        + money0[i] + "元 ");
     }
     // 输出要点赞的菜品序号
     System.out.println("请输入您要点赞的菜品序号:");
     int num4 = input.nextInt();
     // 对点赞的菜品赞的次数进行累加
     zan[num4 - 1]++;
     // 显示点赞后的菜单
     System.out.println("序号 菜名 单价 点赞数");
     for (int i = 0; i < food.length; i++) {
      String dianzan = (zan[i] > 0 ? zan[i] + "赞" : "");
      System.out.println((i + 1) + " " + food[i] + " "
        + money0[i] + "元 " + dianzan);
     }
     System.out.println("点赞成功!");
     // 判断此功能是否需要继续,否则结束
     System.out.println("输入1继续,输入0返回:");
     num = input.nextInt();
    } while (num == 1);
    break;
   case 6:
    System.out.println("***退出系统***");
    break;
   }
  } while (num == 0);

原文地址:https://www.cnblogs.com/xiaoxiao1016/p/7992098.html