黑马程序员—java技术blog—第十二篇java基础应用GUI模拟登陆注册

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

应用GUI模拟等陆功能,通过前面的案例可以感觉到一个项目在后台编写时会应用到的基本知识与大体框架,

 在这个案例中其实与上一个案例没多大的变化,只是通过通过使用继承与接口地利用,提高了代码的复用率,并且对数据也有很好地保护。是前期基础语法的基本应用,可以使我们很好地了解一个简单项目的基本流程与编程思想。

public class UserOperatorImpl implements UserOperator {

/**
* 登录功能
* @param username 用户名
* @param password 密码
* @return 登录是否成功
*/
@Override
public boolean isLogin(String username, String password) {
//1,获取到UserInfo.txt中每个用户的信息
String userInfo = null;
boolean flag = false;// 返回是否登录成功

try {
BufferedReader br = new BufferedReader(new FileReader("UserInfo.txt"));
while ((userInfo = br.readLine()) != null) {
//获取userInfo中包含的用户名与密码, 通过字符串分割来实现
String[] userInfoArray = userInfo.split("=");
//0角标, 是用户名 ;  1角标,是密码
//使用每个用户与 键盘输入的用户名密码匹配
if (username.equals(userInfoArray[0]) && password.equals(userInfoArray[1]) ) {
//是: 登录成功
flag = true;
}
}
} catch (IOException e) {
e.printStackTrace();
}
//如果与所有的用户信息都不匹配,返回登录失败
return flag;
}



/**
* 注册功能
* @param user 要注册的用户
* @return 注册是否成功
*/
@Override
public boolean isRegister(User user) {
//获取当前注册用户信息
String username = user.getUsername();
String password = user.getPassword();
//-------------------------------------------
//判断要注册的用户 是否已经存在
boolean isExist = false;
try {
String userInfo = null;
BufferedReader br = new BufferedReader(new FileReader("UserInfo.txt"));
while ((userInfo = br.readLine()) != null) {
//获取userInfo中包含的用户名与密码, 通过字符串分割来实现
String[] userInfoArray = userInfo.split("=");
//0角标, 是用户名 ;  1角标,是密码
//使用每个用户与 键盘输入的用户名密码匹配
if (username.equals(userInfoArray[0]) ) {
//是: 登录成功
isExist = true;
break;//当发现用户已经存储后,结束循环
}
}
} catch (IOException e) {
e.printStackTrace();
}
//-------------------------------

//根据用户是否存在,来决定是否创建新用户
if (isExist) {
//说明用户存在
return false;
} else {
//说明用户不存在,创建新用户
//把user的信息 写入到 UserInfo.txt文件中
//把用户信息 写入到文件中
try {
BufferedWriter bw = new BufferedWriter(new FileWriter("UserInfo.txt", true));//追加数据
bw.write(username + "=" + password);
bw.newLine();
bw.flush();
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
return true;
}
}


}

public interface UserOperator {
/**
* 登录功能
* @param username 用户名
* @param password 密码
* @return 登录是否成功
*/
public abstract boolean isLogin(String username, String password);

/**
* 注册功能
* @param user 要注册的用户
* @return 注册是否成功
*/
public abstract boolean isRegister(User user);

}

public class User {
private String username;
private String password;


public User() {
super();
}


public User(String username, String password) {
super();
this.username = username;
this.password = password;
}


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;
}


}

/*
 * IndexFrame.java 主页面
 */
public class IndexFrame extends JFrame {
private MenuItem exitMI = new MenuItem("Exit"); //菜单项

//空参数构造方法
public IndexFrame () {
//窗体初始化方法
init();
//菜单的制作
addMenu();
//菜单项 点击事件处理
addMenuItemListener();

}

//菜单项 点击事件处理
private void addMenuItemListener() {
exitMI.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
}


///菜单的制作
private void addMenu() {
MenuBar menuBar = new MenuBar();//菜单栏
Menu fileMenu = new Menu("File");//菜单
//组装菜单
fileMenu.add(exitMI);
menuBar.add(fileMenu);
this.setMenuBar(menuBar);

}


//窗体初始化方法
private void init() {
//标题
this.setTitle("XXX 网站主页面");
//窗体大小与位置
this.setBounds(350, 150, 600, 400);
//窗体大小固定
this.setResizable(false);
//关闭窗口默认操作
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

}

 LoginRegisterFrame.java 登录注册页面
 * 
 * 登录注册页面的基本页面, 该页面中没有功能的实现,只有页面的布局显示
 * 具体的功能由子类完成
 */
public abstract class LoginRegisterFrame extends JFrame {
protected JTextField usernameTF = null;//用户名文本框
protected JTextField passwordTF = null;//密码文本框
protected JButton leftBtn = null;//左边按钮
protected JButton rightBtn = null;//右边按钮



//构造方法
public LoginRegisterFrame(){
//窗体的初始化操作
init();
//添加组件到窗口
addComponent();
//为组件添加事件监听
addListener();
}

private void addListener() {
//左边按钮
leftBtn.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
System.out.println("左边按钮被点击");
leftBtnMethod();
}
});
//右边按钮
rightBtn.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
System.out.println("---右边按钮被点击");
rightBtnMethod();
}
});
}

public abstract void leftBtnMethod(); //由子类编写
public abstract void rightBtnMethod();//由子类编写



private void addComponent() {
//创建组件
JLabel usernameLabel = new JLabel("用户名:");
JLabel passwordLabel =new JLabel("密 码:");
usernameTF = new JTextField(10);
passwordTF = new JTextField(10);
leftBtn =  new JButton("左边");
rightBtn = new JButton("右边");
//设置组件的大小与位置
usernameLabel.setBounds(30, 50, 60, 20);
passwordLabel.setBounds(30, 120, 60, 20);
usernameTF.setBounds(100, 50, 150, 30);
passwordTF.setBounds(100, 120, 150, 30);
leftBtn.setBounds(30, 200, 100, 30);
rightBtn.setBounds(150, 200, 100, 30);

//把组件添加到窗体中
this.add(usernameLabel);
this.add(passwordLabel);
this.add(usernameTF);
this.add(passwordTF);
this.add(leftBtn);
this.add(rightBtn);
}


//窗体的初始化操作
private void init() {
//设置标题
this.setTitle("登录注册基本页面");
//设置窗体的大小与位置
this.setBounds(500, 200, 300, 300);
//设置窗体大小固定
this.setResizable(false);
//窗口默认关闭操作
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置窗体的布局为 帧式布局
this.setLayout(null);
}

 LoginRegisterFrame_Login.java 登录页面 功能实现
 */
public class LoginRegisterFrame_Login extends LoginRegisterFrame{


//构造方法
public LoginRegisterFrame_Login(){
super();
this.setTitle("登录界面");//设置标题
leftBtn.setText("登录");//设置左边按钮名称
rightBtn.setText("注册");//设置右边按钮名称
}

//登录方法
@Override
public void leftBtnMethod() {
//获取用户名与密码
String username = usernameTF.getText();
String password = passwordTF.getText();
//调用接口中的登录功能
UserOperator uo = new UserOperatorImpl();
boolean isLogin = uo.isLogin(username, password);
System.out.println("isLogin = " + isLogin);

//显示登录提示的方法
showDialog(isLogin);
}


//显示登录提示的方法
private void showDialog(boolean isLogin) {
if (isLogin) {
//登录成功,转到 主页面
JOptionPane.showMessageDialog(this, "登录成功,跳转到主页面");

//隐藏登录页面
this.setVisible(false);
//显示主页面
IndexFrame index = new IndexFrame();
index.setVisible(true);

} else {
//登录失败,重新登录
JOptionPane.showMessageDialog(this, "登录失败,请重新登录");
}
}


//注册方法
@Override
public void rightBtnMethod() {
//打开注册页面
LoginRegisterFrame_Register register = new LoginRegisterFrame_Register();
//隐藏登录页面
this.setVisible(false);
//显示注册页面
register.setVisible(true);
}
}

 启动程序的类: MainApp.java
 */
public class MainApp {
public static void main(String[] args) {
LoginRegisterFrame_Login frame = new LoginRegisterFrame_Login();
frame.setVisible(true);
}
}

public class MainApp_Old {
public static void main(String[] args) {
while(true){
System.out.println("---------欢迎来到 XXX 网站-----------");
System.out.println("\t 1, 用户登录");
System.out.println("\t 2, 用户注册");
System.out.println("\t 3, 退出系统");
System.out.print("请选择【1-3】功能项:");


// --------------------
// 键盘输入: 请选择【1-3】功能项
String item = new Scanner(System.in).nextLine();


// -------------------
UserOperator operator = new UserOperatorImpl();//多态
// 根据输入项,执行对应的功能
switch (item) {
case "1":
//输入用户名密码
System.out.println("请输入用户名:");
String username = new Scanner(System.in).nextLine();
System.out.println("请输入密码:");
String password = new Scanner(System.in).nextLine();
//调用用户登录功能
boolean login = operator.isLogin(username, password);
System.out.println("login =" + login);
break;
case "2":
//填写注册用户信息,封装成User对象
//输入用户名密码
System.out.println("请输入用户名:");
String newUsername = new Scanner(System.in).nextLine();
System.out.println("请输入密码:");
String newPassword = new Scanner(System.in).nextLine();

User user = new User(newUsername, newPassword);
//调用用户注册功能
boolean register = operator.isRegister(user);
System.out.println("register = " + register);
break;
case "3":
//退出系统
System.out.println("您已退出系统");
System.exit(0);
break;
default:
break;
}
}
}
}

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值