超市会员管理系统(对象+集合)
admin
2024-01-29 12:33:51
0

项目需求
         为某超市开发一个超市会员管理系统,实现会员的管理,具体实现功能如下:

                (1)积分累计

                (2)积分兑换

                (3)查询剩余积分

                (4)查询所有会员信息

                (5)修改密码

                (6)开卡(注册会员)

覆盖知识
        程序基本概念、数据类型、流程控制、顺序、选择 、循环、跳转语句、变量、类、方法、集合、实用类等

开发思路 
        (1)明确需求

        (2)编码顺序

                1)、数据初始化

                2)、循环完成各种超市会员管理操作

                3)、菜单切换

        (3)测试

开发具体逻辑
1、会员类:Member
    (1)姓名        name:String
    (2)卡号        cardId:int
    (3)密码        password:String
    (4)积分        score:int
    (5)开卡日期    registDate:String    

       代码:

public class Member {
 
    // 定义属性
    private String name;
    private int cardId;
    private String password;
    private int score;
    private String registDate;
 
    public String getName() {
        return name;
    }
 
    // 定义get/set方法
    public void setName(String name) {
        this.name = name;
    }
 
    public int getCardId() {
        return cardId;
    }
 
    public void setCardId(int cardId) {
        this.cardId = cardId;
    }
 
    public String getPassword() {
        return password;
    }
 
    public void setPassword(String password) {
        this.password = password;
    }
 
    public int getScore() {
        return score;
    }
 
    public void setScore(int score) {
        this.score = score;
    }
 
    public String getRegistDate() {
        return registDate;
    }
 
    public void setRegistDate(String registDate) {
        this.registDate = registDate;
    }
}

2、会员管理类:MemberMethod
    (1)所有会员(卡)--集合:ArrayList listM = new ArrayList();

    (2)程序整体流程搭建的方法
            循环
            分支
    (3)验证会员是否存在的方法
            集合的遍历,集合元素的查找
    (4)系统随机生成会员卡号的方法
            Math.random()方法

    A:开卡
        输入会员信息(会员卡密码的验证--String类相应方法-循环)
            姓名、密码
            卡号:系统随机生成会员卡号的方法
            积分:系统默认100
            开卡日期:日期时间操作(Date类、SimpleDateFormat类)
        将注册成功的会员添加进集合(ArrayList add())            
    B:修改密码
        验证会员是否存在
          会员对象密码属性重新赋值
    C:积分累计
        验证会员是否存在
        会员对象积分属性重新赋值
    D:积分兑换
        验证会员是否存在
        会员积分兑换过程(根据相应规则)
    E:查询剩余积分
        验证会员是否存在
        集合查找相应会员,显示信息(遍历)

    F:查询所有会员信息
        验证会员是否存在
        集合查找所有会员,显示信息(遍历)
    F:退出

    (5) 代码

public class MemberMethod {
 
    // 定义一个Scanner
    Scanner sc = new Scanner(System.in);
    // 定义Member对象
    Member member = new Member();
    // 定义一个Member集合
    ArrayList listM = new ArrayList();
 
    // 菜单选择栏
    public void showFirst() {
        System.out
                .println("****************************************欢迎使用超市会员管理系统*****************************************");
        System.out
                .println("1.开卡\t2.修改密码\t3.积分累计\t4.积分兑换\t5.剩余积分查询\t6.查看所有会员信息\t7.退出");
        System.out
                .println("*******************************************************************************************************");
 
    }
 
    // 会员卡号随机产生方法
    public int cardRandom() {
        return (int) (Math.random() * (19999999 - 10000000) + 10000000);
 
    }
 
    // 注册时判断会员是否存在
    public boolean isCardId(int mm) {
        boolean isCId = false;
        if (listM.size() > 0) {
            for (Member memberC : listM) {
                if (mm == memberC.getCardId()) {
                    isCId = true;
                    return isCId;
                }
            }
        }
        return isCId;
    }
 
    // 判断会员卡和密码是否正确
    public boolean isMember(int mm, String pwd) {
        boolean isCId = false;
        if (listM.size() > 0) {
            for (Member memberC : listM) {
                if (mm == memberC.getCardId()
                        && pwd.equals(memberC.getPassword())) {
                    isCId = true;
                    member = memberC;
                    return isCId;
                }
            }
        }
        return isCId;
    }
 
    // 1、开卡
    public void OpenCard() {
        // 每次都初始化一条member对象
        member = new Member();
        do {
            member.setCardId(cardRandom());
        } while (isCardId(member.getCardId()));
        System.out.print("请输入注册姓名:");
        member.setName(sc.next());
        System.out.print("请输入注册密码:");
        String password1 = sc.next();
        do {
            if (password1.length() < 6) {
                System.out.print("会员密码不能小于6位,请重新输入注册密码:");
                password1 = sc.next();
            }
        } while (password1.length() < 6);
        member.setPassword(password1);
        member.setScore(100);
        Date data = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm");
        member.setRegistDate(sdf.format(data));
        listM.add(member);
        System.out.println("恭喜,开通会员卡成功!系统赠送您" + member.getScore()
                + "积分,您的会员卡号是:" + member.getCardId());
    }
 
    // 2、修改密码
    public void changePassword() {
        System.out.print("请输入您的会员卡号:");
        int cardNum = sc.nextInt();
        System.out.print("请输入您的会员密码:");
        String cardPwd = sc.next();
        if (isMember(cardNum, cardPwd)) {
            System.out.print("请输入您的会员新密码:");
            member.setPassword(sc.next());
            System.out.println("新密码设置成功!");
        } else {
            System.out.println("您输入的会员卡号或密码错误,无法修改密码!");
        }
    }
 
    // 3、积分累计
    public void scoresAdd() {
        System.out.print("请输入您的会员卡号:");
        int cardNum = sc.nextInt();
        System.out.print("请输入您的会员密码:");
        String cardPwd = sc.next();
        if (isMember(cardNum, cardPwd)) {
            System.out.print("请输入本次消费金额(消费1元累计1分):");
            int scoreCurrent = sc.nextInt();
            member.setScore(scoreCurrent + member.getScore());
            System.out.println("积分累计成功!你重新累计的积分为:" + member.getScore() + "分");
        } else {
            System.out.println("您输入的会员卡号或密码错误,无法累计积分!");
        }
    }
 
    // 4、积分兑换
    public void scoresConver() {
        System.out.print("请输入您的会员卡号:");
        int cardNum = sc.nextInt();
        System.out.print("请输入您的会员密码:");
        String cardPwd = sc.next();
        if (isMember(cardNum, cardPwd)) {
            System.out.print("请输入您要兑换使用的积分(100积分抵用0.1元,不足100的积分不做抵用):");
            int scoreCurrent = sc.nextInt();
            if (scoreCurrent < member.getScore()&&scoreCurrent>100) {
                member.setScore(member.getScore() - scoreCurrent);
                System.out.println("您消费金额中使用会员积分抵扣了0."
                        + (scoreCurrent /100) + "元");
            }else if(scoreCurrent<100){
                System.out.println("不满足积分兑换规则,不足100的积分不做抵用!");
            }else {            
                System.out.println("积分不足!");
            }
        } else {
            System.out.println("您输入的会员卡号或密码错误,无法进行兑换!");
        }
    }
 
    // 5、剩余积分查询
    public void scoresRemain() {
        System.out.print("请输入您的会员卡号:");
        int cardNum = sc.nextInt();
        System.out.print("请输入您的会员密码:");
        String cardPwd = sc.next();
        if (isMember(cardNum, cardPwd)) {
            System.out.println("会员信息【会员卡号:" + member.getCardId() + ",姓名:"
                    + member.getName() + ",可用积分:" + member.getScore()
                    + ",开卡时间:" + member.getRegistDate() + "】");
        } else {
            System.out.println("您输入的会员卡号或密码错误,无法查询到信息!");
        }
    }
 
    // 6、查看所有会员信息
    public void LookMembers() {
        int i = 0;
        for (Member member : listM) {
            i++;
            System.out.println("会员" + i + "信息【会员卡号:" + member.getCardId()
                    + ",姓名:" + member.getName() + ",可用积分:" + member.getScore()
                    + ",开卡时间:" + member.getRegistDate() + "】");
        }
    }
 
    public void MainMethod() {
        boolean isIn = true;
        do {
            showFirst();
            System.out.print("请选择:");
            switch (sc.nextInt()) {
            case 1:
                OpenCard();
                break;
            case 2:
                changePassword();
                break;
            case 3:
                scoresAdd();
                break;
            case 4:
                scoresConver();
                break;
            case 5:
                scoresRemain();
                break;
            case 6:
                LookMembers();
                break;
            case 7:
                isIn = false;
                break;
            }
        } while (isIn);
 
    }

3、测试类:MemberTest
    会员管理类的调用

    代码:

public class MemberTest {
 
    public static void main(String[] args) {
        MemberMethod memberM=new MemberMethod();
        memberM.MainMethod();
    }
 
}

相关内容

热门资讯

一股暖流涌遍全身打一个物理名词... 窗外的雨“滴滴嗒嗒”地下着,丝毫没有要停歇的意思。坐在窗前的我思绪万千,愁眉不展。“儿子,天气预报说...
手机的自述 手机的自述 大家好!我是一部智能手机。我叫“vivoX9”。我的个头只有成人普通手掌那么大,我身披黑色衣服,一张...
善意的谎言 善意的谎言感悟句子 我的爸爸很爱我,对我极其关心、爱护!星期天早上,家里只有我和爸爸俩人。爸爸不会做饭,我们俩决定出去吃...
爱如空气 爱如空气孙俪完整版 有一次我感冒了,咳嗽挺严重,在医院挂了四天水。放学后,妈妈就又匆匆忙忙地带着我去医院挂水。这天,恰好...
存钱罐的自述 存钱罐的自述40... 我是小主人家的存钱罐,我是一头彩色的小猪,是用陶瓷做的,我有一对机灵的大眼睛,稍微往里挤了一点点,显...
我的爱好 我的爱好特长简短介绍 我是个兴趣爱好十分广泛的小男孩。中外名著,我无所不读;琴棋书画,我无所不学。我十分喜爱看书。我喜欢在...
我爱荷花 我爱荷花阅读理解 夏天,是一个烈日当头,炎热的季节。当天上的大太阳辣辣的烤着大地,树木干枯,不再像春天那么茂盛,只有一...
宪法伴我成长 宪法伴我成长征文 国有国法,家有家规,法律是一个国家的根本,国无法就不能立足于世界,更不用说在世界上建立自己的威信。每...
水的遐想 河流的遐想 水,柔时好似一条绸,柔柔的,静静的;怒时犹如一头猛狮,汹涌澎湃,奔流而去;恒时又似日出日落的太阳,永...
阳台的风景 阳台的风景 阳台是一个温暖而舒适的地方,也是一个植物的王国。每一天清晨一缕似箭的晨光照亮了我们的心膛如一天的开头...
小城之美 小城之美的图片 美像一支优美的曲子,唱出了一种无尽的美;美像一首精巧的诗,颂出了一种甜静的美;美像一支动人心碎的舞蹈...
绿叶 绿叶制药 绿叶,是春日中的希望,夏日里的生机,是秋天中红色、黄色的落叶,也是冬日里土下的天然肥料……,当那一丝...
战胜困难 战胜困难的诗句 学习道路上,每个人不是都有坎坷和困难吗?可是当我们真正遇到困难的时候,我们不应该放弃,而是应该勇敢地...
美好的心灵 美好的心灵是什么意... 第一眼看到她时,我就心生厌恶。因为她实在太丑啦!黑黒的脸上布满了雀斑,在那少得几乎看不到的眉毛下有一...
换位思考 换位思考是什么意思 很多时候我们会拘泥于一件事情而苦苦不得解决的办法,亦或许是有办法解决但却是事倍功半。定向思维往往是不...
心中最美的风景 心中最美的风景... 故乡斑驳的木门年复一年将成捆的月光收割,岁月在灶台上留下厚厚灰尘,屋顶的炊烟有多久没有在故乡的平野上...
我与书的故事 我与书的故事作文... 书是知识的王国,而我是一只小小鸟,自由自在书的王国中飞来飞去。莎士比亚曾经说过:“生活里没有书籍,就...
难忘的糖人 难忘的糖果 小时候总是有许多的趣事,无论我们长多大,都不会忘记。这一件件事,常常在我的脑海中浮现!大年初一,我们...
难忘的校园时光 难忘的校园时光... 我的家乡是有着荷藕之乡美誉的宝应县广洋湖镇。或许是汲取了周边湖泊的精华和灵气,才孕育出这所美丽的学校...
假如我会变 假如我会变 假如我会变,我会变小白兔。只要我跑过的地方,包括那里的人,都会发生神奇的变化。想着想着,突然我真的变...