“吃货联盟定餐系统”需求说明
现今已进入网络时代,网上购物、看新闻、交友等人们的日常生活已离不开网络。“只要点点手指,就能送餐上门”,网上定餐越来越受到都市年轻人的青睐 现要求开发一个网上订餐系统,其具体功能如下:
- 我要订餐
完成用户订餐,每条订单包含如下信息:
- 订餐人姓名:要求用户输入
- 选择菜品及份数:显示三个菜单序号、名称、单价、点赞数,提示用户输入要选择的菜品序号及份数
- 送餐时间:要求当天10到20点间整点送餐,要求用户输入10~20的整数,输入错误,重复输入。
- 送餐地址:要求用户输入
- 状态:两种状态:0:已预定(默认状态) 1、已完成(订单已签收)
- 总金额:
总金额 = 菜品单价*份数-送餐费
(送餐费:当单笔订单金额达到50元时,免送餐费,否则,需交纳6元送餐费)
订餐成功后,显示订单信息。
- 查看订单
遍历显示已有定单
内容包括:序号、订餐人姓名、订餐信息(菜品名和份数)、送餐时间、送餐地址、 状态(已预定或已完成)、总金额
- 签收定单
将定单中状态改为已完成
- 删除定单
用户输入订单序号,如该序号定单为已完成状态,可以删除,其它情况给出相应提示信息
- 我要点赞
显示菜品序号、菜品名、单价、点赞数,提示用户输入要点赞的菜品序号完成对菜品的点赞。
- 退出系统
退出整个系统,显示“谢谢使用,欢迎下次光临”。
- 菜单切换
用户可根据显示的主菜单,输入功能编号执行相应的功能,当输入1~5时,执行相应功能(如图1所示)。
如输入6或其他数字,则退出系统
当用户输入1~5之间的功能编号,功能执行完毕后,显示“输入0返回”(如图1所示),此时输入0,则返回主菜单,否则,退出系统
代码实现
package project;
import java.util.Arrays;
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
// 菜单
String[] menusname = { "鱼香肉丝", "麻婆豆腐", "香辣猪蹄" };
double[] price = { 36.9, 19.9, 59.9 };
int[] star = { 0, 0, 0 };
// 订单人信息
String[] userName = new String[4];
String[] caiName = new String[4];
int[] caiCount = new int[4];
int[] time = new int[4];
String[] address = new String[4];
boolean[] status = new boolean[4];
double[] allPrice = new double[4];
// 初始化订单信息
userName[0] = "张三";
caiName[0] = "鱼香肉丝";
caiCount[0] = 2;
time[0] = 12;
address[0] = "敖家堡乡";
status[0] = false;
allPrice[0] = 73.8;
userName[1] = "哈小";
caiName[1] = "麻婆豆腐";
caiCount[1] = 1;
time[1] = 10;
address[1] = "洋县溢水";
status[1] = true;
allPrice[1] = 25.9;
// 程序开始
Scanner sc = new Scanner(System.in);
System.out.println("欢迎使用“吃货联盟订餐系统”");
while (true) {
int index = userName.length;
for (int i = 0; i < userName.length; i++) {
if (userName[i] == null) {
index = i;
break;
}
}
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("请选择");
int num = sc.nextInt();
switch (num) {
// 我要订餐
case 1:
if (index == 4) {
System.out.println("抱歉,现在订单已满,不可再次下单");
} else {
System.out.print("请输入订单人姓名:");
userName[index] = sc.next();
System.out.println("序号\t名称\t\t单价\t点赞数");
for (int i = 0; i < menusname.length; i++) {
System.out.println((i + 1) + "\t" + menusname[i]
+ "\t\t" + price[i] + "\t" + star[i]);
}
System.out.print("请输入序号点菜:");
int flag;
while (true) {
flag = sc.nextInt();
if (flag >= 0 && flag <= 3) {
caiName[index] = menusname[flag - 1];
break;
} else {
System.out.print("输入错误,请重新输入序号:");
}
}
System.out.print("请输入份数:");
while (true) {
int temp = sc.nextInt();
if (temp > 0) {
caiCount[index] = temp;
break;
} else {
System.out.print("输入错误,请重新输入数量:");
}
}
System.out.print("请输入送餐时间(10点~20点):");
while (true) {
int temp = sc.nextInt();
if (temp >= 10 && temp <= 20) {
time[index] = temp;
break;
} else {
System.out.print("输入错误,请重新输入时间(10点~20点):");
}
}
System.out.print("请输入送餐地址:");
address[index] = sc.next();
allPrice[index] = price[flag - 1] * caiCount[index];
if (allPrice[index] < 50) {
System.out.println("当单笔订单金额未达到50元时,需交纳6元送餐费");
allPrice[index] += 6;
}
System.out.println("订餐人信息");
System.out.println("姓名: \t" + userName[index]
+ "\n菜名: \t" + caiName[index] + "\n数量: \t"
+ caiCount[index] + "\n送餐时间:\t" + time[index]
+ "\n送餐地址:\t" + address[index] + "\n总金额: \t"
+ allPrice[index] + "¥");
}
System.out.print("输入0返回(或者任意整数)");
sc.nextInt();
break;
// 查看餐袋
case 2:
System.out.println("序号\t姓名\t菜名\t\t份数\t送餐时间\t\t送餐地址\t\t状态\t总金额");
for (int i = 0; i < index; i++) {
System.out.println((i + 1) + "\t" + userName[i] + "\t"
+ caiName[i] + "\t\t" + caiCount[i] + "\t"
+ time[i] + "\t\t" + address[i] + "\t\t"
+ (status[i] ? "已签收" : "未签收") + "\t" + allPrice[i]
+ "¥");
}
System.out.print("输入0返回(或者任意整数)");
sc.nextInt();
break;
// 签收订单
case 3:
System.out.println("序号\t姓名\t菜名\t\t份数\t送餐时间\t\t送餐地址\t\t状态\t总金额");
for (int i = 0; i < index; i++) {
System.out.println((i + 1) + "\t" + userName[i] + "\t"
+ caiName[i] + "\t\t" + caiCount[i] + "\t"
+ time[i] + "\t\t" + address[i] + "\t\t"
+ (status[i] ? "已签收" : "未签收") + "\t" + allPrice[i]
+ "¥");
}
System.out.print("请输入序号签收订单:");
while (true) {
int temp = sc.nextInt();
if (temp - 1 >= 0 && temp <= index) {
status[temp - 1] = true;
break;
} else {
System.out.print("输入错误,请重新输入序号:");
}
}
System.out.println("序号\t姓名\t菜名\t\t份数\t送餐时间\t\t送餐地址\t\t状态\t总金额");
for (int i = 0; i < index; i++) {
System.out.println((i + 1) + "\t" + userName[i] + "\t"
+ caiName[i] + "\t\t" + caiCount[i] + "\t"
+ time[i] + "\t\t" + address[i] + "\t\t"
+ (status[i] ? "已签收" : "未签收") + "\t" + allPrice[i]
+ "¥");
}
System.out.print("输入0返回(或者任意整数)");
sc.nextInt();
break;
// 删除订单
case 4:
System.out.println("序号\t姓名\t菜名\t\t份数\t送餐时间\t\t送餐地址\t\t状态\t总金额");
for (int i = 0; i < index; i++) {
System.out.println((i + 1) + "\t" + userName[i] + "\t"
+ caiName[i] + "\t\t" + caiCount[i] + "\t"
+ time[i] + "\t\t" + address[i] + "\t\t"
+ (status[i] ? "已签收" : "未签收") + "\t" + allPrice[i]
+ "¥");
}
System.out.print("请输入序号删除订单:");
while (true) {
int temp = sc.nextInt();
if (temp - 1 >= 0 && temp <= index) {
for (int i = temp - 1; i < index - 1; i++) {
userName[i] = userName[i + 1];
caiName[i] = caiName[i + 1];
caiCount[i] = caiCount[i + 1];
time[i] = time[i + 1];
address[i] = address[i + 1];
status[i] = status[i + 1];
allPrice[i] = allPrice[i + 1];
}
userName[index - 1] = null;
caiName[index - 1] = null;
caiCount[index - 1] = 0;
time[index - 1] = 0;
address[index - 1] = null;
status[index - 1] = false;
allPrice[index - 1] = 0.0;
index--;
break;
} else {
System.out.print("输入错误,请重新输入序号:");
}
}
System.out.println("序号\t姓名\t菜名\t\t份数\t送餐时间\t\t送餐地址\t\t状态\t总金额");
for (int i = 0; i < index; i++) {
System.out.println((i + 1) + "\t" + userName[i] + "\t"
+ caiName[i] + "\t\t" + caiCount[i] + "\t"
+ time[i] + "\t\t" + address[i] + "\t\t"
+ (status[i] ? "已签收" : "未签收") + "\t" + allPrice[i]
+ "¥");
}
System.out.print("输入0返回(或者任意整数)");
sc.nextInt();
break;
// 我要点赞
case 5:
System.out.println("序号\t名称\t\t单价\t点赞数");
for (int i = 0; i < menusname.length; i++) {
System.out.println((i + 1) + "\t" + menusname[i] + "\t\t"
+ price[i] + "\t" + star[i]);
}
System.out.print("输入序号给菜品点赞");
while (true) {
int temp = sc.nextInt();
if (temp > 0 && temp <= 3) {
time[index] = temp;
star[temp - 1]++;
break;
} else {
System.out.print("输入错误,请重新输入序号:");
}
}
System.out.println("序号\t名称\t\t单价\t点赞数");
for (int i = 0; i < menusname.length; i++) {
System.out.println((i + 1) + "\t" + menusname[i] + "\t\t"
+ price[i] + "\t" + star[i]);
}
System.out.print("输入0返回(或者任意整数)");
sc.nextInt();
break;
// 退出系统
default:
System.out.println("谢谢使用,欢迎下次使用");
return;
}
}
}
}