要求:
/** * 一、我要订餐 * 完成用户订餐,每条订单包含如下信息: * 订餐人姓名:要求用户输入 * 选择菜品及份数:显示三个菜单序号、名称、单价、点赞数,提示用户输入要选择的菜品序号及份数 * 送餐时间:要求当天10到20点间整点送餐,要求用户输入10~20的整数,输入错误,重复输入。 * 送餐地址:要求用户输入 * 状态:两种状态:0:已预定(默认状态) 1、已完成(订单已签收) * 总金额: * 总金额 = 菜品单价*份数-送餐费 * (送餐费:当单笔订单金额达到50元时,免送餐费,否则,需交纳6元送餐费) * 订餐成功后,显示订单信息。 * 二、 查看订单 * 遍历显示已有定单 * 内容包括:序号、订餐人姓名、订餐信息(菜品名和份数)、送餐时间、送餐地址、 状态(已预定或已完成)、总金额 * 三、 签收定单 * 将定单中状态改为已完成 * 四、删除定单 * 用户输入订单序号,如该序号定单为已完成状态,可以删除,其它情况给出相应提示信息 * 五、我要点赞 * 显示菜品序号、菜品名、单价、点赞数,提示用户输入要点赞的菜品序号完成对菜品的点赞。 * 六、退出系统 * 退出整个系统,显示“谢谢使用,欢迎下次光临”。 * 七、菜单切换 * 用户可根据显示的主菜单,输入功能编号执行相应的功能,当输入1~5时,执行相应功能。 */
package cn.ybk;
import java.util.Scanner;
/**
* 简易的订餐系统
*/
public class Project2 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
//先声明数组用来存放信息
String[] dincanren = new String[10];//该数组用来存放订餐人
String[] caipin = new String[10];//菜名
int[] fenshu = new int[10];//数量
int[] songcanshijian = new int[10];//送餐时间
String[] addrs = new String[10];//地址
int [] state = new int[10];//0代表:预定 1:代表:签收
double[] tmoney = new double[10];//总金额
//定义菜单
String[] caiming = new String[]{"时蔬拼盘","酱香牛肉","红烧狮子头"};
double[] danjia = new double[]{12.0,30.7,34.2};
int[] dianzan = new int[10];
//用户输入控制是否循环
int usernum=-1;
boolean canche = false;//是否能够订餐
boolean shifouqianshou = false;//是否签收
boolean shifoushanchu = false;//是否删除订单
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.print("请选择:");
int choose1 = input.nextInt();
//switch选择结构
switch (choose1){
//进入订餐界面
case 1:
//进入订餐界面
System.out.println("********1、我要订餐*********");
System.out.println("欢迎进入订餐系统");
System.out.println("序号\t"+"菜名\t\t"+"单价\t"+"点赞数\t");
//
for(int j=0;j<caiming.length;j++){
if (dincanren[j] == null){
canche = true;
for (int i = 0; i < caiming.length; i++) {
System.out.print((i+1)+"\t\t");
System.out.print(caiming[i]+"\t");
System.out.print(danjia[i]+"\t");
System.out.println(dianzan[i]);
}
System.out.println("输入您想要订购的菜品");
int choose2 = input.nextInt();
while(choose2<1 || choose2>caiming.length){
System.out.println("本店还未退出该菜品,请重新选择");
choose2 = input.nextInt();
}
System.out.println("输入该菜品的数量");
int choose3 = input.nextInt();
//声明变量记录用户选择菜品编号等信息1
String caimin = caiming[choose2-1];
String shuliang = choose3+"份";
//总金额
double zongjia = danjia[choose2-1]*choose3;
//计算价格是否大于40
double songcanfei = (zongjia>50)?0:5;
System.out.println("请输入订餐人姓名");
String name = input.next();
System.out.println("请输入整点送餐时间(店铺营业时间为10点-20点)");
int time = input.nextInt();
//循环控制来保证用户输入的数在10-20之间
while(time<10 || time>20){//在判断Boolean值的时候,变量必须置于数字之前
System.out.println("时间输入有误请重新输入");
time = input.nextInt();
}
//用户输入地址
System.out.println("请输入送餐地址");
String dizhi = input.next();
//地址输入完之和,订单信息基本就输入完了
/*
打印一遍订单信息
*/
System.out.println("订餐成功!");
System.out.println("*****************************");
System.out.println("顾客姓名:\t"+name);
System.out.println("菜品:\t\t"+caimin+"\t"+shuliang);
System.out.println("金额:\t\t"+(zongjia+songcanfei)+"元");
System.out.println("地址:\t\t"+dizhi);
System.out.println("送餐时间:\t"+time);
System.out.println("*****************************");
//将用户信息存放进数组中
/*
这里的j是用来记录第一个为空的数据元素下标
*/
dincanren[j] = name;
caipin[j] = caimin;
fenshu[j] = choose3;
songcanshijian[j] = time;
addrs[j] = dizhi;
tmoney[j] = zongjia;
break;
}
}
if(canche = false){
System.out.println("订单已满返回上一层");
usernum = -1;
}
break;
case 2:
for(int i= 0;i<dincanren.length;i++){
if(dincanren[i]!=null){
System.out.print(dincanren[i] +"\t");
System.out.print(caipin[i]+"\t");
System.out.print(fenshu[i]+"\t");
System.out.print(songcanshijian[i]+"\t");
System.out.print(addrs[i]+"\t\t");
System.out.print(tmoney[i]+"\t");
System.out.println(state[i]);
}
}
//如果购物车中没有订单时输出
if(dincanren[0]==null){
System.out.println("还未存在任何订单,请下单");
}
break;
case 3:
System.out.println("***签收定单***");
for(int i= 0;i<dincanren.length;i++){
if(dincanren[i]!=null){
System.out.print(dincanren[i] +"\t");
System.out.print(caipin[i]+"\t");
System.out.print(fenshu[i]+"\t");
System.out.print(songcanshijian[i]+"\t");
System.out.print(addrs[i]+"\t\t");
System.out.println(tmoney[i]+"\t");
System.out.println(state[i]);
}
}
System.out.print("请选择要签收的订单序号:");
int qianshoudingdan = input.nextInt();
for(int i=0;i<dincanren.length;i++){
//状态为已预定,序号为用户输入的订单序号
if(dincanren[i]!=null && state[i]==0 && qianshoudingdan==i+1){
state[i] = 1; //将状态值置为已完成
System.out.println("订单签收成功!");
shifouqianshou = true;
break;
//状态为已完成,序号为用户输入的订单序号
}else if(dincanren[i]!=null && state[i]==1 && qianshoudingdan==i+1){
System.out.println("您选择的订单已完成签收,不能再次签收!");
shifouqianshou = true;
break;
}else if(i+1<qianshoudingdan){
System.out.println("您选择的订单不存在!");
break;
}
}
//未找到的订单序号时不能签收
if(shifouqianshou == false){
System.out.println("对不起,此订单不存在!");
}
break;
case 4:
//删除订单
System.out.println("***删除订单***");
//打印订单
for(int i= 0;i<dincanren.length;i++){
if(dincanren[i]!=null){
System.out.print(dincanren[i] +"\t");
System.out.print(caipin[i]+"\t");
System.out.print(fenshu[i]+"\t");
System.out.print(songcanshijian[i]+"\t");
System.out.print(addrs[i]+"\t\t");
System.out.print(tmoney[i]+"\t");
System.out.println(state[i]);
}
}
System.out.print("请输入要删除的订单序号:");
int shanchu = input.nextInt();
for(int i=0;i<dincanren.length;i++){
//状态值为已完成 序号值为用户输入的序号
if(dincanren[i]!=null && state[i]==1 && shanchu==i+1){
shifoushanchu = true;
//执行删除操作:删除位置后的元素依次前移
for(int j=shanchu-1;j<dincanren.length-1;j++){
dincanren[j] = dincanren[j+1];
caipin[j] = caipin[j+1];
fenshu[j] = fenshu[j+1];
songcanshijian[j] = songcanshijian[j+1];
addrs[j] = addrs[j+1];
state[j] = state[j+1];
}
//最后一位清空
dincanren[dincanren.length-1] = null;
caipin[dincanren.length-1] = null;
fenshu[dincanren.length-1] = 0;
songcanshijian[dincanren.length-1] = 0;
addrs[dincanren.length-1] = null;
state[dincanren.length-1] = 0;
System.out.println("删除订单成功!");
break;
//状态值为已预定 序号值为用户输入的序号
}else if(dincanren[i]!=null && state[i]==0 && shanchu==i+1){
System.out.println("您选择的订单未签收,不能删除!");
shifoushanchu = true;
break;
}
}
//未找到序号的订单时不能删除
if(shifoushanchu == false){
System.out.println("您要删除的订单不存在!");
}
break;
case 5:
//我要点赞
System.out.println("**********我要点赞*********");
//打印菜单供用户选择
System.out.println("序号\t"+"菜名\t\t"+"单价\t"+"点赞数\t");
for (int i = 0; i < caiming.length; i++) {
System.out.print((i+1)+"\t\t");
System.out.print(caiming[i]+"\t");
System.out.print(danjia[i]+"\t");
System.out.println(dianzan[i]);
}
System.out.println("请选择要点赞的菜品");
int choose3 = input.nextInt();
while(choose3<1 || choose3>caipin.length){
System.out.println("抱歉本店还未推出改菜品,无法点赞,重新选择");
choose3 = input.nextInt();
}
dianzan[choose3-1]++;
System.out.println("点赞成功");
System.out.println("序号\t"+"菜名\t\t"+"单价\t"+"点赞数\t");
for (int i = 0; i < caiming.length; i++) {
System.out.print((i+1)+"\t\t");
System.out.print(caiming[i]+"\t");
System.out.print(danjia[i]+"\t");
System.out.println(dianzan[i]);
}
break;
case 6:
//退出
break;
default:
System.out.println("输入有误");
break;
}
System.out.println("是否退出(n/y)");
String exitchoose = input.next();
if (!"n".equals(exitchoose)){
usernum = -1;
}else {
usernum = 0;
}
}while(usernum ==0);
}
}
菜单可以再在数组中去添加;
订单可以在前面的数组中先定义两组;(我这里没有添加)
接下来是系统运行截图:
1.菜单选择错误示例
2.订餐正确示例:
3.订餐错误示例
4.查看订单:
5.签收订单:(签收已近签收的订单显示无法签收)
6.删除订单示例:(这里只能删除已经完成的订单,也就是已经签收的订单)
7.点赞示例:
8.退出示例:
版权声明:本文为kk1213_原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。