用java实现类似于QQ的登录注册功能

第三方登录功能的实现 刚开始做的时候感觉高大上 为什么要使用第三方登录:一般稍微作为一个大点的项目,为了提高用户的群体都会做第三方登录(如:QQ,微信,新浪等) 在往下看之前先注册第三方网站的开发者账号,创建应用完成审核。 QQ : QQ开发者平台 微信: 微信开发者平台 新浪: 新浪开放平台 要实现第三方登录的功能首先要明白oauth2.0的认证原理,由于第三方登录的认证授权流程大致都是一样的 阅读详情

        在去食堂的路上想到的一个点子,觉得很有意思就写了出来。要学会在代码中找乐趣嘛,很有意思的一个小程序。

由于是用Java实现的所以图形显示界面是通过java的GUI实现的。

        首先先来介绍一下我们的最终成果。写了四个类文件分别是Constant.java(用于存放数据)、Account.java(一个简单的账户类)、Login.java(用来实现登录界面和功能)和Register.java(用来实现注册界面和功能),其中Register和Login才是重点。熟悉QQ的同学都知道我们打开主程序都是显示登录界面,然后在登录界面可跳转到注册界面,但我们必须先注册了才能登录,所以我们先来实现注册界面,在实现注册界面之前先简单介绍一下Constant类和Account类。

一、Constant.java和Account.java

Account类一个简单的账户类,一共有ID、username、password三个属性。

public class Account {
	private int ID;
	private String username;
	private String password;

	public Account() {
	}

	public Account(int iD, String password) {
		super();
		ID = iD;
		this.password = password;
	}

	public Account(int iD, String username, String password) {
		super();
		ID = iD;
		this.username = username;
		this.password = password;
	}

	public int getID() {
		return ID;
	}

	public void setID(int iD) {
		ID = iD;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

}

 

Constant类存放了两个map数据,mapPass用来存放账号和密码,mapUser用来存放账号和用户名。

 

附上代码:

import java.util.HashMap;

public class Constant {
	public static HashMap<Integer, String> mapPass = new HashMap<>();

	public static HashMap<Integer, String> mapUser = new HashMap<>();

}

 

二、Register.java

 

首先先来展示一下Register的最终界面:

两个JLabel标签用于显示文字,两个JTextField的文本输入框用来输入用户名和密码,最下面个按钮实现注册功能,由于是用javaGUI实现的所以界面比较简陋,不过不要在意这不是重点。整个界面的实现的就是GUI的布局没什么好说的。下面说下注册功能的核心思想:

我们都知道QQ的注册是不能自己填写QQ号码的,是由系统随机分配的,所以我们这也由系统随机分配号码,主要使用到了Math.random()方法实现这个功能。代码如下:

int ID = (int) (90000 * Math.random() + 10000);

这行代码是随机生成一个五位数的整形数据,可以用来当做我们的账号号码。那么怎么关联我们的账号和用户名以及密码呢?这就用到了我们Constant类中的两个map,我们可以用两个map来关联三个属性。

我们需要为按钮注册一个ActionListener来监听用户事件,由于我们只使用这一次,所以可以用匿名内部类来实现,在用户点击确定按钮时,我们可以用JTextField提供的getText()方法来获得用户输入的数据,再将系统自动生成的账户ID和用户输入的数据一块存入我们创建的Account实例中。这样就实现了用户的注册。

代码中,我创建了一个creatAccount()方法,来实现以上功能,在事件发生后调用creatAccount方法,即实现了用户的注册,在方法最后把创建的账户的ID、username、password放入我们Constant类的map中储存起来,留待之后使用。

最后通过JOptionPane弹出一个提示框,告诉用户注册成功以及注册得到的ID。

附上全部代码:

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class Register extends JFrame {

	private JTextField user_f, pass_f;
	private JPanel p1,p2;
	private Container c;
	private JLabel user_l, pass_l;
	private JButton ok;

	public Register() {
		super("注册");

		c = getContentPane();
		p1=new JPanel();
		p2=new JPanel();
		p1.setLayout(new GridLayout(2,2));
		
		
		user_l = new JLabel("请输入用户名");
		user_f = new JTextField();
		p1.add(user_l);
		p1.add(user_f);

		pass_l = new JLabel("请输入密码");
		pass_f = new JTextField();

		p1.add(pass_l);
		p1.add(pass_f);

		ok = new JButton("确定");
		ok.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				creatAccount();
				JOptionPane.showMessageDialog(c, "注册成功,您的账号为" + Constant.a.getID());

			}
		});
		p2.add(ok);

		
        c.add(p1, BorderLayout.CENTER);
        c.add(p2, BorderLayout.SOUTH);
		setSize(250, 120);
		setLocationRelativeTo(null);
		setVisible(true);
		setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);

	}

	public void creatAccount() {

		int ID = (int) (90000 * Math.random() + 10000);
		String username = user_f.getText();
		String password = pass_f.getText();
		Constant.a.setID(ID);
		Constant.a.setPassword(password);
		Constant.a.setUsername(username);
		Constant.mapPass.put(ID, password);
		Constant.mapUser.put(ID, username);
	}
}

 

三、Login.java

首先先来展示一下Login的最终界面:

在这个界面我们可以输入账号ID和密码来登录,界面上的注册按钮可以转到注册界面,然后让用户注册后在登录。

登录的时候我们需要做几个异常检测,如,“账号不存在”,“账号密码不一致”。这需要在用户点击登录按钮时实现。

我们需要去到mapPass里面去找到用户所输入的ID,如果未找到则弹出“账号不存在”错误。如果账号存在,再检测账号与密码是否匹配,如果不匹配弹出“账号与密码不一致”错误。如果没有错误

这就用到了我们Constant类中用于存放数据的两个map。

详见代码:

			public void actionPerformed(ActionEvent e) {
				int tempId = Integer.parseInt(user.getText());
				if (!Constant.mapPass.containsKey(tempId)) {
					JOptionPane.showMessageDialog(c, "该账号尚未注册!", "错误", JOptionPane.ERROR_MESSAGE);
				} else if (!Constant.mapPass.get(tempId).equals(pass.getText())) {
					JOptionPane.showMessageDialog(c, "账号与密码不一致!", "错误", JOptionPane.ERROR_MESSAGE);
				} else {
					JOptionPane.showMessageDialog(c, "登录成功!");
				}

			}
<strong>最后附上Login的全部代码:</strong>

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class Login extends JFrame {
	private JTextField user, pass;
	private JPanel u, p, b;
	private Container c;
	private JLabel ID, password;
	private JButton login, register;

	public Login() {
		super("登录");
		c = getContentPane();
		u = new JPanel();
		p = new JPanel();
		b = new JPanel();
		u.setLayout(new BorderLayout());
		p.setLayout(new BorderLayout());
		ID = new JLabel("账号");
		user = new JTextField();
		u.add(ID, BorderLayout.WEST);
		u.add(user, BorderLayout.CENTER);

		password = new JLabel("密码");
		pass = new JTextField();

		p.add(password, BorderLayout.WEST);
		p.add(pass, BorderLayout.CENTER);
		login = new JButton("登录");
		login.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				int tempId = Integer.parseInt(user.getText());
				if (!Constant.mapPass.containsKey(tempId)) {
					JOptionPane.showMessageDialog(c, "该账号尚未注册!", "错误", JOptionPane.ERROR_MESSAGE);
				} else if (!Constant.mapPass.get(tempId).equals(pass.getText())) {
					JOptionPane.showMessageDialog(c, "账号与密码不一致!", "错误", JOptionPane.ERROR_MESSAGE);
				} else {
					Client c = new Client();
				}

			}
		});
		register = new JButton("注册");
		register.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				Register r = new Register();

			}
		});
		b.add(login);
		b.add(register);

		c.add(u, BorderLayout.NORTH);
		c.add(p, BorderLayout.CENTER);
		c.add(b, BorderLayout.SOUTH);
		setSize(250, 120);
		setLocationRelativeTo(null);
		setVisible(true);
		setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
	}

	public static void main(String[] args) {
		Login a = new Login();
	}

}

看到好多要源码的,在此贴一下这个项目的github地址,感兴趣的可以自己去下载,可以运行无bug的:

https://github.com/wuud/myJavaProject

第一个chatRoom就是这个项目的升级版。是在注册登录的基础上又加了多线程聊天室功能。

如果大家只是想运行注册登录功能的话,项目下载解压后,会有个Login类,运行这个类就可以体验注册登录功能了。弹出登录面板后,再点击注册按钮就可以了。

如果大家想要运行聊天室项目的话,需要先启动服务类Server,再启动Login类,下面的步骤和上面一样。

最后,Java实现五子棋小游戏:https://blog.youkuaiyun.com/wuud__/article/details/105209813 ,也是适合新手哦。

用Java实现QQ登录 Java实现QQ登录 写了一个个人网站,增加一个登录的地方,自己写登录太麻烦,而且用户一般也不愿意去登录,接入QQ互联,实现QQ一键登录。所有前提是你得有一个IP地址和域名。 ==ps:==用处不大,主要是写着玩 1 进入qq互联官网进入点击头像个创建提交申请 2 选择个人接入,按照步骤填写注册资料 创建成功通过后会哦显示接入的个人信息。 3 审核成功后点击下面的开始创建,按步骤完成创建过程。 4 创建成功后可以查看APP ID 和APP key,很重要 在应用管理界面可以查看如上信息,点击查看就可以 阅读详情

相关推荐

java发送QQ邮箱验证码实现登录注册、邮箱验证码防刷校验

java发送QQ邮箱验证码实现登录注册、邮箱验证码防刷校验

suiyishiguang的博客 2862

java-UI设计(仿QQ登录界面)

学习完类与对象和类与继承之后,对面向对象编程(OOP)有了基本的了解。OOP的核心思路就是先定义类,设置好类的属性和方法,然后创建对象,调用方法,最新

hehecx123的博客 3772

java仿QQ功能实现

使用java编写实现的仿qq功能,能够很大程度上与现在的qq版本内容相似,能够很好的实现聊天和添加好友注册等功能,内含数据库的代码,希望小伙伴们可以多多支持。

Java实现仿QQ登陆、好友界面(可连接数据库)

文章目录一、项目结构二、项目功能三、制作界面1、QQ登陆界面2、好友界面3、数据库连接部分4、数据库代码四、项目实现结果 一、项目结构 二、项目功能 1、登录功能 2、连接数据库 3、其他的我还没有加,等我学到了那些部分我在加上去!! 三、制作界面 在DIYQQ登陆界面时,我们需要将QQ登陆界面大致分为不同的模块,然后根据不同的模板,用不同的容器分割开,我们可以在容器里面添加不同的组件。 1、QQ登陆界面 package GUI; import java.awt.BorderLayout; import

qq_50589028的博客 4268

树莓派驱动步进电机

步进电机一般由电机、驱动器构成,树莓派连接驱动器控制电机。 一、接线 DIR+/- 用于控制方向,PUL+/- 用于控制转动; 正极DIR+ 和 PUL+ 接到GPIO口,两个负极接到GPIO口或地线均可,控制的时候不使用。 实验中,DIR+ 接35口,PUL+ 接38口。 树莓派4B GPIO口如图所示 远离树莓派USB的一侧 是 1、2、3号口 二、驱动 DIR控制方向,使用高电平或低电平控制; PUL控制转动,使用脉冲驱动。 三、代码 import RPi.GPI.

weixin_42337765的博客 1万+

把“思考”塞进 1 KB:我用纯 C 语言给单片机手搓了一个微型 Transformer 推理引擎

摘要:本文探讨了在64KB SRAM的MCU(如STM32H743)上部署精简Transformer模型的技术方案。通过将6层Transformer压缩至1层(隐藏维度128)、4-bit KV-Cache量化等优化手段,实现了240KB Flash占用和59KB RAM峰值,推理延迟184ms(400MHz Cortex-M7),准确率96.1%。关键创新包括:手工优化矩阵乘(CMSIS-NN)、查表法Softmax/LayerNorm、权重按Tile重排提升Cache命中率(60%→94%)。

qq_74383080的博客 2922

Java实现简单的QQ登录界面

学习了Java的GUI后,尝试着做了一个仿QQ登录界面,感觉还行,简单地实现了自动登录,记住密码,以及连接数据库判断账号密码的功能。 运行效果: package a; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Cursor; import java.awt.Dimension; import jav...

虚言假面的博客 2万+

基于LangGraph的智能报告生成平台项目分析

不知道你是否知道或者了解OpenAI and Gemini Deep Research。他们是一种能够根据输入问题进行规划、结合网络搜索获取信息并最终呈现结果的研究工具或技术。那这样research是如何实现的呢?最近刚好看到一个实现类似功能的开源项目: open_deep_search。本文将基于该项目进行代码层面剖析。

u011160113的博客 923

java--模拟QQ登录界面设计

java实现qq登录界面,并有输出显示其输入的用户名和密码

qq_62486465的博客 3134

产业大脑+未来工厂:揭秘浙江数字经济系统的5大核心场景搭建指南

本文深入解析了“产业大脑+未来工厂”这一浙江数字经济系统的核心范式,并提供了五大核心场景的实战搭建指南。文章详细阐述了从供应链协同、产能共享到产品创新、质量追溯及绿色低碳等关键场景的构建逻辑与技术架构,旨在帮助企业实现从技术驱动到场景驱动的价值落地,破解数据孤岛难题,提升产业链整体效能。

mac99的博客 667

AppFlow实战:零代码将Dify接入企业微信的完整指南

本文提供了一份零代码将Dify AI应用接入企业微信的完整实战指南。通过使用阿里云AppFlow作为无代码连接器,详细讲解了从获取Dify API密钥、创建企业微信应用到配置自动化流程的全过程,帮助团队快速将AI能力无缝融入日常协作,大幅提升工作效率。

php55的博客 808

java仿qq_java模仿实现QQ登录界面

本文实例为大家分享了java模仿实现qq登录界面的具体代码,供大家参考,具体内容如下这是我模仿QQ2015版界面,实现的基本功能有登陆验证,重置等,当然直接复制代码运行是不一样的,还要注意自己插入自己的图片。结果截图如下所示:代码:import java.awt.BorderLayout;import java.awt.Color;import java.awt.FlowLayout;import...

weixin_36309193的博客 1457

ROS与Qt5人机交互界面开发:添加rviz显示界面

最后,点击"完成"以创建新的Qt5应用程序项目。通过结合ROS和Qt5,您可以创建强大的人机交互界面,以实现丰富的机器人控制和数据可视化。在本教程中,我们将在主窗口中创建一个简单的按钮,用于启动rviz显示界面。在Qt Creator的槽函数编辑器中,为按钮添加一个槽函数,该函数将在单击按钮时调用。在上面的代码中,我们使用QProcess类启动了一个新的进程,并执行"rviz"命令来启动rviz显示界面。当您单击Qt5应用程序中的按钮时,将会启动一个新的rviz窗口,显示机器人数据的可视化界面。

CodeJolt的博客 2067

基于java的左面聊天室系统的设计与实现

该毕业设计采用了c/s架构,通过javase中的知识编写完成,系统功能包括:用户注册,用户登录,聊天功能。 对于刚学完java基础的同学来说可以通过该毕业设计加深对所学知识的理解。该系统使用socket进行数据的发送,用户注册登录之后,可以进行多人聊天,功能类似qq群聊。 源码 http://www.byamd.xyz/dljd.html ...

xiqsun0的博客 80

基于 DnLUT 超高效的彩色图像去噪(CVPR 2025),本地部署 DnLUT 模型,图像去噪算法训练和推理,全网最详细教程

基于 DnLUT 超高效的彩色图像去噪(CVPR 2025),本地部署 DnLUT 模型,图像去噪算法训练和推理,全网最详细教程

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 364

AI Agent在医疗诊断中的智能应用研究

本文探讨了AIAgent在医疗诊断中的智能应用,分析了其技术原理、实际案例及发展挑战。AIAgent通过机器学习算法处理医疗数据,提升诊断准确性和效率,市场规模预计2025年达200亿美元。核心技术包括数据预处理、深度学习模型和隐私保护方法。应用案例涵盖肺癌筛查、阿尔茨海默病预测等,但面临数据偏差、伦理责任等挑战。未来趋势包括多模态学习、个性化医疗和量子计算融合。随着技术优化和伦理完善,AIAgent将成为医疗体系的重要组成部分。

郑伟强dev的专栏 96

JAVA实现QQ登录、注册、修改密码等功能(美化版)

本文用Java的==awt组件==、==swing组件==以及==数据库JDBC==写了一个==仿QQ登录==的界面,具体演示如下图所示,包括三个页面,分别**是登录窗口(MainFrame)**、**注册窗口(RegisterUI)**和**忘记密码窗口(ForgetUI)**。本文主要应用的技术有:==JAVA-GUI、JAVA的awt组件、swing组件、事件处理、JDBC==等,是初学者学习和练手的好项目。准备好了吗,<font color="red">let's get it!</font>

Learning_xzj的博客 2万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

JAVA实现QQ登录、注册等功能

本文主要应用的技术有:GUI、JDBC、多线程 实现的功能具体如下: 1、登录功能 2、注册功能 3、是否隐藏密码的选择以及实现功能 4、选择性别功能 5、密码与确认密码功能 6、登录页面实时展示当前的时间 7、当登录时用户名与密码在数据库中没有相匹配的数据,则会跳转到注册页面上去。 8、同样,注册完毕后,数据会运用JDBC将数据写入数据库中,然后跳转回登录页面。 ...

遇安的博客 3万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Android实例开发中登录注册界面的框架实现(android studio)

小项目框架 今天用QQ的时候想到了,不如用android studio 做一个类似于这样的登录软件。当然QQ的实现的功能特别复杂,UI界面也很多,不是单纯的一时新奇就可以做出来的。就是简单的实现了一些功能,做了三个界面;1.登录界面。2.注册界面。3.登陆后的界面。 功能描述 登录按钮------按钮实现跳转到下一个界面,并且判断输入的账号、密码是否符合规则(不为空),提示,登陆成功或失败 注册按...

不会游泳的程序猿 10万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Android实现qq登录注册和好友列表界面

android实现登录注册和好友列表界面

qq_62603185的博客 4975

Java 仿QQ登录注册界面

Java 仿QQ登录注册界面 包: 用来分类 代码 一般小写 文件夹与文件夹之间的结构用 . 分开 容器: 顶级容器: 一个顶级容器就是一个窗体 窗体: 自带最小化 最大化 关闭 标题栏…等属性的容器 一般容器:面板 必须直接或间接加载在顶级容器上 布局:控制组件摆放的规则 ;如流式布局器 :根据添加的顺序,从左至右,从上至下,且居中摆放组件 组件:按钮、输入框、滑杆、菜单等 元素:颜色、尺寸...

JOKER__C的博客 2977

仿 手机QQ 登录、注册、找回密码、好友列表、QQ状态等功能的实现

仿 手机QQ 登录、注册、找回密码、好友列表、QQ状态等功能的实现。

小西瓜吖的博客 2282

Spring Boot 实现微信、QQ 绑定登录

通过Spring Boot整合微信和QQ的OAuth2登录,我们可以实现一个灵活、强大的第三方登录系统,提高用户体验和系统安全性。在实际应用中,还可以根据具体需求进行更多的定制和扩展,如处理用户绑定、实现单点登录等。在现代应用程序中,第三方登录(如微信和QQ登录)已成为提高用户注册和登录体验的重要功能。本文将介绍如何使用Spring Boot实现微信和QQ的绑定登录功能。在微信和QQ开放平台注册应用,获取应用的AppID和AppSecret。,选择QQ或微信登录,即可实现第三方登录功能。

学IT,找陈寒 9578

springboot -- 实现qq登录功能

本篇只在本地测试个,未实际网站应用,无法通过审核 项目结构 1、qq互联申请开发者账号 QQ互联:https://connect.qq.com/manage.html#/appinfo/web/101513767 登录–>qq互联 --> 应用管理 --> 我这里审核通过不了,只能在本地测试,只能测试自己的qq号,注意没通过别人qq号无法授权 2、pom.xml 相关依赖...

ws - 兮的博客空间 8217

springboot使用qq邮箱进行注册登录

springboot使用qq邮箱进行注册登录验证码发送等操作

徐大大的博客 4275
上一篇: java基础算法——二维数组的简单操作—转置矩阵、旋转矩阵、顺时针打印矩阵
下一篇: Log4j配置
wuud
博客等级 码龄8年 33粉丝 54原创
评论 18
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值