带你深入了解Java!十七、超市会员管理系统!

< 超市会员管理系统 >

效果图

在这里插入图片描述
加粗样式

实现超市会员管理系统

分析实体

  • 会员类:Vip
    会员用户名: String name;
    会员卡号: int id
    会员密码:String password
    会员积分: int integral
    开卡日期:String date

业务分析(业务驱动技术)
加密密码( cimmons – cidec / 工具类MD5 )

  • 6个功能:
  • 1、开卡:
    密码长度不能小于6位
    生成8位唯一的随机卡号(int)(Math.random()* 90000000)+ 10000000 或
    Random ran = new Random()
    int id = ran.nextInt(110000000)+10000000;
    开卡赠送积分
    存到list集合
  • 2、积分累计:
    会员登陆
    进行消费金额和积分的比例计算,将增加的积分给重新赋值到当前会员积分属性内
  • 3、积分查询
    会员登陆
    展示会员信息
    将日期通过SimpleDateFormat 转换位指定格式
  • 4、积分兑换:
    会员登陆
    对用户想要兑换的积分进行判断,判断是否积分重组 判断积分是否超过1000
    进行积分扣减并且并对兑换的金额展示
  • 5、密码修改:
    会员登陆
    输入新密码 要求密码长队不能小于6位 密码如果和上次密码相同也不行
    重新设置信息密码
  • 6、退出

会员类:

/**
 * 会员类
 * @author Douer
 *
 */
public class Vip {
	//会员名称
	private String name;
	//会员卡号
	private int id;
	//密码
	private String password;
	//积分
	private int integral;
	//开卡日期
	private String date;
	@Override
	public String toString() {
		return "Vip [name=" + name + ", id=" + id + ", password=" + password + ", integral=" + integral + ", date="
				+ date + "]";
	}
	public Vip() {
		super();
	}
	public Vip(String name, int id, String password, int integral, String date) {
		super();
		this.name = name;
		this.id = id;
		this.password = password;
		this.integral = integral;
		this.date = date;
	}
	String getName() {
		return name;
	}
	void setName(String name) {
		this.name = name;
	}
	int getId() {
		return id;
	}
	void setId(int id) {
		this.id = id;
	}
	String getPassword() {
		return password;
	}
	void setPassword(String password) {
		this.password = password;
	}
	int getIntegral() {
		return integral;
	}
	void setIntegral(int integral) {
		this.integral = integral;
	}
	String getDate() {
		return date;
	}
	void setDate(String date) {
		this.date = date;
	}
}

业务类:

import java.text.SimpleDateFormat;
/**
 * 业务类
 * @author Douer
 *
 */
import java.util.*;
/**
 * 业务类
 * @author Douer
 *
 */
public class Business {
	Scanner input = new Scanner(System.in);
	//创建list集合泛型为Vip
	List<Vip> list = new ArrayList<>();
	//选择界面方法
	public void show() {
		System.out.println("*************************超市会员管理系统***************************");
		System.out.println("*   1、积分累计   2、积分兑换   3、查询剩余积分   4、开卡   5、修改密码   6、退出            *");
		System.out.println("****************************************************************");
		System.out.print("请输入你的选择:");
	}
	//开始方法
	public void start() {
		one:do {
			//调用选择界面方法
			show();
			//输入选择
			String num = input.next();
			switch(num) {
			//积分累计
			case "1":
				//判断返回值  是否积分累计成功
				if(plusPassword()) {
					System.out.println("\t积分累计成功!");
				}else {
					System.out.println("\t积分累计失败!");
				}
				break;
			//积分兑换
			case "2":
				exchange();
				break;
			//查询剩余积分
			case "3":
				inquirePassword();
				break;
			//开卡
			case "4":
				newVip();
				break;
			//修改密码
			case "5":
				newPassword();
				break;
			//退出
			case "6":
				System.out.println("\t感谢你的使用!");
				break one;
			default:
				System.out.println("\t选择不存在!");
				continue;
			}
		}while(true);
	}
	//积分累计方法
	public boolean plusPassword() {
		System.out.println("****************************************************************");
		System.out.print("请输入你的会员卡号:");
		int id = input.nextInt();
		System.out.print("请输入你的会员卡密码:");
		String password = input.next();
		//调用查询会员是否存在的方法
		Vip vip = yesNo(id,password);
		//不为空则存在
		if(vip != null) {
			System.out.print("请输入本次消费的金额(1元积1分):");
			//积分等于原积分加此次输入的积分
			vip.setIntegral(vip.getIntegral()+input.nextInt());
			return true;
		}else {
			System.out.println("\t密码错误或你还不是我们的会员用户!(可以去开卡办理注册会员)!");
			return false;
		}
	}
	//积分兑换方法
	public void exchange() {
		System.out.println("****************************************************************");
		System.out.print("请输入你的会员卡号:");
		int id = input.nextInt();
		System.out.print("请输入你的会员卡密码:");
		String password = input.next();
		//调用查询会员是否存在的方法
		Vip vip = yesNo(id,password);
		//不为空则存在
		do {
			if(vip != null) {
				System.out.print("请输入本次兑换的积分数量(1000积分抵用1元!积分兑换不能小于1000分!):");
				int integeral = input.nextInt();
				//判断会员积分数量是否够
				if(integeral <= vip.getIntegral()) {
					//判断兑换积分是否小于兑换积分最小要求
					if(integeral >= 1000) {
						//兑换成功原会员积分减去此次兑换积分
						vip.setIntegral(vip.getIntegral()-integeral);
						System.out.println("\t你此次兑换积分抵消了:"+(integeral/1000)+"元");
						System.out.println("\t积分兑换成功!");
						break;
					}else {
						System.out.println("\t每次积分兑换不能小于1000分!");
						continue;
					}
				}else {
					System.out.println("\t账号积分不足!无法兑换!");
					continue;
				}
			}else {
				System.out.println("\t密码错误或你还不是我们的会员用户!(可以去开卡办理注册会员)!");
				break;
			}
		}while(true);
	}
	//积分查询方法
	public void inquirePassword() {
		System.out.println("****************************************************************");
		System.out.print("请输入你的会员卡号:");
		int id = input.nextInt();
		System.out.print("请输入你的会员卡密码:");
		String password = input.next();
		//调用查询会员是否存在的方法
		Vip vip = yesNo(id,password);
		//不为空则存在
		if(vip == null) {
			System.out.println("\t密码错误或你还不是我们的会员用户!(可以去开卡办理注册会员)!");
		}
	}
	//开卡方法
	public void newVip() {
		Vip vip = new Vip();
		System.out.println("****************************************************************");
		System.out.print("请输入注册用户名:");
		vip.setName(input.next());
		vip.setId(randomId());
		System.out.print("请输入注册的密码:");
		//密码长度不低于六位,输入密码长度不符合要求则提示重新输入
		do {
			String newPassword = input.next();
			if(newPassword.length() < 6) {
				System.out.println("密码长度不能小于6位!");
				System.out.print("请重新输入密码:");
				continue;
			}else {
				vip.setPassword(newPassword);
				break;
			}
		}while(true);
		//开卡成功赠送1000分
		vip.setIntegral(1000);
		//记录开卡时间
		Date date = new Date();
		SimpleDateFormat sim = new SimpleDateFormat("yyyy年 MM月dd日 HH时");
		vip.setDate(sim.format(date));
		//存入卡号
		vip.setId(randomId());
		System.out.println("****************************************************************");
		System.out.println("\t恭喜开卡成功!新用户开卡赠送1000积分已经存进你的账户!\n\t你的会员卡号: "+vip.getId());
		System.out.println("\t会员卡用户名: "+vip.getName());
		System.out.println("\t开卡时间为: "+vip.getDate());
		//开卡信息存入集合中
		list.add(vip);
	}
	//随机卡号方法
	public int randomId() {
		do {
			Random ran = new Random();
			//随机卡号
			int id = ran.nextInt(110000000)+10000000;
			//遍历集合中的卡号如有相同的卡号重新随机赋值
			for(Vip vip:list) {
				if(vip.getId() == id) {
					continue;
				}
			}
			return id;
		}while(true);
	}
	//修改密码打方法
	private void newPassword() {
		System.out.println("****************************************************************");
		System.out.print("请输入你的会员卡号:");
		int id = input.nextInt();
		System.out.print("请输入你的会员卡密码:");
		String password = input.next();
		//调用查询会员是否存在的方法
		Vip vip = yesNo(id,password);
			do {
				//不为空则存在
				if(vip != null) {
					System.out.print("请输入你要修改的密码:");
					String newPassword = input.next();
					//判断新密码是否和之前密码相同
					if(!vip.getPassword().equals(newPassword)) {
						vip.setPassword(newPassword);
						System.out.println("\t密码修改成功!请牢记你的密码!");
						break;
					}else {
						System.out.println("\t新密码不能之前密码相同!");
						continue;
					}
				}else {
					System.out.println("\t密码错误或你还不是我们的会员用户!(可以去开卡办理注册会员)!");
					break;
				}
			}while(true);
	}
	//查询会员是否存在方法,根据卡号和密码查找
	public Vip yesNo(int id,String password) {
		//遍历集合判断
		for(Vip vip : list) {
			if(vip.getId() == id && vip.getPassword().equals(password)) {
				System.out.println("\t你的会员卡当前所剩积分为: "+vip.getIntegral());
				System.out.println("\t会员卡用户名: "+vip.getName());
				System.out.println("\t开卡时间为: "+vip.getDate());
				return vip;
			}
		}
		return null;
	}
}

测试类:

/**
 * 测试类
 * @author Douer
 *
 */
public class Test {
	public static void main(String[] args) {
		Business bus = new Business();
		bus.start();
	}
}

猜你喜欢

转载自blog.csdn.net/Gastby98/article/details/89716395