使用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); Mapmap = new HashMap (); 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 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 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、修改密码: