覆盖技能点:
- 程序基本概念
- 变量
- 数据类型
- 流程控制
- 顺序
- 选择
- 循环
- 跳转语句
- 数组
项目演示及需求讲解:
“只要动动手指,就能送餐上门”,网上定餐深受现代人青睐,现开发一个网上订餐系统,功能如下
欢迎使用吃货联盟订餐系统
*****************************
1.我要订餐
2.查看餐袋
3.签收订单
4.删除订单
5.我要点赞
6.退出系统
*****************************
请选择:4
****删除订餐****
订单为空,不可删除
输入0返回:0
欢迎使用吃货联盟订餐系统
*****************************
1.我要订餐
2.查看餐袋
3.签收订单
4.删除订单
5.我要点赞
6.退出系统
*****************************
请选择:1
****我要订餐****
请输入订餐人姓名:贰叁
序号 菜品 单价
1 东坡肉 45.0元
2 地锅鸡 38.0元
3 水煮鱼 28.0元
4 佛跳墙 99.0元
请选择您要点的菜品编号:1
请选择您需要的份数:2
请输入送餐时间(10点至20点送餐):11
请输入送餐地址:你的心里
订单成功!
您订的是:东坡肉
送餐时间:11点
餐费:90.0元,送餐费:0,总计:90.0
输入0返回:0
欢迎使用吃货联盟订餐系统
*****************************
1.我要订餐
2.查看餐袋
3.签收订单
4.删除订单
5.我要点赞
6.退出系统
*****************************
请选择:2
****查看餐袋****
序号 订餐人 餐品信息 送餐日期 送餐地址 总金额 订单状态
1 贰叁 东坡肉2份 11点 你的心里 90.0元 已预定
输入0返回:0
欢迎使用吃货联盟订餐系统
*****************************
1.我要订餐
2.查看餐袋
3.签收订单
4.删除订单
5.我要点赞
6.退出系统
*****************************
请选择:3
****签收订单****
序号 订餐人 餐品信息 总金额 订单状态
1 贰叁 东坡肉2份 90.0元 已预定
请选择要签收的订单编号:1
输入0返回:0
欢迎使用吃货联盟订餐系统
*****************************
1.我要订餐
2.查看餐袋
3.签收订单
4.删除订单
5.我要点赞
6.退出系统
*****************************
请选择:4
****删除订餐****
序号 订餐人 餐品信息 总金额 订单状态
1 贰叁 东坡肉2份 90.0元 已完成
请选择要删除的订单编号:1
删除完成!
输入0返回:0
欢迎使用吃货联盟订餐系统
*****************************
1.我要订餐
2.查看餐袋
3.签收订单
4.删除订单
5.我要点赞
6.退出系统
*****************************
请选择:5
****我要点赞****
序号 菜品 单价 点赞数
1 东坡肉 45.0元 11
2 地锅鸡 38.0元 22
3 水煮鱼 28.0元 33
4 佛跳墙 99.0元 44
请选择要点赞的菜品:1
谢谢点赞!
输入0返回:0
欢迎使用吃货联盟订餐系统
*****************************
1.我要订餐
2.查看餐袋
3.签收订单
4.删除订单
5.我要点赞
6.退出系统
*****************************
请选择:6
谢谢使用,欢迎下次光临!
阶段划分:
- 分析数据主体(重难点)
- 分析并完成整体框架(重难点)
- 分析并完成退出功能
- 分析并完成订餐功能
- 分析并完成查看餐袋功能
- 分析并完成签收订单功能
- 分析并完成删除功能(重难点)
- 分析总完成我要点赞功能
代码实现:
import java.util.Scanner;
/**
* @Author :Ersan
* @Date 2020/7/16
* @Description
* 吃货联盟
*/
public class ChiHuo {
public static void main(String[] args) {
final double NO_SEND_MONEY=80;
String[]dishes={"东坡肉","地锅鸡","水煮鱼","佛跳墙"};
double[]prices={45,38,28,99};
int [] like={11,22,33,44};
int chooseNum;
String[][]bills=new String[1024][];
String name=null;
int pcs=0;
int time=0;
String address=null;
String status=null;
Scanner sc = new Scanner(System.in);
int choose=0;
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=sc.nextInt();
switch(choose){
case 1:
System.out.println("****我要订餐****");
System.out.print("请输入订餐人姓名:");
name=sc.next();
System.out.println("序号\t菜品\t单价");
for (int i = 0; i < dishes.length; i++) {
System.out.println(i+1+"\t"+dishes[i]+"\t"+prices[i]+"元");
}
do {
System.out.print("请选择您要点的菜品编号:");
chooseNum=sc.nextInt();
if (chooseNum>0&&chooseNum<=dishes.length)break;
else
System.out.println("您的输入有误,重新输入!");
}while(true);
do {
System.out.print("请选择您需要的份数:");
pcs=sc.nextInt();
if (pcs>0)break;
System.out.println("份数不能小于0,重新输入");
}while(true);
do {
System.out.print("请输入送餐时间(10点至20点送餐):");
time=sc.nextInt();
if (time>=10&&time<=20)break;
System.out.println("您的输入有误,重新输入!");
}while(true);
System.out.print("请输入送餐地址:");
address=sc.next();
System.out.println("订单成功!");
System.out.println("您订的是:"+dishes[chooseNum-1]);
System.out.println("送餐时间:"+time+"点");
double dishPrice=prices[chooseNum-1]*pcs;
int sendMoney=0;
if (dishPrice<NO_SEND_MONEY){
sendMoney=6;
}
double totalPrice=dishPrice+sendMoney;
System.out.println("餐费:"+dishPrice+"元,送餐费:"+sendMoney+",总计:"+totalPrice);
//插入订单,遍历订单,如果为空,则插入
for (int i = 0; i < bills.length; i++) {
if (bills[i]==null){
bills[i]=new String[7];
bills[i][0]=name;
bills[i][1]=dishes[chooseNum-1]+""+pcs+"份";
bills[i][2]=time+"点";
bills[i][3]=address;
bills[i][4]=totalPrice+"元";
bills[i][5]="已预定";
break;
}
}
System.out.print("输入0返回:");
choose=sc.nextInt();
break;
case 2:
System.out.println("****查看餐袋****");
System.out.println("序号\t订餐人\t餐品信息\t送餐日期\t送餐地址\t总金额\t订单状态");
for (int i = 0; i < bills.length; i++) {
if (bills[i]==null) {
break;
}
System.out.println(" " + (i + 1) + "\t\t" + bills[i][0] + "\t" + bills[i][1] + "\t" + bills[i][2] + "\t " + bills[i][3] + "\t" + bills[i][4] + "\t " + bills[i][5]);
}
System.out.print("输入0返回:");
choose=sc.nextInt();
break;
case 3:
System.out.println("****签收订单****");
if (bills[0]==null){
System.out.println("订单为空,不可删除");
System.out.print("输入0返回:");
choose=sc.nextInt();
break;
}
System.out.println("序号\t订餐人\t餐品信息\t总金额\t订单状态");
int i = 0;
for (; i < bills.length; i++) {
if (bills[i] == null){
break;
}
System.out.println(" "+(i+1)+"\t\t"+bills[i][0]+"\t"+bills[i][1]+"\t"+bills[i][4]+"\t "+bills[i][5]);
}
int sighNum;
do {
System.out.print("请选择要签收的订单编号:");
sighNum=sc.nextInt();
if (sighNum>0&&sighNum<=i)break;
System.out.println("订单不存在,重新输入!");
}while(true);
if (bills[sighNum-1][5].equals("已完成"))
System.out.println("订单已完成签收,不需要重复签收");
else
bills[sighNum-1][5]="已完成";
System.out.print("输入0返回:");
choose=sc.nextInt();
break;
case 4:
System.out.println("****删除订餐****");
if (bills[0]==null){
System.out.println("订单为空,不可删除");
System.out.print("输入0返回:");
choose=sc.nextInt();
break;
}
System.out.println("序号\t订餐人\t餐品信息\t总金额\t订单状态");
int k = 0;
for (; k < bills.length; k++) {
if (bills[k]==null)break;
System.out.println(" "+(k+1)+"\t\t"+bills[k][0]+"\t"+bills[k][1]+"\t"+bills[k][4]+"\t "+bills[k][5]);
}
int delNum;
do {
System.out.print("请选择要删除的订单编号:");
delNum=sc.nextInt();
if (delNum>0&&delNum<=k)break;
System.out.println("订单不存在,请重新输入!");
}while(true);
//未完成订单不能删除
//产出订单需要考虑选择的订单删除后,后面的订单需要前移
if (!bills[delNum-1][5].equals("已完成"))
System.out.println("未完成的订单,不能删除!");
else{
for (int s = delNum-1; bills[s]!=null ; s++) {
if (delNum==bills.length){
bills[delNum-1]=null;
}else {
bills[s]=bills[s+1];
}
}
System.out.println("删除完成!");
}
System.out.print("输入0返回:");
choose=sc.nextInt();
break;
case 5:
System.out.println("****我要点赞****");
System.out.println("序号\t菜品\t单价\t点赞数");
int j = 0;
for (; j < dishes.length; j++) {
System.out.println(" "+(j+1)+"\t\t"+dishes[j]+"\t"+prices[j]+"元\t"+like[j]);
}
int likeNum;
do {
System.out.print("请选择要点赞的菜品:");
likeNum=sc.nextInt();
if (likeNum>0&&likeNum<=like.length)break;
System.out.println("没有这个菜品,请重新输入:");
}while(true);
like[likeNum-1]++;
System.out.println("谢谢点赞!");
System.out.print("输入0返回:");
choose=sc.nextInt();
break;
}
}while(choose==0);
System.out.println("谢谢使用,欢迎下次光临!");
}
}
项目总结:
-
理解需求
-
重难点突破
数据主体
整体框架
删除功能 -
注意细节
标识位、跳转语句、数组的操作 -
掌握调试技巧