天天看點

Java超市會員管理系統

要求:借助集合架構及實用類實作該系統

  1. 積分累計
  2. 積分兌換
  3. 查詢剩餘積分
  4. 修改密碼
  5. 開卡
  6. 退出

執行結果:

開卡、積分累計部分:
Java超市會員管理系統
兌換積分、查詢剩餘積分部分:
Java超市會員管理系統
修改密碼、使用新密碼查詢部分:
Java超市會員管理系統
退出部分:
Java超市會員管理系統

實作思路:

1、建立會員使用者類:

  • 使用者名、密碼、會員卡号(随機生成)、注冊日期、積分

2、建立超市業務類:

  • 菜單展示
  • 業務選擇 積分存取方法、積分兌換方法、積分查詢方法、修改密碼方法、開卡方法
  • 判斷集合中是否存在查詢元素方法(由于其他方法中均出現此方法中的代碼,即将其提取出來另列為一個方法)

3、測試類

源碼:

會員使用者類
package cn.zyq.Aug0203;

/**
 * 會員使用者類
 * @author admin
 *
 */
public class Member {
	//姓名
	private String name;
	//密碼
	private String pwd;
	//會員卡号
	private String id;
	//注冊日期
	private String registData;
	//積分
	private int score;
	
	public Member() {
	}
	
	public Member(String name, String pwd, String id, String registData, int score) {
		super();
		this.name = name;
		this.pwd = pwd;
		this.id = id;
		this.registData = registData;
		this.score = score;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPwd() {
		return pwd;
	}

	public void setPwd(String pwd) {
		this.pwd = pwd;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getRegistData() {
		return registData;
	}

	public void setRegistData(String registData) {
		this.registData = registData;
	}

	public int getScore() {
		return score;
	}

	public void setScore(int score) {
		this.score = score;
	}	
}
           
超市業務類
package cn.zyq.Aug0203;

/**
 * 超市業務類
 */
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;
import java.util.Scanner;

public class Business {
	Scanner sc = new Scanner(System.in);
	List<Member> list = new ArrayList<Member>();
	
	/**
	 * 使用者可選擇菜單
	 */
	public void init() {
		System.out.println("\n--------------------歡迎進入會員管理系統--------------------\n");
		System.out.println("1.積分累計      2.積分兌換      3.查詢剩餘積分      4.修改密碼      5.開卡            6.退出");
		System.out.println("\n-------------------------------------------------------");
		System.out.println();
		System.out.print("請選擇您要進行的操作:");
		choose(sc.nextInt());
	}
	
	/**
	 * 使用者選擇的業務
	 *  @param num
	 */
	public void choose(int num) {
		switch (num) {
		case 1:
			saveScore();
			break;
		case 2:
			useScore();
			break;
		case 3:
			search();
			break;
		case 4:
			updatePwd();
			break;
		case 5:
			regist();
			break;
		case 6:
			System.out.println("歡迎下次光臨!");
			System.exit(0);
			break;
		}
		init();
	}
	
	/**
	 * 積分積累
	 */
	public void saveScore() {
		
		Member m = check();
		if(m!=null) {
			System.out.print("請輸入您消費的金額(一進制一積分):");
			int score = sc.nextInt();
			m.setScore(m.getScore()+score);
			System.out.println("積分增加成功,目前您的積分為:"+m.getScore());
			System.out.println("積分累計成功!");
		}else {
			System.out.println("積分累計失敗,您輸入的資訊有誤!");
		}
	}

	
	/**
	 * 積分兌換
	 */
	public void useScore() {
		
		Member m = check();
		if(m!=null) {
			System.out.print("請輸入您需要兌換使用的積分(100積分抵用1元,不足100的積分不做抵用):");
			int score = sc.nextInt();
			if(m.getScore()>=100 && score>=100 && score<=m.getScore()) {
				m.setScore(m.getScore()-score);
				System.out.println("您本次消費抵用金額為:"+score/100);
				System.out.println("兌換積分成功!");
			}else {
				System.out.println("兌換積分失敗,賬戶積分不足或需要兌換積分大于剩餘積分!");
			}
		}else {
			System.out.println("賬号資訊不比對,無法兌換積分!");
		}
	}
	
	/**
	 * 查詢剩餘積分
	 */
	public void search() {
		
		Member m = check();
		if(m!=null) {
			System.out.println("姓名\t會員卡号\t剩餘積分\t開卡日期");
			System.out.println(m.getName()+"\t"+m.getId()+"\t"+m.getScore()+"\t"+m.getRegistData());
		}else {
			System.out.println("輸入的賬号資訊不比對!");
		}
	}
	
	/**
	 * 修改密碼
	 */
	public void updatePwd() {
		
		Member m = check();
		if(m!=null) {
			System.out.print("請輸入您的新密碼:");
			String pwd = sc.next();
			
			//重新設定密碼
			m.setPwd(pwd);
			System.out.println("密碼修改成功!");
		}else {
			System.out.println("輸入的賬号資訊不比對,無法進行此業務!");
		}
	}
	
	
	/**
	 * 積分兌換
	 */
	public void regist() {
		System.out.print("歡迎使用本超市會員卡,請輸入您的姓名:");
		String name = sc.next();
		System.out.print("請設定您的密碼(要求密碼長度大于6):");
		String pwd = sc.next();
		//判斷密碼是否合法
		boolean flag = false;
		while(!flag) {
			if(pwd.length()<6) {
				flag = false;
				System.out.print("密碼長度小于6位,請重新輸入密碼:");
				pwd = sc.next();
			}
			else {
				flag = true;
			}
		}
		
		//生成一個八位數的随機會員卡号
		Random random = new Random();
		int rand = random.nextInt(999999);
		String id = String.valueOf(rand);
		//判斷會員卡是否已存在
		for(Member m:list) {
			if(m.getId()==id) {
				rand = random.nextInt(99999999);
				id = String.valueOf(rand);
			}
		}
		
		//注冊日期
		Date date = new Date();
		SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd :hh:mm:ss");
		String registData = dateFormat.format(date);
		
		//開卡送積分100;
		int score = 100;
		//将使用者記錄添加到清單
		list.add(new Member(name, pwd, id, registData, score));
		System.out.println("恭喜你成為本超市會員,系統贈送您100積分,您的會員卡号為:"+id+",請牢記卡号和密碼!");
		
	}
	
	/**
	 * 資訊檢測,list中是否存有指定使用者資訊
	 */
	public Member check() {
		System.out.print("請輸入您的會員卡号:");
		String id = sc.next();
		System.out.print("請輸入您的密碼:");
		String pwd = sc.next();
		for(Member m:list) {
			if(m.getId().equals(id) && m.getPwd().equals(pwd)) {
				return m;
			}
		}
		return null;
	}
}
           
測試類
package cn.zyq.Aug0203;

/**
 * 測試類
 * @author admin
 *
 */
public class Test {
	public static void main(String[] args) {
		Business business = new Business();
		business.init();
	}
}