基于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;

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐