//菜单类
package haoyunlai;
public class Menu implements Comparable<Menu> {
public String order;//序号
public String name;//菜名
public String money;//价格
public int number;//个数
public Menu(){
}
public void setNumber(int number){
this.number=number;
}
public Menu( String name,String money){
this.name=name;
this.money=money;
this.number=getNumber();
}
public int getNumber(){
return number;
}
//@Override
public int compareTo(Menu o) {
// TODO Auto-generated method stub
double x,y;
x=Double.parseDouble(o.money);
y=Double.parseDouble(this.money);
if(y>x){
return 1;
}else{
if(y==x)
return 0;
else
return -1;
}
}
}
//顾客类
package haoyunlai;
import java.util.ArrayList;
import java.util.List;
public class People {
public String name;
public String cipher;
public List<Menu> menus;
public People(){
}
public People(String name,String cipher){
this.name=name;
this.cipher=cipher;
this.menus=new ArrayList();
}
public String getName(){
return name;
}
public String getCipher(){
return cipher;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((cipher == null) ? 0 : cipher.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
People other = (People) obj;
if (cipher == null) {
if (other.cipher != null)
return false;
} else if (!cipher.equals(other.cipher))
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
//自定义异常类
package haoyunlai;
public class MyEx extends Exception {
int n;
MyEx(int n){
this.n=n;
}
public int getn(){
return n;
}
}
//主函数
package haoyunlai;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.InputMismatchException;
import java.util.List;
import java.util.Scanner;
import java.util.Set;
public class Order {
public Set<People> people;
public Order(){
this.people=new HashSet();
People p1=new People("Tom","123");
People p2=new People("李四","1234");
People p3=new People("王朝","1234");
People p4=new People("马汉","1234");
people.add(p1);
people.add(p2);
people.add(p3);
people.add(p4);
}
//判断昵称是否被占用
public boolean PanDuan(String name){
boolean p=false;
for(People pe:people){
if(pe.name.equals(name)){
p=true;
break;
}
else {
p=false;
}
}
return p;
}
//输入异常处理方法
public int Try(int i){
class B {
public int Try(int n) throws MyEx{
Scanner scan=new Scanner(System.in);
int x=scan.nextInt();
if(x<0x>n){
MyEx ex=new MyEx(n);
throw(ex);//抛出异常
}
return x;
}
}
B a=new B();
int x=1000;
while(true){
try{
x=a.Try(i);
break;
}
catch(InputMismatchException e){
System.out.println("输入有误,请输入正整数");
}
catch(MyEx e){
System.out.println("输入有误,请输入1~"+e.getn()+"之间的正整数");
}
}
return x;
}
//注册会员
public void ZhuCe(){
while(true){
Scanner scan=new Scanner(System.in);
System.out.println("请问你是否为会员 1是 2不是");
int b=Try(2);
if(b==2){
System.out.println("请您先进行注册");
System.out.println("请输入昵称:");
String name=scan.next();
boolean p=PanDuan(name);
if(p){System.out.println("该昵称已被占用");
continue;}//判断该昵称是否被占用
String cipher;
while(true){
System.out.println("请输入密码");
cipher=scan.next();
System.out.println("请确认密码");
String cipher1=scan.next();
if(cipher.equals(cipher1)){
break;
}else{
System.out.println("您两次输入的密码不匹配,请确认后重新输入");
}
}
People peo=new People(name,cipher);
System.out.println("恭喜您注册成功");
people.add(peo);
System.out.println("欢迎"+peo.name);
break;
}else{
People peo;
while(true){
System.out.println("请输入您的昵称:");
String name=scan.next();
boolean p=PanDuan(name);
if(!p){System.out.println("您输入的昵称不正确");
continue;}//
System.out.println("请输入您的密码:");
String cipher=scan.next();
peo=new People(name,cipher);
boolean q= people.contains(peo);
if(!q) { System.out.println("您输入的密码不正确");
continue;
}
else{
System.out.println("欢迎"+peo.name);
break;
}
}
break;
}}
}
//菜单
public static void main(String[] args){
Order it=new Order();
Menu m=new Menu();
double sum=0;
List<Menu> menus=new ArrayList<Menu>();
Scanner scan=new Scanner(System.in);
System.out.println("欢迎来到好运来麻辣烫");
boolean p=true;
it.ZhuCe();
while(p){
System.out.println("我们店内有以下4类食品类供您选择: 1主食 2蔬菜 3火锅料理 4 肉食 5油炸 6清单 7删除 8结账");
System.out.println("您的选择是:");
System.out.println("序号"+"\t"+"名称"+"\t"+"单价/元");
int i=it.Try(9);
switch(i){
case 1:
//主食
System.out.println("主食类有:");
List<Menu> menu1=new ArrayList<Menu>();
Menu[] m1={new Menu("鸡蛋面","1.0"),new Menu("玉米面","1.5"),new Menu("蒜蓉排骨面","2.0"),new Menu("手工碗面","2.0"),new Menu("龙口粉丝","2.0"),new Menu("过桥米线","2.0"),new Menu("手拍拉面","2.0"),new Menu("QQ面","2.5"), };
menu1.addAll(Arrays.asList(m1));
int size1=menu1.size();
for(int j=0;j<size1;j++){
System.out.println(j+1+"\t"+menu1.get(j).name+"\t"+menu1.get(j).money);
}
while(true){
System.out.println("是否需要添加主食? 1是 2不是");
int b=it.Try(2);
if(b==2){
break;
}
System.out.println("请输入您要选的主食:");
int a=it.Try(size1+1)-1;
System.out.println("请输入你要添加的个数:");
int c=it.Try(9);
menu1.get(a).number=c;
menus.add(menu1.get(a));
}
continue;
case 2:
//小青菜、大白菜、木耳菜、土豆、南瓜、冬瓜、菠菜、荞麦菜、空心菜、香菜、红萝卜、豆腐、牛血、榨菜、油豆腐、豆腐干、千张、千张包、素机、素肉、花菜、海带、日本豆腐、西红柿、香菇、蘑菇、金珍菇,平菇、油条、油面
System.out.println("蔬菜类有:");
List<Menu> menu2=new ArrayList<Menu>();
Menu[] m2={new Menu("鲜豆腐","0.5"),new Menu("土豆片","0.5"),new Menu("冬瓜","0.5"),new Menu("小青菜","1.0"), new Menu("小青菜","1.0"),new Menu("生菜","1.0"),new Menu("金针菇","1.0"),new Menu("香菇","1.5"),new Menu("空心菜","1.0"), };
menu2.addAll(Arrays.asList(m2));
Collections.sort(menu2);
int size2=menu2.size();
for(int j=0;j<size2;j++){
System.out.println(j+1+"\t"+menu2.get(j).name+"\t"+menu2.get(j).money);
}
while(true){
System.out.println("是否需要继续添加蔬菜? 1是 2不是");
int b=it.Try(2);
if(b==2){
break;
}
System.out.println("请输入您要选的蔬菜:");
int a=it.Try(size2+1)-1;
System.out.println("请输入你要添加的个数:");
int c=it.Try(9);
menu2.get(a).number=c;
menus.add(menu2.get(a));
}
continue;
case 3:
//贡丸、鱼丸、虾丸、牛肉丸、包心贡丸、包心鱼丸、开花肠、北海贝、里脊肉、热狗、骨肉相联、川香鸡柳、肘花卷、墨鱼棒、虾米饺等;
System.out.println("火锅料理类有:");
List<Menu> menu3=new ArrayList<Menu>();
Menu[] m3={new Menu("贡丸","0.75"), new Menu("鱼丸","0.75"),new Menu("牛肉丸","0.75"),new Menu("虾丸","0.75"),new Menu("虾米饺","0.75"),new Menu("年糕","1.0"),new Menu("油条","1.0"),new Menu("安井水晶包","0.75"), };
menu3.addAll(Arrays.asList(m3));
Collections.sort(menu3);
int size3=menu3.size();
for(int j=0;j<size3;j++){
System.out.println(j+1+"\t"+menu3.get(j).name+"\t"+menu3.get(j).money);
}
while(true){
System.out.println("是否需要继续添加火锅料理? 1是 2不是");
int b=it.Try(2);
if(b==2){
break;
}
System.out.println("请输入您要选的火锅料理:");
int a=it.Try(size3+1)-1;
System.out.println("请输入你要添加的个数:");
int c=it.Try(9);
menu3.get(a).number=c;
menus.add(menu3.get(a));
}
continue;
case 4:
//鸡蛋、煎鸡蛋、虾、鹌鹑蛋、鸡肠、牛肉、羊肉、牛肚,牛腩,鸡珍、鸡爪等
System.out.println("肉食类有:");
List<Menu> menu4=new ArrayList<Menu>();
Menu[] m4={new Menu("鸡蛋","1.5"),new Menu("鹌鹑蛋","0.75"),new Menu("鸡爪","1.5"),new Menu("鸡翅","3.5"),new Menu("鸡腿","5.5"),};
menu4.addAll(Arrays.asList(m4));
Collections.sort(menu4);
int size4=menu4.size();
for(int j=0;j<size4;j++){
System.out.println(j+1+"\t"+menu4.get(j).name+"\t"+menu4.get(j).money);
}
while(true){
System.out.println("是否需要继续添加肉食? 1是 2不是");
int b=it.Try(2);
if(b==2){
break;
}
System.out.println("请输入您要选的肉食:");
int a=it.Try(size4+1)-1;
System.out.println("请输入你要添加的个数:");
int c=it.Try(9);
menu4.get(a).number=c;
menus.add(menu4.get(a));
}
continue;
case 5:
//油炸
System.out.println("油炸类有:");
List<Menu> menu5=new ArrayList<Menu>();
Menu[] m5={new Menu("秋刀鱼","5"),new Menu("香辣鸡胗","3"),new Menu("阿公鱿鱼须","3"),new Menu("阿公整鱿鱼","4.5"),new Menu("黄金鱼排","2"),new Menu("麻辣串烧","3"),new Menu("牙买加肉串","3"),new Menu("里脊肉","1.5"),new Menu("骨肉相连","2"),new Menu("川香鸡柳","2"),new Menu("肥羊串","3"),};
menu5.addAll(Arrays.asList(m5));
Collections.sort(menu5);
int size5=menu5.size();
for(int j=0;j<size5;j++){
System.out.println(j+1+"\t"+menu5.get(j).name+"\t"+menu5.get(j).money);
}
while(true){
System.out.println("是否需要继续添加油炸? 1是 2不是");
int b=it.Try(2);
if(b==2){
break;
}
System.out.println("请输入您要选的油炸:");
int a=it.Try(size5+1)-1;
System.out.println("请输入你要添加的个数:");
int c=it.Try(9);
menu5.get(a).number=c;
menus.add(menu5.get(a));
}
continue;
case 6:
System.out.println("您现在的账单为:");
Collections.sort(menus);
for(int j=0;j<menus.size();j++){
System.out.println(menus.get(j).name+"\t"+menus.get(j).money);
sum=sum+Double.parseDouble(menus.get(j).money)*menus.get(j).number;
}
System.out.println("总价格为:"+sum+"元");
continue;
case 7:
System.out.println("您现在的账单为:");
Collections.sort(menus);
for(int j=0;j<menus.size();j++){
System.out.println(menus.get(j).name+"\t"+menus.get(j).money);
sum=sum+Double.parseDouble(menus.get(j).money);
}
System.out.println("总价格为:"+sum+"元");
System.out.println("请输入您需要删除的序号:");
int d=it.Try(menus.size()+1)-1;
menus.remove(d);
System.out.println("成功删除");
continue;
case 8:
System.out.println("您现在的账单为:");
Collections.sort(menus);
for(int j=0;j<menus.size();j++){
System.out.println(menus.get(j).name+"\t"+menus.get(j).money);
sum=sum+Double.parseDouble(menus.get(j).money);
}
System.out.println("总价格为:"+sum+"元");
p=false;
break;
}//switch-case语句结束
}//主while循环结束
}//main函数结束
}
热门评论
写的很棒,不过好像有些地方没有处理好,例如:判断是会员后需要输入昵称,昵称不对就没法继续,假设我是顾客,不小心点错了选了1就没办法返回。
清单中不显示菜的个数,结账时的计算好像也有点问题。
请问你这是用什么平台写的