代码+需求说明
package cn.bdqn.demo03;
import java.util.Scanner;
public class Work {
public static void main(String[] ages){
//数据主体:一组订单信息
String[] names = new String[4];//订餐人
String[] dishMegs = new String[4];//所送餐品信息
int[] times = new int[4];//送餐时间
String[] addresses = new String[4];//送餐地址
int[] states = new int[4];//订单状态 0:已预定 1:已完成
double[] sumPrices = new double[4];//总金额
//初始化2条订单信息
names[0] = "张晴";
dishMegs[0] = "鱼香肉丝 1份";
times[0] = 12;
addresses[0] = "天成路209号";
states[0] = 1;
sumPrices[0] = 24.0;
names[1] = "张晴";
dishMegs[1] = ""
+ "鱼香肉丝 2份";
times[1] = 12;
addresses[1] = "天成路202号";
states[1] = 0;//已预定
sumPrices[1] = 42.0;
//数据主体:一组餐品信息
String[] dishNames = {"红烧带鱼","鱼香肉丝","时令蔬菜"};
double[] prices = {38.0,18.0,10.0};
int[] praiseNums = new int[3];
Scanner input = new Scanner(System.in);
int num = -1;//记录用户输入的数字
System.out.println("\n欢迎使用“吃货联盟订餐系统”");
do{
//显示主菜单
System.out.println("*************************");
System.out.println("1.我要订餐");
System.out.println("2.查看餐袋");
System.out.println("3.签收订单");
System.out.println("4.删除订单");
System.out.println("5.我要点赞");
System.out.println("6.退出系统");
System.out.println("**************************");
//提示用户输入功能编号,并执行相应功能
System.out.println("请选择:");
int choose = input.nextInt();//记录用户选择的功能编号
boolean isAdd = false;//true:记录找到了一个为空的位置,可以用插入false:没有找到
//根据用户输入的功能编号,执行相应的功能
switch(choose){
case 1:
//1.我要订餐
System.out.println("*****我要订餐****");
//1.查找要插入的位置
for(int i=0;i<names.length;i++){
//如果找到为空的位置,记录下来
if(names[i] == null){
isAdd = true;//记录已找到一个为空的位置
//执行插入操作
//a.显示所有可供选择的信息
System.out.println("序号\t餐品名\t单价\t点赞数");
for(int j=0;j<dishNames.length;j++){
String price = prices[j]+"元";
String praise = praiseNums[j]+"赞";
System.out.println((j+1)+"\t"+dishNames[j]+"\t"+price+"\t"+praise);
}
//输入所选餐品编号以及份数
System.out.println("请选择所定餐品序号:");
int chooseDish = input.nextInt();
System.out.println("请选择所定份数:");
int number = input.nextInt();
String dishMeg = dishNames[chooseDish-1]+" "+ number+"份";
//b.输入订餐人姓名
System.out.println("请输入订餐人姓名:");
String name = input.next();
//c.输入送餐时间
System.out.println("请输入送餐时间(10~20整点送餐):");
int time = input.nextInt();
//如果输错了,重复输入
while(time<10 || time>20){
System.out.println("对不起,您的输入哟喂,请重新输入10~20之间的数:");
time = input.nextInt();
}
//d.输入送餐地址
System.out.println("请输入送餐地址:");
String address= input.next();
//e.计算餐费
double sumPrice = prices[chooseDish-1]*number;
//送餐费,当送餐费达到50元时,免6元送餐费
double deliCharge = sumPrice>=50?0.0:6.0;
//显示订单信息
System.out.println("定餐成功!");
System.out.println("您定的是:"+dishMeg);
System.out.println("订餐人:"+name);
System.out.println("送餐时间:"+time+"点");
System.out.println("送餐地址:"+address);
System.out.println("餐费:"+sumPrice+",送餐费:"+deliCharge+"元");
System.out.println("总金额:"+(sumPrice+deliCharge)+"元");
//保存数据
names[i] = name;
dishMegs[i] = dishMeg;
times[i] = time;
addresses[i] = address;
sumPrices[i] = sumPrice+ deliCharge;
break;
}
}
//如果没有找到为空的位置,则提示信息
if(!isAdd){
System.out.println("对不起,您的餐袋已满!");
}
break;
case 2:
//2.查看餐袋
System.out.println("****查看餐袋****");
System.out.println("序号\t订餐人\t所订餐信息\t送餐地点\t\t送餐时间\t\t总金额\t\t状态");
//遍历数组
for(int i=0;i<names.length;i++){
if(names[i]!=null){
String time = times[i]+"点";
String sumPrice = sumPrices[i]+"元";
String state = states[i]==0?"已预定":"已完成";
System.out.println((i+1)+"\t"+names[i]+"\t"+dishMegs[i]+"\t"+addresses[i]+"\t"+time+"\t\t"+sumPrice+"\t\t"+state);
}
}
break;
case 3:
//3.签收订单
System.out.println("****签收订单*****");
//要求用户输入一个签收的订单序号
System.out.println("请输入要签收的订单序号:");
int sign0rderId = input.nextInt();
boolean isFind = false;//记录是否找到了这条订单:true:已找到false:没有找到
//查找这条订单(循环遍历)
for(int i=0;i<names.length;i++){
//1.找到,状态是已完成(已签收完毕):提示不能在次签收
//2.找到,状态是已预定(没有完成签收):可以签收
if(names[i]!=null && states[i]==1&& sign0rderId == i+1){
System.out.println("对不起,您的订单已经完成签收,不能再次签收!");
isFind = true;
break;
}else if(names[i]!=null && states[i]==0 && sign0rderId==i+1){
states[i]=1;
System.out.println("订单签收成功!");
isFind = true;
break;
}
}
//条件判断:如果没有找到这条订单,才去提示没有找到
if(!isFind){
System.out.println("对不起,此订单不存在!");
}
break;
case 4:
//4.删除订单
//1.输入要删除的订单序号(从1开始)
System.out.println("*********删除订单*******");
System.out.println("请输入要删除的订单序号:");
int delId = input.nextInt();
int delIndex = -1;
boolean isDelFind = false;//记录是否找到了这条订单:true:已找到false:没有找到
//2.循环擦很难找这条订单
for(int i=0;i<names.length;i++){
if(names[i]!=null&&states[i]==0&&delId==i+1){
delIndex = i;
isDelFind = true;
break;
}else if(names[i]!=null&&states[i]==0&&delId==i+1){
System.out.println("您选择的订单没签收,不能删除!");
isDelFind = true;
break;
}
}
//没找到此订单:提示信息
if(!isDelFind){
System.out.println("对不起,此订单不存在!");
}
//执行删除操作
if(delIndex!=1){
for(int i=delIndex+1;i<=names.length-1;i++){
names[i-1]=names[i];
dishMegs[i-1]=dishMegs[i];
times[i-1]=times[i] ;
addresses[i-1]=addresses[i];
sumPrices[i-1]=sumPrices[i] ;
}
//最后一位清空
names[names.length-1]=null;
dishMegs[names.length-1]=null;
times[names.length-1]=0;
addresses[names.length-1]=null;
states[names.length-1]=0;
System.out.println("订单删除成功!");
}
break;
case 5:
//5.我要点赞
System.out.println("********我要点赞*******");
//1.显示供点餐的列表
System.out.println("序号\t餐品名\t单价\t点赞数");
for(int j=0;j<dishNames.length;j++){
String price = prices[j]+"元";
String praise = praiseNums[j]+"赞";
System.out.println((j+1)+"\t"+dishNames[j]+"\t"+price+"\t"+praise);
}
//2.输入要点餐的餐品序号
System.out.println("请输入要思安赞的餐品序号:");
int dishId = input.nextInt();
//3.该序号的餐品点赞数加1
praiseNums[dishId-1]++;
//4.显示
System.out.println("点赞成功!");
System.out.println(dishNames[dishId-1]+" "+praiseNums[dishId-1]+"赞");
break;
case 6:
//6.退出系统
default:
break;
}
//当用户输入的功能编号为1~4职位的数字时退出循环,否则会提示输入0返回
if(choose<1 || choose>5){
break;
}else{
//提示输入0返回
System.out.println("提示输入0返回:");
num = input.nextInt();
}
}while(num==0);
System.out.println("谢谢使用,欢迎下次订餐!");
}
}
“吃货联盟定餐系统”需求说明
现今已进入网络时代,网上购物、看新闻、交友等人们的日常生活已离不开网络。“只要点点手指,就能送餐上门”,网上定餐越来越受到都市年轻人的青睐 现要求开发一个网上订餐系统,其具体功能如下:
- 我要订餐
完成用户订餐,每条订单包含如下信息:
- 订餐人姓名:要求用户输入
- 选择菜品及份数:显示三个菜单序号、名称、单价、点赞数,提示用户输入要选择的菜品序号及份数
- 送餐时间:要求当天10到20点间整点送餐,要求用户输入10~20的整数,输入错误,重复输入。
- 送餐地址:要求用户输入
- 状态:两种状态:0:已预定(默认状态) 1、已完成(订单已签收)
- 总金额:
总金额 = 菜品单价*份数-送餐费
(送餐费:当单笔订单金额达到50元时,免送餐费,否则,需交纳6元送餐费)
订餐成功后,显示订单信息。
- 查看订单
遍历显示已有定单
内容包括:序号、订餐人姓名、订餐信息(菜品名和份数)、送餐时间、送餐地址、 状态(已预定或已完成)、总金额
- 签收定单
将定单中状态改为已完成
- 删除定单
用户输入订单序号,如该序号定单为已完成状态,可以删除,其它情况给出相应提示信息
- 我要点赞
显示菜品序号、菜品名、单价、点赞数,提示用户输入要点赞的菜品序号完成对菜品的点赞。
- 退出系统
退出整个系统,显示“谢谢使用,欢迎下次光临”。