##超市会员卡管理,利用我们之前的知识进行温习

首先当我们拿到超市会员卡管理系统这个题的时候,可能会绝对哇,好高大上,其实不然,我们要从心里鄙视它,你很low,等我干掉你!!

然后我们去分析这个题我们用面向对象怎么去解决:

一,超市会员卡?

一个卡绝对会有的属性:  卡号,,姓名,,开卡时间,,密码,,积分是不是??

那么我门就可以先把这个卡类给建立出来

public class CarVip {
    //首先 我们要建立会员卡的属性    姓名   卡号   密码  积分   开卡时间
    private String name;
    private  int carId;
    private String password;
    private int socre;
    private String registDate;

    //空参构造
    public CarVip() {
    }
    //有参构造
    public CarVip(String name, int carId, String password, int socre, String registDate) {
        this.name = name;
        this.carId = carId;
        this.password = password;
        this.socre = socre;
        this.registDate = registDate;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getCarId() {
        return carId;
    }

    public void setCarId(int carId) {
        this.carId = carId;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public int getSocre() {
        return socre;
    }

    public void setSocre(int socre) {
        this.socre = socre;
    }

    public String getRegistDate() {
        return registDate;
    }

    public void setRegistDate(String registDate) {
        this.registDate = registDate;
    }
}

二,会员卡绝对会有业务类去实现会员卡这个类

它的方法都有哪些呢?根据要求总共五个方法:

1,开卡

2,存积分

3,查询积分

4,兑换积分

5,修改密码

6,退出系统

public class CarVipDao {
    Scanner sc = new Scanner(System.in);
    List<CarVip> carVipList = new ArrayList();

    public void startVip() {
        System.out.println("================================");
        System.out.println("1,开卡    2,存积分   3,积分查询  4,积分兑换  5,修改密码  6.退出系统");
        System.out.println("================================");
        System.out.println("请选择:");
    }

    public void start() {
        do {
            //让程序进入界面交互部分
            startVip();
            int choose = sc.nextInt();//让键盘录入去接收
            switch (choose) {
                case 1:
                    //1,开卡
                    openNewCarId();
                    continue;
                case 2:
                    //2,存积分
                    if(cunScore()){
                        System.out.println("恭喜你,积分累计成功");
                    }else{
                        System.out.println("对不起,积分累计失败");
                    }
                    continue;
                case 3:
                    //3,查询积分
                    chaScore();
                    continue;
                case 4:
                    //4,积分兑换
                    if(duiScore()){
                        System.out.println("恭喜你,积分兑换成功");
                    }else{
                        System.out.println("对不起,积分兑换失败");
                    }
                    continue;
                case 5:
                    //5,修改密码
                    if(checkPas()){
                        System.out.println("恭喜你,密码修改成功");
                    }else{
                        System.out.println("对不起,你的输入有误");
                    }
                    continue;
                case 6:
                    //6退出系统
//                    System.exit(1);
                    break;
                default:
                    System.out.println("对不起,你的输入有误,请重新输入:");
                    continue;
            }
            break;
        } while (true);
    }

    /**
     * 1,开卡
     */
    public void openNewCarId() {
        CarVip carVip = new CarVip();//新建卡类对象
        System.out.println("请输入姓名:");
        carVip.setName(sc.next());
        //随机生成卡号
        carVip.setCarId(this.openNew());
        //输入密码
        System.out.println("请输入您的密码:");
        boolean flag = false;
        String pas;
        do {
            pas = sc.next();
            if (pas.length() < 6) {
                System.out.println("对不起,您输入错误,请重新输入:");
            } else {
                carVip.setPassword(pas);
                flag = true;
            }

        } while (!flag);
        //开卡成功后送积分100
        carVip.setSocre(100);
        //显示开卡时间
        Date date = new Date();//系统时间
        String s = new SimpleDateFormat("yyyy-MM-dd").format(date);
        carVip.setRegistDate(s);
        carVipList.add(carVip);
        System.out.println("恭喜您,开卡成功,为了感谢你对我们的支持,送你100积分,你的会员卡号是:" + carVip.getCarId());

    }

    /**
     * 生成随机卡号
     *
     * @return
     */
    private int openNew() {
        Random r = new Random();
        int i = r.nextInt(99999999);
        for (CarVip vip : carVipList) {
            if (i == vip.getCarId()) {
                i = r.nextInt(99999999);
            }
        }
        return i;
    }

    /**
     * 2,存积分
     */
    public boolean cunScore() {
        CarVip vip = new CarVip();
        System.out.println("请输入您的卡号:");
        vip.setCarId(sc.nextInt());
        System.out.println("请输入密码:");
        vip.setPassword(sc.next());
        if ((vip=hascar(vip))!=null) {
            System.out.println("请输入你消费的金额:(1元换1积分)");
            int i = sc.nextInt();
            vip.setSocre(vip.getSocre()+i);
            return true;
        }else{
            System.out.println("对不起,您输入的账号密码不匹配,请重新输入");
        }
        return true;
    }

    /**
     * 判断输入的卡号和密码是否正确
     * @param carVip
     * @return
     */
    private CarVip hascar(CarVip carVip) {
        if (carVip.getPassword() != null) {
            for (int i = 0; i < carVipList.size(); i++) {
                //equalsIgnoreCase是不分大小写,需要判断输入的密码是否一样
                if (carVipList.get(i).getPassword().equalsIgnoreCase(carVip.getPassword()) && carVipList.get(i).getCarId() == carVip.getCarId()) {
                    return carVipList.get(i);
                }
            }
        }
        return null;
    }

    /**
     * 3,查询积分
     */
    public void chaScore(){
        CarVip vip = new CarVip();
        System.out.println("请输入你的卡号:");
        vip.setCarId(sc.nextInt());
        System.out.println("请输入你的密码:");
        vip.setPassword(sc.next());
        if((vip=hascar(vip))!=null){
            System.out.println("姓名  卡号  积分  开卡时间");
            System.out.println(vip.getName()+" "+vip.getCarId()+" "+vip.getSocre()+" "+vip.getRegistDate());
        }else{
            System.out.println("对不起,你输入的卡号和密码不匹配,请重新输入");
        }
    }

    /**
     * 4,兑换积分
     */
    public boolean duiScore(){
        CarVip vip = new CarVip();
        System.out.println("请输入你的卡号:");
        vip.setCarId(sc.nextInt());
        System.out.println("请输入你的密码:");
        vip.setPassword(sc.next());
        if((vip=hascar(vip))!=null){
            System.out.println("请输入你要兑换的积分:(100积分兑换0.1元,不足100积分不能兑换)");
            int i = sc.nextInt();
            if(i<vip.getSocre()){
                vip.setSocre(vip.getSocre()-i);
                System.out.println("您的积分兑换成功:"+i/100*0.1+"元");
                return true;
            }else{
                System.out.println("对不起,你的积分不够,不能兑换");
            }
        }else{
            System.out.println("对不起,你输入的卡号和密码不匹配,请重新输入:");
        }
        return false;
    }

    /**
     * 5,修改密码
     */
    public boolean checkPas(){
        CarVip vip = new CarVip();
        System.out.println("请输入您的卡号:");
        vip.setCarId(sc.nextInt());
        System.out.println("请输入您的密码:");
        vip.setPassword(sc.next());
        if((vip=hascar(vip))!=null){
            System.out.println("输入正确,请输入您的新密码:");
            String pas;
            boolean flag=false;
            do{
                pas=sc.next();
                if(pas.length()<6){
                    System.out.println("对不起,您输入错误,请重新输入:");
                    flag=false;
                }else{
                    vip.setPassword(pas);
                    flag=true;
                }
            }while (!flag);
            return true;
        }else{
            System.out.println("对不起,您输入的卡号和密码不匹配,请重新输入:");
        }
        return false;
    }
}

三:测试类

public class Test {
    public static void main(String[] args) {
        CarVipDao car = new CarVipDao();
        car.start();
    }
}
原文地址:https://www.cnblogs.com/liurui-bk517/p/10918075.html