生活随笔
收集整理的這篇文章主要介紹了
javaSwing+MySQl实现图书馆登录页面(完整)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
頁面
import javax
.swing
.*
;
import java
.awt
.*
;
import java
.awt
.event
.ActionEvent
;
import java
.awt
.event
.ActionListener
;
import java
.awt
.event
.MouseEvent
;
import java
.awt
.event
.MouseListener
;
import java
.sql
.SQLException
;
import java
.util
.Random
;class Login1 {public static void main(String
[] args
) throws SQLException
, ClassNotFoundException
{DataBaseConnect connect
= new DataBaseConnect();
connect
.Insert("胡彩月", "123456");
Login login
= new Login();login
.LoginJFrame();}
}class Login extends JFrame implements ActionListener {JButton btnLogin
, btnRegister
, btnCancel
;JPanel pnlSouth
, pnlNorth
, pnlCenter1
, pnlCenter2
;private JLabel jLabel1
,jlabel
;private JLabel jLabelPassWord
;private JTextField jTextFieldUser
,jtextField
;private JPasswordField jPasswordField
;static String user
, passWord
;private JPanel imagePanel
;Code code
=new Code();
public void LoginJFrame() {JFrame jFrame
= new JFrame("圖書管理系統");ImageIcon imageIcon
= new ImageIcon("E:\\java\\Login.jpg");JLabel label
= new JLabel(imageIcon
);label
.setBounds(0, 0, imageIcon
.getIconWidth(), imageIcon
.getIconHeight());jFrame
.getLayeredPane().add(label
, new Integer(Integer
.MIN_VALUE
));JPanel panel
= (JPanel
) jFrame
.getContentPane();panel
.setOpaque(false);jFrame
.setLayout(null
);jTextFieldUser
= new JTextField(15);pnlNorth
= new JPanel();jLabel1
= new JLabel("歡迎進入圖書管理系統!");jLabel1
.setFont(new Font("宋體", Font
.BOLD
, 24));pnlNorth
.add(jLabel1
);pnlNorth
.setOpaque(false);pnlNorth
.setBounds(100, 50, 300, 59);jFrame
.add(pnlNorth
);pnlCenter1
= new JPanel();pnlCenter2
= new JPanel();JLabel jLabelUser
= new JLabel(" 用 戶:");jLabelUser
.setFont(new Font("宋體", Font
.BOLD
, 16));jLabelUser
.setOpaque(false);jTextFieldUser
= new JTextField(15);pnlCenter1
.add(jLabelUser
);pnlCenter1
.add(jTextFieldUser
);pnlCenter1
.setOpaque(false);pnlCenter1
.setBounds(100, 100, 300, 60);jFrame
.add(pnlCenter1
);jLabelPassWord
= new JLabel("密 碼:");jLabelPassWord
.setFont(new Font("宋體", Font
.BOLD
, 16));jPasswordField
= new JPasswordField(15);pnlCenter2
.add(jLabelPassWord
);pnlCenter2
.add(jPasswordField
);pnlCenter2
.setBounds(100, 150, 300, 60);pnlCenter2
.setOpaque(false);jlabel
=new JLabel("驗證碼");jlabel
.setFont(new Font("宋體",Font
.BOLD
,16));jtextField
=new JTextField(6);JPanel jPanelCenter
=new JPanel();jPanelCenter
.add(jlabel
);jPanelCenter
.add(jtextField
);jPanelCenter
.add(code
);jPanelCenter
.setBounds(100,200,300,60);jPanelCenter
.setOpaque(false);jFrame
.add(jPanelCenter
);System
.out
.println(code
.generateCode());jFrame
.add(pnlCenter2
);pnlSouth
= new JPanel();btnLogin
= new JButton("登錄");btnLogin
.addActionListener(this);btnRegister
= new JButton("注冊");btnRegister
.addActionListener(this);btnCancel
= new JButton("取消");btnCancel
.addActionListener(this);pnlSouth
.add(btnLogin
);pnlSouth
.add(btnRegister
);pnlSouth
.add(btnCancel
);pnlSouth
.setOpaque(false);pnlSouth
.setBounds(130, 250, 300, 50);jFrame
.add(pnlSouth
);jFrame
.setSize(imageIcon
.getIconWidth(), imageIcon
.getIconHeight());jFrame
.setVisible(true);jFrame
.setLocation(300, 300);jFrame
.setResizable(false);jFrame
.setDefaultCloseOperation(JFrame
.EXIT_ON_CLOSE
);}public String
getUser() {return this.user
;}public String
getPassWord() {return this.passWord
;}@Overridepublic void actionPerformed(ActionEvent e
) {DataBaseConnect connect
= new DataBaseConnect();if (e
.getSource() == btnLogin
) {String user
= jTextFieldUser
.getText();String passWord
= jPasswordField
.getText();Login
.user
= user
;Login
.passWord
= passWord
;String codes
=jtextField
.getText();if (user
.equals("")) {JOptionPane
.showMessageDialog(this, "請輸入賬號");} else if (user
.length() != 0) {try {if (connect
.Select(user
, passWord
)) {if(codes
.equals(code
.getCode())) {JOptionPane
.showMessageDialog(this, "恭喜您,登陸成功!");setVisible(false);dispose();new MenuJFrame();}else{JOptionPane
.showMessageDialog(this, "輸入驗證碼有誤!");}} else {JOptionPane
.showMessageDialog(this, "該賬號不存在!");}} catch (SQLException | ClassNotFoundException ex
) {ex
.printStackTrace();}}}else if (e
.getSource() == btnRegister
) {String user
= jTextFieldUser
.getText();String password
= jPasswordField
.getText();try {boolean result
= connect
.Insert(user
, password
);if (result
) {connect
.Insert(user
, password
);JOptionPane
.showMessageDialog(this, "恭喜,注冊成功");
} else {JOptionPane
.showMessageDialog(this, "該賬號已經存在!");}} catch (SQLException | ClassNotFoundException ex
) {ex
.printStackTrace();}} else if (e
.getSource() == btnCancel
) {JOptionPane
.showMessageDialog(this, "告辭");System
.exit(0);}}
}
class Code extends JComponent implements MouseListener {public static String codes
; private int width
, height
= 40; private int codesLength
= 4; private Random random
= new Random(); public Code() {width
= this.codesLength
* 16 + (this.codesLength
- 1) * 10; setPreferredSize(new Dimension(width
, height
)); setSize(width
, height
); this.addMouseListener(this);setToolTipText("點擊可更換驗證碼");}public int getCodesLength() {return codesLength
;}public void setCodesLength(int codeLength
) {if (codesLength
< 4) {this.codesLength
= 4;} else {this.codesLength
= codeLength
;}}public String
getCode() {return codes
;}public Color
getRandColor(int min
, int max
) {if (min
> 255)min
= 255;if (max
> 255)max
= 255;int red
= random
.nextInt(max
- min
) + min
;int green
= random
.nextInt(max
- min
) + min
;int blue
= random
.nextInt(max
- min
) + min
;return new Color(red
, green
, blue
);}protected String
generateCode() {char[] codes
= new char[this.codesLength
];for (int i
= 0, len
= codes
.length
; i
< len
; i
++) {if (random
.nextBoolean()) {codes
[i
] = (char) (random
.nextInt(10) + 48);} else {codes
[i
] = (char) (random
.nextInt(26) + 97);}}Code
.codes
= new String(codes
);return Code
.codes
;}@Overrideprotected void paintComponent(Graphics g
) {super.paintComponent(g
);if (this.codes
== null
|| this.codes
.length() != this.codesLength
) { this.codes
= generateCode();}width
= this.codesLength
* 16 + (this.codesLength
- 1) * 10;super.setSize(width
, height
); super.setPreferredSize(new Dimension(width
, height
));Font mFont
= new Font("Arial", Font
.BOLD
| Font
.ITALIC
, 25); g
.setFont(mFont
); Graphics2D g2d
= (Graphics2D
) g
;g2d
.setColor(getRandColor(200, 250));g2d
.fillRect(0, 0, width
, height
);g2d
.setColor(getRandColor(180, 200));g2d
.drawRect(0, 0, width
- 1, height
- 1);int i
= 0, len
= 150;for (; i
< len
; i
++) {int x
= random
.nextInt(width
- 1);int y
= random
.nextInt(height
- 1);int x1
= random
.nextInt(width
- 10) + 10;int y1
= random
.nextInt(height
- 4) + 4;g2d
.setColor(getRandColor(180, 200));g2d
.drawLine(x
, y
, x1
, y1
);}i
= 0;len
= this.codesLength
;FontMetrics fm
= g2d
.getFontMetrics();int base
= (height
- fm
.getHeight()) / 2 + fm
.getAscent();for (; i
< len
; i
++) {int b
= random
.nextBoolean() ? 1 : -1;g2d
.rotate(random
.nextInt(10) * 0.01 * b
);g2d
.setColor(getRandColor(20, 130));g2d
.drawString(codes
.charAt(i
) + "", 16 * i
+ 10, base
);}}public void nextCode() {generateCode();repaint();;}@Overridepublic void mouseClicked(MouseEvent e
) {codes
= generateCode();repaint();
}@Overridepublic void mousePressed(MouseEvent e
) {}@Overridepublic void mouseReleased(MouseEvent e
) {}@Overridepublic void mouseEntered(MouseEvent e
) {}@Overridepublic void mouseExited(MouseEvent e
) {}
}
賬號密碼數據庫:
import java
.sql
.*
;class DataBaseConnect {private static final String USER
= "root";private static final String PASS
= "123456";private Connection connection
;private PreparedStatement sql
;private ResultSet resultSet
;Connection
getConnection() throws SQLException
, ClassNotFoundException
{String JDBC_DRIVER
= "com.mysql.cj.jdbc.Driver";Class
.forName(JDBC_DRIVER
);String DB_URl
= "jdbc:mysql://root@localhost:3306/library?characterEncoding=utf8";connection
= DriverManager
.getConnection(DB_URl
, USER
, PASS
);System
.out
.println("數據庫鏈接成功");return connection
;}public void CloseConnection(Connection connection
) throws SQLException
{if (connection
!= null
)connection
.close();}public boolean Select(String user
, String pass
) throws SQLException
, ClassNotFoundException
{connection
= this.getConnection();sql
= connection
.prepareStatement("select *from library.db_賬戶 ");int flag
= 0;try {resultSet
= sql
.executeQuery();while (resultSet
.next()) {String username
= resultSet
.getString("username");String passWord
= resultSet
.getString("password");if (user
.equals(username
) && pass
.equals(passWord
))flag
= 1;}} catch (Exception e
) {e
.printStackTrace();}if (flag
== 1)return true;elsereturn false;}public boolean Insert(String user
, String password
) throws SQLException
, ClassNotFoundException
{connection
= this.getConnection();
boolean result
= this.Select(user
, password
);if (!result
) {sql
= connection
.prepareStatement("insert into library.db_賬戶(username, password) values(?,?)");
sql
.setString(1, user
);sql
.setString(2, password
);sql
.executeUpdate();return true;} else {return false;}}public void Delete(String user
, String password
) throws SQLException
, ClassNotFoundException
{connection
= this.getConnection();boolean result
= this.Select(user
, password
);if (!result
) {sql
= connection
.prepareStatement("delete from library.db_賬戶 where username=?");sql
.setString(1, user
);
sql
.executeUpdate();}}public void UpData(String user
, String passWord
) throws SQLException
, ClassNotFoundException
{connection
= this.getConnection();sql
= connection
.prepareStatement("update library.db_賬戶 set username=? where password=?");sql
.setString(1, user
);sql
.setString(2, passWord
);sql
.executeUpdate();}public String
AddBook(String bookName
, String bookAuthor
, String bookTime
, int number
) throws SQLException
, ClassNotFoundException
{connection
= this.getConnection();sql
= connection
.prepareStatement("insert into library.db_book(BookName, BookAuthor, BookTime, BookNumber) values(?,?,?,?)");sql
.setString(1, bookName
);sql
.setString(2, bookAuthor
);sql
.setString(3, bookTime
);sql
.setInt(4, number
);sql
.executeUpdate();return "添加書籍成功";}public boolean SelectBook(String bookName
) throws SQLException
, ClassNotFoundException
{connection
= this.getConnection();sql
= connection
.prepareStatement("select *from library.db_book ");resultSet
= sql
.executeQuery();int flag
= 0;while (resultSet
.next()) {String book
= resultSet
.getString("BookName");if (bookName
.equals(book
))flag
= 1;}if (flag
== 1)return true;elsereturn false;}public void DeleteBook(String bookName
) throws SQLException
, ClassNotFoundException
{connection
= this.getConnection();sql
= connection
.prepareStatement("delete from library.db_book where BookName=?");sql
.setString(1, bookName
);
sql
.executeUpdate();}
}
總結
以上是生活随笔為你收集整理的javaSwing+MySQl实现图书馆登录页面(完整)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。