基于java和mysql的swing+mysql图书管理系统图书借阅(java+swing+mysql)
·
基于java和mysql的swing+mysql图书管理系统图书借阅(java+swing+mysql)
私信源码获取及调试交流
私信源码获取及调试交流
运行环境
Java≥8、MySQL≥5.7
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于java的Swing+MySQL图书管理系统图书借阅(java+swing+mysql)
管理员:
admin 123456
用户:
Jerry 123456
Tom 123456
图书管理系统
图书管理系统进行了对图书的增删改查,对用户的增删改,分为用户和管理员两个界面,管理员比用户多了两个选项卡来进行账户和图书的管理
/*面板3中的查询下拉框*/
Dimension dimension = new Dimension(220,30);
JComboBox<String> j = new JComboBox<>();
j.setSize(dimension);
j.addItem("按照书名查询");
j.addItem("按照借阅人查询");
j.addItem("按照编号查询");
j.setBounds(140, 100,220, 30);
j.setBackground(Color.pink );
j.setFont(font1);
/*面板3中的搜索框*/
JTextField text3 = new JTextField();
Dimension dimension1 = new Dimension(270,30);
text3.setFont(font1);
text3.setSize(dimension1);
text3.setBackground(Color.pink);
text3.setBounds(390,100, 270, 30);
/*按钮*/
JButton button = new JButton("搜索");
button.setBackground(Color.pink);
button.setBounds(670, 100, 120, 30);
button.setFont(font2);
model = new DefaultTableModel();
model.addColumn("图书编号", new Vector<Integer>());
model.addColumn("书名", new Vector<String>());
model.addColumn("借阅人", new Vector<String>());
model.addColumn("日期", new Vector<Date>());
model.addColumn("借阅状态", new Vector<String>());
JTable table = new JTable(model);
jp = new JScrollPane(table);
jp.setBounds(90, 160, 800, 500);
/*显示所有结束记录*/
ABorrowHistory abh = new ABorrowHistory();
Connection con;
ResultSet rs;
PreparedStatement ps;
ConnectData cd = new ConnectData();
con = cd.connect();
ps = con.prepareStatement(sql);
book= "%"+book+"%";
ps.setString(1, book);
rs = ps.executeQuery();
while(rs.next()) {
int BookNo = rs.getInt(1);
String Book = rs.getString(2);
String Author = rs.getString(3);
String Lend = rs.getString(4);
model.addRow(new Vector<>(Arrays.asList(BookNo,Book,Author,Lend)));
}
con.close();
}
/*按照作者搜索图书*/
public void authorSelect(DefaultTableModel model,String author) throws Exception{
String sql = "select * from bookmanage where Author like ?";
Connection con;
ResultSet rs;
PreparedStatement ps;
ConnectData cd = new ConnectData();
con = cd.connect();
ps = con.prepareStatement(sql);
author = "%" + author + "%";
ps.setString(1, author);
rs = ps.executeQuery();
while(rs.next()) {
int BookNo = rs.getInt(1);
String Book = rs.getString(2);
String Author = rs.getString(3);
String Lend = rs.getString(4);
model.addRow(new Vector<>(Arrays.asList(BookNo,Book,Author,Lend)));
}
con.close();
}
/*按照编号搜索图书*/
public void idSelect(DefaultTableModel model,int id) throws Exception{
String sql = "select * from bookmanage where BookNo = ?";
Connection con;
ResultSet rs;
PreparedStatement ps;
ConnectData cd = new ConnectData();
con = cd.connect();
ps = con.prepareStatement(sql);
ps.setInt(1, id);
rs = ps.executeQuery();
while(rs.next()) {
int BookNo = rs.getInt(1);
String Book = rs.getString(2);
String Author = rs.getString(3);
String regex = "\\p{Alnum}";
int t = 0;
try {
t = compare(username);
} catch (Exception e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
/*用户名不能为空*/
if(username.length() == 0) {
JOptionPane.showMessageDialog(null, "用户名不能为空", "警告", JOptionPane.WARNING_MESSAGE);
}else if(t == 1) {
/*用户已存在*/
JOptionPane.showMessageDialog(null, "用户名已存在", "警告", JOptionPane.WARNING_MESSAGE);
}else if((password.length()<6||password.length()>12)||password.matches(regex)) {
/*输入密码由6-12位数字,字符组成*/
JOptionPane.showMessageDialog(null, "输入密码不符合要求", "警告", JOptionPane.WARNING_MESSAGE);
}else if(!(password.equals(repassword))) {
//两次输入密码不一样时弹出警告对话框
JOptionPane.showMessageDialog(null, "您输入的两次密码不相同", "警告",JOptionPane.ERROR_MESSAGE);
}else if(name.length() == 0) {
/*姓名不能为空*/
JOptionPane.showMessageDialog(null, "姓名不能为空", "警告", JOptionPane.WARNING_MESSAGE);
}else {
/*把注册信息添加到数据库*/
try {
insert(username,password,name);
JOptionPane.showMessageDialog(null, "注册成功!", "注册", JOptionPane.PLAIN_MESSAGE);
f.dispose();
SignMenu sm = new SignMenu();
sm.init();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
});
f.add(label);
});
/*选中行监听*/
table.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
selectrow = table.getSelectedRow();
bookid = (int) table.getValueAt(selectrow, 0);//获取所选书本编号
bookname = (String) table.getValueAt(selectrow, 1);//获取所选书名
lend= (String) table.getValueAt(selectrow, 3);//获取所选书本状态
}
});
borroww = "借出";
returnn = "退还";
/*添加图书*/
button1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new AddBook(model);
}
});
/*修改图书*/
button3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new FixBook(model,bookid);
}
});
/*删除图书*/
button2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
new DeleteBook(model,bookid,bookname);
}
JTableHeader head = table.getTableHeader();//创建表格表头对象
head.setPreferredSize(new Dimension(head.getWidth(),35));//设置表头框框大小
head.setFont(new Font("宋体",Font.BOLD,15));//设置表格字体
table.setRowHeight(30);//设置表格行宽
table.setFont(new Font("宋体",Font.ROMAN_BASELINE,13));//设置表格行中字体大小
/*使单元格中的内容居中*/
DefaultTableCellRenderer renderer=new DefaultTableCellRenderer();
renderer.setHorizontalAlignment(DefaultTableCellRenderer.CENTER);
table.setDefaultRenderer(Object.class, renderer);
/*添加复选框*/
table.getColumnModel().getColumn(4).setCellRenderer(new TableCellRenderer() {
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus,int row, int column) {
/*定义复选框*/
box = new JCheckBox();
/*使具有焦点的行对应的复选框被选中*/
box.setSelected(isSelected);
/*使复选框在表格中居中*/
box.setHorizontalAlignment((int)0.5f);
return box;
}
});
JButton button1 = new JButton("还书");
JButton button2 = new JButton("借阅");
button1.setFont(font2);
button2.setFont(font2);
button1.setBackground(Color.pink);
button1.setBounds(240, 630, 170, 40);
button2.setBackground(Color.pink);
button2.setBounds(520,630, 170, 40);
/*把组件放在分层窗格里*/
laypane.add(label, new Integer(0),0);
laypane.add(lab3,new Integer(150),1);
laypane.add(j,new Integer(100),2);
laypane.add(text3,new Integer(100),3);
laypane.add(button, new Integer(100),4);
laypane.add(jp, new Integer(200), 5);
laypane.add(button1, new Integer(630),6);
laypane.add(button2, new Integer(630),7);
/*确认密码文本框*/
JPasswordField textrepass = new JPasswordField();
textrepass.setFont(font2);
textrepass.setSize(d);
textrepass.setBounds(300, 350, 350, 45);
panel.add(textrepass);
/*修改姓名标签*/
JLabel name = new JLabel("姓名:");
name.setFont(font2);
name.setBounds(300, 410, 600, 30);
panel.add(name);
/*修改姓名文本框*/
JTextField textname = new JTextField();
textname.setFont(font2);
textname.setSize(d);
textname.setBounds(300, 460, 350, 45);
panel.add(textname);
/*确定修改按钮*/
JButton button = new JButton("确定修改");
Font font = new Font("宋体",Font.BOLD,16);
button.setFont(font);
button.setForeground(Color.WHITE);
button.setBackground(Color.PINK);
button.setBounds(300, 550, 350, 50);
panel.add(button);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
password1 = textprepass.getText().trim();
password2 = textpass.getText().trim();
password3 = textrepass.getText().trim();
borrowname = textname.getText().trim();
String regex = "\\p{Alnum}";
ChangeInfoData ci = new ChangeInfoData();
try {
flag = ci.checkPass(borrower, password1);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
if(flag==1) {
con = cd.connect();
String sql = "select * from user where username = ?";
ps = con.prepareStatement(sql);
ps.setString(1, username);
rs = ps.executeQuery();
while(rs.next()) {
return 1;
}
con.close();
return 0;
}
}
public class FixBook {
public FixBook(DefaultTableModel model,int id) {
JFrame f = new JFrame();
f.setSize(500, 500);
f.setLocationRelativeTo(null);
f.setLayout(null);
f.setTitle("修改图书");
//改变窗口图标
Toolkit tool = Toolkit.getDefaultToolkit();
Image img = tool.getImage("picture\\sign.jpg");
f.setIconImage(img);
/*设置窗口背景图案*/
Icon i = new ImageIcon("picture\\admin_background.jpg");
JLabel label = new JLabel(i);
label.setBounds(0, 0, 500, 500);
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
JPanel panel3 = new JPanel();
JPanel panel4 = new JPanel();
JPanel panel5 = new JPanel();
Font font = new Font("宋体",Font.BOLD,30);
Font font1 = new Font("宋体",Font.PLAIN,20);
Dimension dimension = new Dimension(300,40);
public class ChangeBook extends JFrame{
private String book;
private String author;
private int id;
public JLayeredPane laypane1 = new JLayeredPane();
private DefaultTableModel model;
private String select ;
private JCheckBox box;
private int selectrow;
private int selectcolumn;
public int bookid;//书的编号
public Date borrowtime;//借阅时间
private String borrower;//借阅人
public class AddBook {
public AddBook(DefaultTableModel model) {
JFrame f = new JFrame();
f.setSize(500, 500);
f.setLocationRelativeTo(null);
f.setLayout(null);
f.setTitle("添加图书");
//改变窗口图标
Toolkit tool = Toolkit.getDefaultToolkit();
Image img = tool.getImage("picture\\sign.jpg");
f.setIconImage(img);
/*设置窗口背景图案*/
Icon i = new ImageIcon("picture\\admin_background.jpg");
JLabel label = new JLabel(i);
label.setBounds(0, 0, 500, 500);
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
JPanel panel3 = new JPanel();
JPanel panel4 = new JPanel();
JPanel panel5 = new JPanel();
Font font = new Font("宋体",Font.BOLD,30);
Font font1 = new Font("宋体",Font.PLAIN,20);
Dimension dimension = new Dimension(300,40);
Dimension dimension1 = new Dimension(200,40);
/*书名标签*/
JLabel labbook = new JLabel("书名:");
labbook.setFont(font);
panel1.add(labbook);
panel1.setBounds(50, 30, 200, 60);
/*书名输入文本框*/
JTextField textbook = new JTextField(12);
panel2.setLayout(null);
textbook.setSize(dimension);
textbook.setFont(font1);
panel2.add(textbook);
textname.setOpaque(false);
textusername.setOpaque(false);
panel1.setOpaque(false);
panel2.setOpaque(false);
panel3.setOpaque(false);
panel4.setOpaque(false);
panel5.setOpaque(false);
f.setVisible(true);
}
}
public class FixPass {
public FixPass() {
JFrame f = new JFrame();
f.setSize(500, 500);
f.setLocationRelativeTo(null);
f.setLayout(null);
f.setTitle("修改密码");
//改变窗口图标
Toolkit tool = Toolkit.getDefaultToolkit();
Image img = tool.getImage("picture\\sign.jpg");
f.setIconImage(img);
String sql = "select * from bookmanage where Book like ?";
Connection con;
ResultSet rs;
PreparedStatement ps;
ConnectData cd = new ConnectData();
con = cd.connect();
ps = con.prepareStatement(sql);
book= "%"+book+"%";
ps.setString(1, book);
rs = ps.executeQuery();
while(rs.next()) {
int BookNo = rs.getInt(1);
String Book = rs.getString(2);
String Author = rs.getString(3);
String Lend = rs.getString(4);
model.addRow(new Vector<>(Arrays.asList(BookNo,Book,Author,Lend)));
}
con.close();
}
/*按照作者搜索图书*/
public void authorSelect(DefaultTableModel model,String author) throws Exception{
String sql = "select * from bookmanage where Author like ?";
Connection con;
ResultSet rs;
PreparedStatement ps;
ConnectData cd = new ConnectData();
con = cd.connect();
ps = con.prepareStatement(sql);
author = "%" + author + "%";
ps.setString(1, author);
rs = ps.executeQuery();
while(rs.next()) {
int BookNo = rs.getInt(1);
String Book = rs.getString(2);
String Author = rs.getString(3);
String Lend = rs.getString(4);
model.addRow(new Vector<>(Arrays.asList(BookNo,Book,Author,Lend)));
}
con.close();
}
/*按照编号搜索图书*/
public void idSelect(DefaultTableModel model,int id) throws Exception{
f.add(panel6);
id.setOpaque(false);
password.setOpaque(false);
panel1.setOpaque(false);
panel2.setOpaque(false);
panel3.setOpaque(false);
panel4.setOpaque(false);
panel5.setOpaque(false);
panel6.setOpaque(false);
f.add(jLable);
/*用户类型*/
select = "普通用户";
j.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if(e.getStateChange() == ItemEvent.SELECTED) {
select = (String) e.getItem();
}
}
});
/*点击注册跳转到注册界面*/
button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
f.dispose();
Regest r = new Regest();
try {
r.show();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
/*登陆信息比对*/
button2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
text = j.getToolTipText();
username = id.getText().trim();
password1 = password.getText().trim();
Icon i = new ImageIcon("picture\\regist.jpg");
JLabel label = new JLabel(i);
label.setBounds(0, 0, 400, 500);
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
JPanel panel3 = new JPanel();
JPanel panel4 = new JPanel();
JPanel panel5 = new JPanel();
JPanel panel6 = new JPanel();
JPanel panel7 = new JPanel();
//界面文字的字体,字形,字号
Font font = new Font("宋体",Font.BOLD,15);
//界面框框的字体,字形,字号
Font font2 = new Font("宋体",Font.BOLD,25);
Dimension dimension = new Dimension(200,30);
panel1.setLayout(null);
/*返回按钮*/
JButton rebutton = new JButton("返回");
Font font4 = new Font("宋体",Font.BOLD,12);
rebutton.setFont(font4);
Dimension dimension1 = new Dimension(60,40);
rebutton.setPreferredSize(dimension1);
rebutton.setBackground(Color.white);
rebutton.setBounds(0, 0, 60, 40);
panel1.add(rebutton);
f.add(panel1);
//添加注册大标题
JLabel regist = new JLabel("注册");
Font font1 = new Font("宋体",Font.BOLD,36);
regist.setFont(font1);
regist.setBounds(150, 10, 400, 70);
panel1.add(regist);
panel1.setBounds(0, 0, 400, 70);
//添加用户名标签
JLabel labname = new JLabel(" 用户名:");
labname.setFont(font);
panel2.add(labname);
//添加用户名文本框
JTextField textname = new JTextField();
panel3.setBounds(50, 160, 200, 60);
/*作者输入文本框*/
JTextField textauthor = new JTextField(12);
panel4.setLayout(null);
textauthor.setSize(dimension);
textauthor.setFont(font1);
panel4.add(textauthor);
panel4.setBounds(100, 220, 500, 50);
/*添加按钮*/
JButton button = new JButton("确定修改");
button.setPreferredSize(dimension1);
button.setBackground(Color.PINK);
button.setFont(new Font("宋体",Font.BOLD,25));
panel5.add(button);
panel5.setBounds(150, 300, 200, 100);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String book = textbook.getText().trim();
String author = textauthor.getText().trim();
ManageBook mb = new ManageBook();
try {
mb.changeBook(id, book);
mb.changeAuthor(id, author);
JOptionPane.showMessageDialog(null, "修改成功", "修改", JOptionPane.PLAIN_MESSAGE);
BookData bd = new BookData();
try {
model.setRowCount(0);
bd.selectAll(model);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} catch (Exception e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
}
});
f.add(panel1);
f.add(panel2);
f.add(panel3);
f.add(panel4);
f.add(panel5);
f.add(label);
textbook.setOpaque(false);
textname1.setPreferredSize(dimension);
panel5.add(textname1);
panel5.setBounds(10, 270, 300, 70);
f.add(panel5);
/*添加注册按钮*/
JButton button = new JButton("注册");
Font font5 = new Font("宋体",Font.BOLD,25);
button.setFont(font5);
Dimension dimension2 = new Dimension(200,40);
button.setPreferredSize(dimension2);
button.setBackground(Color.pink);
panel6.add(button);
panel6.setBounds(100, 340, 200, 50);
f.add(panel6);
//把组件设置为透明
textname.setOpaque(false);
textpassword.setOpaque(false);
textpassword1.setOpaque(false);
textname1.setOpaque(false);
panel1.setOpaque(false);
panel2.setOpaque(false);
panel3.setOpaque(false);
panel4.setOpaque(false);
panel5.setOpaque(false);
panel6.setOpaque(false);
/*返回登陆界面*/
rebutton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
f.dispose();
SignMenu sm = new SignMenu();
sm.init();
}
});
select = "普通用户";
j.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if(e.getStateChange() == ItemEvent.SELECTED) {
select = (String) e.getItem();
}
}
});
/*点击注册跳转到注册界面*/
button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
f.dispose();
Regest r = new Regest();
try {
r.show();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
/*登陆信息比对*/
button2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
text = j.getToolTipText();
username = id.getText().trim();
password1 = password.getText().trim();
try {
flag = select(username,password1);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
if(flag == 1) {//密码输入正确
name = id.getText().trim();
if(select == "普通用户") {
f.dispose();
new User(name);
}else if(select == "管理员用户") {
flag = 0;








更多推荐


所有评论(0)