登录注册界面
要求实现功能:登录、注册。
注册:
1)检查是否注册过;
2)检查字符串的合法性;
3)收集数据、存储实例。
登录:
1)检查是否注册过;
2)检查是否登录过;
3)检查验证密码;
4)登录成功,返回相关信息。
下面展示并分析登录注册界面v1.0的Java实现代码。
1)User.java
//User.java
public class User{
public User(String userName, String password) {
this.userName = userName;
this.password = password;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
// 属性: 需要直接赋值? 不需要
String userName;
String password;
int age;
double score;
boolean isOnline;
// 显示个人信息
public void showInfo(){
System.out.println ("------个人信息----------");
System.out.println ("姓名:" + userName);
System.out.println ("密码:" + password);
System.out.println ("年龄:" + age);
System.out.println ("积分:" + score);
System.out.println ("在线状态:" + (isOnline ? "在线" : "离线"));
}
// 检查密码
public boolean checkPassword(String pwdIn){
return pwdIn.equals(password);
}
public boolean login(String pwdIn){
isOnline = checkPassword(pwdIn);
return isOnline;
}
public void changePassword(String old_pwd, String new_pwd){
if(checkPassword (old_pwd)){
password = new_pwd;
System.out.println ("修改密码成功!!");
} else{
System.out.println ("修改密码失败!!");
}
}
}
2)MyLoginUI.java
//MyLoginUI.java
import javax.swing.*;
import java.awt.*;
public class MyLoginUI {
public static void main(String[] args) {
JFrame jf = new JFrame();
String str = "登录界面";
jf.setTitle(str);
jf.setSize(500, 600);
jf.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
jf.setVisible(true);
FlowLayout flow = new FlowLayout();
jf.setLayout(flow);
ImageIcon icon = new ImageIcon("filename");//filename
JLabel iconLabel = new JLabel(icon);
JLabel nameLabel = new JLabel("账号:");
JLabel pwdLabel = new JLabel("密码:");
//输入框
JTextField nameJtf = new JTextField();
JPasswordField pwdJpf = new JPasswordField();
//按钮
JButton btn = new JButton();
JButton btn1 = new JButton();
btn.setText("登录");
btn1.setText("注册");
Dimension dim = new Dimension(410, 35);
nameJtf.setPreferredSize(dim);
pwdJpf.setPreferredSize(dim);
Color color = new Color(245, 191, 191);// 0-255
btn.setBackground(color);
jf.add(iconLabel);
jf.add(nameLabel);
jf.add(nameJtf);
jf.add(pwdLabel);
jf.add(pwdJpf);
jf.add(btn);
jf.add(btn1);
jf.setVisible(true);// 可视化
//
// 按钮 : btn 登录按钮 btn1 注册按钮
// 输入框 : nameJtf 账号输入框 pwdJpf 密码输入框
// 给按钮添加监听
LoginListener loginl = new LoginListener();
btn.addActionListener(loginl);
btn1.addActionListener(loginl);
// 点击按钮之后 调用输入框获取内容
loginl.nameIn = nameJtf;
loginl.pwdIn = pwdJpf;
}
}
3)LoginListener.java
//LoginListener.java
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class LoginListener implements ActionListener {
JTextField nameIn;
JPasswordField pwdIn;
User[] users = new User[100];
int size;//记录当前注册的User对象数量
@Override
public void actionPerformed(ActionEvent e) {
String action = e.getActionCommand ();
String name = nameIn.getText ();
// ## 登录注册:
// - 注册
// - 1:检查是否注册过
// - 2:检查字符串的合法性
// - 3:收集数据,创建实例
// - 4:存储数据
//
// - 登录
// - 1:检查是否注册过
// - 2:检查是否登录过
// - 3:检查验证密码
// - 4:登录成功 返回相关信息
if (action.equals("登录")){
//检查是否注册过
for(int i=0;i<size;i++){
User user = users[i];//定义临时user对象
if (name.equals(user.getUserName())){
//已经注册
//检查是否已经在线
if (user.isOnline){
System.out.println("用户已登录");
return;//return退出方法
//break跳出循环
//continue进入下一个循环
}
else if (user.login(pwdIn.getText())){
//检查密码是否正确
System.out.println("登录成功");
user.showInfo();
return;
}
else{
System.out.println("密码错误");
return;
}
}
}
System.out.println("请先注册");
}
if (action.equals("注册")){
//检查输入的name是否合法
//检查是否注册过
for(int i=0;i<size;i++){
User user = users[i];//定义临时user对象
if (name.equals(user.getUserName())){
//已经注册
System.out.println("已经注册,请直接登录");
return;
}
}
//检查输入的pwd是否合法
//收集数据,存储实例
users[size] = new User(name, pwdIn.getText());
size += 1;
System.out.println("注册成功,编号:"+size);
}
}
}
登录注册界面示意图
************************关于break、continue和return************************
continue:直接结束本次循环体,进入下一次循环
1)for循环:
for(表达式1; 表达式2; 表达式3){
循环体
}
在for循环中,首先执行表达式1(在整个循环中仅执行一次),接着执行表达式2,若满足条件则执行循环体,如果在循环体中执行了continue则跳转到表达式3处执行,进行下一次循环,执行表达式2看是否满足条件。
2)while循环:
while(表达式){
循环体
}
在while循环中,若执行了continue语句,那么就直接跳转到表达式处,开始下一次的循环判断。
3)do-while循环:
do{
循环体
}while(表达式);
在do while循环体中若执行了continue语句,那么就跳转到表达式处开始进行下一次的循环判断。
break:直接终止它所在的最内层循环或switch-case语句
1)在循环结构中使用break语句,如果执行了break语句,那么就退出循环,接着执行循环结构下面的第一条语句。
2)如果在多重嵌套循环中使用break语句,当执行break语句的时候,退出的是它所在的循环结构,对外层循环没有任何影响。
3)如果循环结构里有switch语句,并且在switch语句中使用了break语句,当执行switch语句中的break语句时,仅退出switch语句,不会退出外面的循环结构。
return:直接退出该函数的执行,返回到函数的调用处
1)如果是main()函数,则结束整个程序的运行。
2)如果是自定义的函数中执行,那么返回到函数的调用处继续往下执行。
************************关于size++和++size************************文章来源:https://www.toymoban.com/news/detail-456013.html
使用size++和++size来简化语句。下面3种写法等价。文章来源地址https://www.toymoban.com/news/detail-456013.html
users[size] = new User(name, pwdIn.getText());
size += 1;
System.out.println("注册成功,编号:"+size);
users[size++] = new User(name, pwdIn.getText());
System.out.println("注册成功,编号:"+size);
users[size] = new User(name, pwdIn.getText());
System.out.println("注册成功,编号:"+(++size));
到了这里,关于Java登录注册界面v1.0的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!