You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
library/Main

198 lines
8.1 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package View;
import Controller.AdmiCon;
import Controller.ReaderCon;
import Model.table.Administrator;
import Tool.InputLimit;
import Tool.MD5Tool;
import Tool.PubJdialog;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.sql.SQLException;
import java.text.ParseException;
/**
* 登录界面
*
* @author rsw
*/
public class Main extends JFrame implements ActionListener {
boolean isuser = true;
String count;
final int WIDTH = 800, HEIGHT = 530;
boolean identity;// 确定是否为用户 identity身份
int type;
JPanel panel = new JPanel();
JTextField jtext = new JTextField();
JPasswordField jpassword = new JPasswordField();
JLabel backImage;
JLabel[] jlab = {new JLabel("账号:"), new JLabel("密码:")};// 声明标签数组
Font fnt = new Font("Microsoft YaHei", Font.BOLD, 20);
JButton jbt_lading, jbt_login, jbt_forgetPass;
JRadioButton jrb1 = new JRadioButton("用户");
JRadioButton jrb2 = new JRadioButton("管理员");
AdmiCon admiCon = new AdmiCon();
Administrator admi = new Administrator();
ReaderCon readercon = new ReaderCon();
/*
* 登录界面
*/
public Main() {
ButtonGroup grp = new ButtonGroup();// 实例化单选按钮组
backImage = new JLabel(new ImageIcon(""));
panel.setLayout(null);// 取消默认布局管理器
jbt_lading = new JButton("登录");// 登录按钮
jbt_lading.setFont( new Font("黑体", Font.PLAIN, 20));
jbt_login = new JButton("注册");// 注册按钮
jbt_login.setFont(new Font("黑体", Font.PLAIN, 20));
jbt_forgetPass = new JButton("忘记密码");
jbt_forgetPass.setFont(new Font("黑体", Font.PLAIN, 20));
this.setLayout(null);
this.setTitle("图书管理系统");
this.setSize(WIDTH, HEIGHT);
this.setLocationRelativeTo(null);// 设置窗体居中显示
this.setResizable(false);// 窗口不能改变大小
this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);// 关闭窗口不执行任何操作
this.setVisible(true);// 使窗口显示
jtext.setBounds(250, 200, 250, 40);
jpassword.setBounds(250, 260, 250, 40);
jtext.setFont(fnt);
jpassword.setFont(fnt);
jtext.setDocument(new InputLimit(16));
jpassword.setDocument(new InputLimit(16));// 匿名调用工具类——“限制输入”工具限制输入16位
panel.setBounds(0, 0, WIDTH, HEIGHT);
jbt_lading.setBounds(280, 330, 200, 40);
jbt_login.setBounds(510, 200, 120, 40);
jbt_forgetPass.setBounds(510, 260, 120, 40);
jbt_login.setFocusable(false);// 去焦点
jlab[0].setBounds(180, 200, 80, 40);
jlab[1].setBounds(180, 260, 80, 40);
jlab[0].setFont(fnt);
jlab[1].setFont(fnt);
backImage.setSize(WIDTH, HEIGHT);
jlab[0].setHorizontalAlignment(0);// 设置水平对齐方式 0居中
jlab[1].setHorizontalAlignment(0);
jrb1.setBounds(270, 150, 100, 40);
jrb2.setBounds(370, 150, 100, 40);
jrb1.setSelected(true);//设置用户单选按钮默认被选中
jrb1.setFont(new Font("黑体", Font.PLAIN, 20));
jrb2.setFont(new Font("黑体", Font.PLAIN, 20));
grp.add(jrb1);// 将单选按钮添加到单选按钮组中(保证单选)
grp.add(jrb2);
panel.add(jrb1);
panel.add(jrb2);
panel.add(jtext);
panel.add(jpassword);
panel.add(jbt_lading);
panel.add(jbt_login);
panel.add(jbt_forgetPass);
panel.add(jlab[0]);
panel.add(jlab[1]);
panel.add(backImage);
this.add(panel);
jrb1.addActionListener(this);// 设置单选框的监听者
jrb2.addActionListener(this);
jbt_lading.addActionListener(this);// 设置按钮的监听者
jbt_login.addActionListener(this);
jbt_forgetPass.addActionListener(this);
jtext.addActionListener(this);// 设置账号监听者
jpassword.addActionListener(this);// 设置密码监听者
jtext.addFocusListener(new InputLimit(jtext, ""));// 设置文诓提示的外部类监听
// 点击结束程序时,弹出对话框
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
int c = JOptionPane.showConfirmDialog(null, "是否要退出系统程序", "操作验证", JOptionPane.YES_NO_OPTION);
if (c == JOptionPane.YES_OPTION) {
System.exit(0);
}
}
});
}
@Override
public void actionPerformed(ActionEvent e) {
Object obj = e.getSource();
String number = jtext.getText();
String password = MD5Tool.string2MD5(new String(jpassword.getPassword()));
boolean resurt = InputLimit.regular("^[0-9a-zA-Z]{2,16}$", number);// 调用工具类中的验证正则的方法,传递正则和验证正则的文本
/*
* 管理员不可注册
*/
if (obj == jrb1) {
isuser = true;
jbt_login.setVisible(true);
jbt_forgetPass.setVisible(true);
panel.add(jbt_login);
panel.add(jbt_forgetPass);
jbt_login.repaint();
jbt_forgetPass.repaint();
jtext.addFocusListener(new InputLimit(jtext, ""));// 设置文诓提示的外部类监听
} else if (obj == jrb2) {
isuser = false;
jbt_login.setVisible(false);
jbt_forgetPass.setVisible(false);
panel.remove(jbt_login);
panel.remove(jbt_forgetPass);
jtext.addFocusListener(new InputLimit(jtext, ""));// 设置文诓提示的外部类监听
}
/*
* 判断登录的账号密码信息 加入正则验证
*/
if (obj == jbt_lading) {// 登录按钮
try {
if (number.equals("") || password.equals("")) { // 判断输入是否为空
JOptionPane.showMessageDialog(null, "输入数据为空", "输入错误", JOptionPane.ERROR_MESSAGE);
} else if (resurt) {
if (readercon.queryRerader(number, password) && isuser == true) {
count = number;// 将登录正确的账号传回数据库,方便查询信息,确保是哪个用户
new UserFace(count);
this.dispose();
} else if (admiCon.queryAdmi(number, password) && isuser == false) {
count = number;
new ManageFace(count);
this.dispose();
} else {
JOptionPane.showMessageDialog(null, "用户名或密码输入错误", "信息错误", JOptionPane.ERROR_MESSAGE);
jpassword.setText(null);
}
} else {
JOptionPane.showMessageDialog(null, "请输入6-16位的数字或者字母", "输入格式错误", JOptionPane.ERROR_MESSAGE);
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} else if (obj == jbt_login) {
try {
new Login();
this.dispose();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} else if (obj == jbt_forgetPass) {
JLabel[] jlab_forget = {new JLabel("学号:"), new JLabel("密保:")};
JTextField[] jtext_forget = new JTextField[2];
try {
new PubJdialog(jlab_forget, jtext_forget).setVisible(true);
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
public static void main(String[] args) throws ParseException {
new Main();
}
}