啊啊啊我好菜啊 一點點來叭
先設計登陸界面:包含用戶名、密碼等組件(先簡單實現一下功能,等後期在優化界面比如驗證碼的添加什麼的)
然後連接數據庫 在數據庫先建第一張表然後添加一些數據(隨便填了一些)
普通用戶登錄輸入用戶名和密碼,數據庫裏有並且對應上則登陸成功進入普通用戶的操作界面(功能什麼的下次再寫),不存在的登陸失敗,可以註冊。(下一次寫註冊的界面和功能的實現)
管理員我尋思是輸入特定的用戶名和密碼纔可以登陸成功,但是功能界面什麼的意思差不多最後再寫這個。
先寫這些吧!
sql server用戶表的建立:
CREATE TABLE PY
(ID CHAR(10), //用戶名
PAWD CHAR(20) //密碼
);
登錄界面:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
public class 界面 extends JFrame{
/**
*
*/
private static final long serialVersionUID = 1L;
public 界面()
{
setTitle("登錄");
setBak(); //調用背景方法
JPanel jp = new JPanel(); //創建個JPanel
jp.setOpaque(false); //把JPanel設置爲透明 這樣就不會遮住後面的背景 這樣你就能在JPanel隨意加組件了
this.add(jp);
Dimension screensize = Toolkit.getDefaultToolkit().getScreenSize();
int x = (int)screensize.getWidth();
int y = (int)screensize.getHeight();
//獲取屏幕的長寬並將界面設置成該大小
this.setSize(x,y);
jp.setLayout(new BorderLayout());
JLabel jj=new JLabel("歡迎進入用戶管理系統!");
jj.setFont(new Font("宋體",Font.PLAIN,45));//設置字體的字體,樣子,大小
jp.add(jj,BorderLayout.NORTH); //在整體佈局的上方
jj.setHorizontalAlignment(SwingConstants.CENTER);//居中
jj.setPreferredSize(new Dimension(0,500)); //寬度300
JLabel j1_useranme=new JLabel("請輸入用戶名");
j1_useranme.setFont(new Font("宋體",Font.PLAIN,20));
JTextField ja_username=new JTextField(20);
JLabel j2_useranme=new JLabel("請輸入密碼 ");
j2_useranme.setFont(new Font("宋體",Font.PLAIN,20));
JPasswordField jb_password=new JPasswordField(20);//密碼採用密碼輸入:即輸入後顯示**
JPanel p=new JPanel();
jp.add(p,BorderLayout.CENTER);
p.setLayout(new BorderLayout());//在邊框佈局中的center部分嵌入邊框佈局
JPanel p1=new JPanel();
JPanel p3=new JPanel();
JLabel b=new JLabel(" ");
p1.add(j1_useranme);
p1.add(ja_username);
p3.add(j2_useranme);
p3.add(jb_password);
p.add(b,BorderLayout.NORTH);
p.add(p1,BorderLayout.CENTER);
p.add(p3,BorderLayout.SOUTH);
b.setPreferredSize(new Dimension(0,40));
JButton j3_ok=new JButton("登錄");
j3_ok.addActionListener(new ActionListener() //監聽登錄按鈕
{
public void actionPerformed(ActionEvent e)
{
Jdbcs d = new Jdbcs();
String jusername=ja_username.getText();//獲取賬號
char[] s=jb_password.getPassword();
String jpassword=new String(s); //獲取密碼
d.compare(jusername, jpassword);
}
}
);
JButton j4_register=new JButton("註冊");
j4_register.addActionListener(new ActionListener()//同理,先寫一樣的後期再改
{
public void actionPerformed(ActionEvent e)
{
closeThis();
new PY();
}
});
JPanel p2=new JPanel();
p2.add(j3_ok);
p2.add(j4_register);
p2.setPreferredSize(new Dimension(0,100));
jp.add(p2,BorderLayout.SOUTH);//在整體的下方,兩個按鈕並排
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void setBak()//背景方法
{
((JPanel)this.getContentPane()).setOpaque(false);
ImageIcon img = new ImageIcon("C:\\\\Users\\\\小甘同學\\\\Pictures\\\\2.jpg"); //添加圖片的位置
JLabel background = new JLabel(img);
this.getLayeredPane().add(background, new Integer(Integer.MIN_VALUE));
background.setBounds(0, 0, img.getIconWidth(), img.getIconHeight());
}
public void closeThis()//關閉當前界面方法
{
this.dispose();
}
public static void main(String[] args)
{
new 界面().setVisible(true);
}
}
界面是這樣的:(當然密碼的輸入顯示是****)
連接數據庫:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;
public class Jdbcs {
Connection con = null;
Statement statement = null;
ResultSet res = null;
String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";//加載jbdc驅動
String dbURL="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=SCHOOL";
String userName="sa";
String userPwd="俺的密碼(手動打碼)";
public Jdbcs()
{
try
{
Class.forName(driverName);
System.out.println("加載驅動成功!");
}catch(Exception e){
e.printStackTrace();
System.out.println("加載驅動失敗!");
}
try{
con=DriverManager.getConnection(dbURL,userName,userPwd);
System.out.println("連接數據庫成功!");
}catch(Exception e)
{
e.printStackTrace();
System.out.print("SQL Server連接失敗!");
}
}
public void compare(String username, String password) {
if(username.equals("")||password.equals(""))
{
JOptionPane.showMessageDialog(null,"對不起,請輸入用戶名或密碼.","錯誤!",JOptionPane.ERROR_MESSAGE);
}
else
{
String sql="select * from PY where ID='"+ username +"'";
try {
res = statement.executeQuery(sql);
if(res.next())//如果存在,就驗證密碼
{
if(res.getString("PAWD").equals(password))//如果密碼正確,進入下一個界面
{
new PY();
}
else//錯誤則提示
{
JOptionPane.showMessageDialog(null,"對不起,輸入密碼錯誤.","錯誤!",JOptionPane.ERROR_MESSAGE);
}
}
else//如果用戶名不存在
{
JOptionPane.showMessageDialog(null,"用戶名不存在","錯誤!",JOptionPane.ERROR_MESSAGE);
}
res.close();
con.close();
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
如果用戶名或密碼存在空值:
如果用戶名存在但是密碼錯誤:
如果用戶名不存在:
如果成功的話進入下一個界面:(現在啥也沒有🤷隨便插了個圖片)
就醬🙌