单一职责原则
[实验任务二]:单一职责原则
登录模块在实际项目开发中很常见,请按照教材28页(PPT49页)利用单一职责原则重构后的类图实现这一模块。
实验要求:
1.提交源代码和对应的数据库文件(注意将此模块保存,以备以后使用);
2.注意编程规范
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class DBUtil { private static String driverStr = "com.mysql.jdbc.Driver"; private static String connStr = "jdbc:mysql://localhost:3306/news?useSSL=false&serverTimezone=GMT&characterEncoding=utf-8&autoReconnect=true"; private static String dbusername = "root"; private static String dbpassword = "123456"; private static Connection conn = null; private static Statement stmt = null; public static Connection getConnection() { try { Class.forName(driverStr); conn = DriverManager.getConnection(connStr, dbusername, dbpassword); stmt = conn.createStatement(); System.out.println("连接成功"); } catch (Exception ex) { System.out.println("数据库连接失败!"); } return conn; } /** * 关闭数据库 */ public static void close() { try { stmt.close(); conn.close(); } catch (Exception e) { } } }
package login;
import java.awt.Container;
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.JPasswordField;
import javax.swing.JTextField;
public class LoginForm extends JFrame{
private static final long serialVersionUID = 1L;
private UserDao dao = new UserDao();
//设置按钮组件
private JButton jb=new JButton("登录"); //添加一个登录按钮
private JButton button=new JButton("重置"); //添加一个确定按钮
//设置文本框组件
private JTextField username = new JTextField();//用户名框
private JPasswordField password = new JPasswordField();//密码框:为加密的***
JLabel user_name=new JLabel("账号:");//设置左侧用户名文字
JLabel pass_word=new JLabel("密码:");//设置左侧密码文字
public void init()
{
/* 组件绝对位置 */
user_name.setBounds(50, 70, 300, 25);
pass_word.setBounds(50, 130, 200, 25);
username.setBounds(110, 70, 300, 25);//设置用户名框的宽,高,x值,y值
password.setBounds(110, 130, 300, 25);//设置密码框的宽,高,x值,y值
button.setBounds(315, 225, 90, 20);//设置确定按钮的宽,高,x值,y值
jb.setBounds(95, 225, 90, 20);//设置确定按钮的宽,高,x值,y值
/* 组件透明化*/
user_name.setOpaque(false);
pass_word.setOpaque(false);
//监听事件
jb.addActionListener(new ActionListener(){ //为确定按钮添加监听事件
@SuppressWarnings("deprecation")
public void actionPerformed(ActionEvent arg0) {
validate(username.getText().trim(),password.getText().trim());
}
});
//重置按钮
button.addActionListener(new ActionListener(){ //为重置按钮添加监听事件
//同时清空name、password的数据
public void actionPerformed(ActionEvent arg0) {
// TODO 自动生成方法存根
username.setText("");
password.setText("");
}
});
}
public void display()
{
JFrame f =new JFrame();
f.setTitle("登录页面");
//窗口退出行为
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置窗口大小不可变
f.setResizable(false);
//设置窗口打开居中
f.setLocationRelativeTo(null);
//窗口大小
f.setSize(500, 300);
init();
//添加组件
Container contentPanel= new Container();//添加一个contentPanel容器
contentPanel.setLayout(null);//设置添加的contentPanel容器为流布局管理器
contentPanel.add(user_name);
contentPanel.add(pass_word);
contentPanel.add(username);
contentPanel.add(password);
contentPanel.add(jb);
contentPanel.add(button);
f.add(contentPanel);
//展示窗口
f.setVisible(true);
}
public void validate(String username,String password)
{
if(username.trim().length()==0||password.trim().length()==0){
JOptionPane.showMessageDialog(null, "用户名,密码不允许为空");
return;
}
if(dao.findUser(username, password))
{
JOptionPane.showMessageDialog(null, "登录成功!");
}
else{
JOptionPane.showMessageDialog(null, "用户名或密码错误");
}
}
}
import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class UserDao { public boolean findUser(String userName, String userPassword){ String sql="select * from abc "; Connection conn=DBUtil.getConnection(); Statement state = null; ResultSet rs= null; int flag=0; String c_password=null; try { state = conn.createStatement(); rs = state.executeQuery(sql); while(rs.next()){ ++flag; c_password=rs.getString("Upassword"); if(userPassword.equals(rs.getObject(2))) { break; } } if(flag==0){ return false; } if(!userPassword.equals(c_password)) { return false; } }catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { DBUtil.close(); } return true; } }
public class MainClass { public static void main(String[] args) { LoginForm loginForm=new LoginForm() ; //调用 loginForm.display(); } }





浙公网安备 33010602011771号