小项目,吃货联盟,java初级小项目,源代码

1:项目的实现效果、功能如图所示。

2:项目的源代码如下:

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