项目需求
为某超市开发一个超市会员管理系统,实现会员的管理,具体实现功能如下:
(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(); } }