创建登录界面及简易验证码
一.程序设计思路: 1.显示登录,注册页面,以及主页面
2.可以在表里存储数据,即注册用户
3.可以在图形框中输入数据
4.在后端检索所有数据,查看是否存在数据
5.随机生成验证码,并且要求输入的验证码与显示的对应
6.完成登录
二. 流程图
三.源代码
/*本类将作为上网时的登录页面
需要实现的功能:
1.显示登录,注册页面,以及主页面
2.可以在表里存储数据,即注册用户
3.可以在图形框中输入数据
4.在后端检索所有数据,查看是否存在数据
5.随机生成验证码,并且要求输入的验证码与显示的对应
6.完成登录
* */
package class3Login;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class Interface extends JFrame
{
private static final long serialVersionUID = 1L;
private static String record;
public static void main(String[] args)
{
new Interface();
}
public Interface()
{
// 创建 JFrame 实例
JFrame frame = new JFrame("请登录:");
// 设置frame大小
frame.setLocation(500,300);
frame.setSize(400, 200);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//创建面板
JPanel panel = new JPanel();
// 添加面板
frame.add(panel);
//根据需要设置面板的具体形式
placeComponents(panel);
// 设置界面可见
frame.setVisible(true);
}
public void placeComponents(JPanel panel)
{
//清空面板
panel.setLayout(null);
// 创建 用户使用的组件
JLabel userLabel = new JLabel("用户名:");
userLabel.setBounds(10,20,80,25);
panel.add(userLabel);
// 创建文本域用于用户输入
JTextField userText = new JTextField(20);
userText.setBounds(100,20,165,25);
panel.add(userText);
// 创建 密码使用的组件
JLabel passwordLabel = new JLabel("密码:");
passwordLabel.setBounds(10,50,80,25);
panel.add(passwordLabel);
// 创建密码的文本域
JPasswordField passwordText = new JPasswordField(20);
passwordText.setBounds(100,50,165,25);
panel.add(passwordText);
// 创建 验证码使用的组件
JLabel verificationLabel = new JLabel("验证码:");
verificationLabel.setBounds(10,80,80,25);
panel.add(verificationLabel);
// 创建验证码的文本域
JTextField verificationText = new JTextField(20);
verificationText.setBounds(100,80,80,25);
panel.add(verificationText);
//创建一个随机字符串
String result = "";
for(int i = 0 ; i < 6 ; i ++)
{
int intVal = (int)(Math.random() * 26 + 97);
result = result + (char)intVal;
}
record = result;
// 创建验证码使用的显示的组件
JLabel verificationShowLabel = new JLabel(result);
verificationShowLabel.setBounds(200,80,80,25);
panel.add(verificationShowLabel);
// 创建登录按钮
JButton loginButton = new JButton("登录");
loginButton.setBounds(10, 120, 80, 25);
panel.add(loginButton);
//对按钮进行监视
ActionListener ourListener1 = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == loginButton) //判断是否点击登录按钮
{
if(record.equalsIgnoreCase(verificationText.getText()))//判断验证码是否正确
{
if(StoreroomManager.datelist.size()==0)//判断存储空间是否有数据
{
JOptionPane.showMessageDialog(null, "你还没有注册");
userText.setText("");
passwordText.setText("");
}
else//对现有的date进行赋值,并且检索是否存在注册过的用户
{
Storeroom date= new Storeroom();
date.setUser(userText.getText());//获取用户输入的用户名
date.setPassword(passwordText.getText());//获取用户输入的密码
StoreroomManager.confirmDate(date);
passwordText.setText("");
verificationText.setText("");
}
}
else // 验证码不正确
{
passwordText.setText("");
verificationText.setText("");
JOptionPane.showMessageDialog(null, "验证码错误,请重新输入");
//创建一个随机字符串
String result = "";
for(int i = 0 ; i < 6 ; i ++)
{
int intVal = (int)(Math.random() * 26 + 97);
result = result + (char)intVal;
}
record = result;
verificationShowLabel.setText(result);
}
}
}
};
loginButton.addActionListener(ourListener1);
// 创建注册按钮
JButton registerButton = new JButton("注册");
registerButton.setBounds(100, 120, 80, 25);
panel.add(registerButton);
//对按钮进行监视
ActionListener ourListener2 = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == registerButton)
{
userText.setText("");
passwordText.setText("");
verificationText.setText("");
new RegisterInterface();
}
}
};
registerButton.addActionListener(ourListener2);
// 创建刷新按钮
JButton refreshButton = new JButton("刷新");
refreshButton.setBounds(250, 80, 80, 25);
panel.add(refreshButton);
//对按钮进行监视
ActionListener ourListener3 = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == refreshButton)
{
passwordText.setText("");
verificationText.setText("");
//创建一个随机字符串
String result = "";
for(int i = 0 ; i < 6 ; i ++)
{
int intVal = (int)(Math.random() * 26 + 97);
result = result + (char)intVal;
}
record = result;
verificationShowLabel.setText(result);
}
}
};
refreshButton.addActionListener(ourListener3);
}
}
//本文件相当于数据库,用于存储数据
package class3Login;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
//作为一个类,用来作为存储数据的单元
class Storeroom
{
private String User;
private String password;
void setUser(String str)
{
User = str;
}
String getUser()
{
return User;
}
void setPassword(String str)
{
password = str;
}
String getpassword()
{
return password;
}
}
class StoreroomManager //对数据进行操作的类
{
static List<Storeroom> datelist = new ArrayList<Storeroom>(0);
static void confirmDate(Storeroom date)//登录,遍历数据
{
int flag = 0;
for(int i = 0;i<datelist.size();i++)
{
if(date.getUser().equalsIgnoreCase(datelist.get(i).getUser()))
{
if(date.getpassword().equalsIgnoreCase(datelist.get(i).getpassword()))
{
JOptionPane.showMessageDialog(null, "登录成功");
flag++;
}
}
}
System.out.println("输入的数据:");
System.out.println("用户名:"+date.getUser());
System.out.println("密码:"+date.getpassword());
for(int i = 0;i<datelist.size();i++)
{
System.out.println("表中的"+(i+1)+"个数据:");
System.out.println("用户名:"+datelist.get(i).getUser());
System.out.println("密码:"+datelist.get(i).getpassword());
}
if(flag == 0)
{
JOptionPane.showMessageDialog(null, "用户名或者密码错误!");
}
}
static boolean searchDate(Storeroom date)//登录,遍历数据
{
int flag = 0;
for(int i = 0;i<datelist.size();i++)
{
if(date.getUser().equals(datelist.get(i).getUser()))
if(date.getpassword().equals(datelist.get(i).getpassword()))
flag++;
}
if(flag==0)
return false;
else
return true;
}
}
//本类文件与Interface类大致相同
package class3Login;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
class RegisterInterface //作为注册页面
{
private static String record;
public RegisterInterface()
{
// 创建 JFrame 实例
JFrame frame = new JFrame("欢迎来到注册页面:");
// 设置frame大小
frame.setLocation(500,300);
frame.setSize(400, 200);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
//创建面板
JPanel panel = new JPanel();
// 添加面板
frame.add(panel);
//根据需要设置面板的具体形式
placeComponents(panel,frame);
// 设置界面可见
frame.setVisible(true);
}
public void placeComponents(JPanel panel,JFrame frame)
{
//清空面板
panel.setLayout(null);
// 创建 用户使用的组件
JLabel userLabel = new JLabel("用户名:");
userLabel.setBounds(10,20,80,25);
panel.add(userLabel);
// 创建文本域用于用户输入
JTextField userText = new JTextField(20);
userText.setBounds(100,20,165,25);
panel.add(userText);
// 创建密码使用的组件
JLabel passwordLabel = new JLabel("密码:");
passwordLabel.setBounds(10,50,80,25);
panel.add(passwordLabel);
// 创建密码的文本域
JPasswordField passwordText = new JPasswordField(20);
passwordText.setBounds(100,50,165,25);
panel.add(passwordText);
// 创建 验证码使用的组件
JLabel verificationLabel = new JLabel("验证码:");
verificationLabel.setBounds(10,80,80,25);
panel.add(verificationLabel);
// 创建验证码的文本域
JTextField verificationText = new JTextField(20);
verificationText.setBounds(100,80,80,25);
panel.add(verificationText);
//创建一个随机字符串
String result = "";
for(int i = 0 ; i < 6 ; i ++)
{
int intVal = (int)(Math.random() * 26 + 97);
result = result + (char)intVal;
}
record = result;
// 创建验证码使用的显示的组件
JLabel verificationShowLabel = new JLabel(result);
verificationShowLabel.setBounds(200,80,80,25);
panel.add(verificationShowLabel);
// 创建确认按钮
JButton confirmButton = new JButton("确定");
confirmButton.setBounds(10, 120, 80, 25);
panel.add(confirmButton);
//对按钮进行监视(确认,即注册按钮)
ActionListener ourListener1 = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == confirmButton)
{
if(record.equalsIgnoreCase(verificationText.getText()))
{
Storeroom date = new Storeroom();
date.setUser(userText.getText());
date.setPassword(passwordText.getText());
if(StoreroomManager.searchDate(date))
frame.dispose();
else
{
StoreroomManager.datelist.add(date);
frame.dispose();
}
}
else
{
JOptionPane.showMessageDialog(null, "验证码错误,请重新输入");
verificationText.setText("");
passwordText.setText("");
//创建一个随机字符串
String result = "";
for(int i = 0 ; i < 6 ; i ++)
{
int intVal = (int)(Math.random() * 26 + 97);
result = result + (char)intVal;
}
record = result;
verificationShowLabel.setText(result);
}
}
}
};
confirmButton.addActionListener(ourListener1);
// 创建取消按钮
JButton cancelButton = new JButton("取消");
cancelButton.setBounds(100, 120, 80, 25);
panel.add(cancelButton);
//对按钮进行监视
ActionListener ourListener2 = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == cancelButton)
{
JOptionPane.showMessageDialog(null, "are you kidding me?!");
frame.dispose();
}
}
};
cancelButton.addActionListener(ourListener2);
// 创建刷新按钮
JButton refreshButton = new JButton("刷新");
refreshButton.setBounds(250, 80, 80, 25);
panel.add(refreshButton);
//对按钮进行监视
ActionListener ourListener3 = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == refreshButton)
{
passwordText.setText("");
verificationText.setText("");
//创建一个随机字符串
String result = "";
for(int i = 0 ; i < 6 ; i ++)
{
int intVal = (int)(Math.random() * 26 + 97);
result = result + (char)intVal;
}
record = result;
verificationShowLabel.setText(result);
}
}
};
refreshButton.addActionListener(ourListener3);
}
}
四. 结果截图