关于java的基础练习,可以更有效的来找到自己的不足之处,也可以锻炼自己的编程思想,这个吃货联盟系统包含了基础概念,变量、数据类型,也练习了顺序,选择,循环,跳转语句的编写编程的能力,最后还要求你会使用数组,操作字符串,会使用方法,并且会定义类、创建并使用对象
下面是我自己做的吃货联盟点餐系统,如有不好之处,望大家多多包涵,我还是个小白(狗头)
第一步先创建数组,用OrderingSet类来创建
package com.chihuolianmeng;
public class OrderingSet {
String [] names = new String[4]; //保存订餐人名称
String [] dishMegs =new String[4]; //保存所选信息,包括菜品名及份数
int [] times =new int[4]; //保存送餐时间
String [] addresses =new String[4]; //保存送餐地址
int [] states =new int[4]; //保存订单状态,0 表示已预定,1 表示已完成
double [] sumPrices =new double[4]; //保存订单的总金额
}
第二步在类OrderingUtil中,创建OrderingSet类对象oSet,实现初始化数据的方法initia()
package com.chihuolianmeng;
import java.util.Scanner;
public class OrderingUtil {
String [] dishNames ={"红烧带鱼","鱼香肉丝","时令鲜蔬"}; //菜单名称
double [] prices =new double[]{38.0, 20.0,10.0}; //菜品单价
int [] PraiseNums=new int[3]; //点赞数
OrderingSet oSet =new OrderingSet();;
public void initial(){
//初始化第一条订单信息
oSet.names[0] ="张晴";
oSet.dishMegs[0]="红烧带鱼 2份";
oSet.times[0] =12;
oSet.addresses[0] ="天成路 2 0 7号";
oSet.sumPrices [0] =76.0;
oSet.states[0] =1;
//初始化第二条订单信息
oSet.names[1] ="张晴";
oSet.dishMegs[1]="鱼香肉丝 2份";
oSet.times[1] =18;
oSet.addresses[1] ="天成路 2 0 7号";
oSet.sumPrices [1] =45.0;
oSet.states[1] =0;
}
第三步:创建系统住菜单,并写出实现6个实现的方法,用switch来进行选择
public void startMenu(){
OrderingUtil om =new OrderingUtil();
Scanner input =new Scanner(System.in);
int num =-1; //用户输入 0 返回主菜单,否则退出系统
boolean isExit =false; //标志用户是否退出系统 :true退出系统
System.out.println("\n欢迎使用”吃货联盟点餐系统 ");
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("请选择-->");
int choose =input.nextInt(); //记录用户选择的功能编号
switch (choose){
case 1:
//我要订餐
System.out.println("* * * * 我要订餐* * * * ");
add();
break;
case 2:
//查看餐袋
System.out.println("* * * * 查看餐袋* * * * ");
display();
break;
case 3:
//签收订单
System.out.println("* * * * 签收订单* * * * ");
sign();
break;
case 4:
//删除订单
System.out.println("* * * * 删除订单* * * * ");
delete();
break;
case 5:
//我要点赞
System.out.println("* * * * 我要点赞* * * * ");
praise();
break;
case 6:
//退出系统
isExit =true;
System.out.println("* * * * 退出系统* * * * ");
break;
default:
//退出系统
isExit =true;
break;
}
if(!isExit){
System.out.println("输入 0 返回:");
num =input.nextInt();
}else {
break;
}
}while (num ==0);
}
//参看餐袋
public void display(){
System.out.println("序号\t 订餐人\t 餐品信息\t\t 送餐时间\t 送餐地址\t\t 总金额\t 订单状态");
for (int i = 0; i < oSet.names.length; i++) {
if(oSet.names[i] !=null){
String state =(oSet.states[i]==0)? "已预定" :"已完成";
String date =oSet.times[i]+"点";
String sumPrice =oSet.sumPrices[i]+"元";
System.out.println((i+1)+"\t"+oSet.names[i]+"\t"+oSet.dishMegs[i]+"\t"+date+"\t"+
oSet.addresses[i]+"\t"+sumPrice+"\t"+state);
}
}
}
//我要订餐
public boolean add(){
boolean isAdd =false; //记录是否可以订餐
Scanner input =new Scanner(System.in);
for (int j =0;j0? PraiseNums[i]+"赞":"0";
System.out.println((i+1)+"\t"+dishNames[i]+"\t"+price+"\t"+priaiseNum);
}
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; //餐品总金额
double deliCharge =(sumPrice>=50)?0:5; //送餐金额
System.out.println("请输入配送时间(送餐时间是10点至20点间的整点送餐");
int time =input.nextInt(); //配送时间
while (time<10 && time>20){
System.out.println("你输入的有误,请输入10-20之间的整数");
time =input.nextInt();
}
System.out.println("请输入送餐地址");
String address =input.next(); //配送地址
System.out.println("订餐成功");
System.out.println("您订的是:"+dishMeg);
System.out.println("送餐时间为"+time+"点");
System.out.println("餐费"+sumPrice+"元,送餐费为"+deliCharge+"元,总计:"+(sumPrice+deliCharge)+"元");
oSet.names[j] =name;
oSet.dishMegs[j]=dishMeg;
oSet.times[j]=time;
oSet.addresses[j]=address;
oSet.sumPrices[j] =sumPrice+deliCharge;
break;
}
}
if(!isAdd){
System.out.println("对不起,您的餐袋已满!");
return false;
}else {
return true;
}
}
//签收订单
public void sign(){
Scanner input =new Scanner(System.in);
boolean isSignFind = false; //找到要签收的订单
display();
System.out.println("请选择要签收的订单");
int signorderId =input.nextInt();
for (int i = 0; i < oSet.names.length; i++) {
if(oSet.names[i]!= null && oSet.states[i]==0 && signorderId==i+1){
oSet.states[i] =1;
System.out.println("订单签收成功");
isSignFind =true; //标记已找到此订单
}else if (oSet.names[i]!= null && oSet.states[i]==1 && signorderId==i+1){
System.out.println("您选择的订单已签收,不能再次签收哦");
isSignFind =true; //标记已找到此订单
}
}
//未找到的订单序号:不可签收
if(!isSignFind){
System.out.println("您选择的订单不存在");
}
}
//删除订单
public void delete(){
boolean isDelete =false;//标记是否找到要删除订单
display();
System.out.println("请输入要删除的订单序号:");
int delId =new Scanner(System.in).nextInt();
for (int i=0;i0 ?PraiseNums[i]+"赞" :" ";
System.out.println((i+1)+"\t"+dishNames[i]+"\t"+price+"\t"+prianiseNum);
}
System.out.println("请选择您要点赞的菜品序号:");
int priaiseNum =new Scanner(System.in).nextInt();
PraiseNums[priaiseNum-1]++; //点赞数加1
System.out.println("点赞成功");
}
}
第四步:编写OrderingMgr类,实例化OrderingUtil对象,调用对象方法,实现程序入口功能。
package com.chihuolianmeng;
public class OrderingMgr {
public static void main(String[] args) {
OrderingUtil om =new OrderingUtil();
om.initial();
om.startMenu();
}
}
最后感谢大家的观看,我就是一个小白,对照着书自己理解着些的,不喜勿喷