只要动动手指,就能送餐上门”,网上订餐深受现代人青睐,现开发一个网上订餐系统,功能如下:
买家:
买家订单基本信息-用户名,时间,地址,数量等
卖家:
菜品信息-单价、品种、点赞数
模块划分:
我要订餐–添加–insert -C(create) 查看餐袋–查询–read -R 签收订单–修改–update -U 删除订单–删除–delete -D 基本所有的项目都是在对数据进行增删改查(CRUD) 我要点赞–辅助功能 退出系统–流程控制
项目名—Foods 包名–cn.xx.controll 类名–OrderingMsg 项目编写完成需要制作成运行jar及bat文件
定义变量–测试数据–搭建总框: do…while中嵌套switch,将跳转切换使用数字进行替换 查看订单 查看之前–循环之前先判定是否为空 添加订单 作业:补全是否继续的功能 添加注意打印小票和数组添加数据的分开操作 签收订单: 判定签收的情况:不存在该订单/存在不能签收/签收 删除订单: 将需要删除的数据之后的所有数据全部前移,然后将最后一条废数据清空 我要点赞: 显示菜单,然后将指定的点赞菜品添加1
//定义买家变量--数组
String[] names=new String[4]; //订餐人姓名
int[] times=new int[4]; //订餐时间-整点
String[] addresses=new String[4]; //订餐地址
String[] dishMegs=new String[4]; //所选菜品信息
double[] sumPrices=new double[4]; //总金额
int[] states=new int[4]; //订单状态信息
//定义卖家菜品变量--数组
String[] dishNames={"大肘子","锅包肉","辣鸭头","麻辣虾"}; //菜品信息
double[] prices={59,58,48,69}; //菜品单价
int[] praiseNums={4,5}; //菜品点赞数
do{
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.println("请选择");
num=input.nextInt();
switch (num) {
case 1:
System.out.println("我要订餐");
break;
case 2:
System.out.println("查看餐袋");
break;
case 3:
System.out.println("签收订单");
break;
case 4:
System.out.println("删除订单");
break;
case 5:
System.out.println("我要点赞");
break;
case 6:
System.out.println("退出系统");
isExit=true;
break;
default:
isExit=true;
break;
}
//判定是否回退到一级菜单
if(!isExit){
System.out.println("输入0返回");
num=input.nextInt();
}else{
break;
}
}while(num==0);
System.out.println("欢迎下次使用!");
for (int i = 0; i <names.length; i++) {
//判定---如果用户信息为空,该订单不进行打印
if(names[i]!=null){
String state=(states[i]==0)#"已预订":"已完成";
String sumPrice=sumPrices[i]+"元";
String time=times[i]+"时";
System.out.println((i+1)+" tt"+names[i]+" tt"
+dishMegs[i]+" tt"+time
+" tt"+addresses[i]+" tt"+sumPrice+" tt"+state);
}
}
for (int i = 0; i < names.length; i++) {
//往数组添加内容-需要先获取数组空的位置-第一个位置--循环结束掉
if(names[i]==null){
//进入判定则标志着可以进行数据添加的空位---将标记进行修改
isAdd=true;
//添加订单
System.out.println("请输入用户名"); //模拟登陆
String name=input.next();
//打印菜品信息
System.out.println("序号 t菜名 t单价 t点赞数");
for (int j = 0; j < dishNames.length; j++) {
String price=prices[j]+"元";
String praise=(praiseNums[j]>0)#praiseNums[j]+"赞":";
System.out.println((j+1)+" t"+dishNames[j]+" t"+price+" t"+praise);
}
System.out.println("请输入你选择的菜品的序号");
int chooseDish=input.nextInt();
System.out.println("请输入房购买的份数");
int number=input.nextInt();
//处理订餐信息和订餐总额
String dishMeg=dishNames[chooseDish-1]+"+number+"份";
double sumPrice=prices[chooseDish-1]*number;
//判定是否需要进行配送费:超过50免配送费
double deliCharge=(sumPrice>=50)#0:5; //配送费
//配送时间-如果时间输入不正确需要重复输入直到输入正确为止 10 -20
System.out.println("请输入配送时间(10-20的整点)送餐");
int time=input.nextInt();
/*while(!(time>=10&&time<=20)){
System.out.println("您输入的时间不正确,请重新输入");
time=input.nextInt();
}*/
while(time<10 ||time>20){
System.out.println("您输入的时间不正确,请重新输入");
time=input.nextInt();
}
System.out.println("请输入送餐地址");
String address=input.next();
//打印小票
System.out.println("订餐成功!");
System.out.println("您的订餐是"+dishMeg);
System.out.println("餐费是"+sumPrice+",配送费是"+deliCharge+",总金额是"+(sumPrice+deliCharge));
//将数据添加到数组中
names[i]=name;
dishMegs[i]=dishMeg;
times[i]=time;
addresses[i]=address;
sumPrices[i]=sumPrice+deliCharge;
//当将当前循环中添加完成以后直接循环结束
break;
}
}
//如果整个循环结束都没有找到空位,则表示当前餐袋已满
if(!isAdd){
System.out.println("对不起,餐袋已满!");
}
for (int i = 0; i <names.length; i++) {
//判定---如果用户信息为空,该订单不进行打印
if(names[i]!=null){
String state=(states[i]==0)#"已预订":"已完成";
String sumPrice=sumPrices[i]+"元";
String time=times[i]+"时";
System.out.println((i+1)+" tt"+names[i]+" tt"+dishMegs[i]+" tt"+time
+" tt"+addresses[i]+" tt"+sumPrice+" tt"+state);
}
}
for (int i = 0; i < names.length; i++) {
if(names[i]!=null&&states[i]==1&&delId==i+1){
//能找到订单并可以删除
isDelFind=true;
//执行删除操作,删除元素以后的所有数据依次移动--后续多个数据
for (int j = delId-1; j < names.length-1; j++) {
names[j]=names[j+1];
dishMegs[j]=dishMegs[j+1];
times[j]=times[j+1];
addresses[j]=addresses[j+1];
states[j]=states[j+1];
}
//最后一个数据进行清空还原处理
names[names.length-1]=null;
dishMegs[dishMegs.length-1]=null;
times[times.length-1]=0;
addresses[addresses.length-1]=null;
states[states.length-1]=0;
System.out.println("删除订单成功!");
break;
}else if(names[i]!=null&&states[i]==0&&delId==i+1){
//能找到订单但是不能删除
isDelFind=true;
System.out.println("该订单未签收,不能被删除!");
break;
}
}
//如果循环结束都没有找到订单则表示不存在
if(!isDelFind){
System.out.println("您要删除的订单不存在!");
}
for (int i = 0; i < dishNames.length; i++) {
String price=prices[i]+"元";
String praiseNum=(praiseNums[i]>0)#praiseNums[i]+"赞":";
System.out.println((i+1)+"t "+dishNames[i]+"t "+price+"t "+praiseNum);
}
System.out.println("请输入您需要点赞的菜品序号");
int praiseId=input.nextInt();
//将点赞内容进行自增
praiseNums[praiseId-1]++;
System.out.println("点赞成功!");