用Java完成登录注册后台系统,包含远程、自动登录、注册一体化详细教程

本文详细介绍了如何使用Java开发一个包含远程登录、自动注册和一体化功能的后台系统,包括Home类的主逻辑、Input类的用户输入验证、User类的账户管理以及GetMessage类的网络请求和消息处理。
摘要由CSDN通过智能技术生成

        当涉及到开发登入注册后台系统时,Java是一个非常强大和灵活的选择。Java提供了丰富的工具和库,使得开发这样的系统变得相对简单和高效。在本文中,我将为您提供一个详细的教程,介绍如何使用Java实现一个包含远程、自动登录和注册一体化的简易登入注册后台系统。确保您已经安装了Java开发环境(JDK)并配置好了相应的开发工具。


目录

教程开始

Home类——需要运行此主类

Input类——判断指令、密码是否输入正确         

To类——包装sout方法

User类——用户类

Text类——文字信息 

Sleep类——等待方式

GetMessage类——获取和处理消息


教程开始

        Home类——需要运行此主类

  1. 定义了一个静态的布尔型变量user,用于表示用户是否登录或注册成功。

  2. 首先检测网络是否可用,如果可用则执行相应的操作。

  3. 如果是第一次登录,则进入登录或注册模式。

  4. 在登录或注册模式下,根据用户输入的数字指令执行相应的操作。

  5. 如果已有账号,则自动登录。

  6. 加载主界面菜单。

  7. 定义了一些辅助函数,如shuoMing()用于显示说明信息,zhuCe()用于处理注册操作,denLu()用于处理登录操作。

  8. firstCheck()函数用于检测是否第一次登录,根据是否存在特定文件来判断。

  9. logOn()函数用于已经登录过的自动登录功能。

  10. initialization()函数用于从未登录过的初始化功能。

  11. isNetworkAvailable()函数用于检测网络是否可用。

public class Home {
    static boolean user;

    public static void main(String[] args) {

        if (isNetworkAvailable(Text.url)) {
            //初始化进入程序,检测是否需要自动登入
            user = firstCheck();
            if (!user) {
                //需要改变user为true结束登录或者注册模式,在二者都改变即可
                while (!user) {
                    int anInt = Input.getInt();
                    if (anInt > 3 || anInt < 1) {
                        To.string("请输入正确的序号");
                    } else {
                        switch (anInt) {
                            case 1: denLu();break;
                            case 2: zhuCe();break;
                            case 3: shuoMing();break;
                            default: To.string("未知字符信息");System.exit(0);
                        }
                    }
                }
            }
        } else {
            To.string("连接失败,请检测你的网络再重新启动");
            System.exit(0);
        }

        //前面代表已有账号,自动登入
        //获取账号密码
        GetMessage ges=new GetMessage();
        ges.getQQMM();
        while (true){
            To.string("正在登录中...");
            try {
                String s = GetMessage.ZIDen();
                if (s.contains("成功")){
                    new Sleep().start();
                    To.string(s);
                    break;
                }else {
                    //登录失败直接退出
                    To.string(s);
                    System.exit(0);
                }
            } catch (Exception e) {
                To.string("出现异常:"+e.getMessage());
            }
        }

        //登录成功,加载主界面菜单
        homeStart();//如果以后返回界面还需要使用,直接调用这个方法

    }

    public static void homeStart(){
        Text.out(3);
        new Sleep().start();
        Text.Base();
    }

    private static void shuoMing() {
       To.string(Text.shuo);
       new Sleep().start();
       To.string("\n请继续输入数字指令");
    }

    private static void zhuCe() {
        GetMessage getMessage = new GetMessage();
        String content = null;
        try {
            content = getMessage.Content();
        } catch (Exception e) {
            To.string("出现异常:" + e.getMessage());
            System.exit(0);
        }
        //System.out.println(content);
        if (content.contains("成功")) {
            To.string("注册成功");
            user=true;//结束注册
            //记录本地账号密码
            GetMessage setMessage=new GetMessage();
            setMessage.wen();//检测根文件夹是否存在
            setMessage.setMessage();
            //记录运行账号密码
            User.user=GetMessage.user;
            User.pass=GetMessage.pass;
        }
//        if(content.contains("一个账号")){
//            To.string(content+",明天再来吧!");
//            System.exit(0);
//        }
        else {
            To.string(content + ",请重新注册");
            zhuCe();
        }
    }

    private static void denLu() {
        GetMessage getMessage = new GetMessage();
        String content=null;
        try {
            content = getMessage.Den();
        } catch (Exception e) {
            To.string("出现异常:" + e.getMessage());
            System.exit(0);
        }
        if (content.contains("成功")) {
            user=true;//结束登录
            //记录本地账号密码
            GetMessage setMessage=new GetMessage();
            setMessage.wen();//检测根文件夹是否存在
            setMessage.setMessage();
            //记录运行账号密码
            User.user=GetMessage.user;
            User.pass=GetMessage.pass;
        }
        else {
            To.string(content + ",请重新登录");
            denLu();
        }
    }

    //检测是否第一次登陆
    public static boolean firstCheck() {
        File file = new File("D:\\Benmao");
        //logOn()是已经登陆过自动登录功能
        //initialization()是从来没有登陆过功能
        return file.exists() ? logOn() : initialization();
    }

    private static boolean logOn() {
        return true;
    }

    private static boolean initialization() {
        To.string(Text.firstLogon + "\n" + Text.firstContent);
        return false;
    }

    //检测是否有无网络
    public static boolean isNetworkAvailable(String hostname) {
        try {
            InetAddress address = InetAddress.getByName(hostname);
            return address.isReachable(5000); // 5秒超时
        } catch (Exception e) {
            return false;
        }
    }
}

主要实现了一个简单的登录和注册功能,根据用户的输入和状态进行相应的操作 


          Input类——判断指令、密码是否输入正确         

  1. private static Scanner scanner = new Scanner(System.in):创建一个静态的Scanner对象,用于读取用户的输入。

  2. public static int getInt():获取用户输入的整数。在循环中,尝试读取用户输入的整数,如果出现异常则提示用户重新输入,并清除输入缓冲区。

  3. public static double getDouble():获取用户输入的小数。在循环中,尝试读取用户输入的小数,如果出现异常则提示用户重新输入,并清除输入缓冲区。

  4. public static String getString():获取用户输入的字符串。在循环中,尝试读取用户输入的字符串,如果出现异常则提示用户重新输入,并清除输入缓冲区。

  5. public static int putInt():获取用户输入的整数。与getInt()方法类似,但在提示信息中指定了特定的要求。

  6. public static String putString():获取用户输入的字符串。与getString()方法类似,但在提示信息中指定了特定的要求。

通过Scanner类提供了一些方法,用于获取用户输入的整数、小数和字符串。在循环中,如果用户输入的数据类型不匹配,会提示用户重新输入。

通过Scanner类提供了一些方法,用于获取用户输入的整数、小数和字符串。在循环中,如果用户输入的数据类型不匹配,会提示用户重新输入。

import java.util.Scanner;

public class Input {
    private static Scanner scanner = new Scanner(System.in);

    public static int getInt() {
        while (true) {
            try {
                return scanner.nextInt();
            } catch (Exception e) {
                To.string("无效的输入方式,请重新输入");//整数
                scanner.nextLine();
            }
        }
    }

    public static double getDouble() {
        while (true) {
            try {
                return scanner.nextDouble();
            } catch (Exception e) {
                To.string("请输入正确的序号");//小数
                scanner.nextLine();
            }
        }
    }

    public static String getString() {
        while (true) {
            try {
                return scanner.nextLine();
            } catch (Exception e) {
                To.string("请输入正确的序号");//字符串
                scanner.nextLine();
            }
        }
    }
    //---------------------------------------------------------------------
    //以下代码是小功能使用的输入
    public static int putInt() {
        while (true) {
            try {
                return scanner.nextInt();
            } catch (Exception e) {
                To.string("用户名必须是纯数字");//整数
                scanner.nextLine();
            }
        }
    }

    public static String putString() {
        while (true) {
            try {
                return scanner.next();
            } catch (Exception e) {
                To.string("密码格式有误");
                scanner.next();
            }
        }
    }
}


         To类——包装sout方法

后面感觉此步多余了

public class To {
    //此处是包装sout方法
    public static void string(String str){
        System.out.println(str);
    }
    public static void string(int num){
        System.out.println(num);
    }
}

        User类——用户类

 运行中保存用户数据的一个类,感兴趣的可以自己实现多元化,如用户等级、用户介绍、用户是否为会员等等

public class User {
    static int user;
    static String  pass;
}

        Text类——文字信息 

  1. firstLogonfirstContent:定义了第一次启动程序时的提示信息和内容。

  2. url:定义了一个字符串变量,表示URL地址。

  3. Server:定义了一个字符串变量,表示服务器相关的选项。

  4. shuo:定义了一个字符串变量,表示说明信息。

  5. benmao:定义了一个字符串变量,表示笨猫编程手册的标题。

  6. Base():定义了一个静态方法,用于输出笨猫编程手册的标题和用户账号,以及服务器选项。

  7. out(int num):定义了一个静态方法,用于输出指定数量的空行。

public class Text {
    static String firstLogon = "--你可能是第一次启动这个程序,你需要登录或者注册--";
    static String firstContent = "1.登录\n2.注册\n3.使用方法";

    static String url = "www.benmao.love";

    static String Server = "\n   1.编程笔记   2.公用接口\n   3.聊天系统   4.远程通知\n   5.启动统计   6.用户信息\n   7.我要反馈   8.修改密码";

    static String shuo = "--如果你想进行操作,请输入对应的数字即可--\n--如果出现无法避免的异常,请重新启动程序试试--\n--此程序由笨猫所写,感谢你的使用哦--";

    static String benmao = "+---------登录注册系统----------+";

    public static void Base() {
        To.string(benmao + "\n" + "[欢迎使用,你的用户账号" + User.user + "]" + Server);
    }

    //输出n个空格
    public static void out(int num) {
        for (int i = 0; i < num; i++) {
            System.out.println();
        }
    }

}

        Sleep类——等待方式

public class Sleep extends Thread{
    @Override
    public  void run() {
        try {
            Thread.sleep(1500);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
    }
    public void start(){
        Sleep sleep=new Sleep();
        Thread thread=new Thread(sleep);
        thread.start();
        try {
            thread.join();
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
    }
}

        GetMessage类——获取和处理消息

  1. Content()方法:用于处理注册操作。获取用户输入的用户名和密码,然后通过URL连接到服务器,发送注册请求,并返回服务器的响应结果。

  2. Den()方法:用于处理登录操作。获取用户输入的用户名和密码,然后通过URL连接到服务器,发送登录请求,并返回服务器的响应结果。

  3. ZIDen()方法:用于自动登录。使用之前保存的用户账号和密码,通过URL连接到服务器,发送登录请求,并返回服务器的响应结果。

  4. getQQMM()方法:用于读取本地保存的账号和密码。从文件中读取账号和密码,并保存在User类的静态变量中。

  5. setMessage()方法:用于保存账号和密码到本地文件。将用户账号和密码写入到本地文件中。

  6. wen()方法:用于检查根文件夹是否存在,如果不存在则创建。

  7. trans(int num)方法:用于将整数转换为字符串。

  8. trans(String str)方法:用于将字符串转换为整数。

import java.net.*;
import java.io.*;
import java.util.Scanner;

public class GetMessage {
    static int user;
    static String pass;

    public String Content() throws Exception {
        StringBuilder result = new StringBuilder();
        To.string("请输入注册的用户名");
        user = Input.putInt();
        To.string("请输入注册的密码");
        pass = Input.putString();

        String anUrl = "http://www.benmao.love/userregister.php?admin=1706780680&user=" + user + "&pass=" + pass;
        URL url = new URL(anUrl);
        URLConnection conn = url.openConnection();
        BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String inputLine;
        while ((inputLine = in.readLine()) != null) {
            result.append(inputLine);
        }
        return result.toString();
    }

    public String Den() throws Exception {
        StringBuilder result = new StringBuilder();
        To.string("请输入登录的用户名");
        user = Input.putInt();
        To.string("请输入登录的密码");
        pass = Input.putString();

        String anUrl = "http://www.benmao.love/userlogin.php?admin=1706780680&user=" + user + "&pass=" + pass;
        URL url = new URL(anUrl);
        URLConnection conn = url.openConnection();
        BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String inputLine;
        while ((inputLine = in.readLine()) != null) {
            result.append(inputLine);
        }
        return result.toString();
    }

    //自动登入
    public static String ZIDen() throws Exception {
        StringBuilder result = new StringBuilder();
        user=User.user;
        pass=User.pass;
        String anUrl = "http://www.benmao.love/userlogin.php?admin=1706780680&user=" + user + "&pass=" + pass;
        URL url = new URL(anUrl);
        URLConnection conn = url.openConnection();
        BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String inputLine;
        while ((inputLine = in.readLine()) != null) {
            result.append(inputLine);
        }
        return result.toString();
    }


    //读取本地账号和密码
    public void getQQMM(){
        try (FileReader myQQ = new FileReader("D:\\Benmao\\qq.txt");
             FileReader myMM = new FileReader("D:\\Benmao\\mm.txt");
             BufferedReader brQQ = new BufferedReader(myQQ);
             BufferedReader brMM = new BufferedReader(myMM)) {
            String qq = brQQ.readLine();
            String mm = brMM.readLine();
            //每次调用的时候,顺带保存在运行中
            //记录运行账号密码
            User.user=trans(qq);
            User.pass=mm;
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }


    public void setMessage() {
        String getQQ=trans(user);
        try {
            FileWriter myQQ = new FileWriter("D:\\Benmao\\qq.txt");
            FileWriter myMM = new FileWriter("D:\\Benmao\\mm.txt");
            myQQ.write(getQQ);
            myMM.write(pass);
            myQQ.close();
            myMM.close();
        } catch (IOException e) {
            To.string("文件写入出现异常");
        }
    }

    public void wen() {
        File wj = new File("D:\\Benmao");
        if (!wj.exists()) {
            wj.mkdir();
        }
    }

    //编码时转换代码
    public String trans(int num){
        return String.valueOf(num);
    }
    //编码时转换代码
    public int trans(String str){
        return Integer.parseInt(str);
    }

}

用于处理用户的注册、登录和自动登录功能,以及保存和读取用户的账号和密码


        通过这个教程,您将能够创建一个安全、高效和易于使用的登入注册后台系统。这个系统将为用户提供便捷的登录和注册体验,并具备远程登录、自动登录和注册一体化的功能。

        总之,使用Java开发登入注册后台系统是一个令人兴奋和有挑战的任务。通过掌握这个教程中的知识和技巧,您将能够构建出令人满意的系统,并为用户提供出色的用户体验。

        希望这个总结能够帮助您对本文的内容有一个清晰的概述。祝您在开发登入注册后台系统的过程中取得成功!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Benmao⁢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值