我们先编译一个储存超市会员基本信息的类,并且写出这个类的构造方法和属性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();
}
}