java基础总和小程序之黑心餐馆点餐系统

java小程序:黑心餐馆

  嘛,本篇旨在依靠我们java基础的学习制造一个控制台小程序,模拟基本的点餐功能,是对java基础学习的一个总结,当结束这一部分就可以开始下一步来讨论java桌面程序的设计和入手javaweb了。省略登录注册功能,我们假设只有一个用户(如果有多个,无非是建立不同的对象),用户可以实现的功能应该是菜单,配送状态,重置初始化。,对此我们采用数组来进行保存你的菜单,菜单和状态都应该是私有的。

    但是在这之前,我们先要考虑一个问题:如果用户的输入非法,那会交给scanner类的异常抛出影响我们的客户体验,我们在这设置一个工具类USE,内部设置一个静态变量INT去规范输入

package hungry;

import java.util.Scanner;

public class USE {
	static Scanner ob = new Scanner(System.in);

	static public int INT(int min, int max) {
		if (min > max) {
			min = max + min;
			max = min - max;
			min = min - max;
		}
		boolean flag = false;
		int n = 0;
		while (!flag) {
			flag = ob.hasNextInt();
			if (flag) {
				n = ob.nextInt();
				if (n >= min && n <= max) {
					flag = true;
				} else {
					System.out.println("您输入的"+n+"不在范围内");
					flag=false;
				}
			} else {
				ob.next();
				System.out.println("您输入的是并不是一个整数");
			}
		}
		return n;
	}
}

这个方法中我们传入两个参数去设定输入的上下限,对非法的输入用String去读走缓冲区的输入,直到我们正确输入,如果传入的下限大于上限我们就交换他们的值。

然后创建用户类,我们需要通过传入的数据增加用户的订单,由于使用的是数组去保存,因此我们设定ADD方法去添加食物进入类的数组,具体是没当调用这个方法,将传入字符串参数保存在数组最后一位然后数组长度加一,这里加一通过字符串复制函数copyof实现,由于懒只实现了添加,删除也是一个思想。由于我们最后要实现账单清空重置以及实现签收状态变更,所以要创造方法去调用私有属性,change(Change)Tips分别解决签收真假转变,replace通过将数组缩减为长度1值为null实现了菜单清空,通过show方法显示菜单和签收状态.

package hungry;

import java.util.Arrays;

public class user {
private int fl=0;	
private String food[]=new String[fl+1];
private boolean tips=false;

public void ADD(String food){
	this.food[fl]=food;
	fl++;
	this.food=Arrays.copyOf(this.food,fl+1);

}
public void show(){
	for(String fd:this.food){
		if(fd==null){
			break;
		}
		System.out.println(fd);
		
	}
	if(!tips){
	System.out.println("尚未签收");
	}else{
		System.out.println("已经签收");
	}
}
public void ChangeTips(){
	if(!this.tips){
		this.tips=true;
	}
}
public void changeTios(){
	if(this.tips){
		this.tips=false;
	}
}
public boolean KnowTips(){
	return tips;
}
public void replace(){
	this.food[0]=null;
	this.food=Arrays.copyOf(this.food,1);
}
}

 

我们在这基础上为了设定点赞功能我们单独创建一个商店类,这里面只保存一个静态变量good来表示点赞数,并设置静态方法实现点赞和显示点赞

package hungry;

public class shop {
	public static int good = 0;

	public static void AddGood() {
		good++;
	}

	public static int showGood() {
		return good;
	}
}

我们将选择界面单独用一个类去实现,创建choose类

package hungry;

public class Choose {
public static int Run(){
	System.out.println("1.点餐");
	System.out.println("2.查看餐袋");
	System.out.println("3.签收订单");
	System.out.println("4.删除订单");
	System.out.println("5.点赞");
	System.out.println("0.退出系统");
	System.out.println("您的选择是:");
	int button=USE.INT(0,5);
	return button;
}
}

接下来就是构建主要功能实现,首先是点餐方法Order,我们需要创建一个数组去保存餐馆的菜单,然后通过输入的整数去进行点餐,并进行循环输入,直到我们选择退出。

签收和菜单打印已经在user内实现,我们直接调用它们。而删除通过调用user的replace和changetips使其初始化

接下来我们实现点赞系统

首先我们要判断是否签收了,只有签收才能点赞,然后我们不能重复点赞,我们可以通过修改tips或者添加一个额外的标记表示,为了减少变量,我选择前者。最后我们得到下面主页面代码

package hungry;

import java.util.Scanner;

public class TheMain {
static	Scanner ob=new Scanner(System.in);
	public static void main(String args[]) {
		System.out.println("欢迎来到黑心点餐系统v1.0");
		user us=new user();
		int button = 0;
		boolean flag = false;
        boolean tip=false;
        boolean Tip=false;
		while (!flag) {
			button = Choose.Run();
			switch (button) {
			case 1:
                Order(us);
                Tip=true;
				break;
			case 2:
				us.show();
				break;
			case 3:
				if(Tip){
				if(!tip){
				us.ChangeTips();
				System.out.println("已签收!");
				tip=true;
				}else{
					System.out.println("您已经签收过了!");
				}
				}else{
					System.out.println("您还没有点餐!");
				}
				break;
			case 4:
				clean(us);
				Tip=false;
				tip=false;
				break;
			case 5:
				if(us.KnowTips()==true)
				{
				shop.AddGood();
				us.changeTios();
				System.out.println("商铺当前点赞数是"+shop.showGood());
				}else{
					System.out.println("您不能点赞!");
				}
				break;
			case 0:
				flag = true;
				break;

			}
		}
		System.out.println("成功退出黑心点餐,欢迎下次挨宰!");
	}
	
	public static void Order(user us){
		String food[]=new String[]{"李承欢","郭毅","任航","啤酒","故事"};
		String skr;
		for(int i=0;i<food.length;i++){
			System.out.println(i+"."+food[i]);
		}
		do{
		System.out.println("请选择您需要的食物:");
		int n=USE.INT(0, 4);
		us.ADD(food[n]);
		System.out.println("是否继续点餐y/n");
		 skr=ob.next();
		}while("y".equals(skr));
	}
	public static void clean(user us){
		us.replace();
		us.ChangeTips();
		us.changeTios();
		System.out.println("已经清除!");
	}
}

注意:由于是临时现场做的,主功能没有优化,需要修改的话请自行修改,下周开始就要java桌面应用和javaweb交替开始练习了

代码源文件我上传CSDN下载了,免费的,新手有需求可以下过去看看,共勉

https://download.csdn.net/download/huangxin2015/10666463

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值