⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bookflow.java

📁 这是一个简单的图书管理系统,适用于教学中演示,讲解java高级编程语言
💻 JAVA
字号:
package lib_source;
import javax.swing.*;
import javax.swing.border.BevelBorder;
import java.awt.*;
import java.awt.event.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class BookFlow extends JFrame implements ActionListener {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public static final int WIDTH = 410;

	public static final int HEIGHT = 390;

	public JTextField[] text = new JTextField[11];

	public JTabbedPane HelpPanel;

	String dbURL = "jdbc:odbc:Student2007";

	String user = "devon";

	String password = "book";

	public BookFlow() {
		setSize(WIDTH, HEIGHT);
		setResizable(false);
		setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				dispose();
			}
		});
		setTitle("图书流通");
		Container content = getContentPane();
		content.setLayout(new BorderLayout());
		JButton[] button = new JButton[3];
		HelpPanel = new JTabbedPane();
		content.add(HelpPanel, BorderLayout.NORTH);
		JPanel jPanel;
		JPanel[] tempPanel;
		String[] str2 = { "图书ID号 ", "读者ID号 ", "图书书名 ", "图书作者 ", "出借日期 " };
		JLabel[] label;
		JPanel panel;
		JPanel pane;
		String[] str3 = { "           清除          ", "    返回主界面    ",
				"           出库          ", "      锁定屏幕      ",
				"          退出           " };
		String[][] str4 = { { "images/sky2_065.jpg", "images/风景08.jpg" },
				{ "images/cz05.jpg", "images/cz06.jpg" } };
		label = new JLabel[5];
		tempPanel = new JPanel[5];
		label = new JLabel[5];
		button = new JButton[5];
		for (int j = 0; j < 2; j++) {
			jPanel = new JPanel();
			jPanel.setBorder(new BevelBorder(BevelBorder.RAISED));
			jPanel.setLayout(new BorderLayout());
			panel = new JPanel();
			panel.setLayout(new FlowLayout());
			panel.setBorder(new BevelBorder(BevelBorder.RAISED));
			if (j == 1) {
				str2 = new String[6];
				str2[0] = "图书ID号 ";
				str2[1] = "读者ID号 ";
				str2[2] = "图书书名 ";
				str2[3] = "图书作者 ";
				str2[4] = "归还日期 ";
				str2[5] = "罚款         ";
				label = new JLabel[6];
				tempPanel = new JPanel[6];
				label = new JLabel[6];
			}
			for (int i = 0; i < str2.length; i++) {
				tempPanel[i] = new JPanel();
				tempPanel[i].setLayout(new FlowLayout());
				tempPanel[i].setBorder(new BevelBorder(BevelBorder.RAISED));
				label[i] = new JLabel(str2[i]);
				tempPanel[i].add(label[i]);
				text[i + 5 * j] = new JTextField(16);
				text[i + 5 * j].setBorder(new BevelBorder(BevelBorder.LOWERED));
				if (i > 1)
					text[i + 5 * j].setEditable(false);
				tempPanel[i].add(text[i + 5 * j]);
				panel.add(tempPanel[i]);

			}
			if (j == 0)
				panel.add(new JLabel(new ImageIcon(ClassLoader.getSystemResource("images/瀑布.jpg"))));
			if (j == 1) {
				panel.add(new JLabel(new ImageIcon(ClassLoader.getSystemResource("images/瀑布1.jpg"))));

			}
			jPanel.add(panel, BorderLayout.CENTER);
			pane = new JPanel();
			pane.setBorder(new BevelBorder(BevelBorder.RAISED));
			panel = new JPanel();
			panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
			panel.setBorder(new BevelBorder(BevelBorder.RAISED));
			if (j == 1)
				str3[2] = "           入库          ";
			for (int i = 0; i < 2; i++)
				panel.add(new JLabel(new ImageIcon(ClassLoader.getSystemResource(str4[j][i]))));

			for (int i = 0; i < str3.length; i++) {
				button[i] = new JButton(str3[i]);
				button[i].addActionListener(this);
				panel.add(button[i]);
			}
			pane.add(panel);
			jPanel.add(panel, BorderLayout.EAST);
			if (j == 0)
				HelpPanel.add("借书", jPanel);
			else if (j == 1)
				HelpPanel.add("还书", jPanel);
		}
		/**String[] s = { "        请寻找管理员帮助或仔细", "        查看本图书管理系统的说明!",

		"               谢谢使用!" };
		label = new JLabel[s.length];
		jPanel = new JPanel();
		jPanel.setBorder(new BevelBorder(BevelBorder.RAISED));
		jPanel.setLayout(new BoxLayout(jPanel, BoxLayout.Y_AXIS));
		jPanel.add(new JLabel(new ImageIcon("船.gif"), JLabel.CENTER));
		for (int i = 0; i < s.length; i++) {
			label[i] = new JLabel(s[i], JLabel.CENTER);
			label[i].setFont(new Font("黑体", Font.PLAIN, 20));
			jPanel.add(label[i]);
		}*/jPanel = new JPanel();
		//jPanel.add(new JLabel(new ImageIcon("船.gif"), JLabel.CENTER));
		jPanel.add(new JLabel(new ImageIcon(ClassLoader.getSystemResource("images/风景06副本.jpg"))));

		HelpPanel.add("帮助", jPanel);
		content.add(HelpPanel, BorderLayout.CENTER);
		Dimension screen = getToolkit().getScreenSize();
		setLocation((screen.width - getSize().width) / 2,
				(screen.height - getSize().height) / 2);
	}

	public void actionPerformed(ActionEvent e) {
		String actionCommand = e.getActionCommand();
		if (actionCommand.trim().equals("清除")) {
			for (int i = 0; i < text.length; i++)
				text[i].setText("");
		}

		else	if (actionCommand.trim().equals("入库")) {
			if ((text[5]).getText().equals("") || text[6].getText().equals("")) {
				JOptionPane.showMessageDialog(this,
						"     您输入的借阅者证号或借阅图书号不能为空      ");
			} else {
				try {
					Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
					Connection con = DriverManager.getConnection(dbURL, user,
							password);
					Statement st = con.createStatement();
					ResultSet rs;
					rs = st
							.executeQuery("SELECT * FROM Book,Reader,Recorder,Configuration  WHERE 图书编号 = '"
									+ text[5].getText().trim()
									+ "' and 读者识别号 = '"
									+ text[6].getText().trim()
									+ "' and 借阅图书号 = '"
									+ text[5].getText().trim()
									+ "' and 记录号 = '"+ text[6].getText().trim()+"'");

					if (rs.next()) {
						if (rs.getString("图书状态").trim().equals("在馆")) {
							JOptionPane.showMessageDialog(this,
									"         您没有借此书          ");
						} else if (!rs.getString("借阅者证号").trim().equals(
								text[6].getText().trim())) {
							JOptionPane.showMessageDialog(this,
									"         请输入借阅此图书的读者的正确的读者ID号!          ");
						} else {
							text[7].setText(rs.getString("图书书名"));
							text[8].setText(rs.getString("图书作者"));
							text[9].setText(new GetDate().getDate());
                            int LimitDays=Integer.parseInt(rs.getString("最多借书天数"));
                            double price=Double.parseDouble(rs.getString("图书单价"));
							String LendDate = rs.getString("借书日期");
							String ReturnDate = new GetDate().getDate();
							int year1=Integer.parseInt(LendDate.substring(0,4));
							int year2=Integer.parseInt(ReturnDate.substring(0,4));
							int month1=Integer.parseInt(LendDate.substring(5,7));
							int month2=Integer.parseInt(ReturnDate.substring(5,7));
							int day1=Integer.parseInt(LendDate.substring(8,10));
							int day2=Integer.parseInt(LendDate.substring(8,10));
							
							int Days=days( year1, month1, day1,
									 year2, month2, day2);
							
							
							if (Days < LimitDays) {
								text[10].setText("0.0");
							} else
								text[10].setText(Double
										.toString(price*0.01 * (Days - LimitDays)));
							
						

							st
									.executeUpdate("delete from Recorder where 借阅图书号 ='"
											+ text[5].getText().trim() + "'");

							st
									.executeUpdate("update Book set 图书状态='在馆' where 图书编号='"
											+ text[5].getText().trim() + "' ");

							st.executeUpdate("update Reader set 借书数目=借书数目-1"
									+ " where 读者识别号 = '"
									+ text[6].getText().trim() + "' ");
							JOptionPane.showMessageDialog(this,
									"     您所借图书已还上!      ");
						}
					} else
						JOptionPane.showMessageDialog(this,
								"     您输入的借阅者证号或借阅图书号有误      ");

					con.close();
				} catch (Exception ex) {
					JOptionPane.showMessageDialog(this,
							"数据库连接错误!\n"+ex);	
					ex.printStackTrace();
				}
			}
		}
		else	if (actionCommand.trim().equals("出库")) {

			if ((text[0]).getText().equals("") || text[1].getText().equals("")) {
				JOptionPane.showMessageDialog(this,
						"     您输入的借阅者证号或借阅图书号不能为空      ");
			} else {
				try {
					Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
					Connection con = DriverManager.getConnection(dbURL, user,
							password);
					Statement st = con.createStatement();
					ResultSet rs;

					String s = "";

					rs = st
							.executeQuery("SELECT * FROM Book,Reader,Configuration WHERE 图书编号 = '"
									+ text[0].getText().trim()
									+ "' and 读者识别号 = \'"
									+ text[1].getText().trim()
									+ "\' and 记录号 = \'"
									+ text[1].getText().trim() + "\' ");
					if (rs.next()) {
						int a = 0, b = 0;
						a = rs.getInt("最多可借图书数");
						b = rs.getInt("借书数目");

						if (a > b) {
							if (rs.getString("图书状态").trim().equals("借出")) {
								JOptionPane.showMessageDialog(this,
										"    您要的图书已被借出    ");
							} else {
								s = rs.getString("图书书名");

								text[2].setText(s);
								text[3].setText(rs.getString("图书作者"));
								text[4].setText(new GetDate().getDate());

								st
										.executeUpdate("insert into Recorder (借阅图书号,借阅图书名,借阅者证号,借阅者姓名,借书日期)"
												+ "values('"
												+ text[0].getText().trim()
												+ "', '"
												+ s
												+ "','"
												+ text[1].getText().trim()
												+ "', '"
												+ rs.getString("读者姓名")
												+ "','"
												+ new GetDate().getDate()
												+ "')");

								st
										.executeUpdate("update Book set 图书状态='借出' where 图书编号='"
												+ text[0].getText().trim()
												+ "' ");

								st
										.executeUpdate("update Reader set 借书数目=借书数目+1"
												+ " where 读者识别号 = '"
												+ text[1].getText().trim()
												+ "' ");
								JOptionPane.showMessageDialog(this,
										"     您已完成对该书的借阅!      ");
							}
						} else
							JOptionPane.showMessageDialog(this,
									"您所借图书数目已达最高限制,\n请还上其他书后再借书!    ");

					} else
						JOptionPane.showMessageDialog(this,
								"     您输入的借阅者证号或借阅图书号有误      ");
					con.close();
				} catch (Exception e1) {
					JOptionPane.showMessageDialog(this,
					"数据库连接错误!\n"+e1);	
					e1.printStackTrace();
				}
			}
		}

		else 	if (actionCommand.trim().equals("返回主界面")) {
			setVisible(false);
			new LibraryManagementSystem().setVisible(true);
		}
		else	if (actionCommand.trim().equals("锁定屏幕")) {
			try {
				Runtime rt = Runtime.getRuntime();
				rt.exec("suoding.exe");
			} catch (Exception exx) {
			}

		}
		else	if (actionCommand.trim().equals("退出")) {
			dispose();
		}
		else   JOptionPane.showMessageDialog(this,"按钮监听注册出现错误!");
	}
	public static boolean leap(int i){
		boolean leapyear;
		if(i%400==0|(i%100!=0&i%4==0))
			leapyear=true;
		else leapyear=false;
		return leapyear;
	}
	public static int getday(int year,int month ,int day){
		int sum=0,sum1=0,sum2=0,sum3=0;int n=0;
		int[] a=new int[12];
		a[0]=a[2]=a[4]=a[6]=a[7]=a[9]=a[10]=a[11]=31;
		a[3]=a[5]=a[8]=a[10]=30;
		sum1=365*(year-1);
		for(int i=1;i<year;i++)if(leap(i))n++;
		if(leap(year))a[1]=29;
		for(int j=0;j<month;j++)sum2+=a[j];
		sum3=n;
		sum=sum1+sum2+sum3;
		return sum;
	}
	public static int days(int year1,int month1,int day1,
			int year2,int month2,int day2){
	int m=getday(year1,month1,day1);
	int n=getday(year2,month2,day2);
	return Math.abs(m-n);
	}
	public static void main(String[] args) {
		new BookFlow().setVisible(true);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -