当涉及到开发登入注册后台系统时,Java是一个非常强大和灵活的选择。Java提供了丰富的工具和库,使得开发这样的系统变得相对简单和高效。在本文中,我将为您提供一个详细的教程,介绍如何使用Java实现一个包含远程、自动登录和注册一体化的简易登入注册后台系统。确保您已经安装了Java开发环境(JDK)并配置好了相应的开发工具。
目录
教程开始
Home类——需要运行此主类
-
定义了一个静态的布尔型变量
user,用于表示用户是否登录或注册成功。 -
首先检测网络是否可用,如果可用则执行相应的操作。
-
如果是第一次登录,则进入登录或注册模式。
-
在登录或注册模式下,根据用户输入的数字指令执行相应的操作。
-
如果已有账号,则自动登录。
-
加载主界面菜单。
-
定义了一些辅助函数,如
shuoMing()用于显示说明信息,zhuCe()用于处理注册操作,denLu()用于处理登录操作。 -
firstCheck()函数用于检测是否第一次登录,根据是否存在特定文件来判断。 -
logOn()函数用于已经登录过的自动登录功能。 -
initialization()函数用于从未登录过的初始化功能。 -
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类——判断指令、密码是否输入正确
-
private static Scanner scanner = new Scanner(System.in):创建一个静态的Scanner对象,用于读取用户的输入。 -
public static int getInt():获取用户输入的整数。在循环中,尝试读取用户输入的整数,如果出现异常则提示用户重新输入,并清除输入缓冲区。 -
public static double getDouble():获取用户输入的小数。在循环中,尝试读取用户输入的小数,如果出现异常则提示用户重新输入,并清除输入缓冲区。 -
public static String getString():获取用户输入的字符串。在循环中,尝试读取用户输入的字符串,如果出现异常则提示用户重新输入,并清除输入缓冲区。 -
public static int putInt():获取用户输入的整数。与getInt()方法类似,但在提示信息中指定了特定的要求。 -
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类——文字信息
-
firstLogon和firstContent:定义了第一次启动程序时的提示信息和内容。 -
url:定义了一个字符串变量,表示URL地址。 -
Server:定义了一个字符串变量,表示服务器相关的选项。 -
shuo:定义了一个字符串变量,表示说明信息。 -
benmao:定义了一个字符串变量,表示笨猫编程手册的标题。 -
Base():定义了一个静态方法,用于输出笨猫编程手册的标题和用户账号,以及服务器选项。 -
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类——获取和处理消息
-
Content()方法:用于处理注册操作。获取用户输入的用户名和密码,然后通过URL连接到服务器,发送注册请求,并返回服务器的响应结果。 -
Den()方法:用于处理登录操作。获取用户输入的用户名和密码,然后通过URL连接到服务器,发送登录请求,并返回服务器的响应结果。 -
ZIDen()方法:用于自动登录。使用之前保存的用户账号和密码,通过URL连接到服务器,发送登录请求,并返回服务器的响应结果。 -
getQQMM()方法:用于读取本地保存的账号和密码。从文件中读取账号和密码,并保存在User类的静态变量中。 -
setMessage()方法:用于保存账号和密码到本地文件。将用户账号和密码写入到本地文件中。 -
wen()方法:用于检查根文件夹是否存在,如果不存在则创建。 -
trans(int num)方法:用于将整数转换为字符串。 -
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开发登入注册后台系统是一个令人兴奋和有挑战的任务。通过掌握这个教程中的知识和技巧,您将能够构建出令人满意的系统,并为用户提供出色的用户体验。
希望这个总结能够帮助您对本文的内容有一个清晰的概述。祝您在开发登入注册后台系统的过程中取得成功!







厉害厉害