我要订餐
查看订单
签收订单
删除订单
我要点赞(1)
我要点赞(2)
程序思路
-
搭建平台
-
输出欢迎语句
-
用户输入姓名
-
创建 Food 类
-
变量 Food 数组
-
询问份数和地址等
-
定义订单项对象数组
-
把订单信息存入订单数组
-
遍历订单
-
修改订单状态
后面依次类推,可以实现后面的功能
代码
搭建平台
import java.util.Scanner;
public class Game {
//扫描仪
Scanner input = new Scanner(System.in);
//点赞数
int[] dz = new int[10];
//用户姓名
String username;
//定义菜品数组
Food[] foods = new Food[10];
//定义餐带对象数组
OrderItem[] orderItems = new OrderItem[10];
//实例化类
Food food = new Food();
//平台
public void game() {
//初始化数据
init();
//显示欢迎语句
welcome();
//显示主菜单
run();
}
private void init() {
//创建对象数组
System.out.println("数据初始化中...");
//新建对象
Food no1 = new Food();
no1.foodname = "红烧带鱼";
no1.foodmoney = 38;
no1.foodNumberOflikes += dz[0];
//把对象存储进数组
foods[0] = no1;
Food no2 = new Food();
no2.foodname = "鱼香肉丝";
no2.foodmoney = 20;
no2.foodNumberOflikes += dz[1];
foods[1] = no2;
Food no3 = new Food();
no3.foodname = "时令鲜菜";
no3.foodmoney = 10;
no3.foodNumberOflikes += dz[2];
foods[2] = no3;
}
private void run() {
while (true) {
runMain();
}
}
//显示主菜单
private void runMain() {
System.out.println("1.我要订餐");
System.out.println("2.查看订单");
System.out.println("3.签收订单");
System.out.println("4.删除订单");
System.out.println("5.我要点赞");
System.out.println("6.退出系统");
//接受用户输入
userChoice();
}
//接收用户输入的功能
private void userChoice() {
System.out.println("请输入您要得功能:");
int userInput = input.nextInt();
switch (userInput) {
case 1:
//我要订餐
orderAMeal();
break;
case 2:
//查看订餐
checkOrderAMeal();
break;
case 3:
//签收订单
signForOrderAMeal();
break;
case 4:
//删除订单
delOrderAMeal();
break;
case 5:
//我要点赞
giveTheThumbsUp();
break;
case 6:
System.out.println("谢谢使用,欢迎下次光临!");
System.exit(0);
break;
}
}
//我要点赞
private void giveTheThumbsUp() {
System.out.println("***我要点赞***");
//询问用户要点赞的 订单或者菜品
System.out.println("请输入您要点赞的是订单还是菜品(1是菜品/2是订单):");
int userInput = input.nextInt();
// switch 分支
switch (userInput) {
case 1:
//显示菜品
System.out.println("显示菜品");
TheMenu();
//用户输入要点赞的菜品
System.out.print("请输入您要点赞的菜品:");
int caiPian = input.nextInt();
//修改菜品状态
dz[caiPian-1] += 1;
//更新数据
init();
System.out.println("点赞成功!");
break;
case 2:
System.out.println("显示订单");
//判断是否有数据
int i = getnum(orderItems, 1);
//判断 i 如果等于 0 就结束次方法
if (i == 0) {
return;
}
//显示订单状态为 2(已完成) 的订单
show(1);
//用户输入要点赞的订单
System.out.print("请输入要点赞的订单序号:");
int dianZan = input.nextInt();
//让用户输入的订单序列号减一
//让用户输入的订单的状态变成已点赞
orderItems[dianZan - 1].status = 2;
System.out.println("点赞成功!");
break;
}
}
//删除订单
private void delOrderAMeal() {
int k = getnum(orderItems, 1);
if (k == 0) {
return;
}
show(1);
System.out.print("请输入要删除的订单序号:");
int deleOrder = input.nextInt();
dele(orderItems, deleOrder);
System.out.println("删除完成");
}
private void show(int o) {
//打印表头
System.out.println("序号\t\t订餐人\t\t\t餐品信息\t\t\t送餐时间\t\t送餐地址\t\t总金额\t\t订餐状态");
//循环输出对象数组
for (int i = 0; i < orderItems.length; i++) {
OrderItem item = orderItems[i];
if (orderItems[i] == null) {
break;
}
//判断订单状态
String stat = null;
if (item.status == 0) {
stat = "已预订";
} else if (item.status == 1) {
stat = "已完成";
} else if (item.status == 2) {
stat = "已点赞";
}
//判断订单是否为已预订
if (item.status == o) {
//输出订单
System.out.println((i + 1) + "\t\t" + item.orderMan + "\t\t\t\t" + item.food.foodname + " " + item.foodNum + "份"
+ "\t\t" + item.deliveryDate + "\t\t\t" + item.address + "\t\t" + item.coast + "\t\t" + stat);
}
}
}
//签收订单
private void signForOrderAMeal() {
int k = getnum(orderItems, 0);
if (k == 0) {
return;
}
show(0);
//询问用户要修改的订单
System.out.print("请选择要签收的订单序号:");
int orderNumber = input.nextInt();
//修改订单状态
orderItems[orderNumber - 1].status = 1;
//订单签收
System.out.println("订单签收完成!");
}
public void dele(OrderItem[] orderItems, int index /*下标*/) {
//定义一个变量来计算数组的真实长度
int l = 0;
//遍历 求数组真实长度
for (int i = 0; i < orderItems.length; i++) {//如果数组真实长度 不等于 数组长度 将执行下列代码
OrderItem system = orderItems[i];
if (system != null) {
l++;
} else {
break;
}
}
//循环; 删除数据并数据前移
//数据前移
for (int i = index; i <= l - 1; i++) {
orderItems[i] = orderItems[i + 1];
}
//删除最后一个数据 用数组 真实长度-1 得到数组最后一位数,然后让他等于null
orderItems[l - 1] = null;
}
public int trueLength(OrderItem[] orderItems) {
//定义一个变量来计算数组的真实长度
int l = 0;
//遍历 求数组真实长度
for (int i = 0; i < orderItems.length; i++) {//如果数组真实长度 不等于 数组长度 将执行下列代码
OrderItem system = orderItems[i];
if (system != null) {
l++;
} else {
break;
}
}
return l;
}
//查看订餐
private void checkOrderAMeal() {
//输出
showOrderlist();
}
private void showOrderlist() {
int t = trueLength(orderItems);
if (t == 0) {
return;
}
//输出表头
System.out.println("序号\t\t订餐人\t\t菜品信息\t\t\t送餐时间\t\t送餐地址\t\t总金额\t\t订单状态");
// data
for (int i = 0; i <= orderItems.length; i++) {
OrderItem item = orderItems[i];
if (orderItems[i] == null) {
break;
}
String stat = null;
if (item.status == 0) {
stat = "已预定";
} else if (item.status == 1) {
stat = "已完成";
} else if (item.status == 2) {
stat = "已点赞";
}
System.out.println((i + 1) + "\t\t" + item.orderMan + "\t\t\t" + item.food.foodname + " " + item.foodNum + "份"
+ "\t\t" + item.deliveryDate + "\t\t" + item.address + "\t\t" + item.coast + "\t\t" + stat);
}
}
public int getnum(OrderItem[] orderItems, int k) {
int num = 0;
// data
for (int i = 0; i <= orderItems.length; i++) {
OrderItem item = orderItems[i];
if (orderItems[i] == null) {
break;
}
if (item.status == k) {
num++;
}
}
return num;
}
//我要订餐
private void orderAMeal() {
System.out.println("***我要订餐***");
System.out.println("输入0返回,其他键继续:");
//用户选择是否返回
int userChioes = input.nextInt();
//判断用户输入
if (userChioes == 0) {
run();
}
//显示菜品
userinput();
//询问用户菜品编号
InquiryNumber();
}
//询问用户菜品编号
private void InquiryNumber() {
boolean loop = true;
int Num = 0;
int shareNum = 0;
String time = null;
String where = null;
while (loop) {
//询问用户的菜品编号
System.out.print("请输入您要点的菜品编号是:");
Num = input.nextInt();
//询问用户份数
System.out.print("请选择您需要的份数:");
shareNum = input.nextInt();
//询问用户时间
System.out.print("请输入送餐的时间(送餐时间是10点至20点整点):");
time = input.next();
//送餐时间
System.out.print("请输入送餐地址:");
where = input.next();
System.out.println("订餐成功!");
//输出菜品
//菜品
System.out.print("您定的是:" + foods[Num - 1].foodname);
//送餐时间
System.out.println("送餐时间:" + time);
//餐费
System.out.println("餐费:" + foods[Num - 1].foodmoney * shareNum + "元,送餐费0.0元" + "总计:" +
foods[Num - 1].foodmoney * shareNum);
loop = false;
}
//实例化对象
OrderItem orderItem = new OrderItem();
//订餐人
orderItem.orderMan = username;
//菜品对象
orderItem.food = foods[Num - 1];
//菜品数量
orderItem.foodNum = shareNum;
//送餐时间
orderItem.deliveryDate = time;
//送餐地址
orderItem.address = where;
//更新总金额
orderItem.update();
storeOrder(orderItems, orderItem);
}
private void storeOrder(OrderItem[] orderItems, OrderItem orderItem) {
//存进对象数组
for (int i = 0; i < orderItems.length; i++) {
//判断数组是否为空
if (orderItems[i] == null) {
orderItems[i] = orderItem;
break;
}
}
}
private void userinput() {
System.out.print("请输入订餐人姓名:");
username = input.next();
//显示点菜单
TheMenu();
}
private void TheMenu() {
//打印表头
System.out.println("序号\t\t菜品\t\t\t单价\t\t点赞数");
//遍历对象数组
for (int i = 0; i < foods.length; i++) {
//判断这个数组为空就退出
if (foods[i] == null) {
break;
}
//打印数据
System.out.println((i + 1) + "\t\t" + foods[i].foodname + "\t\t" + foods[i].foodmoney + "\t\t" + foods[i].foodNumberOflikes);
}
}
//欢迎语句
private void welcome() {
System.out.println("欢迎使用“吃货联盟订餐系统”");
System.out.println("*****************************");
}
}
食物类
public class Food {
//菜名
String foodname;
//单价
double foodmoney;
//点赞数
int foodNumberOflikes;
}
订单类
public class OrderItem {
//属性
//订餐人
String orderMan;
//菜品对象
Food food;
//菜品数量
int foodNum;
//送餐日期
String deliveryDate;
//送餐地址
String address;
//总金额
double coast;
//订单状态
int status;
public void update() {
coast = food.foodmoney * foodNum;
}
}
系统运行
public class Test {
//系统开始
public static void main(String[] args) {
//新建对象
Game game = new Game();
//实例化对象
game.game();
}
}