总体框架流程图
1.我要订餐
1.可以把所有信息挨个用数组存储后输出,然后再输出。
这里只用数组存储餐品,方便输出。然后“姓名、餐品、份数、时间、送货地址、配送费”统一转换成字符串,放到二位数组的第一位;而状态要放到二位数组的第二位(分开用2个一维数组也可以);
2.考虑用户输入错误的问题:餐品序号/时间可能输入错误,错误的话,要跳转回去要求重新输入:
比如餐品序号:
2.查看餐袋
直接输出1.0里的二维数组即可,输入0返回主界面;
3.签收订单
需要先遍历二维数组,确认非空元素个数,也就是订单个数,防止输入的数字超界;
4.删除订单
5.我要点赞
完整java代码如下:
下面展示一些 内联代码片
。
import java.util.Scanner;
import java.util.Arrays;
public class Zuoye1 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int cdh=0;
String[]dishes={"炒方便面","红烧熊掌","干锅鱼翅","爆炒鹅肝"};
int[]price={100,50,60,66};
int[]good={100,50,60,40};
int sent=10;//配送费;
String[][]list=new String[1024][];//存储信息的作用;
do{
System.out.println("************************");
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("请输入菜单序号:");
cdh=sc.nextInt();
switch(cdh){
case 1:
System.out.println("我要订餐");//一次只允许录入一组信息,想要录入下一组,需要返回主界面重新进来
for (int i = 0; i < dishes.length; i++) {
System.out.println((i+1)+" "+dishes[i]);
}
System.out.print("请输入姓名:");
String name=sc.next();
int num=1;
do{
System.out.print("请输入餐品序号:");
num=sc.nextInt();
if(num<1||num>dishes.length){
System.out.println("数据输入有误!");
}
}while(num<1||num>dishes.length);
System.out.print("请输入份数:(正整数)");
int fenshu=sc.nextInt();
int time=0;
do {
System.out.print("请输入时间:(在10~20之间的整数)");
time = sc.nextInt();
if(time<10||time>20){
System.out.println("数据输入有误!");
}
}while(time<10||time>20);
System.out.print("请输入送货地址:");
String address=sc.next();
for (int i = 0; i < list.length; i++) {//存储订餐信息
if(list[i]==null){
list[i]=new String[2];//这一步是啥意思?二维数组中的一维数组在开始时候未指定长度;
list[i][0]=(i+1)+"\t"+name+"\t"+dishes[num-1]+"\t"+fenshu+
"\t"+time+"\t"+address;
list[i][1]="已预订";
break;
}
}
System.out.println("序号\t姓名\t餐品\t份数\t送餐时间\t送货地址\t状态");
for (int i = 0; i < list.length; i++) {//输出订餐信息
if(list[i]==null){
break;
}else{
System.out.println(list[i][0]+list[i][1]);
}
}
break;
case 2:
System.out.println("查看餐袋");
System.out.println("序号\t姓名\t餐品\t份数\t送餐时间\t送货地址\t状态");
for (int i = 0; i < list.length; i++) {//输出订餐信息
if(list[i]==null){
break;
}else{
System.out.println(list[i][0]+list[i][1]);
}
}
break;
case 3:
System.out.println("签收订单");
System.out.println("序号\t姓名\t餐品\t份数\t送餐时间\t送货地址\t状态");
for (int i = 0; i < list.length; i++) {//输出订餐信息
if(list[i]==null){
break;
}else{
System.out.println(list[i][0]+list[i][1]);
}
}
int changdu=0;
for (int i = 0; i < list.length; i++) {//遍历二维数组,确认已有订单的长度;
if (Arrays.equals(list[i], null)) {
changdu = i;
break;
}
}
System.out.println("一共有"+changdu+"个定单");
int qianshou=1;
do {
System.out.println("请输入需要签收的订单号:(请输入正整数)");
qianshou=sc.nextInt();
if(qianshou<1||qianshou>changdu){
System.out.println("数据输入有误!");
}else if(list[qianshou-1][1].equals("已完成")){
System.out.println("不能签收已完成的订单!");
}else{
list[qianshou-1][1]="已完成";
break;
}
}while(qianshou<1||qianshou>changdu||list[qianshou-1][1].equals("已完成"));
break;
case 4:
System.out.println("删除订单");
System.out.println("序号\t姓名\t餐品\t份数\t送餐时间\t送货地址\t状态");
for (int i = 0; i < list.length; i++) {//输出订餐信息
if(list[i]==null){
break;
}else{
System.out.println(list[i][0]+list[i][1]);
}
}
int changdu2=0;
for (int i = 0; i < list.length; i++) {//遍历二维数组,确认已有订单的长度;
if (Arrays.equals(list[i], null)) {
changdu2 = i;
break;
}
}
System.out.println("一共有"+changdu2+"个定单");
int shanchu=1;
do {
System.out.println("请输入需要删除的订单号:(请输入正整数)");
shanchu=sc.nextInt();
if(shanchu<1||shanchu>changdu2){
System.out.println("数据输入有误!");
}else if(list[shanchu-1][1].equals("已预订")){
System.out.println("不能删除未完成的订单!");
}else{
if(shanchu==list.length+1){
list[shanchu-1]=null;
}else{
for (int j = shanchu-1; j < list.length-1; j++) {
list[j]=list[j+1];
}
}
break;
}
}while(shanchu<1||shanchu>changdu2||list[shanchu-1][1].equals("已预定"));
System.out.println("序号\t姓名\t餐品\t份数\t送餐时间\t送货地址\t状态");
for (int i = 0; i < list.length; i++) {//输出订餐信息
if(list[i]==null){
break;
}else{
System.out.println(list[i][0]+list[i][1]);
}
}
break;
case 5:
System.out.println("我要点赞");
int dianzan=1;
do {
for (int i = 0; i < good.length; i++) {
System.out.println(i + 1 + " " + dishes[i] + " " + good[i]);
}
System.out.println("请输入要点赞的菜品序号:(正整数)");
dianzan=sc.nextInt();
if(dianzan<1||dianzan>good.length){
System.out.println("数据输入有误!");
}else{
good[dianzan-1]++;
for (int i = 0; i < good.length; i++) {
System.out.println(i + 1 + " " + dishes[i] + " " + good[i]);
}
break;
}
}while(dianzan<1||dianzan>good.length);
break;
case 6:
System.out.println("谢谢光临,欢迎下次再来!");
break;
default:
System.out.println("输入错误");
break;
}
System.out.println("输入0返回主界面,输入其它数字退出点餐系统");
cdh=sc.nextInt();
}while(cdh==0);
System.out.println("您已退出点餐系统,欢迎下次再来!");
}
}