👨💻个人主页:@元宇宙-秩沅
hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!
本文由 秩沅 原创
收录于专栏 玩归玩闹归闹,别拿java开玩笑
——————————————————
⭐相关文章⭐
-通过窗口看世界之 界面制作如此简单
——————————————————
文章目录
- 登录和注册界面设计与实现
- 👨💻数据库的建立
- 👨💻注册界面效果图
- 👨💻登录界面效果图
- 👨💻测试结果
登录和注册界面设计与实现
👨💻数据库的建立
在注册信息之前,首先时来创建数据库和表,用来存储用户的姓名(name),账户(acount),密码(password),订房信息(huose),Navicat For MySQL中显示如图所示。
👨💻注册界面效果图
注册界面首先实现GUI布局设计,继承JFrame类新建窗口,在主面板上实现GUI设计,用到JFieldText,JButton,JLabel等组件进行布局。设计效果图如下图4.1所示。
参考代码:
注册界面功能用以下三个方法,分别为构造函数SQL()进行注册信息主面板调用, SQLGUI()方法进行界面GUI设计和布局,connectSQL()进行数据库的连接,并把用户输入的信息存储到数据库当中。注册信息界面方法表如下表4.1所示。
public SQL() {
setTitle("注册信息");
setBounds(600, 135, 300, 500);
SQLGUI();
setResizable(false); //禁止最大化
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
//注册信息面板
private void SQLGUI() {
//增加主面板
JPanel JPSQL ;
JPSQL = new JPanel();
setContentPane(JPSQL);
JPSQL.setBorder(BorderFactory.createLineBorder(Color.BLACK,6)); //设置一个带有颜色的边界和其宽度
setContentPane(JPSQL);
JPSQL.setLayout(null); //JPanel的默认布局--FollowLayout
//添加标签
JLabel logo, name , acount , password ;
logo = new JLabel("新用户注册");
name = new JLabel("昵称:");
acount = new JLabel("账号:");
password = new JLabel("密码:");
logo.setBounds(90,30, 100,80);
logo.setFont(new Font("华文琥珀",Font.BOLD,18));
name.setBounds(20,100, 91,50);
name.setFont(new Font("方正舒体",Font.BOLD,15));
acount.setBounds(20,150, 91,50);
acount.setFont(new Font("方正舒体",Font.BOLD,15));
password.setBounds(20,200, 91,50);
password.setFont(new Font("方正舒体",Font.BOLD,15));
name.setOpaque(false);
JPSQL.add(logo);
JPSQL.add(name);
JPSQL.add(acount);
JPSQL.add(password);
//添加输入框
JTextField Field1 , Field2 , Field3;
Field1 = new JTextField(20);
Field2 = new JTextField(20);
Field3 = new JTextField(20);
Field1.setBounds(60,115, 180,25);
Field2.setBounds(60,165, 180,25);
Field3.setBounds(60,215, 180,25);
JPSQL.add(Field1);
JPSQL.add(Field2);
JPSQL.add(Field3);
//添加按钮,
JButton reSQL;
reSQL = new JButton("注册信息");
reSQL.setForeground(Color.BLACK); //设置前景颜色(作用于字体)
reSQL.setFont(new Font("仿宋", Font.BOLD, 12));
reSQL.setBackground(Color.gray); //设置背景颜色
reSQL.setBounds(100,259, 90,30);
JPSQL.add(reSQL);
//插入背景图片
ImageIcon backgruonp ;
JLabel image ;
backgruonp = new ImageIcon("注册信息背景图片.png");
image = new JLabel(backgruonp);
image.setBounds(5,5,275,452);
JPSQL.add(image);
//提取信息
reSQL.addMouseListener(new MouseListener() {
@Override
public void mousePressed(MouseEvent e) { //单击注册按钮时监听信息
if(e.getSource() == reSQL && e.getButton() == MouseEvent.BUTTON1 )
{
Mname = Field1.getText();
Macount = Field2.getText();
Mpassword = Field3.getText();
System.out.println(Mpassword.length());
if(Mpassword.length() < 6)
{
//增加提示窗口
JFrame inform = new JFrame();
inform.setTitle("提示");
inform.setBounds(620, 305, 322,100);
JLabel occ = new JLabel("请补全注册信息,设置6位数以上密码!");
occ.setFont(new Font("华文行楷",Font.BOLD,18));
inform.add(occ);
setResizable(true); //禁止最大化
inform.setVisible(true);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
else {
//将信息存储到数据库
connectSQL();
}
}
}
@Override
public void mouseClicked(MouseEvent e) {}
@Override
public void mouseReleased(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
});
}
//将信息存储到数据库
public void connectSQL()
{
Connection nect = null;
try
{ //首先连接数据库
String a ="jdbc:mysql://localhost/CMession?"+"useSSL = true & serverTimezone = GMT &characterEncoding = utf-8 ";
nect = DriverManager.getConnection(a,"root","l20011223");
System.out.println("连接成功");
}
catch (SQLException e1) {e1.printStackTrace();}
Statement sql = null;
try {
sql = nect.createStatement(); //声明数据库
sql.execute("insert into passCard values('"+Mname+"','"+Macount+"','"+Mpassword+"',' ') ;");
} catch (SQLException e1) { e1.printStackTrace(); }
try {
nect.close();
System.out.println("已关闭连接");
} catch (SQLException e1){e1.printStackTrace();}
dispose();
//增加提示窗口
JFrame inform = new JFrame();
inform.setTitle("提示");
inform.setBounds(620, 305, 280,100);
JLabel occ = new JLabel("您已注册成功,请重新登录!");
occ.setFont(new Font("华文行楷",Font.BOLD,18));
inform.add(occ);
setResizable(true); //禁止最大化
inform.setVisible(true);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
}
👨💻登录界面效果图
登录界面首先也是实现GUI布局设计,继承JFrame类新建窗口,在主面板上实现GUI设计,用到JFieldText,JButton,JLabel等组件进行布局。设计效果图如下图所示。
代码参考:
登录界面功能用以下三个方法,分别为构造函数 GUI()进行登录界面主面板的创建,mainpanel()方法进行登录界面GUI设计和布局美化,induage()方法,进行数据库的连接,并判断用户输入的账号密码是否与数据库中的一致。注册信息界面方法表如下表4.2所示。
//主面板的创建
public GUI ()
{
mainpanel();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void mainpanel()
{
//设置主面板的布局和美观
setTitle("一站知常德");
setBounds(300,100,1000,550);
setResizable(false); //禁止最大化
//setLocationRelativeTo(null); //居中
//设置布局
JPanel MJPanel ;
MJPanel = new JPanel();
MJPanel.setBorder(BorderFactory.createLineBorder(Color.BLACK,15)); //设置一个带有颜色的边界和其宽度
setContentPane(MJPanel);
MJPanel.setLayout(null); //JPanel的默认布局--FollowLayout
//设置账号密码标签
JLabel ANumber , PNumber;
Font bold = new Font("华文琥珀",Font.BOLD,25);
ANumber = new JLabel("账号");
PNumber = new JLabel("密码");
ANumber.setFont(bold); //设置字体
PNumber.setFont(bold); //设置字体
ANumber.setBounds(351, 300, 91, 50);
PNumber.setBounds(351, 360, 91, 50);
// ANumber .setOpaque(false);
// PNumber .setOpaque(false);
MJPanel.add(ANumber);
MJPanel.add(PNumber);
//设置输入框
ANField = new JTextField(20);
PNField = new JPasswordField(20);
ANField.setBounds(420, 315, 150, 25);
PNField.setBounds(420, 375, 150, 25);
//ANField.setText("请输入账号");
//PNField.setText("请输入密码");
MJPanel.add(ANField);
MJPanel.add(PNField);
//设置登录和注册按钮
JButton record,register;
record = new JButton("登录");
register = new JButton("注册");
record.setForeground(Color.BLACK); //设置前景颜色(作用于字体)
register.setForeground(Color.BLACK);
record.setFont(new Font("仿宋", Font.BOLD, 12));
register.setFont(new Font("仿宋", Font.BOLD, 12));
record.setBackground(Color.gray); //设置背景颜色
register.setBackground(Color.gray);
record.setBounds(380,420,70,30);
register.setBounds(490,420,70,30);
MJPanel.add(record);
MJPanel.add(register);
//插入背景图
ImageIcon backgruonp ;
JLabel image ;
backgruonp = new ImageIcon("常德风景图片.png");
image = new JLabel(backgruonp);
image.setBounds(15,15,956,483);
MJPanel.add(image);
//设置注册信息跳转界面
register.addMouseListener(new MouseListener() {
@Override
public void mousePressed(MouseEvent e) {
//单击注册按钮
if(e.getSource() == register && e.getButton() == MouseEvent.BUTTON1 )
{
SQL restore = new SQL();
restore.setVisible(true);
}
}
@Override
public void mouseClicked(MouseEvent e) {}
@Override
public void mouseReleased(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
});
//设置登录信息跳转界面
record.addMouseListener(new MouseListener() {
@Override
public void mousePressed(MouseEvent e) {
//单击登录按钮
if(e.getSource() == record && e.getButton() == MouseEvent.BUTTON1 )
{
if( induage() == true)
{
@SuppressWarnings("unused")
SystemGUI mainGUI = new SystemGUI(ANField.getText()); //将账户作为参数传递
dispose();
}
else
{
//增加提示窗口
JFrame inform = new JFrame();
inform.setTitle("提示");
inform.setBounds(640, 305, 280,100);
JLabel occ = new JLabel("账户或密码错误,请重新输入!");
occ.setFont(new Font("华文行楷",Font.BOLD,18));
inform.add(occ);
setResizable(true); //禁止最大化
inform.setVisible(true);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
}
}
@Override
public void mouseClicked(MouseEvent e) {}
@Override
public void mouseReleased(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
});
}
@SuppressWarnings("deprecation")
public boolean induage(){
//连接数据库核实信息
boolean duage = false ;
Connection nect = null;
ResultSet answar = null ;
try
{ //首先连接数据库
String a ="jdbc:mysql://localhost/CMession?"+"useSSL = true & serverTimezone = GMT &characterEncoding = utf-8 ";
nect = DriverManager.getConnection(a,"root","l20011223");
System.out.println("连接成功");
}
catch (SQLException e1) {e1.printStackTrace();}
Statement sql = null;
try {
sql = nect.createStatement(); //声明数据库
String query =" select password from passCard where acount= '"+ANField.getText() +"';";
//通过账号查找密码
answar = sql.executeQuery(query);
while(answar.next())
{
System.out.println(answar.getString(1)+" "+PNField.getText());
if(answar.getString(1).equals(PNField.getText()) ) //判断密码是否相等
{
duage = true ;
}
}
} catch (SQLException e1) { e1.printStackTrace(); }
try {
nect.close();
System.out.println("已关闭连接");
} catch (SQLException e1){e1.printStackTrace();}
//dispose();
return duage;
}
}
👨💻测试结果
当用户未注册账户或密码或者账号密码输入错误时则会弹出提示弹窗,效果图如下图所示。
若用户输入正确时则会成功进入主界面,进行相关功能操作,效果图如下图5.2所示。
当用户进入到注册界面时,需要填写注册信息,如果注册信息未填满或者密码长度不足六位数字则会弹出以下窗口提示,效果图如下图5.3所示。
若用户注册时,注册的账号是重复的,亦会有如下提示出现,提示重新注册,效果图如下图5.4所示。
你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!