吃货联盟订餐系统

Posted zeng1997

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了吃货联盟订餐系统相关的知识,希望对你有一定的参考价值。

 

第一步:

/**
 * 吃货联盟订餐系统
 * 
 * @author zengt
 *
 */
public class ShiZhanXiangMu 

    // 数据主体 一组订单信息
    // 保存订餐人姓名
    // 保存所选信息, 菜名 份数
    // 保存送餐时间
    // 保存送餐地址
    // 保存订单状态 已预订 或 已完成
    // 保存订单金额
    // 菜名
    // 单价
    // 点赞数

    // 初始化两条订单信息

    // 实现菜单切换 当输入1~5时,输出相关的菜单信息
    // 提示输入0返回,输入0返回主菜单,否则退出系统并输出提示信息 谢谢使用,欢迎下次光临!
    //

    // 输出信息: 欢迎使用 吃货联盟订餐系统
    // 循环:显示菜单,根据用户选择的数字执行相应的功能
    // 显示菜单
    // 1、我要订餐
    // 2、查看餐袋
    // 3、签收订单
    // 4、删除订单
    // 5、我要点赞
    // 6、退出系统

    // 输出提示信息:请选择执行操作数字
    // 记录用户选择的功能编号
    // 根据用户选择的功能编号执行相应的功能
    // 输入1 输出信息 我要订餐
    // 记录是否可以订餐
    // 如果找到一个为空的位置,可以添加订单信息
    // 提示输入订餐人姓名,获取信息
    // 选择菜品及份数 显示可供选择的菜品序号,菜名,单价,点赞数
    // 提示输入菜品序号及份数并获取信息
    // 计算送餐费(餐费大于50免送餐费,否则送餐费为5元)
    // 提示输入送餐时间,要求输入时间为10~20之间的整点数字,否则提示输入错误,重新输入
    // 提示输入送餐地址
    // 以上信息输入完成提示 订餐成功
    // 显示订单信息: 您订单餐品是: 送餐时间: 餐费: 送餐费 总金额:(餐费+送餐费)
    // 把以上信息添加到相应的数组里

    // 否则提示信息 餐袋已满
    // 提示输入0返回主菜单
    // 输入2 输出信息 查看餐袋
    // 遍历 餐品序号 ,订餐人姓名,订餐信息(菜名及份数),送餐时间,送餐地址,总金额,订单状态
    // 3 签收订单
    // 输出信息 ******签收订单*****
    // 提示选择要签收的订单序号并获取信息
    // 状态为已预订,序号为用户输入的订单序号减一:可签收
    // 状态为已完成,序号为用户输入的订单序号减一:不可签收
    // 找到该订单 若状态为已预订将状态值重新标志位已完成
    // 若状态为已完成 提示 :您选择的订单已完成签收,不能再次签收
    // 若未找到订单序号 提示: 您选择的订单序号不存在
    // 4 删除订单
    // 输出信息:*******删除订单*******
    // 提示要删除的订单序号
    // 找到该订单 状态为已完成执行删除操作 删除位置后面的元素依次往前移将最后一位清空
    // 状态为已预订 提示:订单未签收,不能删除
    // 未找到订单序号 提示:您要删除的订单不存在
    // 5 我要点赞
    // 输出信息 *******我要点赞*******
    // 显示菜品信息
    // 提示选择点赞的菜品编号并接收
    // 点赞数加一
    // 6 退出系统
    // 输入其他数字也退出系统

    // 提示信息 : 输入0返回
    // 接收信息
    //

然后慢慢实现操作需求。。。。。。。。

 

总算把所有需求都做出来了!

  1 import java.util.Scanner;
  2 
  3 /**
  4  * 吃货联盟订餐系统
  5  * 
  6  * @author zengt
  7  *
  8  */
  9 public class ShiZhanXiangMu 
 10     static Scanner input = new Scanner(System.in);
 11 
 12     public static void main(String[] args) 
 13 
 14         // 数据主体 一组订单信息
 15         // 保存订餐人姓名
 16         String[] names = new String[4];
 17         // 保存所选信息, 菜名 份数
 18         String[] caiMing = new String[4];
 19         int[] fenShu = new int[4];
 20         // 保存送餐时间
 21         int[] times = new int[4];
 22         // 保存送餐地址
 23         String[] diZhis = new String[4];
 24         // 保存订单状态 已预订 或 已完成
 25         int[] ddzt = new int[4]; // 用数字0或1 标识订单状态 已预订或已完成
 26         // 保存订单金额
 27         double[] moneys = new double[4];
 28         // 菜名
 29         String[] foods =  "炒青菜", "青椒炒蛋", "水煮肉片", "鸡肉堡" ;
 30         // 单价
 31         double[] meals =  8, 12, 25, 35 ;
 32         // 点赞数
 33         int[] dianZhanShu = new int[4];
 34         // 初始化两条订单信息 订餐人 所订餐品及份数 送餐时间 送餐地址 总金额 订单状态
 35         names[0] = "张三";
 36         caiMing[0] = foods[2];
 37         fenShu[0] = 2;
 38         times[0] = 12;
 39         diZhis[0] = "同济路112号";
 40         moneys[0] = meals[2] * fenShu[0];
 41         ddzt[0] = 0;
 42 
 43         names[1] = "李四";
 44         caiMing[1] = foods[3];
 45         fenShu[1] = 1;
 46         times[1] = 14;
 47         diZhis[1] = "同济路121号";
 48         moneys[1] = meals[3] * fenShu[1];
 49         ddzt[1] = 1;
 50         // 实现菜单切换 当输入1~5时,输出相关的菜单信息
 51         // 标识用户输入数字,输入0返回主菜单,否则退出系统
 52         int nums = -1;
 53         // 输出信息: 欢迎使用 吃货联盟订餐系统
 54         System.out.println("**********欢迎使用吃货联盟订餐系统**********");
 55         // 循环:显示菜单,根据用户选择的数字执行相应的功能
 56         boolean boos = true; // 标识循环条件
 57         do 
 58             // 循环:显示菜单,根据用户选择的数字执行相应的功能
 59             // 显示菜单// 1、我要订餐// 2、查看餐袋// 3、签收订单// 4、删除订单// 5、我要点赞// 6、退出系统
 60             System.out.println("……………………………………………………");
 61             System.out.println("1、我要订餐\\n" + "2、查看餐袋\\n" + "3、签收订单\\n" + "4、删除订单\\n" + "5、我要点赞\\n" + "6、退出系统");
 62             System.out.println("……………………………………………………");
 63             // 输出提示信息:请选择执行操作数字
 64             System.out.println("请选择:");
 65             // 记录用户选择的功能编号
 66             int num = input.nextInt();
 67             // 根据用户选择的功能编号执行相应的功能
 68             switch (num) 
 69             case 1:
 70                 // 输入1 输出信息 我要订餐
 71                 System.out.println("******我要订餐******");
 72                 // 记录是否可以订餐
 73                 boolean boo1 = false;
 74                 // 如果找到一个为空的位置,可以添加订单信息
 75                 for (int i = 0; i < names.length; i++) 
 76                     if (null == names[i]) 
 77                         // 提示输入订餐人姓名,获取信息
 78                         System.out.println("请输入送餐人姓名:");
 79                         names[i] = input.next();
 80                         System.out.println("序号\\t" + "菜名\\t" + "单价\\t" + "点赞数");
 81 
 82                         // 选择菜品及份数 显示可供选择的菜品序号,菜名,单价,点赞数
 83                         for (int a = 0; a < foods.length; a++) 
 84 
 85                             String danJia = meals[a] + "元";
 86                             String dzs = dianZhanShu[a] > 0 ? dianZhanShu[a] + "赞" : "0";
 87                             System.out.println((a + 1) + "\\t" + foods[a] + "\\t" + danJia + "\\t" + dzs);
 88                         
 89                         // 提示输入菜品序号及份数并获取信息
 90                         System.out.println("请选择您要点的餐品序号:");
 91                         int num1 = input.nextInt();
 92                         System.out.println("请输入所订餐品份数:");
 93                         int num2 = input.nextInt();
 94                         // 计算送餐费(餐费大于50免送餐费,否则送餐费为5元)
 95                         double canFei = meals[num1 - 1] * num2;
 96                         double scf = canFei >= 50 ? 0 : 5;
 97                         double money = canFei + scf;
 98                         // 提示输入送餐时间,要求输入时间为10~20之间的整点数字,否则提示输入错误,重新输入
 99                         boolean boo2 = true;// 标识输入送餐时间是否正确的循环条件
100                         int time = 0;// 标识送餐时间
101                         while (boo2) 
102                             System.out.println("请输入送餐时间:");
103                             time = input.nextInt();
104                             if (time >= 10 && time <= 20) 
105                                 boo2 = false;
106                              else 
107                                 System.out.println("输入不正确,请输入10~20之间的整点时间!");
108                             
109                         
110                         // 提示输入送餐地址
111                         System.out.println("请输入送餐地址:");
112                         String diZhi = input.next();
113                         // 以上信息输入完成提示 订餐成功
114                         System.out.println("订餐成功!");
115                         // 显示订单信息: 您订单餐品是: 送餐时间: 餐费: 送餐费 总金额:(餐费+送餐费)
116                         System.out.println("您订单餐品是:" + foods[num1 - 1] + ",所订份数:" + num2 + "份,送餐地址:" + diZhi + ",送餐时间:"
117                                 + time + "点,餐费:" + canFei + ",送餐费:" + scf + ",总金额:" + money);
118                         // 把以上信息添加到相应的数组里
119                         caiMing[i] = foods[num1 - 1];
120                         times[i] = time;
121                         fenShu[i] = num2;
122                         diZhis[i] = diZhi;
123                         moneys[i] = money;
124                         boo1 = true;
125                         break;
126                      else 
127                         boo1 = false;
128                     
129                 
130                 if (!boo1) 
131                     System.out.println("餐袋已满!");
132                 
133                 System.out.println("输入0返回:");
134                 nums = input.nextInt();
135                 if (nums != 0) 
136                     boos = false;
137                 
138                 break;
139             case 2:
140                 // 输入2 输出信息 查看餐袋
141                 System.out.println("******查看餐袋******");
142                 // 遍历 餐品序号 ,订餐人姓名,订餐信息(菜名及份数),送餐时间,送餐地址,总金额,订单状态
143                 System.out.println("序号\\t订餐人\\t所订餐品\\t份数\\t送餐时间\\t送餐地址\\t\\t总金额\\t订单状态");
144                 for (int i = 0; i < names.length; i++) 
145                     if (names[i] != null) 
146                         String zhuangTai = ddzt[i] == 0 ? "已预订" : "已完成";
147                         System.out.print((i + 1) + "\\t" + names[i] + "\\t" + caiMing[i] + "\\t" + fenShu[i] + "\\t"
148                                 + times[i] + "\\t" + diZhis[i] + "\\t" + moneys[i] + "\\t" + zhuangTai);
149                         System.out.println();
150                     
151                 
152                 System.out.println("输入0返回:");
153                 nums = input.nextInt();
154                 if (nums != 0) 
155                     boos = false;
156                 
157                 break;
158             case 3:
159                 // 3 签收订单
160                 // 输出信息 ******签收订单*****
161                 System.out.println("******签收订单*****");
162                 // 提示选择要签收的订单序号并获取信息
163                 // 状态为已预订,序号为用户输入的订单序号减一:可签收
164                 // 状态为已完成,序号为用户输入的订单序号减一:不可签收
165                 System.out.println("请输入要签收的订单序号:");
166                 int num3 = input.nextInt();
167                 if (names[num3 - 1] != null) 
168                     // 找到该订单 若状态为已预订将状态值重新标志位已完成
169                     if (ddzt[num3 - 1] == 0) 
170                         ddzt[num3 - 1] = 1;
171                         System.out.println("您所选订单签收成功!");
172                         // 若状态为已完成 提示 :您选择的订单已完成签收,不能再次签收
173                      else if (ddzt[num3 - 1] == 1) 
174                         System.out.println("您选择的订单已完成签收,不能再次签收");
175                     
176                     // 若未找到订单序号 提示: 您选择的订单序号不存在
177                  else 
178                     System.out.println("您选择的订单序号不存在");
179                 
180 
181                 System.out.println("输入0返回:");
182                 nums = input.nextInt();
183                 if (nums != 0) 
184                     boos = false;
185                 
186                 break;
187             case 4:
188                 // 4 删除订单
189                 // 输出信息:*******删除订单*******
190                 System.out.println("*******删除订单*******");
191                 // 提示要删除的订单序号
192                 System.out.println("请输入要删除的订单序号:");
193                 int num4 = input.nextInt();
194                 // 找到该订单 状态为已完成执行删除操作 删除位置后面的元素依次往前移将最后一位清空
195                 if (names[num4 - 1] != null) 
196                     // 状态为已预订 提示:订单未签收,不能删除
197                     if (ddzt[num4 - 1] == 1) 
198                         for (int d = num4 - 1; d < names.length; d++) 
199                             for (int j = d; j < names.length - 1; ) 
200                                 names[j] = names[j + 1];
201                                 caiMing[j] = caiMing[j + 1];
202                                 times[j] = times[j + 1];
203                                 diZhis[j] = diZhis[j + 1];
204                                 moneys[j] = moneys[j + 1];
205                                 ddzt[j] = ddzt[j + 1];
206 
207                                 names[names.length - 1] = null;
208                                 caiMing[caiMing.length - 1] = null;
209                                 times[times.length - 1] = 0;
210                                 diZhis[diZhis.length - 1] = null;
211                                 moneys[moneys.length - 1] = 0;
212                                 ddzt[ddzt.length - 1] = -1;
213                                 break;
214                             
215                         
216                         System.out.println("订单删除成功!");
217                      else if (ddzt[num4 - 1] == 0) 
218                         System.out.println("该订单未签收,还不能删除,请签收后再删除!");
219                     
220                  else 
221                     // 未找到订单序号 提示:您要删除的订单不存在
222                     System.out.println("您要删除的订单不存在!");
223                 
224                 System.out.println("输入0返回:");
225                 nums = input.nextInt();
226                 if (nums != 0) 
227                     boos = false;
228                 
229                 break;
230             case 5:
231                 // 5 我要点赞
232                 // 输出信息 *******我要点赞*******
233                 System.out.println("*******我要点赞*******");
234                 // 显示菜品信息
235                 System.out.println("序号\\t菜品名\\t单价\\t点赞数");
236                 for (int j = 0; j < foods.length; j++) 
237                     System.out.println((j + 1) + "\\t" + foods[j] + "\\t" + meals[j] + "\\t" + dianZhanShu[j]);
238                 
239                 // 提示选择点赞的菜品编号并接收
240                 System.out.println("请输入您想要点赞的餐品序号:");
241                 int num5 = input.nextInt();
242                 // 点赞数加一
243                 dianZhanShu[num5 - 1]++;
244                 System.out.println("输入0返回:");
245                 nums = input.nextInt();
246                 if (nums != 0) 
247                     boos = false;
248                 
249                 break;
250             case 6:
251                 // 6 退出系统
252                 System.out.println("正在退出系统!");
253                 boos = false;
254                 break;
255 
256             default:
257                 // 输入其他数字也退出系统
258                 System.out.println("输出信息错误,默认退出系统!");
259                 boos = false;
260                 break;
261             
262 
263          while (boos);
264         System.out.println("程序结束!");
265 
266         // 提示信息 : 输入0返回
267         // 接收信息
268         //
269     
270 

 

技术图片

 

 技术图片

技术图片

技术图片

技术图片

 

想想如何把重复的代码优化?

以上是关于吃货联盟订餐系统的主要内容,如果未能解决你的问题,请参考以下文章

吃货联盟订餐系统

吃货联盟订餐系统

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

第五章吃货联盟订餐系统

吃货联盟订餐系统(用对象和数组来写的)

JAVA吃货联盟项目。