zoukankan      html  css  js  c++  java
  • 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、修改密码:

     

  • 相关阅读:
    java8新特性→方法和构造函数引用:替代Lambda表达式
    java8新特性→Stream流:用于解决已有集合类库既有的弊端
    java8新特性→函数式接口
    java8新特新→Lambda表达式
    子查询
    Vue之监听数据变化watch、computed、methods
    Vue路由-使用命名视图实现经典布局
    Vue路由-使用children属性实现路由
    Vue之路由传参
    Vue路由之touter-link、router-direct的使用
  • 原文地址:https://www.cnblogs.com/chenxj/p/10456279.html
Copyright © 2011-2022 走看看