一、前言
剛剛學(xué)完java基礎(chǔ)入門,主要學(xué)習(xí)Java基本環(huán)境搭建,定義變量、選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)、數(shù)組等。本階段結(jié)束嘗試接觸此次吃貨聯(lián)盟訂餐系統(tǒng),第一次敲這么長(zhǎng)的代碼,后面多見(jiàn)識(shí)見(jiàn)識(shí)應(yīng)該就好了,多加努力?。?/p>
吃貨聯(lián)盟訂餐系統(tǒng)包含的功能:我要訂餐、查看餐袋、簽收訂單、刪除訂單、我要點(diǎn)贊、退出系統(tǒng)
二、基本業(yè)務(wù)分析
我要訂餐
1.輸入訂餐人姓名
2.將所有的菜品進(jìn)行展示
3.輸入要訂的菜品序號(hào)
4.輸入要訂的菜品份數(shù)
5.輸入配送時(shí)間
6.輸入配送地址
7.顯示訂餐信息
查看餐袋
1.直接展示所有的訂單信息
我要簽收
1.展示所有的訂單信息
2.輸入要簽收的訂單序號(hào)
3.如果已經(jīng)完成不允許重復(fù)簽收
4.如果未完成則可以進(jìn)行簽收
5.展示簽收成功
刪除訂單
1.展示所有的訂單信息
2.輸入要?jiǎng)h除的訂單序號(hào)
3.如果未完成(已預(yù)訂)則不允許刪除
4.如果已完成可以進(jìn)行訂單刪除
5.展示刪除成功
我要點(diǎn)贊
1.展示所有的菜品信息
2.輸入點(diǎn)贊的菜品序號(hào)
3.提示點(diǎn)贊成功
退出系統(tǒng)
1.提示結(jié)束語(yǔ)
2.執(zhí)行程序退出
三、完整代碼
public class OrderingMsg {
public static void main(String[] args) {
//初始化數(shù)據(jù)
//數(shù)據(jù)主體:一組訂單信息
String[] names = new String[4]; //訂餐人姓名
String[] dishMegs = new String[4]; //所選菜品
int[] times = new int[4]; //送餐時(shí)間
String[] addresses = new String[4]; //送餐地址
int[] states = new int[4]; //訂單狀態(tài):0 已預(yù)購(gòu) 1 已完成
double[] sumPrices = new double[4]; //總金額
//初始化兩個(gè)訂單信息
names[0] = "蓋倫";
dishMegs[0] = "紅燒帶魚 2份";
times[0] = 3;
addresses[0] = "德瑪西亞";
sumPrices[0] = 76.0;
states[0] = 1;
names[1] = "拉克絲";
dishMegs[1] = "紅燒帶魚 1份";
times[1] = 10;
addresses[1] = "德瑪西亞";
sumPrices[0] = 20;
//供選擇的菜品信息
String[] dishNames = {"紅燒帶魚","魚香肉絲","時(shí)令蔬菜"};
//菜品單價(jià)
double[] prices = new double[] {38.0,20.0,10};
int[] praiseNums = new int[3];
Scanner input = new Scanner(System.in);
//用戶輸入0返回主菜單,否則退出系統(tǒng)
int num = -1;
//標(biāo)記用戶是否提出系統(tǒng) true:退出系統(tǒng)
boolean isExit = false;
System.out.println("
歡迎使用吃貨聯(lián)盟系統(tǒng)");
//循環(huán):顯示菜單,根據(jù)用戶選擇,執(zhí)行響應(yīng)功能
do {
//顯示菜單
System.out.println("*******************");
System.out.println("1:我要訂餐");
System.out.println("2:查看餐袋");
System.out.println("3:簽收訂單");
System.out.println("4:刪除訂單");
System.out.println("5:我要點(diǎn)贊");
System.out.println("6:退出系統(tǒng)");
System.out.println("*******************");
System.out.println("請(qǐng)選擇:");
//記錄客戶選擇功能的編號(hào)
int choose = input.nextInt();
//記錄用戶選擇的功能編號(hào)
boolean isAdd = false;
//找到要簽收的訂單
boolean isSignFind = false;
//找到要?jiǎng)h除的訂單
boolean isDelFind = false;
//根據(jù)用戶選擇的功能編號(hào)執(zhí)行響應(yīng)功能
switch (choose) {
case 1:
//我要訂餐
System.out.println("*********我要訂餐*********");
//循環(huán)展示菜單
for (int j = 0; j <names.length; j++) {
//找到第一個(gè)空位置,可以添加訂單信息
if(names[j]==null) {
//標(biāo)記位置,可以訂餐
isAdd =true;
System.out.println("請(qǐng)輸入訂餐人的姓名:");
String name = input.next();
//顯示供選擇的菜品信息
System.out.println("序號(hào)"+" "+"菜名"+" "+"單價(jià)");
for (int i = 0; i < dishNames.length; i++) {
String price = prices [i] +"元";
String priaiseNum =(praiseNums[i])>0?praiseNums[i]+"贊":"";
System.out.println((i+1)+" "+dishNames[i]+" "+price+" "+priaiseNum);
}
//用戶點(diǎn)菜
System.out.println("請(qǐng)選擇您要點(diǎn)的菜品編號(hào):");
int chooseDish = input.nextInt();
System.out.println("請(qǐng)選擇您需要的份數(shù):");
int number = input.nextInt();
String dishMeg = dishNames[chooseDish-1]+""+number+"份";
double sumPrice = prices[chooseDish-1]*number;
//餐費(fèi)滿50元,免送餐費(fèi)10元
double deliCharge =(sumPrice>=50)?0:6;
System.out.println("請(qǐng)輸入送餐時(shí)間(送餐時(shí)間是10點(diǎn)至20點(diǎn)間整點(diǎn)送餐:)");
int time = input.nextInt();
while (time<10||time>20) {
System.out.println("您輸入有誤,請(qǐng)輸入10~20間的整數(shù)!");
time = input.nextInt();
}
System.out.println("請(qǐng)輸入送餐地址:");
String address =input.next();
//無(wú)需添加狀態(tài),默認(rèn)是0,即已預(yù)訂狀態(tài).
System.out.println("訂餐成功!");
System.out.println("您訂的是:"+dishMeg);
System.out.println("送餐時(shí)間是:"+time+"點(diǎn)");
System.out.println("餐費(fèi):"+sumPrice+"元,送餐費(fèi)"+deliCharge+"元,總計(jì):"+(sumPrice+deliCharge)+"元");
//添加數(shù)據(jù)
names[j]=name;
dishMegs[j] =dishMeg;
times[j] =time;
addresses[j] =address;
sumPrices[j] =sumPrice+deliCharge;
break;
}
}
if(!isAdd) {
System.out.println("對(duì)不起,您的餐袋已滿!");
}
break;
case 2:
//查看餐袋
System.out.println("*********查看餐袋**********");
System.out.println("序號(hào) 訂餐人 餐品信息 送餐時(shí)間 總金額 訂單狀態(tài)");
for (int i = 0; i < names.length; i++) {
//查看餐袋中的內(nèi)容,如果是空就跳出,不在查看
if (names[i]==null) {
String state = (states[i]==0)?"已預(yù)定":"已完成";
String data = times[i]+"日";
String sumPrice = sumPrices[i]+"元";
System.out.println((i+1)+" "+names[i]+" "+dishMegs[i]+" "+addresses[i]+" "+sumPrice+" "+state);
}
}
break;
case 3:
//簽收訂單
System.out.println("*********簽收訂單**********");
System.out.println("請(qǐng)選擇要簽收的訂單序號(hào):");
int signOrder = input.nextInt();
for (int i = 0; i < names.length; i++) {
//狀態(tài)為已預(yù)定,序號(hào)為用戶輸入的訂單序號(hào):可簽收
//狀態(tài)為已完成,序號(hào)為用戶輸入訂單序號(hào):不可簽收
if (names[i]!=null&&states[i]==1&&signOrder==i+1) {
System.out.println("您選擇的訂單已完成簽收,不能再次簽收");
isSignFind = true;
}
}
//未找到的訂單序號(hào):不可簽收
if (!isSignFind) {
System.out.println("您選擇的訂單不存在!");
}
break;
case 4:
//刪除訂單
System.out.println("*********刪除訂單**********");
System.out.println("請(qǐng)輸入要?jiǎng)h除的訂單序號(hào):");
int delId = input.nextInt();
for (int i = 0; i < names.length; i++) {
//狀態(tài)值為已完成 選侯志為用戶輸入的序號(hào):可刪除
//狀態(tài)值為已預(yù)定 序號(hào)值為用戶輸入的序號(hào):不可刪除
if (names[i]!=null&&states[i]==1&&delId==i+1) {
isDelFind = true;
//執(zhí)行刪除操作:刪除位置后的元素依次前移
for (int j = delId+1; j < names.length-1; j++) {
names[j] = names[j+1];
dishMegs[j] = dishMegs[j+1];
times[j] = times[j+1];
addresses[j] = addresses[j+1];
states[j] = states[j+1];
}
//最后一位清空
names[names.length-1] = null;
dishMegs[dishMegs.length-1] = null;
times[names.length] = 0;
addresses[names.length-1] = null;
states[names.length-1] = 0;
System.out.println("刪除訂單成功!");
break;
}else if (names[i]!=null&&states[i]==0&&delId==i+1) {
System.out.println("您選擇的訂單未簽收,不能刪除!");
isDelFind = true;
break;
}
}
//未找到該序號(hào)的訂單,不能刪除
if (isDelFind) {
System.out.println("您要?jiǎng)h除的訂單不存在!");
}
break;
case 5:
//我要點(diǎn)贊
System.out.println("*********我要點(diǎn)贊**********");
//顯示菜品信息
System.out.println("序號(hào)"+" "+"菜名"+" "+"單價(jià)");
for (int i = 0; i < dishNames.length; i++) {
String price = prices[i]+"元";
String praiseNum = (praiseNums[i])>0?praiseNums[i]+"贊":"";
System.out.println((i+1)+" "+dishNames[i]+" "+price+" "+praiseNum);
}
System.out.println("請(qǐng)選擇您要點(diǎn)贊的菜品序號(hào):");
int praiseNum = input.nextInt();
praiseNums[praiseNum-1]++; //點(diǎn)贊數(shù)+1
System.out.println("點(diǎn)贊成功");
break;
case 6:
//退出系統(tǒng)
isExit = true;
break;
default:
//退出系統(tǒng)
isExit = true;
break;
}
if (isExit) {
System.out.println("返回0輸出:");
num = input.nextInt();
}else {
break;
}
}while (num==0);
System.out.println("感謝使用,歡迎下次光臨");
}
}
四、有關(guān)eclipse的快捷鍵
1.補(bǔ)全代碼的聲明:alt + /
2.快速修復(fù): ctrl + 1
3.批量導(dǎo)包:ctrl + shift + o
4.使用單行注釋:ctrl + /
5.使用多行注釋: ctrl + shift + /
6.取消多行注釋:ctrl + shift +
7.復(fù)制指定行的代碼:ctrl + alt + down 或 ctrl + alt + up
8.刪除指定行的代碼:ctrl + d
9.上下移動(dòng)代碼:alt + up 或 alt + down
10.切換到下一行代碼空位:shift + enter
11.切換到上一行代碼空位:ctrl + shift + enter
12.如何查看源碼:ctrl + 選中指定的結(jié)構(gòu) 或 ctrl + shift + t
13.退回到前一個(gè)編輯的頁(yè)面:alt + left
14.進(jìn)入到下一個(gè)編輯的頁(yè)面(針對(duì)于上面那條來(lái)說(shuō)的):alt + right
15.光標(biāo)選中指定的類,查看繼承樹結(jié)構(gòu):ctrl + t
16.復(fù)制代碼: ctrl + c
17.撤銷: ctrl + z
18.反撤銷: ctrl + y
19.剪切:ctrl + x
20.粘貼:ctrl + v
21.保存: ctrl + s
22.全選:ctrl + a
23.格式化代碼: ctrl + shift + f
24.選中數(shù)行,整體往后移動(dòng):tab
25.選中數(shù)行,整體往前移動(dòng):shift + tab
26.在當(dāng)前類中,顯示類結(jié)構(gòu),并支持搜索指定的方法、屬性等:ctrl + o
27.批量修改指定的變量名、方法名、類名等:alt + shift + r
28.選中的結(jié)構(gòu)的大小寫的切換:變成大寫: ctrl + shift + x
29.選中的結(jié)構(gòu)的大小寫的切換:變成小寫:ctrl + shift + y
30.調(diào)出生成 getter/setter/構(gòu)造器等結(jié)構(gòu): alt + shift + s
31.顯示當(dāng)前選擇資源(工程 or 文件)的屬性:alt + enter
32.快速查找:參照選中的 Word 快速定位到下一個(gè) :ctrl + k
33.關(guān)閉當(dāng)前窗口:ctrl + w
34.關(guān)閉所有的窗口:ctrl + shift + w
35.查看指定的結(jié)構(gòu)使用過(guò)的地方:ctrl + alt + g
36.查找與替換:ctrl + f
37.最大化當(dāng)前的 View:ctrl + m
38.直接定位到當(dāng)前行的首位:home
39.直接定位到當(dāng)前行的末位:end
到這里,本篇關(guān)于Java實(shí)戰(zhàn)練習(xí)做一個(gè)吃貨聯(lián)盟訂餐系統(tǒng)的內(nèi)容就介紹到此結(jié)束了,同時(shí)也擴(kuò)展了一些關(guān)于Eclipse工具的一些常用快捷鍵,希望能夠?qū)Υ蠹矣兴鶐椭?。如果你還想要了解更多關(guān)于Java實(shí)戰(zhàn)練習(xí)的項(xiàng)目,請(qǐng)多多關(guān)注W3Cschool相關(guān)內(nèi)容,也希望大家可以多多支持我們!