首页 > 代码库 > 第一个项目--------------吃货联盟订餐系统

第一个项目--------------吃货联盟订餐系统

吃货联盟订餐系统

运行效果如图所示:

1.系统界面

技术分享

2..功能一

技术分享

技术分享

技术分享

3.查看餐袋

技术分享

4.签收订单

技术分享

技术分享

技术分享

技术分享

 

 6.我要点赞

技术分享

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

 

第一个项目--------------吃货联盟订餐系统