21、Java——超市会员管理系统(对象+集合)

简介: 21、Java——超市会员管理系统(对象+集合)

项目需求


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


               (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();
  }
}


相关文章
|
11月前
|
设计模式 消息中间件 传感器
Java 设计模式之观察者模式:构建松耦合的事件响应系统
观察者模式是Java中常用的行为型设计模式,用于构建松耦合的事件响应系统。当一个对象状态改变时,所有依赖它的观察者将自动收到通知并更新。该模式通过抽象耦合实现发布-订阅机制,广泛应用于GUI事件处理、消息通知、数据监控等场景,具有良好的可扩展性和维护性。
777 8
|
11月前
|
移动开发 监控 小程序
java家政平台源码,家政上门清洁系统源码,数据多端互通,可直接搭建使用
一款基于Java+SpringBoot+Vue+UniApp开发的家政上门系统,支持小程序、APP、H5、公众号多端互通。涵盖用户端、技工端与管理后台,支持多城市、服务分类、在线预约、微信支付、抢单派单、技能认证、钱包提现等功能,源码开源,可直接部署使用。
849 24
|
11月前
|
安全 前端开发 Java
使用Java编写UDP协议的简易群聊系统
通过这个基础框架,你可以进一步增加更多的功能,例如用户认证、消息格式化、更复杂的客户端界面等,来丰富你的群聊系统。
378 11
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
Java与生成式AI:构建内容生成与创意辅助系统
生成式AI正在重塑内容创作、软件开发和创意设计的方式。本文深入探讨如何在Java生态中构建支持文本、图像、代码等多种生成任务的创意辅助系统。我们将完整展示集成大型生成模型(如GPT、Stable Diffusion)、处理生成任务队列、优化生成结果以及构建企业级生成式AI应用的全流程,为Java开发者提供构建下一代创意辅助系统的完整技术方案。
516 10
|
11月前
|
存储 算法 安全
Java集合框架:理解类型多样性与限制
总之,在 Java 题材中正确地应对多样化与约束条件要求开发人员深入理解面向对象原则、范式编程思想以及JVM工作机理等核心知识点。通过精心设计与周密规划能够有效地利用 Java 高级特征打造出既健壮又灵活易维护系统软件产品。
280 7
|
11月前
|
人工智能 监控 Java
Java与AI智能体:构建自主决策与工具调用的智能系统
随着AI智能体技术的快速发展,构建能够自主理解任务、制定计划并执行复杂操作的智能系统已成为新的技术前沿。本文深入探讨如何在Java生态中构建具备工具调用、记忆管理和自主决策能力的AI智能体系统。我们将完整展示从智能体架构设计、工具生态系统、记忆机制到多智能体协作的全流程,为Java开发者提供构建下一代自主智能系统的完整技术方案。
1208 4
|
11月前
|
机器学习/深度学习 分布式计算 Java
Java与图神经网络:构建企业级知识图谱与智能推理系统
图神经网络(GNN)作为处理非欧几里得数据的前沿技术,正成为企业知识管理和智能推理的核心引擎。本文深入探讨如何在Java生态中构建基于GNN的知识图谱系统,涵盖从图数据建模、GNN模型集成、分布式图计算到实时推理的全流程。通过具体的代码实现和架构设计,展示如何将先进的图神经网络技术融入传统Java企业应用,为构建下一代智能决策系统提供完整解决方案。
861 0
|
11月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
581 1
|
11月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
506 1
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案