zoukankan      html  css  js  c++  java
  • 编写一个系统(登录、注册、验证用户名密码和验证码、覆盖存储用户)

    编写一个系统

    开始方法呈现开始菜单
    登陆
    注册
    退出

    编写账号类(存储正确的用户名和密码)
    用户名
    密码


    要求:
    选择登陆后输入用户名密码 并进行验证(编写验证方法),验证成功后进入主菜单界面

    主菜单界面:
    幸运抽奖(需要完成功能)
    购物结算
    商品陈列
    真情回馈
    注销用户

    验证错误或者菜单选择错误可以给出提示并允许继续操作(比如用户名输错,重新输入,菜单输错也可以重新输入,主菜单输错应返回主菜单界面)

    注册要求:输入注册的用户名和密码和验证码(4位数字验证码),如果账户存在则不能注册,如果不存在将注册的信息写入账号类(目前的实现将导致将原用户名和密码覆盖),注册成功退回开始菜单,可以使用注册的账户进行登录

    注销用户:返回起始菜单,可以继续进行登录或注册的操作

    账户类:用于存储密码,不是用集合存储的,所以每次注册只能进行覆盖

    /**
     * 账户类
     * 用于存储系统的用户名和密码
     */
    public class Account {
        //用户名和密码
        String userName = "admin";
        String password = "000";
    }

    购物系统:封装了系统的所有业务逻辑

    /**
     * 购物系统
     * 封装了系统的所有业务逻辑
     */
    public class ShoppingSystem {
        //键盘扫描器
        Scanner sc;
        //账户对象
        Account account;
        //随机数生成对象
        Random random;
        //是否中奖的标识
        boolean flag;
    
         /**
         * 对系统进行初始化
         * 初始化就是在系统运行前,将一些必要的数据进行初始
         */
        public void init(){
            sc = new Scanner(System.in);
            //初始化账户
            account = new Account();
            //初始化随机数生成对象
            random = new Random();
        }
    
         /**
         * 开启系统
         */
        public void start(){
            //呈现开始菜单
            System.out.println("1. 登录");
            System.out.println("2. 注册");
            System.out.println("3. 退出");
            System.out.println("请选择:");
            int chooice = sc.nextInt();
            //根据选项调用对应的功能
            switch(chooice){
                //1. 调用登录方法
                case 1:
                    login();
                    break;
                //2. 调用注册方法
                case 2:
                    regist();
                    break;
                case 3:
                    System.out.println("退出了系统");
                    //退出正在运行的程序
                    //System.exit(0);
                    break;
            }
    
        }
    
         /**
         * 登录方法
         */
        public void login(){
            //输入用户名和密码
            System.out.println("请输入用户名:");
            String userName = sc.next();
            System.out.println("请输入密码:");
            String password = sc.next();
            //验证账户:传入用户名和密码
            if(validate(userName, password)){
           //如果正确,进入主菜单 mainMenu(); }
    else{ System.out.println("用户名或密码错误!"); login(); } /** * 验证用户名的方法(注册中也会用到用户名是否存在,所以单独抽离成一个方法) * @param userName * @return */ public boolean validateName(String userName){ if(userName.equals(account.userName)){ return true; } return false; } /** * 验证账户 * @param userName * @param password * @return */ public boolean validate(String userName, String password){
         //先调用验证用户名的方法
    if(validateName(userName)){
           //如果用户名正确,进一步验证密码是否正确
    if(password.equals(account.password)){ return true; } } return false; } /** * 注册方法 */ public void regist(){ //输入用户名和密码 System.out.println("请输入用户名:"); String userName = sc.next(); System.out.println("请输入密码:"); String password = sc.next(); //生成验证码 String code = createValidateCode(); System.out.println("请输入验证码:【"+code+"】"); String inputCode = sc.next(); //判断验证码 if(!inputCode.equals(code)){ System.out.println("验证码输入错误!"); //递归注册 regist(); return; } //对用户名和密码进行验证 if(validateName(userName)){ //如果验证失败,重新输入,递归注册方法 System.out.println("用户名已经被注册!"); regist(); } else{ //如果验证成功,将注册的用户名和密码写入账户对象 account.userName = userName; account.password = password; //进入起始菜单 start(); } /** * 生成验证码 * @return */ public String createValidateCode(){ String code = "";
         //循环生成4位验证码
    for(int i = 1; i <= 4; i++){ int n = random.nextInt(10); code+=n; } return code; } /** * 主菜单展现方法 */ public void mainMenu(){ //展现主菜单选项 System.out.println("1. 幸运抽奖"); System.out.println("2. 购物结算"); System.out.println("3. 商品陈列"); System.out.println("4. 真情回馈"); System.out.println("5. 注销账户"); System.out.println("请选择:"); int chooice = sc.nextInt(); //用户输入选项 //对选项进行判断,根据选项调用对应的方法 switch(chooice){ //1. 调用幸运抽奖方法 case 1: luckyGuess(); break; case 2: case 3: case 4: System.out.println("功能正在完善中……"); break; //5. 调用注销方法 case 5: loginOff(); } } /** * 抽奖方法 */ public void luckyGuess(){
         //防止多次进行抽奖
    if(flag){ System.out.println("您已抽过奖了!系统将直接跳转回主菜单"); mainMenu(); return; } //修改抽奖的标识 flag = true; //生成中奖的数 int target = random.nextInt(10); System.out.println("按任意键进行抽奖"); sc.next(); int luckNumber = random.nextInt(10); //判断是否中奖 if(luckNumber == target){ System.out.println("恭喜你中了大奖!奖励GeekHome课程一部!"); } else{ System.out.println("很遗憾,没有中奖,请再接再厉!"); } //无论是否中奖都应回到主菜单 mainMenu(); } /** * 注销用户方法 */ public void loginOff(){ //返回起始菜单 start(); } }

    启动购物系统的APP

    public class SystemApp {
        public static void main(String[] args) {
            //创建系统
            ShoppingSystem sys = new ShoppingSystem();
            //对系统进行初始化
            sys.init();
            //启动系统
            sys.start();
        }
    } 
  • 相关阅读:
    ORM开发之解析lambda实现完整查询(附测试例子)
    ORM开发之解析lambda实现group查询(附测试例子)
    ORM之殇,我们需要什么样的ORM框架?
    公开封尘已久的即时通讯源码
    javascript中的this与函数讲解
    javascript中的操作符详解1
    javascript中的继承与深度拷贝
    javascript之Object.defineProperty的奥妙
    javascript之活灵活现的Array
    jquery.Callbacks的实现
  • 原文地址:https://www.cnblogs.com/gfl-1112/p/12688680.html
Copyright © 2011-2022 走看看