2019-2-28作业

使用Map集合编写超级会员管理系统:

package com.mapmembers;

public class ValueMember {
	private String name;//会员性名
	private String passWord;//会员卡号密码
	private int score;//会员积分
	private String cardDate;//开卡日期
	
	public ValueMember() {}
	
	public ValueMember(String name, String passWord, int score, String cardDate) {
		super();
		this.name = name;
		this.passWord = passWord;
		this.score = score;
		this.cardDate = cardDate;
	}

	public String getName() {
		return name;
	}

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

	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 getCardDate() {
		return cardDate;
	}

	public void setCardDate(String cardDate) {
		this.cardDate = cardDate;
	}
}
package com.mapmembers;

import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.Scanner;
import java.util.Set;

import com.members.Members;

public class Member {
	Scanner cxj = new Scanner(System.in);
	Map<Integer, ValueMember> map = new HashMap<Integer, ValueMember>();

	int cardId;

	public String verCode() {
		Random rand = new Random();
		int b = 0;//判断是否有数字出现
		int c = 0;//判断是否有大写字母出现
		int d = 0;//判断是否有小写字母出现
		String k;//记录验证码
		char code;
		do {
			int a = 0;
			//初始化验证码字符串
			k = "";
			do {
				int num = rand.nextInt(123);
				if(num>=48&&num<=57) {
					code = (char)num;
					k += code;
					b++;
					a++;
				}else if(num>=65&&num<=90) {
					code = (char)num;
					k += code;
					c++;
					a++;
				}else if(num>=97&&num<=122) {
					code = (char)num;
					k += code;
					d++;
					a++;
				}
			}while(a<6);
			//若随机后没有包含大小写与数字,则继续随机
		}while(!(b>=1&&c>=1&&d>=1));
		return k;
	}
	
	public void loginMember() {
		Set<Integer> setKm = map.keySet();
		boolean flag = true;
		System.out.print("请输入卡号:");
		do {
			int id = cxj.nextInt();
			System.out.print("请输入密码:");
			String pwd = cxj.next();
			String ver = verCode();
			System.out.println(ver);
			System.out.print("请输入验证码:");
			String verUser = cxj.next();
			for(Integer km : setKm) {
				if((km==id)&&(map.get(km).getPassWord().equals(pwd))&&(ver.equalsIgnoreCase(verUser))) {
					System.out.println("登录成功!");
					memberUi();
					flag = false;
					break;
				}else {
					System.out.print("该用户名不存在,请重新登录,卡号:");
					flag = true;
				}
			}
		}while(flag);
	}

	public int cardNumber() {
		Set<Integer> setKm = map.keySet();
		Random rand = new Random();
		int cardId = rand.nextInt(9999999);
		for(Integer km : setKm) {
			if(km==cardId) {
				cardId = rand.nextInt(9999999);
			}
		}
		return cardId;
	}

	public void openCard() {
		ValueMember vm = new ValueMember();
		System.out.print("请输入用户名:");
		vm.setName(cxj.next());
		cardId = cardNumber();
		System.out.print("请设置密码:");
		String pwd;
		boolean bl = true;
		do {
			pwd = cxj.next();
			if(pwd.length()<6) {
				System.out.println("密码长度小于6,请重新输入:");
				bl = false;
			}else {
				vm.setPassWord(pwd);
				bl = true;
			}
		}while(!bl);
		Date d = new Date();
		SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		vm.setCardDate(sd.format(d));
		vm.setScore(100);
		System.out.println("恭喜您开卡成功,首次开卡赠送100积分!");
		System.out.println("您的用户名是:"+vm.getName());
		System.out.println("您的卡号是:"+cardId);
		System.out.println("您的密码是:"+vm.getPassWord());
		System.out.println("您当前积分是:"+vm.getScore());
		System.out.println("开卡时间:"+vm.getCardDate());
		map.put(cardId, vm);
	}

	public void login() {
		do {
			System.out.println("*************");
			System.out.println("1、开卡");
			System.out.println("2、登录");
			System.out.println("3、退出系统");
			System.out.println("*************");
			System.out.print("请选择:");
			int choose = cxj.nextInt();
			switch(choose) {
			case 1:
				openCard();
				continue;
			case 2:
				loginMember();
				break;
			case 3:
				System.out.println("感谢您的使用!");
				break;
			}
			break;
		}while(true);
	}

	public void queryScore(){
		System.out.println("您当前积分是:"+map.get(cardId).getScore()+"分!");
	}

	public void addScore() {
		System.out.println("请输入您要消费的金额(1元人民币1积分):");
		int money = cxj.nextInt();
		System.out.println("您累积"+money+"积分");
		map.get(cardId).setScore(map.get(cardId).getScore()+money);
		System.out.println("您当前积分有:"+map.get(cardId).getScore()+"分");
	}

	public void changeScore() {
		System.out.println("请输入您要兑换的积分数(100积分兑换1元人民币):");
		int score = cxj.nextInt();
		System.out.println("您兑换了"+score/100+"元");
		map.get(cardId).setScore(map.get(cardId).getScore()-score);
		System.out.println("您当前剩余积分:"+map.get(cardId).getScore());	
	}

	public void changePwd() {
		boolean flagone = true;
		boolean flagtwo = true;
		System.out.print("请输入旧密码:");
		String oldPwd;
		do {
			oldPwd = cxj.next();
			System.out.print("请输入新密码:");
			do {
				if(map.get(cardId).getPassWord().equals(oldPwd)) {
					String newPwd = cxj.next();
					String newPwd1;
					if(oldPwd.equals(newPwd)) {
						System.out.print("旧密码与新密码相同,请重新输入:");
						flagone = true;
						flagtwo = true;
					}else {
						System.out.print("请再次输入密码:");
						newPwd1 = cxj.next();
						if(newPwd1.equals(newPwd)) {
							map.get(cardId).setPassWord(newPwd1);
							flagone = false;
							flagtwo = false;
						}
					}
				}else {
					System.out.print("旧密码输入有误,请重新输入:");
					flagone = false;
					flagtwo = true;
					break;
				}
			}while(flagone);
		}while(flagtwo);
	}

	public void memberUi() {
		do {

			System.out.println("*********************");
			System.out.println("1、积分查询");
			System.out.println("2、积分累积");
			System.out.println("3、积分兑换");
			System.out.println("4、修改密码");
			System.out.println("5、返回登录界面");
			System.out.println("*********************");
			System.out.print("请选择您要的功能:");
			int choose = cxj.nextInt();
			switch(choose) {
			case 1:
				queryScore();
				continue;
			case 2:
				addScore();
				continue;
			case 3:
				changeScore();
				continue;
			case 4:
				changePwd();
				login();
				break;
			case 5:
				login();
				break;
			}
			break;
		}while(true);
	}
}

  

package com.mapmembers;

public class MemTest {
	public static void main(String[] args) {
		Member mb = new Member();
		mb.login();
	}
}

  结果示例:

  1、开卡:

  2、登录

  3、积分查询:

  4、积分累积:

  5、积分兑换:

  6、修改密码:

 

原文地址:https://www.cnblogs.com/chenxj/p/10456279.html