本文章做的是一个简易版的订餐系统,主要使用了java面向对象的思想和数组来实现的,非常适合刚入门儿的小伙伴拿来练手,快来一起看看吧!
这里首先先看一下实现效果是啥样的,然后在一步步的去实现。
1、订餐首页,通过键盘键入序号进入子功能
2、我要订餐
3、签收订单
4、删除订单
5、我要点赞
6、退出系统
效果看起来是不是很简单?没错,下面就来硬货,直接上代码!!!
首先创建四个类:
这里我们将菜单和订单的属性和方法分别用Cuisine和Order两个类封装起来,在OrderManager去实现系统的各个功能,Test类是程序的入口,这样就体现了面向对象的思想。
Cuisine类中代码:
public class Cuisine {
private String disName; //餐品名
private double price; //价格
private int praseNums; //点赞数
//无参构造器
public Cuisine() {
}
//有参构造器
public Cuisine(String disName, double price, int praseNums) {
this.disName = disName;
this.price = price;
this.praseNums = praseNums;
}
//get、set方法
public String getDisName() {
return disName;
}
public void setDisName(String disName) {
this.disName = disName;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public int getPraseNums() {
return praseNums;
}
public void setPraseNums(int praseNums) {
this.praseNums = praseNums;
}
//重写toString方法,输出信息
@Override
public String toString() {
return disName +"\t\t" + price +"\t\t"+ praseNums ;
}
}
Order类代码:
public class Order {
private String name; //订单人姓名
private String disMegs; //餐品信息
private int time; //送餐时间
private String address; //送餐地址
private int states; //送餐状态
private double sumPrices; //总金额
//无参构造
public Order() {
}
//有参构造
public Order(String name, String disMegs, int time, String address, double sumPrices, int states) {
this.name = name;
this.disMegs = disMegs;
this.time = time;
this.address = address;
this.states = states;
this.sumPrices = sumPrices;
}
//get、set方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDisMegs() {
return disMegs;
}
public void setDisMegs(String disMegs) {
this.disMegs = disMegs;
}
public int getTime() {
return time;
}
public void setTime(int time) {
this.time = time;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getStates() {
return states;
}
public void setStates(int states) {
this.states = states;
}
public double getSumPrices() {
return sumPrices;
}
public void setSumPrices(double sumPrices) {
this.sumPrices = sumPrices;
}
//重写toString方法,输出信息
@Override
public String toString() {
return name + "\t\t"+ disMegs +"\t" + time +"\t\t"+ address + "\t"+sumPrices+ "\t"+states ;
}
}
OrderManager类(存放程序各个功能的方法,核心代码就在这) :
import java.util.Scanner;
public class OrderManager {
Scanner scanner = new Scanner(System.in);
//创建长度为4的订单数组
Order[] orders = new Order[4];
//创建长度为3餐品数组
Cuisine[] cuisine = new Cuisine[3];
public void start() {
//定义num变量记录键盘键入的值
int num = -1;
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.println("请选择:");
int choose = scanner.nextInt();
boolean isAdd = false;//true:记录找到为空的位置,可以插入;false:没有找到
switch (choose) {
case 1:
//我要订餐
Ordering();
break;
case 2:
//查看订单
check();
break;
case 3:
//删除订单
del();
break;
case 4:
//签收订单
signIn();
break;
case 5:
praise();
break;
case 6:
//退出系统
break;
default:
break;
}
if (choose < 1 || choose > 5) {
break;
} else {
System.out.println("输入0返回");
num = scanner.nextInt();
}
} while (num == 0); //num为0时,进入循环体
System.out.println("谢谢使用,欢迎下次光临");
}
//定义初始化方法,一开始给数组添加了两个订单信息和三个菜品信息
public void init() {
Order order1 = new Order("张强", "红烧带鱼1份", 12, "天成路209号", 24.0, 0);
Order order2 = new Order("李广", "红烧带鱼2份", 14, "天成路219号", 48.0, 0);
orders[0] = order1;
orders[1] = order2;
Cuisine cuisine1 = new Cuisine("红烧带鱼", 38, 0);
Cuisine cuisine2 = new Cuisine("鱼香肉丝", 22, 0);
Cuisine cuisine3 = new Cuisine("时令蔬菜", 20, 0);
cuisine[0] = cuisine1;
cuisine[1] = cuisine2;
cuisine[2] = cuisine3;
}
//订单功能
public void Ordering() {
boolean isAdd = false; //true:记录找到为空的位置,可以插入;false:没有找到
int num = -1;
System.out.println("*****我要订餐*****");
//查找要插入的位置
for (int i = 0; i < orders.length; i++) {
//如果找到为空的位置,记录下来
if (orders[i] == null) {
isAdd = true;//记录已找到一个为空的位置
System.out.println("序号\t商品名\t单价\t\t点赞数");
for (int j = 0; j < cuisine.length; j++) {
System.out.println((j + 1) + cuisine[j].toString());
}
System.out.println("请选择所定餐品序号:");
int chooseDish = scanner.nextInt();
System.out.println("请选择所定份数:");
int number = scanner.nextInt();
String disMeg = cuisine[chooseDish - 1].getDisName() + "" + number + "份";
System.out.println("请输入订餐人的姓名:");
String name = scanner.next();
System.out.println("请输入送餐时间(10-20点整点送餐):");
int time = scanner.nextInt();
while (time < 10 || time > 20) {
System.out.println("对不起,您输入的信息有误,请输入(10-20)的整数");
time = scanner.nextInt();
}
System.out.println("请输入送餐地址:");
String address = scanner.next();
//计算餐费
double sumPrice = cuisine[chooseDish - 1].getPrice() * number;
//送餐费>=50元时,免6元送餐费
double delicharge = sumPrice >= 50 ? 0.0 : 6.0;
//显示订单信息
System.out.println("订单成功");
System.out.println("您订的是" + disMeg);
System.out.println("订餐人:" + name);
System.out.println("送餐时间:" + time + "点");
System.out.println("送餐地址:" + address);
System.out.println("餐费:" + sumPrice + ",送餐费:" + delicharge + "元");
System.out.println("总金额:" + (sumPrice + delicharge) + "元");
//保存数据
Order order = new Order(name, disMeg, time, address, (sumPrice + delicharge), 0);
orders[i] = order;
break;
}
}
//如果没有找到为空的位置,则提示信息
if (!isAdd) {
System.out.println("对不起,您的餐袋已满!");
}
}
//签收订单
public void signIn() {
System.out.println("*****签收订单*****");
System.out.println("请输入要签收的订单序号:");
int signOrderId = scanner.nextInt();
boolean isFind = false;//记录是否找到订单
for (int i = 0; i < orders.length; i++) {
if (orders[i] != null && orders[i].getStates() == 1 && signOrderId == i + 1) {
System.out.println("对不起,您选择的订单已经完成签收,不能再次签收");
isFind = true;
break;
} else if (orders[i] != null && orders[i].getStates() == 0 && signOrderId == i + 1) {
orders[i].setStates(1);
System.out.println("订单签收成功");
isFind = true;
break;
}
}
//条件判断,如果没有找到这条订单,提示没有找到
if (!isFind) {
System.out.println("订单不存在");
}
}
//查看餐袋
public void check() {
System.out.println("*****查看餐袋*****");
System.out.println("序号\t订餐人\t餐品信息\t\t送餐时间\t送餐地址\t\t总金额\t状态");
//遍历数组
for (int i = 0; i < orders.length; i++) {
if (orders[i] != null) {
String orderState = (orders[i].getStates() == 0)?"未签收":"已签收";
System.out.println((i + 1) + "\t" +orders[i].getName() + "\t\t"+ orders[i].getDisMegs() +"\t" + orders[i].getTime() +"\t\t"+ orders[i].getAddress() + "\t"+orders[i].getSumPrices()+ "\t"+orderState);
}
}
}
//删除订单
public void del() {
System.out.println("*****删除订单*****");
System.out.println("请输入要删除的订单序号");
int delId = scanner.nextInt();
int delIndex = -1;
boolean isDelFind = false;
//循环查找这条订单
for (int i = 0; i < orders.length; i++) {
if (orders[i] != null && orders[i].getStates() == 1 && delId == i + 1) {
delIndex = i;
isDelFind = true;
break;
} else if (orders[i] != null && orders[i].getStates() == 0 && delId == i + 1) {
System.out.println("您选择的订单未签收,不能删除");
isDelFind = true;
break;
}
}
if (!isDelFind) {
System.out.println("对不起,此条订单不存在");
}
//执行删除操作
if (delIndex != -1) {
for (int i = delIndex + 1; i < orders.length; i++) {
orders[i - 1] = orders[i];
}
//清空最后一位
orders[orders.length - 1] = null;
System.out.println("删除成功");
}
}
//我要点赞
public void praise(){
System.out.println("*****我要点赞*****");
System.out.println("序号\t菜品\t单价\t点赞数");
for (int j = 0; j < cuisine.length; j++) {
String price=cuisine[j].getPrice()+"元";
String praise=cuisine[j].getPraseNums()+"赞";
System.out.println((j+1)+"\t"+cuisine[j].getDisName()+"\t"+price+"\t"+praise);
}
System.out.println("请输入要点赞的餐品序号:");
int dishId = scanner.nextInt();
int num=cuisine[dishId-1].getPraseNums();
num++;
System.out.println("点赞成功!");
System.out.println(cuisine[dishId-1].getDisName()+num+"赞");
cuisine[dishId-1].setPraseNums(num);
}
}
Test类(测试类):
public class Test {
public static void main(String[] args) {
//创建OrderManager对象
OrderManager orderManager = new OrderManager();
//调用初始化方法
orderManager.init();
//调用start方法
orderManager.start();
}
}
到这里整个项目就完成啦,是不是很简单!!!如果觉得还不错,记得点个关注哦!