使用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、修改密码: