系统的概要:
public class eatClub {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
String[] dishes={"酸菜鱼","红烧鱼","溜肥肠","番茄蛋"};
int[] prices={68,88,34,19};
int[] honor=new int [dishes.length];
String[][] bills=new String[400][2];
int chose=-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("*******************");
System.out.print("请选择:");
chose=input.nextInt();
switch (chose){
case 1:
System.out.println("***我要订餐***");
System.out.println("请输入姓名:");
String name=input.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"+honor[i]);
}
System.out.print("请输入您要点的菜品:");
int num=input.nextInt();
System.out.print("请输入份数:");
int pcs=input.nextInt();
int time;
do{
System.out.print("请输入送餐时间(10-20点整送餐:):");
time=input.nextInt();
if(time<10||time>20)
{
System.out.println("送餐时间不对,请重新输入!");
}
}while (time<10||time>20);
System.out.println("请输入您的地址");
String address=input.next();
int total=prices[num-1]*pcs;
int sendPrice=total>50?0:6;
total=total+sendPrice;
System.out.println("订餐成功,尊敬的客户"+name+",您已点"+dishes[num-1]+" "
+pcs+"份,总价格为:"+total);
for(int i=0;i<bills.length;i++)
{
if(bills[i][0]==null)
{
bills[i][0]=name+"\t"+dishes[num-1]+"\t"+pcs+"\t"+total+"元";
bills[i][1]="已预定";
break;
}
}
break;
case 2:
System.out.println("***查看菜单***");
System.out.println("序号\t姓名\t菜品名\t份数\t时间\t地址\t总价\t状态");
for(int i=0;i<bills.length;i++)
{
if (bills[i][0]==null){
break;
}
System.out.println(i+1+"\t"+bills[i][0]+"\t"+bills[i][1]);
}
break;
case 3:
System.out.println("***签收订单***");
System.out.println("序号\t姓名\t菜品名\t份数\t时间\t地址\t总价\t状态");
for (int i = 0; i < bills.length; i++) {
if(bills[i][0]==null)
{break;}
if(!bills[i][1].equals("已预定"))continue;
System.out.println(i+1+"\t"+bills[i][0]+"\t"+bills[i][1]);
}
System.out.print("请选择要签收的订单:");
int checkNum=input.nextInt();
if(checkNum<1||checkNum>bills.length)
{
System.out.println("选择错误!");
}else if(bills[checkNum-1][1]==null){
System.out.println("选择的订单为空,不可选择");}
else if(!bills[checkNum-1][1].equals("已预定")){
System.out.println("订单已被签收,不可以重复签收!");
}else {bills[checkNum-1][1]="已完成";
System.out.println("签收完成!!");}
break;
case 4:
System.out.println("***删除订单***");
System.out.print("请输入要删除的已完成订单:");
int delNum=input.nextInt();
if(delNum<1||delNum>bills.length)
{
System.out.println("选择错误");
}else if(null==bills[delNum-1][0])
{
System.out.println("订单不存在");
}else if(!"已完成".equals(bills[delNum-1][1]))
{
System.out.println("不是已完成的订单,无法删除");
}else {
for(int i=delNum-1;i<bills.length;i++)
{
bills[i][0]=bills[i+1][0];
bills[i][1]=bills[i+1][1];
//bills[i]=bills[i+1]; 传递的是地址,会出现点单双份的现象
if(bills[i][0]==null){
System.out.println("删除成功");
break;
}
}
}
break;
case 5:
System.out.println("***我要点赞***");
System.out.println("序号\t菜品名\t单价\t点赞数");
for (int i = 0; i < dishes.length; i++) {
System.out.println(i+1+""+dishes[i]+""+prices[i]
+""+honor[i]);
}
System.out.print("请输入要点赞的菜品序号:");
int honorNum=input.nextInt();
if(honorNum<1||honorNum>dishes.length)
{
System.out.println("输入错误!!");
}else {
honor[honorNum-1]++;
System.out.println("点赞成功,"+dishes[honorNum-1]+"已有"
+honor[honorNum-1]+"点赞!!");
}
break;
case 6:
System.out.println("***退出系统***");
break;
default:
System.out.println("您选择错误,请重新选择!!!");
}
if(chose<1||chose>5)
{continue;}
System.out.print("输入0返回:");
int back =input.nextInt();
if(back!=0)
{
System.out.println("输入有误,退出系统");
break;
}
}while(chose!=6);
System.out.println("感谢您的惠顾,欢迎下次使用!!");
}
以上是代码的实现.
下面我们来分析一下这个项目。
1、首先拿到这个项目,我们可以看到是六个等值的框架,do...while语句中加switch来编写,我们可以把框架先做好。
2、框架做好后,我们就可以按照switch中分好的模块一个个做,首先是我要点餐。分析一下,点餐要用到哪些变量,比如姓名、菜品名(数量以及价格)、配送时间(超过范围送不了)、配送费(低于50元,有6元配送费)、配送地址以及打印结果
2、查看订单。只要订单信息不为空,就打印出来
3、签收订单。可分为以下几种情况:超出订单序号 、订单已经被签收、订单为空、签收完成
4、删除已完成的订单。删除和签收差不多,唯一要注意的是删除时,如果时中间的一个数,下面的序号要自动上移
bills[i][0]=bills[i+1][0];
bills[i][1]=bills[i+1][1];
//bills[i]=bills[i+1]; 传递的是地址,会出现点单双份的现象
5.点赞
6、退出系统就简单了。
总结:主要是分析全项目的每一个条件,才能更好的完善