使用HashMap编写超市会员管理系统

 

我们先编译一个储存超市会员基本信息的类,并且写出这个类的构造方法和属性get、set方法

package com.ytzl.test.test05.map;

/**
 * @program: JavaApi
 * @description: Member超市会员类
 * @author: Mr.He
 * @create: 2022-03-17 14:02
 **/
public class Member {
    //属性:姓名,会员卡号,密码,会员积分,开卡日期

    //姓名
    private String name;
    //会员卡号
    private String cardNumber;
    //密码
    private String password;
    //会员积分
    private int memberPoints;
    //开卡日期
    private String cardOpeningDate;

    //有参无参构造方法
    public Member() {

    }

    public Member(String name, String cardNumber, String password, int memberPoints, String cardOpeningDate) {
        this.name = name;
        this.cardNumber = cardNumber;
        this.password = password;
        this.memberPoints = memberPoints;
        this.cardOpeningDate = cardOpeningDate;
    }

    //get/set方法
    public String getName() {
        return name;
    }

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

    public String getCardNumber() {
        return cardNumber;
    }

    public void setCardNumber(String cardNumber) {
        this.cardNumber = cardNumber;
    }

    public String getPassword() {
        return password;
    }

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

    public int getMemberPoints() {
        return memberPoints;
    }

    public void setMemberPoints(int memberPoints) {
        this.memberPoints = memberPoints;
    }

    public String getCardOpeningDate() {
        return cardOpeningDate;
    }

    public void setCardOpeningDate(String cardOpeningDate) {
        this.cardOpeningDate = cardOpeningDate;
    }
}

 

随后在创建一个超市会员管理操作的类,在里面写出方法来进行添加会员、删除会员、修改会员、查询积分、累计积分、使用积分、退出的方法

package com.ytzl.test.test05.map;

import java.text.SimpleDateFormat;
import java.util.*;

/**
 * @program: JavaApi
 * @description: MemberDao业务类中实现业务
 * @author: Mr.He
 * @create: 2022-03-17 14:06
 **/
public class MemberDao {

    //扫描仪对象
    Scanner scanner = new Scanner(System.in);

    //存储Member超市会员类的泛型集合
    HashMap<String, Member> memberArrayList = new HashMap<String, Member>();

    //格式化时间
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");


    //程序启动
    public void startProgram() {
        boolean isGo = true;
        do {
            //调用显示菜单方法
            showMenu();

            //接受用户的选择
            int choose = scanner.nextInt();

            switch (choose) {
                case 1:
                    if (integralAccumulation()) {
                        System.out.println("积分累计成功!");
                    } else {
                        System.out.println("积分累计失败!");
                    }
                    break;
                case 2:
                    if (pointExchange()) {
                        System.out.println("积分兑换成功!");
                    } else {
                        System.out.println("积分兑换失败!");
                    }
                    break;
                case 3:
                    selectMember();
                    break;
                case 4:
                    if (changePassword()) {
                        System.out.println("密码修改成功!");
                    } else {
                        System.out.println("密码修改失败!");
                    }
                    break;
                case 5:
                    //调用开卡方法
                    openCard();
                    break;
                case 6:
                    if (deleteMember()) {
                        System.out.println("删除客户成功!");
                    } else {
                        System.out.println("删除客户失败!");
                    }
                    break;
                case 7:
                    System.out.println("退出程序!");
                    break;
            }
            if (choose == 6) {
                isGo = false;
            } else {
                System.out.println("是否继续操作?");
                isGo = scanner.nextBoolean();
            }
        } while (isGo);
        System.out.println("欢迎下次使用!");
    }


    //(1)展示菜单的方法
    public void showMenu() {
        System.out.println("*******************欢迎进入超市管理系统*******************");
        System.out.println("1:积分累计\t2:积分兑换\t3:查询剩余积分\t4:修改密码\t5:开卡\t6:开卡\t7:退出");
        System.out.println("******************************************************");
        System.out.println("请选择:(1-6)");
    }


    //(2)开卡方法,随机生成八位卡号,放入集合对象,开卡送100积分
    public void openCard() {
        //创建客户对象
        Member member = new Member();
        System.out.println("请输入注册姓名:");
        //设置注册时会员姓名
        member.setName(scanner.next());
        //判断注册时有没有姓名重复的
        while (isName(member)) {
            System.out.println("请重新输入姓名");
            member.setName(scanner.next());
        }
        System.out.println("请输入注册密码:");
        String pwd = scanner.next();
        while (pwd.length() < 6) {
            System.out.println("会员密码不能小于6位,请重新输入注册密码:");
            pwd = scanner.next();
        }
        //设置注册时会员密码
        member.setPassword(pwd);
        //赠送积分!设置积分
        member.setMemberPoints(100);
        //设置会员卡号
        member.setCardNumber(getCardNumber());
        //设置开卡日期
        Date date = new Date();
        //格式化日期
        String cardOpeningDate = this.format.format(date);
        member.setCardOpeningDate(cardOpeningDate);
        //添加到集合当中
        memberArrayList.put(member.getName(), member);
        System.out.println("恭喜,开通会员成功!系统赠送您100积分!您的会员卡号为:" + member.getCardNumber());
    }


    //(3)查询积分
    public void selectMember() {
        Member member = new Member();
        System.out.println("请输入您的会员卡号:");
        //接受并设置要查询会员卡号
        member.setCardNumber(scanner.next());
        System.out.println("请输入您的会员卡密码:");
        //接受并设置要查询会员卡密码
        member.setPassword(scanner.next());
        System.out.println("姓名\t会员卡号\t会员积分\t开卡日期");
        if ((member = isExistence(member)) != null) {
            System.out.println(member.getName() + "\t" + member.getCardNumber() + "\t"
                    + member.getMemberPoints() + "\t" + member.getCardOpeningDate());
        } else {
            System.out.println("您输入的会员卡号或密码错误,无法查询积分!");
        }
    }

    //(4)积分累计
    public boolean integralAccumulation() {
        //创建客户对象
        Member member = new Member();
        System.out.println("请输入会员卡号:");
        //接收并设置要积分累加的会员卡号
        member.setCardNumber(scanner.next());
        System.out.println("请输入会员卡密码:");
        //接收并设置要积分累加的会员密码
        member.setPassword(scanner.next());
        if ((member = isExistence(member)) != null) {
            //累计积分
            System.out.println("请输入您此次消费金额(消费1元累计1积分):");
            member.setMemberPoints(member.getMemberPoints() + scanner.nextInt());
            return true;
        } else {
            System.out.println("您输入的会员卡号或密码错误,无法累计积分!");
        }
        return false;
    }

    //(5)积分兑换
    public boolean pointExchange() {
        //创建客户对象
        Member member = new Member();
        System.out.println("请输入会员卡号:");
        //接收并设置要积分兑换的会员卡号
        member.setCardNumber(scanner.next());
        System.out.println("请输入会员卡密码:");
        //接收并设置要积分兑换的会员密码
        member.setPassword(scanner.next());
        if ((member = isExistence(member)) != null) {
            System.out.println("请输入您需要兑换使用的积分:(100积分抵用0.1元,不足100的积分不做抵用)");
            int memberPoints = scanner.nextInt();
            while (memberPoints > member.getMemberPoints()) {
                System.out.println("您没有这么多的积分,请重新输入积分:");
                memberPoints = scanner.nextInt();
            }
            //判断积分是否大于100
            if (memberPoints > 100) {
                //计算积分抵用的金钱
                int money = memberPoints / 1000;
                //减去抵用的积分
                member.setMemberPoints(member.getMemberPoints() - memberPoints);
                System.out.println("您的消费金额中使用会员积分抵消" + money + "元!");
                //返回true
                return true;
            } else {
                System.out.println("您的积分不足100抵用不了!");
            }
        } else {
            System.out.println("您输入的会员卡号或密码错误,无法积分兑换!");
        }
        return false;
    }


    //(6)修改密码
    public boolean changePassword() {
        //创建客户对象
        Member member = new Member();
        System.out.println("请输入会员卡号:");
        //接收并设置要修改密码的会员卡号
        member.setCardNumber(scanner.next());
        System.out.println("请输入会员卡密码:");
        //接收并设置要修改密码的会员密码
        member.setPassword(scanner.next());
        if ((member = isExistence(member)) != null) {
            System.out.println("请输入新的密码:");
            String pwd = scanner.next();
            while (pwd.length() < 6 || pwd != member.getPassword()) {
                System.out.println("会员密码不能小于6位,,不能和原来的密码一样请重新输入新的密码:");
                pwd = scanner.next();
            }
            //设置新的会员密码
            member.setPassword(pwd);
            return true;
        } else {
            System.out.println("您输入的会员卡号或密码错误,无法修改密码!");
        }
        return false;
    }


    //删除客户
    public boolean deleteMember() {
        //创建客户对象
        Member member = new Member();
        System.out.println("请输入会员卡号:");
        //接收并设置要删除的会员卡号
        member.setCardNumber(scanner.next());
        System.out.println("请输入会员卡密码:");
        //接收并设置要删除的会员密码
        member.setPassword(scanner.next());
        if ((member = isExistence(member)) != null) {
            //移除客户
            memberArrayList.remove(member);
            return true;
        } else {
            System.out.println("您输入的会员卡号或密码错误,无法删除!");
        }
        return false;
    }

    //随机生成8位数的会员卡号
    public String getCardNumber() {
        String cardNumber = null;
        //创建Random对象
        Random random = new Random();
        for (int i = 0; i < 8; i++) {
            int i1 = random.nextInt(10);
            cardNumber += i1;
        }
        return cardNumber.substring(4, 12);
    }

    //判断会员是否存在
    public Member isExistence(Member member) {
        Set<String> strings = memberArrayList.keySet();
        for (String meb : strings) {
            Member values = memberArrayList.get(meb);
            if (values.getCardNumber().equals(member.getCardNumber())
                    && values.getPassword().equals(member.getPassword())) {
                //循环判断如果存在返回该账户
                return values;
            }
        }
        //反之返回null用于判断不存在该账户
        return null;
    }

    //判断会员姓名是否重复
    public boolean isName(Member member) {
        Set<String> strings = memberArrayList.keySet();
        for (String o : strings) {
            Member member1 = memberArrayList.get(o);
            if (member.getName().equals(member1.getName())) {
                System.out.println("已有该账户,无法添加");
                return true;
            }
        }
        return false;
    }
}

 

最后写出测试类,实现超市会员管理的运行

package com.ytzl.test.test05.map;

/**
 * @program: JavaApi
 * @description:
 * @author: Mr.He
 * @create: 2022-03-17 14:16
 **/
public class Test {
    public static void main(String[] args) {

        //实例化对象
        MemberDao memberDao = new MemberDao();

        //启动程序
        memberDao.startProgram();

    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值