现要求开发一个网上订餐系统,其具体功能如下:
- 我要订餐
完成用户订餐,每条订单包含如下信息:
- 订餐人姓名:要求用户输入
- 选择菜品及份数:显示三个菜单序号、名称、单价、点赞数,提示用户输入要选择的菜品序号及份数
- 送餐时间:要求当天10到20点间整点送餐,要求用户输入10~20的整数,输入错误,重复输入。
- 送餐地址:要求用户输入
- 状态:两种状态:0:已预定(默认状态) 1、已完成(订单已签收)
- 总金额:
总金额 = 菜品单价*份数-送餐费
(送餐费:当单笔订单金额达到50元时,免送餐费,否则,需交纳6元送餐费)
订餐成功后,显示订单信息。
- 查看订单
遍历显示已有定单
内容包括:序号、订餐人姓名、订餐信息(菜品名和份数)、送餐时间、送餐地址、 状态(已预定或已完成)、总金额
- 签收定单
将定单中状态改为已完成
- 删除定单
用户输入订单序号,如该序号定单为已完成状态,可以删除,其它情况给出相应提示信息
- 我要点赞
显示菜品序号、菜品名、单价、点赞数,提示用户输入要点赞的菜品序号完成对菜品的点赞。
- 退出系统
退出整个系统,显示“谢谢使用,欢迎下次光临”。
- 菜单切换
用户可根据显示的主菜单,输入功能编号执行相应的功能,当输入1~5时,执行相应功能
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String[] dishName = {"香精煎鱼?", "香翅捞饭?", "香菜凤仁鸡", "油饼食不食"};//菜品
名
double[] dishPrice = {17, 20, 30, 12};//菜品单价
int[] zan = {88, 101, 106, 4369};//每个菜的点赞数
String[][] bill = new String[10][7];//所有订单的信息,默认只有10个订单
//所存数据按顺序为序号,订单人姓名,菜品名,送达
时间,地址,状态,总金额
int choose;//用户选项变量
int billnum = 0;//定义订单数
System.out.println("欢迎使用吃货联盟系统");
while (true) {
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("*****开始订餐*****");
for (int j = billnum; j < bill.length; j++) {
double sum = 0; //定义总金额
bill[j][0] = String.valueOf(j + 1);//为bill中订单序号赋值
System.out.print("请输入订餐人姓名:");
bill[j][1] = input.next();//为bill中订单人姓名赋值
//点菜
for (int i = 0; i < bill.length; i++) {
System.out.println("序号" + "\t\t菜品名" + "\t\t单价" +
"\t\t\t点赞数");
for (int k = 0; k < dishName.length; k++) { //显示菜单
System.out.println((k + 1) + " \t" + dishName[k] + "
\t" + dishPrice[k] + "\t\t" + zan[k]);
}
System.out.print("请输入选择的菜品序号:");
int dishNo = input.nextInt();
while (dishNo < 1 || dishNo > dishName.length) {
System.out.print("请选择正确的序号:");
dishNo = input.nextInt();
}
System.out.print("请输入需要的份数:");
int num = input.nextInt();
while (num < 0) {
System.out.print("请选择正确的份数:");
num = input.nextInt();
}
sum += dishPrice[dishNo - 1] * num;
if (bill[j][2] == null) {//为bill中菜品信息赋值
bill[j][2] = " " + dishName[dishNo - 1] + num + "份";
} else {
bill[j][2] = bill[j][2] + " " + dishName[dishNo - 1] +
num + "份";
}
System.out.println("继续选菜请按1,退出选菜请按2");//判断是否继
续点菜
int chosedish = input.nextInt();
if (chosedish == 2) {
break;
}
}
double sendPrice = (sum >= 50) ? 0 : 6;//定义配送费
sum += sendPrice;
bill[j][6] = "总金额" + sum + "元,包含" + sendPrice + "元配送
费";//为bill中总金额赋值
System.out.print("请输入送餐时间(送餐时间是10点至20点间整点送
餐):");//输入送餐时间
int time = input.nextInt();
while (time < 10 || time > 20) {
System.out.print("您的输入有误,请输入10-20间的整数");
time = input.nextInt();
}
bill[j][3] = time + "点送达";//为bill中送餐时间赋值
System.out.print("请输入送餐地址:");
String address = input.next();
bill[j][4] = "地址为" + address;//为bill中送餐地址赋值
bill[j][5] = "已预定";//为bill中订单状态赋值
System.out.println("订餐成功,您的订单为");
for (int n = 0; n < bill[billnum].length; n++) {
if (bill[billnum][n] != null) {
System.out.print(bill[billnum][n] + " ");
}
}
billnum++;//完成订单,订单数+1
System.out.println();
System.out.println("是否订下一份餐(y/n)");//判断是否点另一份餐
String addchoose = input.next();
if (addchoose.equals("n")) {
break;
}
}
break;
case 2:
System.out.println("*****查看餐袋*****");
for (int j = 0; j < bill.length; j++) {//遍历输出bill中不为空的内容
if (bill[j][1] != null) {
for (int i = 0; i < bill[j].length; i++) {
System.out.print(bill[j][i] + "\t");
}
System.out.println();
}
}
break;
case 3:
System.out.println("*****确认订单*****");
for (int j = 0; j < bill.length; j++) {//遍历输出bill中不为空的内容
if (bill[j][0] != null) {
for (int i = 0; i < bill[j].length; i++) {
System.out.print(bill[j][i] + "\t");
}
System.out.println();
}
}
System.out.println("请输入你要确认的订单编号");
int confirm = input.nextInt();
if (bill[confirm - 1][0] == null) {//修改bill中订单状态
System.out.println("订单不存在");
} else {
bill[confirm - 1][5] = "已完成";
System.out.println("订单已确认");
}
break;
case 4:
System.out.println("*****删除订单*****");
for (int j = 0; j < bill.length; j++) {//遍历输出bill中不为空的内容
if (bill[j][1] != null) {
for (int i = 0; i < bill[j].length; i++) {
System.out.print(bill[j][i] + "\t");
}
System.out.println();
}
}
System.out.println("请输入你要删除的订单编号");
int del = input.nextInt();
if (bill[del - 1][0] == null) {//判断是否可以删除
System.out.println("订单不存在");//序号不存在
} else if (bill[del - 1][5].equals("已预定")) {//订单未完成
System.out.println("未完成订单不能删除");
} else { //bill中元素前移,覆盖被删的内容
for (int i = del; i < bill.length; i++) {
for (int j = 1; j < bill[i].length; j++) {
bill[i - 1][j] = bill[i][j];
}
if (bill[i][0] == null) {
break;
}
}
billnum--;//订单数减一
}
break;
case 5:
System.out.println("*****我要点赞*****");
System.out.println("序号" + "\t\t菜品名" + "\t\t单价" + "\t\t\t点赞
数");
for (int k = 0; k < dishName.length; k++) { //显示菜单
System.out.println((k + 1) + " \t" + dishName[k] + " \t" +
dishPrice[k] + "\t\t" + zan[k]);
}
System.out.println("输入想要点赞的菜品序号:");
int zannum = input.nextInt();
zan[zannum - 1] = zan[zannum - 1] + 1;
break;
case 6:
System.out.println("欢迎下次光临!");
return;
default:
System.out.println("输入错误,重新选择");
break;
}
}
}