吃货联盟订餐系统

  1 package com.zuoye;
  2 
  3 import java.util.Scanner;
  4 
  5 /**
  6  * 吃货联盟订餐管理系统
  7  * 
  8  * 
  9  * 
 10  */
 11 public class ChiHuo {
 12     public static void main(String[] args) {
 13         // 数据主体:一组订单信息
 14         String[] names = new String[4]; // 订餐人名称
 15         String[] dishMegs = new String[4]; // 所选菜品
 16         int[] times = new int[4]; // 送餐日期
 17         String[] addresses = new String[4]; // 送餐地址
 18         int[] states = new int[4]; // 订单状态: 0:已预定 1:已完成
 19         double[] sumPrices = new double[4]; // 总金额
 20         
 21         //初始化2个订单信息
 22         names[0] = "张晴";
 23         dishMegs[0] = "红烧带鱼 2份";
 24         times[0] = 3;
 25         addresses[0] = "天成路207号";
 26         sumPrices[0] = 76.0;
 27         states[0] = 1;
 28         
 29         names[1] = "张晴";
 30         dishMegs[1] = "鱼香肉丝 2份";
 31         times[1] = 10;
 32         addresses[1] = "天成路207号";
 33         sumPrices[1] = 20.0;
 34         
 35         
 36         // 供选择的菜品信息
 37         String[] dishNames = { "红烧带鱼", "鱼香肉丝", "时令鲜蔬" }; // 菜品名称
 38         double[] prices = new double[] { 38.0, 20.0, 10.0 }; // 菜品单价
 39         int[] praiseNums = new int[3];
 40 
 41         Scanner input = new Scanner(System.in);
 42         int num = -1; // 用户输入0返回主菜单,否则退出系统
 43         boolean isExit = false; // 标志用户是否退出系统: true:退出系统
 44 
 45         System.out.println("\n欢迎使用“吃货联盟订餐系统”");
 46         // 循环:显示菜单,根据用户选择的数字执行相应功能
 47         do {
 48             // 显示菜单            
 49             System.out.println("****************************");
 50             System.out.println("1、我要订餐");
 51             System.out.println("2、查看餐袋");
 52             System.out.println("3、签收订单");
 53             System.out.println("4、删除订单");
 54             System.out.println("5、我要点赞");
 55             System.out.println("6、退出系统");
 56             System.out.println("****************************");
 57             System.out.print("请选择:");
 58             int choose = input.nextInt(); // 记录用户选择的功能编号
 59             boolean isAdd = false;  //记录是否可以订餐
 60             boolean isSignFind = false;  //找到要签收的订单
 61             boolean isDelFind = false;  //找到要删除的订单
 62             // 根据用户选择的功能编号执行相应功能
 63             switch (choose) {
 64             case 1:
 65                 // 我要订餐
 66                 System.out.println("***我要订餐***");
 67                 for (int j = 0; j < names.length; j++) {                    
 68                    if(names[j] == null){  //找到第一个空位置,可以添加订单信息
 69                        isAdd = true;  //置标志位,可以订餐
 70                        System.out.print("请输入订餐人姓名:");
 71                        String name = input.next(); 
 72                     // 显示供选择的菜品信息
 73                     System.out.println("序号" + "\t" + "菜名"+"\t"+"单价");
 74                     for (int i = 0; i < dishNames.length; i++) {
 75                         String price = prices[i] + "元";
 76                         String priaiseNum = (praiseNums[i]) > 0 ? praiseNums[i]
 77                                 + "赞" : "";
 78                         
 79                         System.out.println((i + 1) + "\t" + dishNames[i] + "\t"    +price+"\t"+ priaiseNum);
 80                     }
 81                     // 用户点菜
 82                     System.out.print("请选择您要点的菜品编号:");
 83                     int chooseDish = input.nextInt();
 84                     System.out.print("请选择您需要的份数:");
 85                     int number = input.nextInt();
 86                     String dishMeg =  dishNames[chooseDish - 1]
 87                             +" "+ number + "份";
 88                     double sumPrice = prices[chooseDish - 1] * number;
 89                     //餐费满50元,免送餐费10元
 90                     double deliCharge = (sumPrice>=50)?0:6;                   
 91 
 92                     System.out.print("请输入送餐时间(送餐时间是10点至20点间整点送餐):");
 93                     int time = input.nextInt();
 94                     while (time < 10 || time > 20) {
 95                         System.out.print("您的输入有误,请输入10~20间的整数!");
 96                         time = input.nextInt();
 97                     }
 98                     System.out.print("请输入送餐地址:");
 99                     String address = input.next();
100                                         
101                     //无需添加状态,默认是0,即已预定状态。
102                     System.out.println("订餐成功!");
103                     System.out.println("您订的是:"+dishMeg);
104                     System.out.println("送餐时间:"+time+"点");
105                     System.out.println("餐费:"+sumPrice+"元,送餐费"+deliCharge+"元,总计:"+(sumPrice+deliCharge)+"元。");
106                     
107                     //添加数据
108                     names[j] = name;
109                     dishMegs[j] = dishMeg;
110                     times[j] = time;
111                     addresses[j] = address;
112                     sumPrices[j] = sumPrice+deliCharge;
113                     
114                     break;                    
115                    }
116                 }
117                 if(!isAdd){
118                     System.out.println("对不起,您的餐袋已满!");
119                 }
120                 break;
121             case 2:
122                 // 查看餐袋
123                 System.out.println("***查看餐袋***");
124                 System.out.println("序号\t订餐人\t餐品信息\t\t送餐日期\t送餐地址\t\t总金额\t订单状态");
125                 for(int i=0;i<names.length;i++){
126                     if(names[i]!=null){  
127                         String state = (states[i]==0)?"已预定":"已完成";
128                         String date = times[i]+"日";
129                         String sumPrice = sumPrices[i]+"元";
130                         System.out.println((i+1)+"\t"+names[i]+"\t"+dishMegs[i]+"\t"+date+"\t"+addresses[i]+"\t"+sumPrice+"\t"+state);
131                     }
132                 }
133                 break;
134             case 3:
135                 // 签收定单
136                 System.out.println("***签收定单***");
137                 System.out.print("请选择要签收的订单序号:");
138                 int signOrderId = input.nextInt();
139                 for(int i=0;i<names.length;i++){
140                     //状态为已预定,序号为用户输入的订单序号:可签收
141                     //状态为已完成,序叼为用户输入胡订单序号:不可签收                    
142                     if(names[i]!=null && states[i]==0 && signOrderId==i+1){
143                         states[i] = 1; //将状态值置为已完成
144                         System.out.println("订单签收成功!");
145                         isSignFind = true;
146                     }else if(names[i]!=null && states[i]==1 && signOrderId==i+1){
147                         System.out.println("您选择的订单已完成签收,不能再次签收!");
148                         isSignFind = true;
149                     }
150                 }
151                 //未找到的订单序号:不可签收
152                 if(!isSignFind){
153                     System.out.println("您选择的订单不存在!");
154                 }
155                 break;
156             case 4:
157                 // 删除订单
158                 System.out.println("***删除订单***");
159                 System.out.print("请输入要删除的订单序号:");
160                 int delId = input.nextInt();
161                 for(int i=0;i<names.length;i++){
162                     //状态值为已完成  序号值为用户输入的序号:可删除
163                     //状态值为已预定  序号值为用户输入的序号:不可删除
164                     if(names[i]!=null && states[i]==1 && delId==i+1){    
165                         isDelFind = true;
166                         //执行删除操作:删除位置后的元素依次前移
167                         for(int j=delId-1;j<names.length-1;j++){
168                             names[j] = names[j+1];
169                             dishMegs[j] = dishMegs[j+1];
170                             times[j] = times[j+1];
171                             addresses[j] = addresses[j+1];
172                             states[j] = states[j+1];
173                         }
174                         //最后一位清空
175                         names[names.length-1] = null;
176                         dishMegs[names.length-1] = null;
177                         times[names.length-1] = 0;
178                         addresses[names.length-1] = null;
179                         states[names.length-1] = 0;
180                         
181                         System.out.println("删除订单成功!");
182                         break;
183                     }else if(names[i]!=null && states[i]==0 && delId==i+1){
184                         System.out.println("您选择的订单未签收,不能删除!");
185                         isDelFind = true;
186                         break;
187                     }
188                 }
189                 
190                 //未找到该序号的订单:不能删除
191                 if(!isDelFind){
192                     System.out.println("您要删除的订单不存在!");
193                 }                            
194                 break;
195             case 5:
196                 // 我要点赞
197                 System.out.println("***我要点赞***");
198                 // 显示菜品信息
199                 System.out.println("序号" + "\t" + "菜名"+"\t"+"单价");
200                 for (int i = 0; i < dishNames.length; i++) {
201                     String price = prices[i] + "元";
202                     String priaiseNum = (praiseNums[i]) > 0 ? praiseNums[i]
203                             + "赞" : "";
204                     
205                     System.out.println((i + 1) + "\t" + dishNames[i] + "\t"    +price+"\t"+ priaiseNum);
206                 }
207                 System.out.print("请选择您要点赞的菜品序号:");
208                 int priaiseNum = input.nextInt();
209                 praiseNums[priaiseNum-1]++;  //赞数加1
210                 System.out.println("点赞成功!");
211                 break;
212             case 6:
213                 // 退出系统
214                 isExit = true;
215                 break;
216             default:
217                 //退出系统
218                 isExit = true;
219                 break;
220             }
221             if (!isExit) {
222                 System.out.print("输入0返回:");
223                 num = input.nextInt();
224             } else {
225                 break;
226             }
227         } while (num == 0);
228         System.out.println("谢谢使用,欢迎下次光临!");
229     }
230 }

 

posted @ 2019-01-14 17:09  may程  阅读(364)  评论(0编辑  收藏  举报