模拟注册系统
案例介绍
1.案例描述
模拟用户注册登录系统,当用户注册时,输入账号密码后显示注册成功,登录时输入账号密码显示登录成功。
2.运行结果
任务运行结果如图1所示。
图 1 运行结果
案例思路
模拟用户登录系统的后端需要模拟账号密码的存储,根据账号的不可重复性和密码的可重复性可以联想到利用HashMap键值的存储方式来存储账号和密码。
前端用户注册登录系统用户可以选择的服务可以分为3个,注册,登录和找回密码,可以将这些方法封装到一个类中,类中包含账号密码属性。
在注册方法中如果用户输入的账号已经存在于HashMap中,就会提示用户账号已经存在,如果不存在那么就注册成功并将用户输入的账号密码存储到HashMap中。登录方法中,判断用户输入的账号是否存在于HashMap中,如果不存在则显示账号不存在,如果存在继续判断用户输入的密码是否与账号对应,对用则显示登录成功,不对应则显示,密码错误。找回密码很简单,只需根据用户输入的账号将密码提取出来,如果HashMap中没有这个账号,则显示账号不存在。
再创建一个方法去运行这些方法,可以利用if,switch语句实现用户选择结构,和使用sleep函数使模拟系统更加逼真。最后创建主函数实例化对象运行程序。
案例实现
import java.util.*; public class Register { HashMap accountNumber = new HashMap(); //利用HashMap的不可重复性建立一个HashMap用来存贮账号和密码,HashMap的键是账号,值是密码。 Register() { //无参构造方法 } public int login(String id, String passwd) { //登录方法 ,返回值为int类型 if (!accountNumber.containsKey(id)) { //判断accountNumber中是否存在id这个键 ,存在则为flase,不存在则为true return 0; //返回0代表账号不存在 } else if (accountNumber.get(id).equals(passwd) & accountNumber.containsKey(id)) { //判断accountNumber是否存id这个键和这个键对用的值是否与passwd相等 return 1; //返回1代表登录成功 } else return 2; //返回2代表密码错误 } public String findBackPassward(String id) { // 找回密码方法 ,返回值为密码 if (accountNumber.containsKey(id)) //判断传入的参数id是否在accountNumber中存在 return (String) accountNumber.get(id); //存在则返回这个id键的值(密码) else return "----账号不存在----"; //返回错误提示 } public boolean setUsername(String id, String passwd) { //注册方法 ,返回ture或者false if (accountNumber.containsKey(id)) { //判断accountNumber这个HashMap中是否已经有了id这个键 return false; // 注册失败,返回false } else { this.accountNumber.put(id, passwd); // accountNumber中不存在id这个键,就用put方法将id和passwd装入accountNumber中 return true; //注册成功,返回ture } } public void run()throws InterruptedException{ System.out.println("***********************************\n********欢迎来到IDEA登录平台*********\n***********************************"); Register register = new Register(); Thread T=new Thread(); Scanner scan = new Scanner(System.in); boolean symbol1 = true; while (symbol1) { System.out.println("请选择功能:\n1.账号登录---2.找回密码---3.注册账号---4.退出界面"); int choice = scan.nextInt(); //choice标志选择哪种服务类型 switch (choice) { case 1: boolean symbol2 = true; { while (symbol2) { System.out.println("账号:"); String username1 = scan.next(); System.out.println("密码:"); String password1 = scan.next(); if (register.login(username1, password1) == 0) { System.out.println("该账号不存在,请输入666退出或者输入任意值数字重新登录:"); int input = scan.nextInt(); if (input == 666) symbol2 = false; } else if (register.login(username1, password1) == 1) { System.out.println("登录成功!(输入666退出登录)"); int input = scan.nextInt(); if (input == 666) {symbol2 = false; System.out.println("退出中...");T.sleep(2000); } } else System.out.println("密码错误,请重新登录-"); } } break; case 2: System.out.println("请输入您要找回密码的账号:"); String findpassword = scan.next(); System.out.println("您的密码是:\n" + register.findBackPassward(findpassword)); break; case 3: boolean symbol3 = true; //symbol3标志是否重新注册 while (symbol3) { System.out.println("新账号:"); String username3 = scan.next(); System.out.println("密码:"); String password3 = scan.next(); if (register.setUsername(username3, password3)) { System.out.println("注册成功,快去登录吧!!!"); T.sleep(2000); symbol3 = false; } else { System.out.println("该账号已存在,请输入666退出或者输入任意值重新注册:"); int input = scan.nextInt(); if (input == 666) symbol3 = false; System.out.println("请稍后..."); T.sleep(3000); } } break; case 4: symbol1 = false; System.out.println("退出成功!"); break; } } } } class Test{ public static void main(String[] args) throws InterruptedException { Register User=new Register(); User.run(); } }