Java 集合框架和泛型项目练习

使用泛型集合实现超市会员管理系统

需求说明:

综合运用流程控集合框架、制、类和对象等实现超市会员管理系统,包括系统菜单展示、会员卡积分累计、会员卡积分兑换、查询特定会员卡剩余积分、修改密码及办理会员卡、退出系统等功能。具体要求如下:

  1. 实现系统菜单展示。超市会员管理系统欢迎菜单展示效果如下:

用户输入1-6之外的数字时,需要给出操作提示,并提示用户重新选择。

    2.会员卡积分累计。实现特定会员卡的积分累计,累计原则为:消费1元累计1积分。

如果会员卡和会员密码输入后,查询无此会员,需要给出错误提示

   3.会员卡积分兑换。会员购物时可以使用会员卡积分抵消部分消费金额,抵消规则为:100积分抵用0.1元,不足100的积分不做抵用。

如果会员卡号和密码有误,需要给出错误提示,

如果会员卡剩余积分不够会员期望兑换积分,需要给出提示,

  4.查询特定会员卡剩余积分,

如果会员卡号和密码有误,需要给出错误提示

   5.修改密码。

会员卡号和密码输入有误,不允许修改,并给出提示

   6.办理会员卡。每成功开通一个会员卡,系统免费赠送该卡100积分。效果如图:(注:此处会员卡号需要用户手工输入,后续课程功能升级)

    7.退出系统 

代码如下:

1.会员类

package cn.homework;

/**
 * 会员类
 */
public class Member {
    private String membername;//会员名
    private int memberid;//会员卡号
    private String password;//会员密码
    private int integral;//会员积分

    public Member() {
    }

    public Member(String membername, int memberid, String password, int integral) {
        this.membername = membername;
        this.memberid = memberid;
        this.password = password;
        this.integral = integral;
    }

    public Member(String membername, int memberid, int integral) {
        this.membername = membername;
        this.memberid = memberid;
        this.integral = integral;
    }

    public String getMembername() {
        return membername;
    }

    public void setMembername(String membername) {
        this.membername = membername;
    }

    public int getMemberid() {
        return memberid;
    }

    public void setMemberid(int memberid) {
        this.memberid = memberid;
    }

    public String getPassword() {
        return password;
    }

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

    public int getIntegral() {
        return integral;
    }

    public void setIntegral(int integral) {
        this.integral = integral;
    }

    @Override
    public String toString() {
        return
                "用户名:" + membername + '\''+
                "\t会员卡号:" + memberid +
                "\t积分:" + integral;
    }
}

2.业务类

package cn.homework;

import java.util.*;

/**
 * 业务类
 */
public class Operation {
    static Scanner input;
    static String exit;
    static Set<Member> list = new HashSet<>();
    public static void main(String[] args) {
         input=new Scanner(System.in);


        int loop = -1;//用户选择

        int choose1;
        do{
            //打印菜单
            System.out.println("********************************************************************");
            System.out.println("1.积分累计\t2.积分兑换\t3.剩余积分查询\t4.修改密码\t5.开卡\t6.退出");
            System.out.println("********************************************************************");
            System.out.print("请选择:");
            choose1 = input.nextInt();
            switch (choose1){
                case 1:
                    //积分累计

                    if(method1()){
                        System.out.println("累计成功");
                    }else{
                        System.out.println("累计失败");
                    }
                    System.out.println("是否退出?(n/y)");
                    exit = input.next();
                    if (!exit.equalsIgnoreCase("n")){
                        loop=1;
                    }
                    break;
                case 2:
                    //
                    method2();
                    System.out.println("是否退出?(n/y)");
                    exit = input.next();
                    if (!exit.equalsIgnoreCase("n")){
                        loop=1;
                    }
                    break;
                case 3:
                    //
                    method3();
                    break;
                case 4:
                    //
                    method4();
                    break;
                case 5:
                    //开卡
                    method5();
                    System.out.println("是否退出?(n/y)");
                    exit = input.next();
                    if (!exit.equalsIgnoreCase("n")){
                        loop=1;
                    }
                    break;
                case 6:
                    System.out.println("是否退出?(n/y)");
                    exit = input.next();
                    if (!exit.equalsIgnoreCase("n")){
                        loop=1;
                    }
            //
                    break;
                default:
                    break;
            }
        }while (loop==-1);
    }
    //方法2积分兑换
    public static void method2(){

        System.out.println("请输入你的卡号");
        int userid=input.nextInt();
        System.out.println("请输入你的密码");
        String psw=input.next();
        Member member = method(userid,psw);
        if (member==null){
            System.out.println("对不起,用户名或密码不正确无法兑换");

        }else {
            if (member.getIntegral() < 100) {
                System.out.println("积分不足,无法兑换");
            } else {
                    System.out.println("请输入您的兑换的积分");
                     int intergral = input.nextInt();
                     double dismoney = intergral/1000;
                System.out.println("本次优惠"+dismoney);

                }
            }

        }
    //积分查询
    public static void method3(){
        System.out.println("请输入你的卡号");
        int userid=input.nextInt();
        System.out.println("请输入你的密码");
        String psw=input.next();
        Member member = method(userid,psw);
        if (member==null){
            System.out.println("对不起,用户名或密码不正确无法累计");

        }else{
            System.out.println("用户名:"+member.getMembername()+"\t卡号:"+member.getMemberid()+"\t积分:"+member.getIntegral());
        }
    }
    //方法4修改密码;
    public static void method4(){
        System.out.println("请输入你的卡号");
        int userid=input.nextInt();
        System.out.println("请输入你的密码");
        String psw=input.next();
        Member member = method(userid,psw);
        do{
            if (member==null){
                System.out.println("对不起,用户名或密码不正确无法修改");
                System.out.println("请重新输入");

            }else{
                System.out.println("请输入新密码");
                String newPassword = input.next();
                if(!member.getPassword().equals(newPassword )) {
                    member.setPassword(newPassword);
                    System.out.println("\t密码修改成功!请牢记你的密码!");
                    break;
                }else {
                    System.out.println("\t新密码不能之前密码相同!");
                    continue;
                }
            }
        }while (true);

    }
    //方法5开卡
    public static void method5(){


        //产生六位随机卡号
        Random random = new Random();
        int i = random.nextInt(999999);
        //输入用户名和密码
        System.out.print("请输入姓名:");
        String name = input.next();
        System.out.print("请输入密码:");
        String password = input.next();
        int  integral1 = 0;
        integral1+=100;//开卡成功积分+100
        Member member = new Member(name,i,password,integral1);
        //创建集合存放用户信息


        list.add(member);
        System.out.println("********************************************************************");
        System.out.println("恭喜开卡成功,赠送积分100");
        System.out.println("用户名:"+name+"\t卡号:"+i+"\t积分:"+integral1);


    }static boolean falg;
    //方法1积分累计
    public static boolean method1(){
        falg= true;//判断
        System.out.println("请输入你的卡号");
        int userid=input.nextInt();
        System.out.println("请输入你的密码");
        String psw=input.next();
        Member member = method(userid,psw);
        if (member==null){
            System.out.println("对不起,用户名或密码不正确无法累计");
            falg =false;
        }else{
            System.out.println("请输入您的消费金额");
            int money = input.nextInt();

            member.setIntegral(member.getIntegral()+money);
        }
        return falg;
    }

    /**
     * 判断会员是否存在
     * @return
     */
    public static Member method(int memberid,String passwprd){
        for (Member member : list) {
            if(member.getMemberid()==memberid && passwprd.equals(member.getPassword())){

                System.out.println(member.toString());
                return member;
            }
        }

        return null;
    }
}

功能截图如下:

开卡:

剩余积分查询:

积分累计:

修改密码:

积分兑换:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值