商苑面馆:用户登录界面功能实现

来自CloudWiki
Cloud17讨论 | 贡献2018年5月23日 (三) 07:47的版本
跳转至: 导航搜索

任务描述

完善用户登录界面功能:

登录成功时,弹出成功界面,如图:

失败时,弹出失败界面,如图:

任务实现

第一步:启动Eclipse,导入工程Project0801。

第二步:创建User表数据访问接口,在接口中定义登录有效性验证函数,如下图所示方法:

具体代码:

public interface UserDao {
	     public User login(String uid,String pwd);
}

第三步:创建User数据访问类,实现UserDao接口。

public class UserDaoTesting implements UserDao{

	@Override
	public User login(String uid, String pwd) {
		// 获取用户测试数据集
		List<User> users=UserDataSet.users;
		//循环判断用户输入的账号和密码在测试集合中是否存在
		for(User user:users)
			if(user.getId().equalsIgnoreCase(uid)&&user.getPassword().equalsIgnoreCase(pwd))
				return user;
		return null;
	}

}

第四步:为登录按钮添加点击事件。

业务逻辑如下:

  1. 用户点击登录按钮时,获取用户在界面上填写的账号和密码。
  2. 通过用户模拟数据访问类UserDaoTesting验证登录有效性。
  3. 登陆成功,通过提示框控件JOptionPane显示提示信息:登录成功。
  4. 登录失败,通过提示框控件JOptionPane显示提示信息:登录账号或密码不正确

具体代码:

btnLogon.addActionListener(e -> {
			// 获取用户输入的账号和密码
			String uid = txtUserID.getText();
			String pwd = new String(txtPassword.getPassword());
			// 判断用户输入的账号和密码是否存在
			UserDaoTesting udt = new UserDaoTesting();
			User user = udt.login(uid, pwd);
			// 用户编号不存在
			if (user == null) {
				JOptionPane.showMessageDialog(this, "登陆账号或密码不正确", "警告信息", JOptionPane.WARNING_MESSAGE);
				// 增加用户体验,选中文本框中的字,并获得焦点
				txtUserID.requestFocus();
				txtUserID.selectAll();
			} else
				JOptionPane.showMessageDialog(this, "登陆成功", "信息", JOptionPane.INFORMATION_MESSAGE);
		});

第五步:为重置按钮添加事件。

清空用户名和密码,用户名文本框获得焦点,具体代码如下:

btnReset.addActionListener(e->{
			txtUserID.setText("");
			txtPassword.setText("");
			txtUserID.requestFocus();
		});

第六步:运行并测试程序。

程序代码

UserDao.java

public interface UserDao {
	public User login(String uid,String pwd);
}

UserDaoTesting.java

public class UserDaoTesting implements UserDao{

	@Override
	public User login(String uid, String pwd) {
		// 获取用户测试数据集
		List<User> users=UserDataSet.users;
		//循环判断用户输入的账号和密码在测试集合中是否存在
		for(User user:users)
			if(user.getId().equalsIgnoreCase(uid)&&user.getPassword().equalsIgnoreCase(pwd))
				return user;
		return null;
	}

}

LogonForm.java

public class LogonForm extends JFrame {

private JLabel lblUserID;// “登录账号”标签 private JLabel lblPassword;// “登录密码”标签 private JTextField txtUserID;// “登录账号”文本框 private JPasswordField txtPassword;// 密码框 private JButton btnLogon;// 登录按钮 private JButton btnReset;// 重置按钮

public LogonForm() { // 控件初始化 lblUserID = new JLabel("用户登录", JLabel.CENTER); lblPassword = new JLabel("登录密码", JLabel.CENTER); txtUserID = new JTextField(16); txtPassword = new JPasswordField(16); btnLogon = new JButton("登录"); btnLogon.addActionListener(e -> { // 获取用户输入的账号和密码 String uid = txtUserID.getText(); String pwd = new String(txtPassword.getPassword()); // 判断用户输入的账号和密码是否存在 UserDaoTesting udt = new UserDaoTesting(); User user = udt.login(uid, pwd); // 用户编号不存在 if (user == null) { JOptionPane.showMessageDialog(this, "登陆账号或密码不正确", "警告信息", JOptionPane.WARNING_MESSAGE); // 增加用户体验,选中文本框中的字,并获得焦点 txtUserID.requestFocus(); txtUserID.selectAll(); } else JOptionPane.showMessageDialog(this, "登陆成功", "信息", JOptionPane.INFORMATION_MESSAGE); }); btnReset = new JButton("重置"); btnReset.addActionListener(e->{ txtUserID.setText(""); txtPassword.setText(""); txtUserID.requestFocus(); }); // 设置控件布局,在窗口中添加用户登录、用户密码控件 JPanel centerPane = new JPanel(); centerPane.setLayout(new GridLayout(2, 2)); centerPane.add(lblUserID); centerPane.add(txtUserID); centerPane.add(lblPassword); centerPane.add(txtPassword); this.getContentPane().add(centerPane, BorderLayout.CENTER); // 添加登录按钮和重置按钮 JPanel southPane = new JPanel(); southPane.setLayout(new FlowLayout()); southPane.add(btnLogon); southPane.add(btnReset); this.getContentPane().add(southPane, BorderLayout.SOUTH);

pack(); this.setTitle("电商购物平台-登录"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); }

public static void main(String[] args) { LogonForm logon = new LogonForm(); } }