packagecom.dingcanxitong3;//创建一个功能的类实现各个功能接口
importjava.util.Scanner;public class Functions implementsDingCan,ChaKan,QianShou,ShanChu,DianZan,TuiChu{int length = 5;
String[] names= new String[length];//订餐人
String[] descs = new String[length];//订单餐品信息
int[] dates =new int[length];//送餐日期
String[] addresses = new String[length];//送餐地址
double[] moneys = new double[length];//总价
boolean[] status = new boolean[length];//订餐状态:true:完成;false未完成
int[] nums = new int[length];//订餐数量
String [] foods= {"红烧鱼","蛋炒饭","黄焖鸡"};double [] prices = {15.00,10.00,16.00};int [] zan = {10,20,30};
Scanner sc= newScanner(System.in);
@Overridepublic voiddingcan() {//TODO Auto-generated method stub
System.out.println("****我要订餐****");int index = -1;//定义要添加的位置下标
for(int i = 0 ;i
if(names[i]==null) {//如果i数组上的值为空
index =i;//把i赋值给index
break;//跳出if
}
}if(index<0) {//如果index小于0,说明上个循环未找到为空的数组,则
System.out.println("当前餐袋已满!!!");//提示
}else{
System.out.println("请输入订餐人姓名:");//如果index不小于0,提示输入姓名
names[index] =sc.next();//订餐人数组index接收控制台输入的值
System.out.println("序号\t菜名\t单价\t点赞数量");//输出菜名 单价 点赞数量
int max =foods.length;//定义max 把菜品数组最大的下标赋值给它
for(int i = 0;i
if(foods[i]==null) {//如果数组下标为空了 把i赋值给max,跳出循环
max =i;break;
}
System.out.println((i+1)+"\t"+foods[i]+"\t"+prices[i]+"元\t"+zan[i]+"次");
}
System.out.println("请选择您要点的菜品编号:");int id = 0;//定义输入的菜品id
do{
id=sc.nextInt();//接收控制台输入的值
if(id<1||id>max) {//如果输入的值小于0或者大于菜品数组不为空的最大下标
System.out.println("不存在此编号菜品,请重新输入:");//提示
}
}while (id<1||id>max);
descs[index]= foods[id-1];//把菜品数组下标为输入的值减一上的值,赋值给餐品信息数组index上的
System.out.println("请选择您需要的份数:");int num =sc.nextInt();//定义份数num 接收控制台输入的数据
nums[index] =num;//把控制台上的数据赋值给数组下标为index的值
System.out.println("请输入送餐时间(送餐时间是10点至20点间整点送餐)");int date = 0;//定义输入的时间date
do{
date=sc.nextInt();//接收
if(date<10||date>20) {//如果输入的时间小于10或者大于20
System.out.println("您的输入有误,请输入10~20间的整数!:");//提示
}
}while (date<10||date>20);
dates[index]=date;//把输入的时间辅助给时间数组下标为index上
System.out.println("请输入送餐地址:");
addresses[index]=sc.next();//把输入地址赋值给地址数组下标为index上
double money = prices[id-1]*num;//把菜品的价格乘于份数 赋值给定义的money
System.out.println("订餐成功:");
System.out.println("您订的是:"+foods[id-1]+" "+num+"份");
System.out.println("送餐时间:"+date+"点");double song = 0.0;//定义送餐费
if(money<20) {//如果订餐的价格小于20
song = 3.0;//送餐费增加3.0元
}
moneys[index]= money+song;//把定餐的价格和送餐费赋值给总价格数组下标为index上的值
System.out.println("餐费:"+money+"。送餐费:"+song+"元,总计:"+(money+song)+"元");
}
}
@Overridepublic voidchakan() {//TODO Auto-generated method stub
System.out.println("****查看餐袋****");
System.out.println("序号\t订餐人\t餐品信息\t\t送餐日期\t\t送餐地址\t\t总金额\t订单状态");for(int i = 0;i
if(names[i]==null) {//如果订餐人数组为空则跳出循环
break;
}
String canpin= descs[i]+" "+nums[i]+"份";
String zhuangtai= status[i]?"已完成":"已预订";
System.out.println((i+1)+"\t"+names[i]+"\t"+canpin+"\t\t"+dates[i]+"点\t\t"+addresses[i]+"\t\t"+moneys[i]+"元\t"+zhuangtai);
}
}
@Overridepublic voidqianshou() {//TODO Auto-generated method stub
System.out.println("****签收订单****");
System.out.println("请输入要签收的订单编号:");boolean isTrue = false;int id = -1;//定义签收订单的编号
do{
id=sc.nextInt();//接收输入的要签收的值
if(id<1||id>descs.length) {//如果订单编号小于1,且大于订餐信息数组的最大下标
isTrue = true;
}else{if(descs[id-1]==null) {//如果订餐信息数组下标“要签收订单编号减一”上的值为空
isTrue = true;
}else{
isTrue= false;//否则
}
}if(isTrue) {
System.out.println("不存在此编号的订单信息,请重新输入:");
}
}while(isTrue);
status[id-1] = true;//把true赋值给 状态数组下标为要签收的订单序号减一
System.out.println("签收完成");//提示
}
@Overridepublic voidshanchu() {//TODO Auto-generated method stub
System.out.println("****删除订单****");
System.out.println("请输入要删除的订单编号:");int big =length;//定义下标
for(int i = 0;i
if(descs[i]==null) {//如果订餐信息数组为空
big =i;//把下标i赋值给big 跳出
break;
}
}int no = 0;//输入的值
do{
no=sc.nextInt();//接收输入的要删除的序号
if(no<1||no>big) {//如果输入的值小于1 或大于订餐信息数组不为空的最大的下标
System.out.println("不存在此编号菜品,请重新输入:");//提示
}
}while (no<1||no>big);if(status[no-1]==false) {//如果状态数组下标为要删除的序号减一的值==未完成
System.out.println("订单未完成,不能删除");//提示
}else{for(int i=no-1;i
names[i] = names[i+1];
descs[i]= descs[i+1];
nums[i]= nums[i+1];
dates[i]= dates[i+1];
addresses[i]= addresses[i+1];
moneys[i]= moneys[i+1];
status[i]= status[i+1];
}//最后把最后一个数组上的值清空
names[length-1] = null;
descs[length-1] = null;
nums[length-1] = 0;
dates[length-1] = 0;
addresses[length-1] = null;
moneys[length-1] = 0.0;
status[length-1] = false;
System.out.println("删除订单成功");
}
}
@Overridepublic voiddianzan() {//TODO Auto-generated method stub
System.out.println("****我要点赞****");
System.out.println("序号\t菜名\t单价\t点赞数量");int max =foods.length;//循环遍历菜名 单价 点赞数
for(int i = 0;i
max=i;break;
}
System.out.println((i+1)+"\t"+foods[i]+"\t"+prices[i]+"元\t"+zan[i]+"次");
}
System.out.println("请选择您要点赞的菜品编号:");int bianhao = 0;//定义
do{
bianhao=sc.nextInt();//接收
if(bianhao<1||bianhao>max) {//如果编号为小于1或大于菜单不为空的最大数组下标时
System.out.println("不存在此编号菜品,请重新输入:");
}
}while (bianhao<1||bianhao>max);
zan[bianhao-1]++;//点赞数组下标输入的编号减一的值自加
System.out.println("点赞成功,谢谢您的反馈");
}
@Overridepublic voidtuichu() {//TODO Auto-generated method stub
System.out.println("****退出系统****");
System.out.println("谢谢使用");//退出系统
System.exit(1);
}
}