“吃货联盟定餐系统”需求说明
现今已进入网络时代,网上购物、看新闻、交友等人们的日常生活已离不开网络。“只
要点点手指,就能送餐上门”,网上定餐越来越受到都市年轻人的青睐
现要求开发一个网上订餐系统,其具体功能如下:
一、我要订餐
完成用户订餐,每条订单包含如下信息:
* *订餐人姓名:要求用户输入
* *选择菜品及份数:显示三个菜单序号、名称、单价、点赞数,提示用户输入要
选择的菜品序号及份数
* *送餐时间:要求当天 10
到
20
点间整点送餐,要求用户输入
10~20
的整数,输
入错误,重复输入。
* *送餐地址:要求用户输入
* *状态:两种状态:0
:已预定(默认状态)
1
、已完成(订单已签收)
* *总金额: 总金额 =
菜品单价
*
份数
-
送餐费
(送餐费:当单笔订单金额达到
50
元时,免送餐费,否则,需交纳
6
元送餐费)
订餐成功后,显示订单信息。
二、 查看订单
遍历显示已有定单
内容包括:序号、订餐人姓名、订餐信息(菜品名和份数)、送餐时间、送餐地址、
状态(已预定或已完成)、总金额
三、 签收定单
将定单中状态改为已完成
四、删除定单
用户输入订单序号,如该序号定单为已完成状态,可以删除,其它情况给出相应提
示信息
五、我要点赞
显示菜品序号、菜品名、单价、点赞数,提示用户输入要点赞的菜品序号完成对菜
品的点赞。
六、退出系统
退出整个系统,显示“谢谢使用,欢迎下次光临”。
对于上面的项目要求,博主这边也是做出了完整的代码,下面就是代码的与注释分析:
import java.util.Arrays;
import java.util.Scanner;
//
public class pingTai {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
String[] dishes = {"宫保鸡丁", "蒸鸡蛋", "红烧鲍鱼", "佛跳墙", "麻婆豆腐"};//定义菜名
double[] prices = {23, 56, 43, 88, 15}; //定义 单价
int[] honors = new int[5]; //定义 点赞数
final double SEND_PRICE = 6; //定义 配送费为6元
String[][] bills = new String[1000][]; //定义 订单详情
System.out.println("********欢迎来到吃货联盟********");
int choice; //定义 所选择的首页功能(1-6)
do {
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.print("请输入您的选择:");
choice = s.nextInt();
switch (choice) {
case 1:
System.out.print("请输入您的姓名:");
String name = s.next(); //定义 点餐人姓名
//展示菜单
System.out.println("序号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]);
}
System.out.print("请输入您要点的菜品:");
int num = s.nextInt();
System.out.print("请输入份数:");
int pcs = s.nextInt(); //定义 点餐分数
System.out.print("请输入送餐时间(10-20点整点送餐):");
int time = s.nextInt(); //定义 送餐时间
System.out.print("请输入送餐地址:");
String address = s.next(); //定义 送餐地址
double total = prices[num - 1] * pcs; //定义 总价=单价*份数
total = total > 60 ? total : total + SEND_PRICE;
//(用三元表达式)总价如果大于60免配送费6元,否则总价=总价+配送费6元
System.out.println(name + "顾客,恭喜订餐成功,您点了" + dishes[num-1] + pcs + "份" + "总价为" + total + "元," + time + "点送达,您的地址为:" + address);
for (int i = 0; i < bills.length; i++) {
if (bills[i] == null) { //判断 bills[i]为空的状态时
bills[i] = new String[]{dishes[num - 1] + "t" + pcs + "t" +
total + "t" +name + "t" + time + "t" + address, "已预订"};
// 给数组 bills[i] 赋值
break;
}
}
break;
case 2:
System.out.println("***查看订单***");
System.out.println("序号t菜名tt份数t总价t姓名t时间t送餐地址t状态");
for (int i = 0; i < bills.length; i++) {
if (bills[i] == null) {
break;
}
System.out.println(i + 1 + "t" + bills[i][0] + "t" + bills[i][1]);
}
case 3:
System.out.println("***确认订单***");
System.out.println("序号t菜名tt份数t总价t姓名t时间t送餐地址t状态");
for (int i = 0; i < bills.length; i++) {
if (bills[i] == null) {
break;
}
System.out.println(i + 1 + "t" + bills[i][0] + "t" + bills[i][1]);
}
System.out.print("请选择您要确认的订单编号:");
int billNum = s.nextInt(); //定义 订单编号
if (bills[billNum - 1] == null) { //如果此订单为空
System.out.println("订单不存在");
} else if (bills[billNum - 1][1].equals("已完成")) { //如果此订单显示“已完成”
System.out.println("订单已完成,不能重复确认!");
} else {
bills[billNum - 1][1] = "已完成"; //如果此订单已完成
System.out.println("确认订单成功!");
}
break;
case 4:
System.out.println("***删除订单***");
System.out.println("序号t菜名tt份数t总价t姓名t时间t送餐地址t状态");
for (int i = 0; i < bills.length; i++) {
if (bills[i] == null) {
break;
}
System.out.println(i + 1 + "t" + bills[i][0] + "t" + bills[i][1]);
}
System.out.print("请输入要删除的订单:");
int delNum = s.nextInt();
if (bills[delNum - 1] == null) {
System.out.println("订单不存在,删除失败!");
} else if (bills[delNum - 1][1].equals("已预订")) {
System.out.println("订单未完成,不能删除!");
} else { //可以删除
for (int i = delNum - 1; i < bills.length; i++) {
bills[i] = bills[i + 1];
if (bills[i + 1] == null) {
break;
}
}
System.out.println("删除成功!");
}
break;
case 5:
//展示菜单
System.out.println("序号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]);
}
System.out.print("请输入您点赞的菜品:");
int honnorNum = s.nextInt();
honors[honnorNum - 1]++;
break;
case 6:
break;
default:
}
} while (choice > 0 && choice < 6);
System.out.println("谢谢惠顾,欢迎下次光临!");
}
}
然后这个程序的运行结果如下,也是符合项目要求的:
"C:Program FilesJavajdk1.8.0_241binjava.exe" "-javaagent:C:Program ********欢迎来到吃货联盟******** *****1、我要订餐***** *****2、查看订单***** *****3、确认订单***** *****4、删除订单***** *****5、我要点赞***** *****6、退出系统***** 请输入您的选择:1 请输入您的姓名:Hm 序号 菜名 价格 点赞数 1 宫保鸡丁 23.0 0 2 蒸鸡蛋 56.0 0 3 红烧鲍鱼 43.0 0 4 佛跳墙 88.0 0 5 麻婆豆腐 15.0 0 请输入您要点的菜品:2 请输入份数:2 请输入送餐时间(10-20点整点送餐):15 请输入送餐地址:南京市玄武湖 Hm顾客,恭喜订餐成功,您点了蒸鸡蛋2份总价为112.0元,15点送达,您的地址为:南京市玄武湖 *****1、我要订餐***** *****2、查看订单***** *****3、确认订单***** *****4、删除订单***** *****5、我要点赞***** *****6、退出系统***** 请输入您的选择:2 ***查看订单*** 序号 菜名 份数 总价 姓名 时间 送餐地址 状态 1 蒸鸡蛋 2 112.0 Hm 15 南京市玄武湖 已预订 ***确认订单*** 序号 菜名 份数 总价 姓名 时间 送餐地址 状态 1 蒸鸡蛋 2 112.0 Hm 15 南京市玄武湖 已预订 请选择您要确认的订单编号:3 订单不存在 *****1、我要订餐***** *****2、查看订单***** *****3、确认订单***** *****4、删除订单***** *****5、我要点赞***** *****6、退出系统***** 请输入您的选择:3 ***确认订单*** 序号 菜名 份数 总价 姓名 时间 送餐地址 状态 1 蒸鸡蛋 2 112.0 Hm 15 南京市玄武湖 已预订 请选择您要确认的订单编号:1 确认订单成功! *****1、我要订餐***** *****2、查看订单***** *****3、确认订单***** *****4、删除订单***** *****5、我要点赞***** *****6、退出系统***** 请输入您的选择:4 ***删除订单*** 序号 菜名 份数 总价 姓名 时间 送餐地址 状态 1 蒸鸡蛋 2 112.0 Hm 15 南京市玄武湖 已完成 请输入要删除的订单:1 删除成功! *****1、我要订餐***** *****2、查看订单***** *****3、确认订单***** *****4、删除订单***** *****5、我要点赞***** *****6、退出系统***** 请输入您的选择:2 ***查看订单*** 序号 菜名 份数 总价 姓名 时间 送餐地址 状态 ***确认订单*** 序号 菜名 份数 总价 姓名 时间 送餐地址 状态 请选择您要确认的订单编号:5 订单不存在 *****1、我要订餐***** *****2、查看订单***** *****3、确认订单***** *****4、删除订单***** *****5、我要点赞***** *****6、退出系统***** 请输入您的选择:5 序号 菜名 价格 点赞数 1 宫保鸡丁 23.0 0 2 蒸鸡蛋 56.0 0 3 红烧鲍鱼 43.0 0 4 佛跳墙 88.0 0 5 麻婆豆腐 15.0 0 请输入您点赞的菜品:5 *****1、我要订餐***** *****2、查看订单***** *****3、确认订单***** *****4、删除订单***** *****5、我要点赞***** *****6、退出系统***** 请输入您的选择:1 请输入您的姓名:Hm 序号 菜名 价格 点赞数 1 宫保鸡丁 23.0 0 2 蒸鸡蛋 56.0 0 3 红烧鲍鱼 43.0 0 4 佛跳墙 88.0 0 5 麻婆豆腐 15.0 1 请输入您要点的菜品:2 请输入份数:5 请输入送餐时间(10-20点整点送餐):13 请输入送餐地址:11 Hm顾客,恭喜订餐成功,您点了蒸鸡蛋5份总价为280.0元,13点送达,您的地址为:11 *****1、我要订餐***** *****2、查看订单***** *****3、确认订单***** *****4、删除订单***** *****5、我要点赞***** *****6、退出系统***** 请输入您的选择:6 谢谢惠顾,欢迎下次光临! Process finished with exit code 0这是博主写出来的代码跟运行结果额,有兴趣的小伙伴也可以试试看



