运用类和对象实现订餐系统
package chihuo2;
/**
* 我们通过定义类,封装多个相关信息
*
* @author Administrator
*
*/
public class Cai {
public String name;
public double price;
public int population;
}
/**
* 订单信息
*
* @author Administrator
*
*/
public class Order {
public int no;
public String customer;
public Cai cai;
public int quantity;
public String address;
public int hour;
public int status;
public double fee = 5 ;
public String show () {
StringBuffer buffer = new StringBuffer();
buffer.append(no + "\t" );
buffer.append(customer + "\t" );
buffer.append(cai.name + " " + quantity + "份\t" );
buffer.append(hour + "\t" );
buffer.append(address + "\t" );
buffer.append(getAmount() + "\t" );
buffer.append(status == 1 ? "已完成" : "未处理" );
return buffer.toString();
}
/**
* 计算订单总金额(运费)
*
* @return 返回总金额
*/
public double getAmount () {
if (cai == null )
return 0 ;
double amount = this .quantity * cai.price;
if (amount < 50 )
amount += fee;
return amount;
}
}
package chihuo2;
import java.util.Scanner;
/**
* 帮助类(封装一些常用的功能,和业务无关)
*
* @author Administrator
*
*/
public class Helper {
/**
* 获取一个整数
*
* @return msg 提示信息
* @return errorMsg 输入错误后的提示信息
* @return 返回整数
*/
public static int getInteger (String msg, String errorMsg) {
System.out.println(msg);
Scanner input = new Scanner(System.in);
while (!input.hasNextInt()) {
input.next();
System.out.println(errorMsg);
}
int result = input.nextInt();
return result;
}
/**
* 接收用戶 提示信息,返回一個字符串
*
* @param msg提示信息
* @return
*/
public static String getString (String msg) {
System.out.println(msg);
Scanner input = new Scanner(System.in);
String answer = input.next();
return answer;
}
public static Order[] createNewArray (Order[] oldArray) {
if (oldArray == null ) {
Order[] newArray = new Order[1 ];
return newArray;
} else {
Order[] newArray = new Order[oldArray.length + 1 ];
for (int i = 0 ; i < oldArray.length; i++) {
newArray[i] = oldArray[i];
}
return newArray;
}
}
}
public class OrderingUtil {
public static Cai[] cais = null ;
public static Order[] orders = null ;
/**
* 订单管理数据初始化
*/
public static void initial () {
initialCais();
initialOrders();
}
/**
* 开始业务
*/
public static void start () {
initial();
String answer = "-1" ;
do {
boolean result = startMenu();
if (result == false ) {
return ;
}
answer = Helper.getString("输入0 返回" );
} while (answer.equals("0" ));
}
/**
* 显示操作菜单
*/
public static void showMenu () {
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("************************" );
}
/**
* 开始选择菜单 是否要詢問用戶是否繼續
*/
public static boolean startMenu () {
showMenu();
int choose = Helper.getInteger("请选择" , "请重新选择" );
switch (choose) {
case 6 :
System.out.println("谢谢使用,欢迎下次光临" );
return false ;
case 5 :
System.out.println("***我要点赞***" );
praise();
break ;
case 4 :
delete();
break ;
case 3 :
sign();
break ;
case 2 :
display();
break ;
case 1 :
add();
break ;
default :
System.out.println("输入了非法值" );
break ;
}
return true ;
}
/**
* 删除订单
*/
public static void delete () {
int no = Helper.getInteger("请输入订单号" , "请重新输入" );
Order order = getOrder(no);
if (order == null ) {
System.out.println("订单不存在" );
return ;
}
if (order.status != 1 ) {
System.out.println("未完成的订单不能删除!" );
return ;
}
deleteOrder(order);
System.out.println("订单删除成功!" );
}
/**
* 删除指定订单,收缩数组
*
* @param order
* 要删除的订单
*/
public static void deleteOrder (Order order) {
Order[] temp = new Order[orders.length - 1 ];
int i = 0 ;
for (int j = 0 ; j < orders.length; j++) {
if (orders[j].no == order.no) {
continue ;
}
temp[i] = orders[j];
i++;
}
orders = temp;
}
/**
* 签收订单
*/
public static void sign () {
int no = Helper.getInteger("请输入订单号" , "请重新输入" );
Order order = getOrder(no);
if (order == null ) {
System.out.println("订单不存在" );
return ;
}
String name = Helper.getString("请输入顾客名称" );
if (name.equals(order.customer) == false ) {
System.out.println("顾客名输入错误" );
return ;
}
order.status = 1 ;
System.out.println("订单签收成功" );
}
/**
* 根据订单编号查找订单
*
* @param no
* 要查找的订单编号
* @return 对应的订单,如果订单不存在,返回null
*/
public static Order getOrder (int no) {
for (int i = 0 ; i < orders.length; i++) {
if (orders[i].no == no) {
return orders[i];
}
}
return null ;
}
/**
* 我要点餐
*/
public static void add () {
System.out.println("**********我要订餐***********" );
showAllCais();
Order order = getOrderInfo();
int no = addOrder(order);
}
/**
* 添加订单到订单数组
*
* @param order
* 要添加的订单信息
* @return 返回新订单的订单号
*/
public static int addOrder (Order order) {
Order lastOrder = orders[orders.length - 1 ];
int newNo = lastOrder.no + 1 ;
order.no = newNo;
orders = Helper.createNewArray(orders);
orders[orders.length - 1 ] = order;
return newNo;
}
public static Order getOrderInfo () {
Order order = new Order();
order.customer = Helper.getString("请输入你的姓名:" );
int num = Helper.getInteger("请选择要点的菜品" , "请重新输入" );
order.cai = cais[num - 1 ];
int quantity = Helper.getInteger("请问要点多少份?" , "请重新输入" );
order.quantity = quantity;
int hour = Helper.getInteger("请问什么时候送到?" , "请重新输入" );
order.hour = hour;
String address = Helper.getString("地址是?" );
order.address = address;
return order;
}
public static void showAllCais () {
System.out.println("序号\t菜名\t单价\t点赞数" );
StringBuffer buffer = null ;
for (int i = 0 ; i < cais.length; i++) {
buffer = new StringBuffer();
buffer.append((i + 1 ) + "\t" );
buffer.append(cais[i].name + "\t" );
buffer.append(cais[i].price + "\t" );
buffer.append(cais[i].population + "\t" );
System.out.println(buffer.toString());
}
}
/**
* 显示餐袋(顾客姓名不为空)
*/
public static void display () {
System.out.println("查看餐袋" );
System.out.println("序号\t订餐人\t餐品信息\t送餐时间\t地址\t总金额\t状态" );
for (int i = 0 ; i < orders.length; i++) {
if (orders[i].customer == null ) {
continue ;
}
System.out.println(orders[i].show());
}
}
/**
* 订单数据初始化
*/
public static void initialOrders () {
orders = new Order[2 ];
orders[0 ] = new Order();
orders[0 ].address = "东莞庄" ;
orders[0 ].no = 1 ;
orders[0 ].cai = cais[0 ];
orders[0 ].quantity = 2 ;
orders[0 ].customer = "张三" ;
orders[0 ].hour = 3 ;
orders[0 ].status = 1 ;
orders[1 ] = new Order();
orders[1 ].address = "东莞庄一横路123" ;
orders[1 ].no = 2 ;
orders[1 ].cai = cais[1 ];
orders[1 ].quantity = 3 ;
orders[1 ].customer = "李四" ;
orders[1 ].hour = 12 ;
orders[1 ].status = 0 ;
}
/**
* 菜的数据初始化
*/
public static void initialCais () {
cais = new Cai[3 ];
cais[0 ] = new Cai();
cais[0 ].name = "鱼香肉丝" ;
cais[0 ].population = 0 ;
cais[0 ].price = 20 ;
cais[1 ] = new Cai();
cais[1 ].name = "红烧带鱼" ;
cais[1 ].population = 0 ;
cais[1 ].price = 12 ;
cais[2 ] = new Cai();
cais[2 ].name = "蔬菜" ;
cais[2 ].population = 0 ;
cais[2 ].price = 22 ;
}
/**
* 点赞系统
*/
public static void praise () {
showAllCais();
int praiseNum = Helper.getInteger("请选择您要点赞的菜品编号:" , "输入错误,请重新输入。" );
cais[praiseNum - 1 ].population++;
System.out.println("点赞成功!" );
}
}
public class Test {
public static void main (String[] args) {
OrderingUtil.start();
}
}