Java基礎應用--吃貨聯盟訂餐系統
阿新 • • 發佈:2021-02-07
技術標籤:java
總體框架流程圖
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("您已退出點餐系統,歡迎下次再來!");
}
}