【0706】综合作业:吃货联盟订餐系统

  1 package com.workprojects;
  2 
  3 /**
  4  * 吃货联盟订餐系统
  5  * 2019-07-07
  6  * @author L
  7  */
  8 import java.util.Scanner;
  9 
 10 public class Eatsystem {
 11     static Scanner sc = new Scanner(System.in);
 12 
 13     public static void main(String[] args) {
 14         // 保存信息
 15         String[] names = new String[4];// 订餐人姓名
 16         int[] foodNums = new int[4];// 保存份数
 17         int[] ids = new int[4];// 订单序号
 18         int[] times = new int[4];// 送餐时间,整点送餐
 19         String[] addresses = new String[4];// 送餐地址
 20         int[] states = new int[4];// 订单状态,0表示已预订(默认状态),1表示已完成
 21         double[] sumPrices = new double[4];// 订单总金额
 22         int[] goodNums = new int[3];// 点赞
 23         int[] foodIds = new int[3];// 菜品序号
 24 
 25         // 菜品信息
 26         String[] foodNames = { "红烧带鱼", "鱼香肉丝", "时令鲜蔬" };// 菜品名称
 27         double foodPrices[] = { 38.0, 20.0, 10.0 };// 菜品单价
 28 
 29         // 初始化第一笔订单
 30         ids[0] = 1;// 序号“1”
 31         names[0] = "张晴";
 32         foodNames[0] = "红烧带鱼";
 33         foodNums[0] = 2;
 34         times[0] = 12;
 35         addresses[0] = "天成路207号";
 36         sumPrices[0] = 76.0;
 37         states[0] = 1;
 38 
 39         // 初始化第二笔订单
 40         ids[1] = 2;
 41         names[1] = "张晴";
 42         foodNames[1] = "鱼香肉丝";
 43         foodNums[1] = 2;
 44         times[1] = 18;
 45         addresses[1] = "天成路207号";
 46         sumPrices[1] = 45.0;
 47         states[1] = 0;
 48 
 49         // 订餐系统
 50         int num = -1;// 用户输入0返回主菜单,否则退出系统
 51         boolean flag = false;// 标志用户是否退出系统,为true时退出系统。
 52         System.out.println("欢迎使用“吃货联盟订餐系统”");// 订餐系统欢迎引导
 53         do {// 先执行初始菜单目录,并循环展示
 54             System.out.println("***********************");
 55             System.out.println("1、我要订餐");
 56             System.out.println("2、查看餐袋");
 57             System.out.println("3、签收订单");
 58             System.out.println("4、删除订单");
 59             System.out.println("5、我要点赞");
 60             System.out.println("6、退出系统");
 61             System.out.println("***********************");
 62 
 63             // 选择菜单
 64             System.out.print("请选择:");
 65             int choose = sc.nextInt();// 功能编号
 66 
 67             switch (choose) {
 68             case 1:
 69                 // 订餐
 70                 System.out.println("***我要订餐***");
 71                 boolean addFood = false;// 判断是否可以订餐
 72                 for (int j = 0; j < names.length; j++) {
 73                     if (names[j] == null) {// 获取订餐人为空的位置
 74                         addFood = true;// 为空则可订餐
 75                         System.out.print("请输入订餐人姓名:");
 76                         String name = sc.next();
 77                         ids[j]=j+1;
 78                         // 展示餐品信息,价格,点赞等相关信息
 79                         System.out.println("序号" + "	" + "菜名" + "	" + "单价" + "	" + "点赞数");// 菜品详情
 80                         for (int i = 0; i < foodNames.length; i++) {
 81                             String goodNum = (goodNums[i]) > 0 ? goodNums[i] + "赞" : "0";
 82                             System.out.println((i + 1) + "	" + foodNames[i] + "	" + foodPrices[i] + "	" + goodNum);
 83                         }
 84                         // 点餐
 85                         System.out.print("请选择您要点的菜品编号:");
 86                         int foodId = sc.nextInt();// 餐品序号
 87                         String foodName = foodNames[foodId - 1];
 88                         System.out.print("请选择您需要的份数:");
 89                         int foodNum = sc.nextInt();// 订餐餐品份数
 90                         double sumPrice = foodPrices[foodId - 1] * foodNum;// 该订单金额
 91                         double fare = (sumPrice >= 50) ? 0 : 5;// 订单总额大于等于50免配送费,低于50需要5元配送费
 92                         System.out.print("请输入送餐时间(送餐时间是10点至20点间整点送餐):");
 93                         int time = sc.nextInt();
 94                         while (time < 10 || time > 20) {
 95                             System.out.print("您输入有误,请输入10~20间的整数:");
 96                             time = sc.nextInt();
 97                         }
 98                         System.out.print("请输入送餐地址:");
 99                         String address = sc.next();
100 
101                         // 下单成功提示!
102                         System.out.println("订餐成功!");
103                         System.out.println("您订的是:" + foodName + "	" + foodNum + "份");
104                         System.out.println("送餐时间:" + time + "点");
105                         System.out.println("送餐地址:" + address + ",收货人:" + name);
106                         System.out.println("餐费:" + sumPrice + "元,送餐费:" + fare + "元,总计:" + (sumPrice + fare));
107 
108                         // 添加数据
109                         names[j] = name;
110                         foodNames[j] = foodName;
111                         foodNums[j] = foodNum;
112                         times[j] = time;
113                         addresses[j] = address;
114                         sumPrices[j] = sumPrice + fare;
115                         break;
116                     }
117                 }
118                 if (!addFood) {
119                     System.out.println("对不起。您的餐袋已满!");
120                 }
121                 break;
122             case 2:
123                 // 查看餐袋
124                 System.out.println("***查看餐袋***");
125                 System.out.println("序号	订餐人	餐品信息	份数	送餐时间		送餐地址		总金额	订单状态");// 订单抬头
126                 for (int i = 0; i < ids.length; i++) {
127                     if (names[i] != null) {// 名字不为空
128                         String state = (states[i] == 0) ? "已预订" : "已完成";// 判断订单状态
129                         // 输出订单详情
130                         System.out.println(ids[i] + "	" + names[i] + "	" + foodNames[i] + "	" + foodNums[i] + "份"
131                                 + "	" + times[i] + "点" + "		" + addresses[i] + "	" + sumPrices[i] + "	" + state
132                                 + "	");
133                     }
134                 }
135                 break;
136             case 3:
137                 // 签收订单
138                 System.out.println("***签收订单***");
139                 boolean orderFind = false;// 查找订单
140                 System.out.print("请选择要签收的订单序号:");
141                 int orderId = sc.nextInt();
142                 for (int i = 0; i < names.length; i++) {
143                     if (names[i] != null && states[i] == 0 && orderId == i + 1) {// 如果订餐人不为空,状态为已预订,订单号+1
144                         states[i] = 1;// 订单状态转变
145                         System.out.println("订单签收成功!");
146                         orderFind = true;
147                     } else if (names[i] != null && states[i] == 1 && orderId == i + 1) {
148                         System.out.println("您选择的订单已完成签收,不能再次签收!");
149                         orderFind = true;
150                     }
151                 }
152                 if (!orderFind) {
153                     System.out.println("您输入的订单不存在!请重新输入!");
154                     orderId = sc.nextInt();
155                 }
156                 break;
157             case 4:
158                 // 删除订单
159                 System.out.println("***删除订单***");
160                 boolean delOrder = false;// 查找删除订单
161                 System.out.print("请输入要删除的订单序号:");
162                 int delId = sc.nextInt();
163                 for (int i = 0; i < names.length; i++) {
164                     if (names[i] != null && states[i] == 1 && delId == i + 1) {
165                         delOrder = true;// 找到订单
166                         for (int j = delId - 1; j < names.length - 1; j++) {// 删除元素,该位置后的元素向前进一步,向前一位赋值
167                             names[j] = names[j + 1];
168                             //foodNames[j] = foodNames[j + 1];
169                             foodNums[j] = foodNums[j + 1];
170                             times[j] = times[j + 1];
171                             addresses[j] = addresses[j + 1];
172                             sumPrices[j] = sumPrices[j + 1];
173                             states[j] = states[j + 1];
174                         }
175                         // 赋值完毕后,清空最后一位元素
176                         names[names.length - 1] = null;
177                         //foodNames[names.length - 1] = null;
178                         foodNums[names.length - 1] = 0;
179                         times[names.length - 1] = 0;
180                         addresses[names.length - 1] = null;
181                         sumPrices[names.length - 1] = 0;
182                         states[names.length - 1] = 0;
183                         System.out.println("删除订单成功!");
184                         break;
185                     } else if (names[i] != null && states[i] == 0 && delId == i + 1) {
186                         System.out.println("您选择的订单未签收,不能删除!");
187                         delOrder = true;
188                     }
189                 }
190                 if (!delOrder) {
191                     System.out.println("您要删除的订单不存在!请重新输入!");
192                     delId = sc.nextInt();
193                 }
194                 break;
195             case 5:
196                 // 点赞功能
197                 System.out.println("***我要点赞***");
198                 // 显示菜品信息
199                 System.out.println("序号	菜品	点赞数");// 订单抬头
200                 for (int i = 0; i < foodNames.length; i++) {
201                     String goodNum = (goodNums[i]) > 0 ? goodNums[i] + "赞" : "";
202                     System.out.println((i + 1) + "	" + foodNames[i] + "	" + goodNum);
203                 }
204                 System.out.print("请选择您要点赞的菜品序号:");
205                 int goodNum = sc.nextInt();
206                 goodNums[goodNum - 1]++;// 点赞+1
207                 System.out.println("点赞成功!");
208                 break;
209             case 6:
210                 System.out.println("***退出系统***");
211                 flag = true;
212                 break;
213             default:
214                 flag = true;
215                 break;
216             }
217             if (!flag) {
218                 System.out.print("输入0返回:");
219                 num = sc.nextInt();
220             } else {
221                 break;
222             }
223         } while (num == 0);
224         System.out.println("已成功退出吃货联盟“订餐系统”!");
225     }
226 }

一、我要订餐 

二、查看菜袋

三、签收订单

四、删除订单

五、点赞

 六、退出系统

原文地址:https://www.cnblogs.com/yanglanlan/p/11148858.html