当前位置:网站首页>【无标题】
【无标题】
2022-07-30 08:41:00 【陌 年】
系统需求说明
概要:现今已进入网络时代,网上购物、看新闻、交友等人们的日常生活已离不开网络。“只要点点手指,就能送餐上门”,网上定餐越来越受到都市年轻人的青睐 现要求开发一个网上订餐系统,其具体功能如下:
1.1、我要订餐
完成用户订餐,每条订单包含如下信息:
1.1.1、订餐人姓名:要求用户
1.1.2、输入选择菜品及份数:显示三个菜单序号、名称、单价、点赞数,提示用户输入要选择的菜品序号及份数
1.1.3、送餐时间:要求当天10到20点间整点送餐,要求用户输入10~20的整数,输入错误,重复输入。
1.1.4、送餐地址:要求用户输入
1.1.5、状态:两种状态:0:已预定(默认状态) 1、已完成(订单已签收)
1.1.6、总金额:总金额 = 菜品单价*份数-送餐费
(送餐费:当单笔订单金额达到50元时,免送餐费,否则,需交纳6元送餐费)
1.1.7、订餐成功后,显示订单信息。
1.2、查看订单
遍历显示已有订单
内容包括:序号、订餐人姓名、订餐信息(菜品名和份数)、送餐时间、送餐地址、状态(已预定或已完成)、总金额
1.3、签收订单
将订单中状态改为已完成
1.4、删除订单
用户输入订单序号,如该序号订单为已完成状态,可以删除,其它情况给出相应提示信息
1.5、我要点赞
显示菜品序号、菜品名、单价、点赞数,提示用户输入要点赞的菜品序号完成对菜品的点赞。
1.6、退出系统
退出整个系统,显示“谢谢使用,欢迎下次光临”。
1.7、菜单切换
用户可根据显示的主菜单,输入功能编号执行相应的功能,当输入1~5时,执行相应功能
package cn.bdqn.demo;
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
// 数据主体:一组订单信息
String[] names = new String[4]; // 订餐人
String[] foodInformations = new String[4]; // 所定菜品信息
int[] times = new int[4]; // 送餐时间
String[] address = new String[4]; // 送餐地址
int[] states = new int[4]; // 订单状态 0:已预订 1:已完成
double[] sumPrices = new double[4];// 订单总金额
// 初始化2条订单信息
names[0] = "杨杰";
foodInformations[0] = "麻婆豆腐 1份";
times[0] = 12;
address[0] = "工投创智天地A01";
states[0] = 0;
sumPrices[0] = 24.0;
names[1] = "杨杰";
foodInformations[1] = "铁板烤鸭 2份";
times[1] = 12;
address[1] = "工投创智天地A01";
states[1] = 1;
sumPrices[1] = 54.0;
// 数据主体:一组餐品信息
String[] foodNames = { "豆腐", "烤鸭", "蒜泥空心菜" };
double[] prices = { 18.0, 27.0, 20.0 };
int[] dianZans = new int[4];
Scanner sc = new Scanner(System.in);
int num = -1;// 记录用户输入的数字
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("********************");
boolean isAdd = false;// 记录找到一个为空的位置,可以插入 false:没有找到
// 提示用户输入功能编号,并执行相应功能
System.out.println("请选择:");
int choose = sc.nextInt();
switch (choose) {
case 1:
// 我要订餐
System.out.println("***我要订餐***");
// 1、查找要插入的位置
for (int i = 0; i < names.length; i++) {
// 如果找到为空的位置,记录下来
if (names[i] == null) {
isAdd = true;// 记录已找到一个为空的位置
// 执行插入操作
// a.显示所有餐品信息
System.out.println("序号\t餐品名\t单价\t点赞数");
for (int j = 0; j < foodNames.length; j++) {
// String price = prices[j] + "元";
// String dianZan = dianZans[j] + "赞";
System.out.println((j + 1) + "\t" + foodNames[j]
+ "\t" + prices[j] + "\t" + dianZans[j]);
}
// 输入所选餐品编号和份数
System.out.print("请选择所定餐品序号:");
int chooseFood = sc.nextInt();
System.out.print("请输入所选餐品份数:");
int numberFood = sc.nextInt();
String foodInformation = foodNames[chooseFood - 1]
+ " " + numberFood + "份";
// 输入订餐人姓名
System.out.print("请输入订餐人姓名:");
String name = sc.next();
// 输入送餐时间
System.out.print("请输入送餐时间(10~20整点送餐)");
int time = sc.nextInt();
// 如果输错了,重复输入
while (time < 10 || time > 20) {
System.out.println("对不起,您的输入有误,请输入10~20之间的整数:");
time = sc.nextInt();
}
// 输入送餐地址
System.out.print("请输入送餐地址:");
String address1 = sc.next();
// 计算餐费
double sumPrice = prices[chooseFood - 1] * numberFood;
// 送餐费,当餐费达到50元,免6元配送费
double freightCharge = sumPrice >= 50 ? 0.0 : 6.0;
// 显示订单信息
System.out.println("订单成功!");
System.out.println("您的订单是:" + foodInformation);
System.out.println("订餐人:" + name);
System.out.println("送餐时间:" + time + "点");
System.out.println("送餐地址:" + address1);
System.out.println("餐费:" + sumPrice + ",送餐费"
+ freightCharge + "元");
System.out.println("总金额:" + (sumPrice + freightCharge)
+ "元");
// 保存数据
names[i] = name;
foodInformations[i] = foodInformation;
times[i] = time;
address[i] = address1;
sumPrices[i] = sumPrice + freightCharge;
break;
}
}
// 如果没有找到为空的位置,则提示信息
if (!isAdd) {
System.out.println("对不起,您的餐袋已满");
}
break;
case 2:
System.out.println("***查看餐袋***");
System.out
.println("序号\t\t订餐人\t\t菜品信息\t\t\t送餐时间\t\t送餐地址\t\t\t总金额\t\t订单状态");
for (int i = 0; i < names.length; i++) {
if (names[i] != null) {
// String time = times[i] + "点";
// String sumPrice = sumPrices[i] + "元";
String state = states[i] == 0 ? "已锁定" : "已完成";
System.out.println((i + 1) + "\t\t" + names[i] + "\t\t"
+ foodInformations[i] + "\t\t" + times[i] + "\t\t"
+ address[i] + "\t\t" + sumPrices[i] + "\t\t"
+ state);
}
}
break;
case 3:
System.out.println("***签收订单***");
// 将定单中状态改为已完成
for (int i = 0; i < names.length; i++) {
System.out.println("请输入订单状态需要改变的序号:");
if (states[i] == 0) {
int j = sc.nextInt();
states[j - 1] = 1;
break;
}
}
break;
case 4:
System.out.println("***删除订单***");
// 用户输入订单序号,如该序号定单为已完成状态,可以删除,其它情况给出相应提示信息
System.out.println("输入订单序号:");
int i = sc.nextInt();
// 当输入的值-1和已完成的对应的值1相同,则进行删除,被删除后面的值都向前进1
if (states[i - 1] == 1) {
for (int j = states.length - 1; j > i - 1; j--) {
states[j - 1] = states[j];// 状态
names[j - 1] = names[j];// 订餐人
foodInformations[j - 1] = foodInformations[j];// 菜品信息
times[j - 1] = times[j];// 送餐时间
address[j - 1] = address[j];// 送餐地址
sumPrices[j - 1] = sumPrices[j];// 总金额
}
} else {
System.out.println("该订单为预定状态,不能删除");
}
// 判断第四行有无内容,有的话删除这一行,没有就返回
if (names[names.length - 1] != null) {
states[names.length - 1] = 0;
names[names.length - 1] = null;
foodInformations[names.length - 1] = null;
times[names.length - 1] = 0;
address[names.length - 1] = null;
sumPrices[names.length - 1] = 0.0;
}
break;
case 5:
System.out.println("***我要点赞***");
System.out.println("请输入要点赞的序号");
int i2 = sc.nextInt();
for (int i1 = 0; i1 < names.length; i1++) {
if (i1 == i2 - 1) {
dianZans[i2 - 1]++;
}
if (i2 < 1 || i2 > 3) {
System.out.println("您输入的序号有误");
break;
}
}
break;
case 6:
System.out.println("***退出系统***");
break;
default:
break;
}
// 当用户输入的功能编号为1~5之外的数字是,退出循环,否则会提示输入返回0
if (choose < 1 || choose > 5) {
break;
} else {
// 提示输入0返回
System.out.println("输入0返回:");
num = sc.nextInt();
}
} while (num == 0);
System.out.println("谢谢使用,欢迎下次光临!");
}
}
边栏推荐
- MySQL【运算符】
- Circuit analysis: constant current source circuit composed of op amp and triode
- 342 · 山谷序列
- Webview中的超链接点击到外部浏览器打开
- The difference between DDR, GDDR, QDR
- 聊聊 MySQL 事务二阶段提交
- Functional Interfaces & Lambda Expressions - Simple Application Notes
- R安装包出现error in rawtochar(block[seq_len(ns)]) :
- 分布式系统大势所趋,银行运维如何与时俱进?
- 编程界的“躲猫猫”比赛 | 每日趣闻
猜你喜欢

HCIP --- MPLS VPN实验

都说FPGA高端,它到底能干啥?

The difference between DDR, GDDR, QDR

SEER数据库中“手术变量(RX SUMM-SURG OTH REG/DIS )”下的字段解释

MySQL之COUNT性能到底如何?

统一异常处理导致ResponseBodyAdvice失效

开关电源波纹的产生、测量及抑制,一篇全搞定!

电源完整性基础知识

Detailed explanation of 4D words: C language three-point chess advanced + N-piece chess recursive dynamic judgment of winning or losing

MySQL【运算符】
随机推荐
Leetcode - 990: equations of satisfiability
统一异常处理导致ResponseBodyAdvice失效
ACL 2022 | Introduce angular margin to construct comparative learning objectives and enhance text semantic discrimination ability
Circuit analysis: constant current source circuit composed of op amp and triode
MySQL Explain usage and parameter detailed explanation
研发转至FAE(现场应用工程师),是否远离技术了?有前途吗?
如何组装一个注册中心
DDR、GDDR、QDR的区别
ant-design form form verification upload component (with personal packaged upload component)
Detailed explanation of 4D words: C language three-point chess advanced + N-piece chess recursive dynamic judgment of winning or losing
MySQL之COUNT性能到底如何?
HashSet and LinkedHashSet
硬件工程师
An article to understand service governance in distributed development
一文读懂二十种开关电源拓扑结构
opencv可以有多有趣
Unity performance analysis Unity Profile performance analysis tool
注解开发相关
Reflection tricks can boost your performance by N times
The FPGA based protocol 2: the I2C read and write E squared PROM