项目需求
现今已进入网络时代,人们的日常生活已离不开网络,如网上购物、看新闻、交友等。“只要点点手指,就能送餐上门”,网上订餐越来越受到都是年轻人的青睐。先要求开发一个网上订餐系统,需要实现我要订餐、查看餐袋、签收订单、删除订单、我要点赞和退出系统6个功能。项目运行结果如下所示:
欢迎使用“吃货联盟订餐系统”
***************************************************、
1、我要订餐
2、查看餐袋
3、签收订单
4、删除订单
5、我要点赞
6、退出系统
****************************************************、
项目环境
完成“吃货联盟订餐系统”,对于开发环境的要求如下:
开发工具:IDEA和JDK1.8.0_241
开发语言:java
技能点
程序基本概念:程序、变量、数据类型
流程控制:顺序、选择、循环、跳转语句
数组
代码:
import java.util.*;
/**
* @Author ZhangPeng
* @Date 2021/1/13
* @Description 吃货联盟
* 注意点:特别谨慎数组下标,防止越界和访问到空指针
*/
public class EatLeague {
public static void main(String[] args) {
//欢迎页
Scanner input = new Scanner(System.in);
int choose = -1;
String[] dishes = {"红烧牛肉","开水白菜","福跳墙","蜜汁熊掌"};
double[] prices = {18,12,68,88};
int[] honors = {50,100,20,12};
String[][] orders = 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("请选择:");
choose = input.nextInt();
switch (choose){
case 1:
System.out.println("***我要订餐***");
System.out.print("请输入订餐人姓名:");
String name = input.next();
//菜单信息
System.out.println("序号\t菜品\t\t单价\t\t点赞数");
for (int i = 0;i < dishes.length;i++){
System.out.println(i+1+"\t"+dishes[i]+"\t\t"+prices[i]+"元"+"\t\t" + honors[i]);
}
int dishnum = 0;
do {
System.out.print("请选择你要点的菜品编号:");
dishnum = input.nextInt();
if (dishnum < 1 || dishnum > dishes.length){
System.out.println("对不起,您的输入有误,请重新输入!");
}
}while (dishnum < 1 || dishnum > dishes.length);
int pcs = 0;
do {
System.out.print("请输入您要点的份数:");
pcs = input.nextInt();
if (pcs < 1){
System.out.println("对不起,您的输入有误,请重新输入!");
}
}while (pcs < 1);
int time = 0;
do {
System.out.print("请输入送餐时间(10点到20点整):");
time = input.nextInt();
if (time < 10 || time > 20){
System.out.println("对不起,您的输入有误,请重新输入!");
}
}while (time < 10 || time > 20);
System.out.print("请输入送餐地址:");
String addr = input.next();
System.out.println("订餐成功!");
System.out.println("您定的是:" + dishes[dishnum-1]+"\t"+pcs+"份");
System.out.println("送餐时间:" + time + "点");
double cost = prices[dishnum-1]*pcs;
double sent = cost>50?0:6;
double total = cost + sent;
System.out.println("餐费:"+cost+"元,送餐费:" + sent + "元,总计:" + total+"元");
for (int i = 0;i < orders.length;i++){
if (orders[i] == null){
orders[i] = new String[2];
orders[i][0] = name + "\t" + dishes[dishnum-1] + "\t" + pcs +"份" +"\t"+ time +"点" +"\t"+
addr+"\t"+total+"元";
orders[i][1] = "已预订";
break;
}
}
break;
case 2:
System.out.println("查看餐袋");
System.out.println("序号\t订餐人\t餐品信息\t送餐日期\t送餐地址\t总金额\t订单状态");
for (int i = 0;i < orders.length;i++){
if (orders[i] != null){
System.out.println(i+1+"\t" + orders[i][0] + "\t" + orders[i][1]);
}else {
break;
}
}
break;
case 3:
System.out.println("***签收订单***");
System.out.println("序号\t订餐人\t餐品信息\t送餐日期\t送餐地址\t总金额\t订单状态");
for (int i = 0;i < orders.length;i++){
if (orders[i] != null){
System.out.println(i+1+"\t" + orders[i][0] + "\t" + orders[i][1]);
}else {
break;
}
}
int num = 0;
int end = 0;
do {
System.out.println("请选择要签收的的订单序号:");
for (int i = 0; i < orders.length; i++) {
if (orders[i] == null){
end = i+1;
break;
}
}
num = input.nextInt();
if (num < 1 || num >= end){
System.out.println("对不起,您的输入有误,请重新输入!");
}else if (!("已预订".equals(orders[num-1][1]))){
System.out.println("订单已签收,不能重复签收!");
}else{
orders[num-1][1] = "已完成";
break;
}
}while (num<1 || num >= end || !"已预订".equals(orders[num-1][1]));
break;
case 4:
System.out.println("***删除订单***");
System.out.println("序号\t订餐人\t餐品信息\t送餐日期\t送餐地址\t总金额\t订单状态");
for (int i = 0;i < orders.length;i++){
if (orders[i] != null){
System.out.println(i+1+"\t" + orders[i][0] + "\t" + orders[i][1]);
}else {
break;
}
}
int n = 0;
int e = 0;
do {
for (int i = 0; i < orders.length; i++) {
if (orders[i] == null){
e=i;
break;
}
}
System.out.println("请选择要删除的的订单序号:");
n = input.nextInt();
if (n < 1 || n > e ){
System.out.println("对不起,您的输入有误,请重新输入!");
}else if (!"已完成".equals(orders[n - 1][1])){
System.out.println("未完成订单不能删除!");
}else {
boolean isDelete = false;
for (int i = n-1; i < orders.length; i++) {
if (i == orders.length - 1){
orders[i] = null;
isDelete = true;
}else {
orders[i] = orders[i+1];
if (orders[i] == null){
isDelete = true;
break;
}
}
}
if (isDelete){
break;
}
}
}while (n < 1 || n > e || !"已完成".equals(orders[n - 1][1]));
System.out.println("订单删除成功!");
break;
case 5:
System.out.println("***我要点赞***");
System.out.println("序号\t菜品\t\t单价\t\t点赞数");
for (int i = 0;i < dishes.length;i++){
System.out.println(i+1+"\t"+dishes[i]+"\t"+prices[i]+"元"+"\t" + honors[i]);
}
int id = 0;
do {
System.out.println("请输入要点赞的菜品序号:");
id = input.nextInt();
if (id < 1 || id > honors.length){
System.out.println("对不起,您的输入有误,请重新输入!");
}else {
honors[id - 1] += 1;
break;
}
}while (id < 1 || id > honors.length);
System.out.println("点赞成功!!!");
break;
default:
}
if (choose > 0 && choose < 6){
System.out.println("输入0返回:");
choose = input.nextInt();
}else {
break;
}
}while (choose == 0);
System.out.println("谢谢惠顾,下次光临!");
}
}
效果图: