Compare commits

...

5 Commits

@ -0,0 +1,78 @@
package Model.access;
import java.sql.*;
import java.util.Vector;
/**
* 管理员信息表的增删改查
* @author rsw
*
*/
public class AdmiAccess {
/**
* 查询管理员的账号密码
*/
public boolean queryAdmi(String count, String password) throws SQLException {
String sql = "SELECT adm_count,adm_password FROM bookms.administrator WHERE adm_count=? AND adm_password=?";
return Connect.exist(sql, count,password);
}
/**
* 查询指定管理员的信息(含管理员自身信息)
*/
public Vector<Vector<Object>> queryAdmi(String count) throws SQLException {
String sql = "SELECT adm_count,adm_name,adm_id_number,adm_tele,adm_email FROM bookms.administrator WHERE adm_count=? AND issuper='0';";
return Connect.queryExact_public(sql, count);
}
/**
* 查询全部管理员的信息
*/
public Vector<Vector<Object>> seleAdmi() throws SQLException {
String sql = "SELECT adm_count,adm_name,adm_id_number,adm_tele,adm_email FROM bookms.administrator WHERE issuper='0';";
return Connect.queryExact_public(sql);
}
/**
* 删除管理员
*/
public void deleAdmi(String superNumber) throws SQLException {
String sql = "DELETE FROM bookms.administrator WHERE adm_count=?";
Connect.update_public(sql, superNumber);
}
/**
* 修改管理员信息
*/
public void updateAdmi(String adm_tele, String adm_email, String superNumber) throws SQLException {
String sql = "UPDATE bookms.administrator SET adm_tele=?,adm_email=? WHERE adm_count=?";
Connect.update_public(sql, adm_tele, adm_email, superNumber);
}
/**
* 新增管理员
*/
public void insterAdmi(String adm_count, String adm_name, String adm_id_number, String adm_tele, String adm_email,
String adm_keeppass, String adm_password) throws SQLException {
String sql = "INSERT INTO bookms.administrator(adm_count,adm_name,adm_id_number,adm_tele,adm_email,adm_keeppass,adm_password,issuper) VALUES(?,?,?,?,?,?,?,'0')";
Connect.update_public(sql, adm_count, adm_name, adm_id_number, adm_tele, adm_email, adm_keeppass, adm_password);
}
/**
* 修改密码
*/
public void updateAdmiPass(String alterPass, String adm_count, String adm_password, String adm_keeppass)
throws SQLException {
String sql = "UPDATE bookms.administrator SET adm_password='" + alterPass
+ "' WHERE adm_count=? AND adm_password=? AND adm_keeppass=?";
Connect.update_public(sql, adm_count, adm_password, adm_keeppass);
}
/**
* 超级管理员验证
*/
public boolean proveSuper(String count, String password) throws SQLException {
String sql = "SELECT adm_count,adm_password FROM bookms.administrator WHERE adm_count=? AND adm_password=? AND issuper='1'";
return Connect.exist(sql, count,password);
}
}

@ -0,0 +1,90 @@
package Model.table;
/**
* 管理员表的字段 映射
* @author rsw
*/
public class Administrator {
private int adm_id;
private String adm_count;
private String adm_password;
private String adm_name;
private String adm_id_number;
private String adm_tele;
private String adm_email;
private String adm_keeppass;
private boolean issuper;
public int getAdm_id() {
return adm_id;
}
public void setAdm_id(int adm_id) {
this.adm_id = adm_id;
}
public String getAdm_count() {
return adm_count;
}
public void setAdm_count(String adm_count) {
this.adm_count = adm_count;
}
public String getAdm_password() {
return adm_password;
}
public void setAdm_password(String adm_password) {
this.adm_password = adm_password;
}
public String getAdm_name() {
return adm_name;
}
public void setAdm_name(String adm_name) {
this.adm_name = adm_name;
}
public String getAdm_id_number() {
return adm_id_number;
}
public void setAdm_id_number(String adm_id_number) {
this.adm_id_number = adm_id_number;
}
public String getAdm_tele() {
return adm_tele;
}
public void setAdm_tele(String adm_tele) {
this.adm_tele = adm_tele;
}
public String getAdm_email() {
return adm_email;
}
public void setAdm_email(String adm_email) {
this.adm_email = adm_email;
}
public String getAdm_keeppass() {
return adm_keeppass;
}
public void setAdm_keeppass(String adm_keeppass) {
this.adm_keeppass = adm_keeppass;
}
public boolean isIssuper() {
return issuper;
}
public void setIssuper(boolean issuper) {
this.issuper = issuper;
}
}

197
Main

@ -0,0 +1,197 @@
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();
}
}

@ -0,0 +1,223 @@
package View;
import Controller.AdmiCon;
import Tool.PubJdialog;
import Tool.TableTool;
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import java.util.Vector;
/**
* 超级管理员面板
*
* @author rsw
*/
public class ManageSuper implements ActionListener {
JButton[] jbt_super = {new JButton("查询管理员信息"), new JButton("新增管理员信息"), new JButton("删除管理员信息"),
new JButton("修改管理员信息")};
JTextField jtext;
JTable table_super;
JPanel jpan;
DefaultTableModel dfttable_super;
String count, superNumber, adm_tele, adm_email;
String[] columnStr = {"账号", "姓名", "身份证号", "手机号", "邮箱"};
JButton[] jbt_proveSuper = {new JButton("修改个人信息"), new JButton("修改个人密码"), new JButton("超级管理员验证")};
boolean isCompile, refresh;
int row;
Vector<String> columnName;
AdmiCon admiCon = new AdmiCon();
public ManageSuper() {
}
protected JPanel addPanel5(String count) throws SQLException {
this.count = count;
JPanel panel = new JPanel(new BorderLayout());
JPanel jpanup_super = new JPanel();
jpanup_super.setLayout(null);
jpanup_super.setPreferredSize(new Dimension(1000, 300));
panel.setPreferredSize(new Dimension(1000, 700));
jtext = new JTextField();
jtext.setBounds(30, 250, 150, 30);
jtext.setEnabled(false);
for (int i = 0; i < jbt_super.length; i++) {
jbt_super[i].setBounds(200 + i * 160, 250, 150, 30);
jpanup_super.add(jbt_super[i]);
jbt_super[i].setEnabled(false);
jbt_super[i].addActionListener(this);
}
for (int i = 0; i < jbt_proveSuper.length; i++) {
jbt_proveSuper[i].setBounds(200 + i * 180, 100, 150, 30);
jpanup_super.add(jbt_proveSuper[i]);
jbt_proveSuper[i].addActionListener(this);
}
columnName = new Vector<String>();// 字段名
for (int i = 0; i < columnStr.length; i++) {
columnName.add(columnStr[i]);
}
// 设置表格模型的数据
dfttable_super = new DefaultTableModel(admiCon.queryAdmi(count), columnName);
// 设置表格的编辑状态
table_super = new JTable(dfttable_super) {
@Override
public boolean isCellEditable(int row, int column) {
return false;// 表格不允许被编辑
}
};
ListSelectionModel selectionModel = table_super.getSelectionModel();// 创建表格选择器
selectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);// 一次只能选择一个列表索引
selectionModel.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
if (selectionModel.getValueIsAdjusting()) {
if (table_super.getSelectedRow() < 0) {
return;
}
row = table_super.getSelectedRow();
superNumber = table_super.getValueAt(table_super.getSelectedRow(), 0).toString();
adm_tele = table_super.getValueAt(table_super.getSelectedRow(), 3).toString();
adm_email = table_super.getValueAt(table_super.getSelectedRow(), 4).toString();
}
}
});
// 设置表格的公共属性
TableTool.setTable(table_super, dfttable_super);
JScrollPane scrollPane = new JScrollPane(table_super);
jpanup_super.add(jtext);
panel.add(jpanup_super, BorderLayout.NORTH);
panel.add(scrollPane);
return panel;
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
// 查询
if (e.getSource() == jbt_super[0]) {
count = jtext.getText();
// 设置表头
refresh = true;
dfttable_super.fireTableDataChanged();
dfttable_super.setRowCount(0);
try {
if (count.equals("")) {
dfttable_super.setDataVector(admiCon.seleAdmi(), columnName);
} else {
dfttable_super.setDataVector(admiCon.queryAdmi(count), columnName);// 设定模型数据和字段,初始化该表
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
refresh = false;
}
// 新增
else if (e.getSource() == jbt_super[1]) {
boolean is = false;
try {
new PubJdialog(is).setVisible(true);
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
// 删除
else if (e.getSource() == jbt_super[2]) {
if (superNumber != null) {
try {
// 判断删除的管理员账号是否为目前所登录的账号,如果是——弹出对话框、结束程序、打开登录界面
if (superNumber.equals(count)) {
int c = JOptionPane.showConfirmDialog(null, "此账号为您所登录的管理员账号,如果删除此管理员账号,您需要重新登录。是否执行此操作???",
"警告!!!", JOptionPane.WARNING_MESSAGE);
if (c == JOptionPane.YES_OPTION) {
admiCon.deleAdmi(superNumber);
dfttable_super.removeRow(table_super.getSelectedRow());// 删除表格中的这一行
System.exit(0);
new Main();
}
} else {
int c = JOptionPane.showConfirmDialog(null, "是否要删除此账号", "警告!!!", JOptionPane.WARNING_MESSAGE);
if (c == JOptionPane.YES_OPTION) {
admiCon.deleAdmi(superNumber);
dfttable_super.removeRow(table_super.getSelectedRow());// 删除表格中的这一行
}
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} else {
JOptionPane.showMessageDialog(null, "您没有选中管理员!!!", "操作失败", JOptionPane.WARNING_MESSAGE);
}
}
// 更新
else if (e.getSource() == jbt_super[3]) {
JLabel[] jlab_super = {new JLabel("账号:"), new JLabel("手机号:"), new JLabel("邮箱:")};
JTextField[] jtext_super = new JTextField[3];
JLabel[] jlab_hint = {new JLabel("不可修改"), new JLabel("13、14、15、17、18开头"), new JLabel("邮箱格式")};
Object[] superUpdata = {superNumber, adm_tele, adm_email};
if (superNumber != null) {
try {
new PubJdialog(150, 3, jlab_super, jtext_super, superUpdata, 10, jlab_hint).setVisible(true);
if (PubJdialog.success) {
table_super.setValueAt(jtext_super[1].getText(), row, 3);
table_super.setValueAt(jtext_super[2].getText(), row, 4);
PubJdialog.success = false;
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} else {
JOptionPane.showMessageDialog(null, "您没有选中管理员!!!", "操作失败", JOptionPane.ERROR_MESSAGE);
}
}
// 修改个人信息
else if (e.getSource() == jbt_proveSuper[0]) {
JLabel[] jlab_super = {new JLabel("账号:"), new JLabel("手机号:"), new JLabel("邮箱:")};
JLabel[] jlab_hint = {new JLabel("不可修改"), new JLabel("13、14、15、17、18开头"), new JLabel("邮箱格式")};
JTextField[] jtext_super = new JTextField[3];
try {
Object[] superUpdata = {count, admiCon.queryAdmi(count).elementAt(0).elementAt(3),
admiCon.queryAdmi(count).elementAt(0).elementAt(4)};
new PubJdialog(150, 3, jlab_super, jtext_super, superUpdata, 10, jlab_hint).setVisible(true);
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
// 修改个人密码
else if (e.getSource() == jbt_proveSuper[1]) {
new PubJdialog(count, false).setVisible(true);
}
// 超级管理员验证
else if (e.getSource() == jbt_proveSuper[2]) {
try {
new PubJdialog(jtext, jbt_super).setVisible(true);
if (PubJdialog.success) {
dfttable_super.setDataVector(admiCon.seleAdmi(), columnName);
for (int i = 0; i < jbt_proveSuper.length; i++) {
jbt_proveSuper[i].setEnabled(false);// 超级管理员验证成功,个人管理员信息按钮不可用
}
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
superNumber = TableTool.setNull(table_super, superNumber);
}
}

@ -0,0 +1,74 @@
package Controller;
import java.sql.SQLException;
import java.util.Vector;
import Model.access.AdmiAccess;
/**
* 管理员表的控制器
* @author rsw
*
*/
public class AdmiCon {
AdmiAccess admiDao = new AdmiAccess();
/**
* 管理员登录
*/
public boolean queryAdmi(String count, String password) throws SQLException {
boolean findAdmi = admiDao.queryAdmi(count, password);
return findAdmi;
}
/**
* 查询指定管理员的信息(含管理员自身信息)
*/
public Vector<Vector<Object>> queryAdmi(String count) throws SQLException {
return admiDao.queryAdmi(count);
}
/**
* 查询全部管理员的信息
*/
public Vector<Vector<Object>> seleAdmi() throws SQLException {
return admiDao.seleAdmi();
}
/**
* 删除管理员
*/
public void deleAdmi(String superNumber) throws SQLException {
admiDao.deleAdmi(superNumber);
}
/**
* 修改管理员信息
*/
public void updateAdmi(String adm_tele, String adm_email, String superNumber) throws SQLException {
admiDao.updateAdmi(adm_tele, adm_email, superNumber);
}
/**
* 新增管理员
*/
public void insterAdmi(String adm_count, String adm_name, String adm_id_number, String adm_tele, String adm_email,
String adm_keeppass, String adm_password) throws SQLException {
admiDao.insterAdmi(adm_count, adm_name, adm_id_number, adm_tele, adm_email, adm_keeppass, adm_password);
}
/**
* 修改密码
*/
public void updateAdmiPass(String alterPass, String adm_count, String adm_password, String adm_keeppass)
throws SQLException {
admiDao.updateAdmiPass(alterPass, adm_count, adm_password, adm_keeppass);
}
/**
* 超级管理员验证
*/
public boolean proveSuper(String count, String password) throws SQLException {
return admiDao.proveSuper(count, password);
}
}
Loading…
Cancel
Save