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

📄 systemoperation.java

📁 这是一个简单的图书管理系统,适用于教学中演示,讲解java高级编程语言
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
package lib_source;

import javax.swing.*;

import java.awt.*;
import java.awt.event.*;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.swing.border.*;

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

	public static final int WIDTH = 450;

	public static final int HEIGHT = 418;

	private JPanel DeckPanel;

	private CardLayout Dealer;

	JLabel[][] label;

	JTextField[][] text1 = new JTextField[2][];

	JComboBox[] comboBox = new JComboBox[2];

	JTextField[][] text2 = new JTextField[3][];

	JPasswordField[] password = new JPasswordField[3];

	JFileChooser[] fileChooser = new JFileChooser[2]; // 文件选择器

	JTextField[] txt = new JTextField[4];

	JButton[] Button;

	JButton[] button;

	JButton[][] button1;

	JButton[][] button2;

	String dbURL = "jdbc:odbc:Student2007";

	String user = "devon";

	String pw = "book";

	String combo = "";

	int SelectValue;

	public SystemOperation() {
		super("系统操作");
		setResizable(false);
		try { // 设置外观
			UIManager.setLookAndFeel(UIManager
					.getCrossPlatformLookAndFeelClassName());// getSystemLookAndFeelClassName());
		} catch (Exception e) {
		}
		setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				dispose();
			}
		});
		setSize(WIDTH, HEIGHT);
		Container content = getContentPane();
		content.setBackground(Color.LIGHT_GRAY);
		content.setLayout(new BorderLayout());
		DeckPanel = new JPanel();
		Dealer = new CardLayout();
		DeckPanel.setLayout(Dealer);
		JPanel sPanel;
		JPanel pane1;
		JPanel mPanel = new JPanel();

		JPanel tempPanel;
		JPanel jPanel = new JPanel();
		jPanel.setBorder(new BevelBorder(BevelBorder.RAISED));
		jPanel.setLayout(new BoxLayout(jPanel, BoxLayout.Y_AXIS));

		String[] str1 = { "图书库操作 ", "读者库操作 ", "数据统计     ", "系统设置     ",
				"数据备份     ", "数据恢复     ", "口令更改     ", "锁定屏幕     ", "返回主界面 ",
				"退出程序     " };
		button = new JButton[str1.length];
		for (int i = 0; i < 10; i++) {
			button[i] = new JButton(str1[i]);
			button[i].addActionListener(this);
			if (i == 7)
				jPanel.add(new JLabel(new ImageIcon(ClassLoader
						.getSystemResource("images/CS战队.jpg")), JLabel.CENTER));
			jPanel.add(button[i]);
		}
		content.add(jPanel, BorderLayout.WEST);
		String[][] str2 = {
				{ "图书序号    ", "图书编号    ", "图书书名    ", "图书作者    ", "图书出版社",
						"图书单价   ", "图书摘要   ", "图书分类   ", "图书状态    " },
				{ "读者编号   ", "读者识别号", "读者姓名   ", "读者权限    ", "联系方法   ",
						"电话号码   ", "电子邮件   " } };
		String[] str3 = { "   清除   ", "   确定   ", "   上移   ", "   下移   ",
				"   添加   ", "   删除   ", "   修改   " };
		String[] str5 = { "images/Dogmax.jpg", "images/流水.jpg" };
		String[][] str7 = {
				{ "在馆                              ",
						"借出                              " },
				{ "读者                            ",
						"管理员                          " } };
		label = new JLabel[str2.length][];
		text1 = new JTextField[str2.length][];
		for (int i = 0; i < str2.length; i++) {
			label[i] = new JLabel[str2[i].length];
			text1[i] = new JTextField[str2[i].length];
			comboBox[i] = new JComboBox(str7[i]);
			comboBox[i].setSize(200, 50);
			comboBox[i].setEditable(true);
			for (int j = 0; j < str2[i].length; j++) {
				label[i][i] = new JLabel(str2[i][j]);
				text1[i][j] = new JTextField(13);
			}
		}
		button1 = new JButton[str2.length][];
		for (int j = 0; j < str2.length; j++) {
			pane1 = new JPanel();
			pane1.setLayout(new BorderLayout());
			mPanel = new JPanel();
			mPanel.setBorder(new BevelBorder(BevelBorder.RAISED));
			label = new JLabel[str2.length][str2[j].length];
			for (int i = 0; i < str2[j].length; i++) {
				sPanel = new JPanel();
				sPanel.setBorder(new BevelBorder(BevelBorder.RAISED));
				label[j][i] = new JLabel(str2[j][i]);

				text1[j][i].setBorder(new BevelBorder(BevelBorder.LOWERED));
				text1[j][i].addKeyListener(new BookConfirmKey());
				sPanel.add(label[j][i]);
				if (j == 0 & i == str2[j].length - 1)
					sPanel.add(comboBox[j]);
				else if (j == 1 & i == 3)
					sPanel.add(comboBox[j]);
				else
					sPanel.add(text1[j][i]);
				mPanel.add(sPanel);

				if (i == str2[j].length - 1 & j == 1) {
					mPanel.add(new JLabel(new ImageIcon(ClassLoader
							.getSystemResource("images/兜风之海边篇.JPG")),
							JLabel.CENTER));
				}
				pane1.add(mPanel, BorderLayout.CENTER);
			}
			tempPanel = new JPanel();
			tempPanel.setBorder(new BevelBorder(BevelBorder.RAISED));
			tempPanel.setLayout(new BoxLayout(tempPanel, BoxLayout.Y_AXIS));
			jPanel = new JPanel();
			jPanel.setBorder(new BevelBorder(BevelBorder.RAISED));
			jPanel.setLayout(new BoxLayout(jPanel, BoxLayout.Y_AXIS));
			jPanel.add(new JLabel(new ImageIcon(ClassLoader
					.getSystemResource(str5[j])), JLabel.CENTER));
			button1[j] = new JButton[str3.length];
			for (int i = 0; i < str3.length; i++)
				button1[j][i] = new JButton(str3[i]);

			if (j == 0 | j == 1) {
				button1[j][0].addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent event) {
						for (int i = 0; i < text1.length; i++)
							for (int j = 0; j < text1[i].length; j++) {
								text1[i][j].setText("");
								comboBox[i].setSelectedItem("");
							}

					}
				});
			}
			if (j == 0) {
				button1[j][1].addActionListener(new BookConfirm());
				button1[j][2].addActionListener(new BookUp());
				button1[j][3].addActionListener(new BookDown());
				button1[j][4].addActionListener(new BookAdd());
				button1[j][5].addActionListener(new BookDelete());
				button1[j][6].addActionListener(new BookChange());
			}
			if (j == 1) {
				button1[j][1].addActionListener(new ReaderConfirm());
				button1[j][2].addActionListener(new ReaderUp());
				button1[j][3].addActionListener(new ReaderDown());
				button1[j][4].addActionListener(new ReaderAdd());
				button1[j][5].addActionListener(new ReaderDelete());
				button1[j][6].addActionListener(new ReaderChange());

			}
			for (int i = 0; i < str3.length; i++)
				tempPanel.add(button1[j][i]);
			jPanel.add(tempPanel);
			pane1.add(jPanel, BorderLayout.EAST);
			if (j == 0)
				DeckPanel.add("图书库操作 ", pane1);
			else if (j == 1)
				DeckPanel.add("读者库操作 ", pane1);
		}

		String[][] str4 = { { "图书总量      ", "读者总量      ", "在库图书      " },
				{ "读者号码      ", "借书本数      ", "借阅时间      " },
				{ "操作员号码 ", "原口令          ", "新口令          ", "确认新口令  " } };
		String[][] s = { { "刷新", "清除", "取消" }, { "更改", "清除", "取消" },
				{ "更改", "清除", "取消" } };
		String[] s1 = { "images/CS战队1.jpg", "images/CS战队2.jpg",
				"images/CS战队3.jpg", "images/风景04.jpg", "images/宽屏壁纸3.jpg" };
		String[] s2 = { "images/Windows1.JPG", "images/呵护我们的QQ家园.JPG",
				"images/qq情人.JPG", "images/幸福.JPG", "images/梦幻VS魔幻.JPG",
				"images/风一样的年华.JPG" };

		label = new JLabel[str4.length][];
		text2 = new JTextField[str4.length][];
		button2 = new JButton[str4.length][];
		for (int i = 0; i < str4.length; i++) {
			label[i] = new JLabel[str4[i].length];
			text2[i] = new JTextField[str4[i].length];
			for (int j = 0; j < str4[i].length; j++) {
				label[i][j] = new JLabel(str4[i][j]);
				text2[i][j] = new JTextField(20);
				if (i == 0)
					text2[i][j].setEditable(false);
			}

		}
		for (int i = 0; i < password.length; i++)
			password[i] = new JPasswordField(20);
		for (int j = 0; j < str4.length; j++) {
			pane1 = new JPanel();
			pane1.setLayout(new BorderLayout());
			mPanel = new JPanel();
			mPanel.setLayout(new FlowLayout());
			mPanel.setBorder(new BevelBorder(BevelBorder.RAISED));
			for (int i = 0; i < str4[j].length; i++) {
				sPanel = new JPanel();
				sPanel.setBorder(new BevelBorder(BevelBorder.RAISED));

				text2[j][i].setBorder(new BevelBorder(BevelBorder.LOWERED));
				sPanel.add(label[j][i]);
				if (j == 2 & i > 0) {
					password[i - 1].setBorder(new BevelBorder(
							BevelBorder.LOWERED));
					sPanel.add(password[i - 1]);
				} else {
					sPanel.add(text2[j][i]);
				}
				mPanel.add(sPanel);
			}

			tempPanel = new JPanel();
			tempPanel.setBorder(new BevelBorder(BevelBorder.RAISED));

			tempPanel.add(new JLabel(new ImageIcon(ClassLoader
					.getSystemResource(s2[j])), JLabel.CENTER));

			button2[j] = new JButton[s[j].length];
			for (int i = 0; i < s.length; i++)
				button2[j][i] = new JButton(s[j][i]);
			if (j == 0)
				button2[j][0].addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent event) {
						try {
							Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
							Connection con = DriverManager.getConnection(dbURL,
									user, pw);
							Statement st = con.createStatement();
							ResultSet[] rs = new ResultSet[2];
							String[] sqlStr = { "SELECT * FROM Book ",
									"SELECT * FROM Reader " };
							int[] count = new int[3];
							for (int i = 0; i < sqlStr.length; i++) {
								rs[i] = st.executeQuery(sqlStr[i]);
								while (rs[i].next()) {
									if (i == 0) {
										count[i]++;
										if (rs[i].getString("图书状态").trim()
												.equals("在馆"))
											count[i + 2]++;
									} else {
										count[1]++;
									}
								}
							}

							for (int i = 0; i < text2[0].length; i++) {
								text2[0][i].setText(Integer.toString(count[i]));
							}
							con.close();
						} catch (Exception ex) {
							JOptionPane.showMessageDialog(SystemOperation.this,
									"数据库连接错误!\n" + ex);
							ex.printStackTrace();
						}
					}
				});
			if (j == 1)
				button2[j][0].addActionListener(new SystemChange());
			if (j == 2)
				button2[j][0].addActionListener(new PasswordChange());
			button2[j][1].addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent event) {
					for (int i = 0; i < text2.length; i++)
						for (int j = 0; j < text2[i].length; j++)
							text2[i][j].setText("");
					for (int i = 0; i < password.length; i++)
						password[i].setText("");
				}
			});
			button2[j][2].addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent event) {
					Dealer.show(DeckPanel, "图书库操作 ");
				}
			});
			for (int i = 0; i < s.length; i++)
				tempPanel.add(button2[j][i]);

			tempPanel.add(new JLabel(new ImageIcon(ClassLoader
					.getSystemResource(s2[5 - j])), JLabel.CENTER));

			mPanel.add(tempPanel);

			mPanel.add(new JLabel(new ImageIcon(ClassLoader
					.getSystemResource(s1[j])), JLabel.CENTER));
			pane1.add(mPanel, BorderLayout.CENTER);
			if (j == 0)
				DeckPanel.add("数据统计", pane1);
			else if (j == 1)
				DeckPanel.add("系统设置", pane1);
			else
				DeckPanel.add("口令更改", pane1);
		}

		for (int i = 0; i < fileChooser.length; i++) {
			fileChooser[i] = new JFileChooser(); // 实例化文件选择器
			fileChooser[i].setApproveButtonText("确定");
			fileChooser[i].setDialogTitle("选择文件");
		}
		for (int i = 0; i < txt.length; i++)
			txt[i] = new JTextField(16);
		String[] str6 = { "浏览", "浏览", "备份", "清除", "取消", "浏览", "浏览", "恢复",
				"清除 ", "取消" };
		Button = new JButton[str6.length];
		for (int i = 0; i < str6.length; i++) {
			Button[i] = new JButton(str6[i]);
			if (i == 0 | i == 1)
				Button[i].addActionListener(new SelectFileListener1()); // 设置选择文件的事件处理
			if (i == 5 | i == 6)
				Button[i].addActionListener(new SelectFileListener2()); // 设置选择文件的事件处理
			if (i == 2)
				Button[i].addActionListener(new ActionListener() { // 拷贝按钮事件处理
							public void actionPerformed(ActionEvent event) {
								String sourceFile = txt[0].getText(); // 得到源文件路径
								String targetFile = txt[1].getText(); // 得到目标文件路径
								if (sourceFile.equals("")
										| targetFile.equals(""))
									JOptionPane.showMessageDialog(
											SystemOperation.this,
											"源文件或目标文件的地址不能为空!");
								else if (copy(sourceFile, targetFile)) { // 拷贝文件
									JOptionPane.showMessageDialog(
											SystemOperation.this, "文件已成功备份!"); // 显示拷贝成功信息
								} else {
									JOptionPane.showMessageDialog(
											SystemOperation.this, "文件备份失败!"); // 发生错误
								}
							}
						});

			if (i == 4 | i == 9)
				Button[i].addActionListener(new ActionListener() { // 拷贝按钮事件处理
							public void actionPerformed(ActionEvent event) {
								Dealer.show(DeckPanel, "图书库操作 ");
							}
						});
			if (i == 3)
				Button[3].addActionListener(new ActionListener() { // 拷贝按钮事件处理
							public void actionPerformed(ActionEvent event) {
								txt[0].setText("");
								txt[1].setText("");
							}
						});
			if (i == 7)
				Button[i].addActionListener(new ActionListener() { // 拷贝按钮事件处理
							public void actionPerformed(ActionEvent event) {
								String sourceFile = txt[2].getText(); // 得到源文件路径
								String targetFile = txt[3].getText(); // 得到目标文件路径
								if (sourceFile.equals("")
										| targetFile.equals(""))
									JOptionPane.showMessageDialog(
											SystemOperation.this,
											"源文件或目标文件的地址不能为空!");
								else if (copy(sourceFile, targetFile)) { // 拷贝文件
									JOptionPane.showMessageDialog(
											SystemOperation.this, "文件已成功恢复!"); // 显示拷贝成功信息
								} else {
									JOptionPane.showMessageDialog(
											SystemOperation.this, "文件恢复失败!"); // 发生错误
								}
							}
						});
			if (i == 8)
				Button[i].addActionListener(new ActionListener() { // 拷贝按钮事件处理
							public void actionPerformed(ActionEvent event) {
								txt[2].setText("");
								txt[3].setText("");
							}
						});

		}
		mPanel = new JPanel();
		mPanel.setLayout(new FlowLayout());
		mPanel.setBorder(new BevelBorder(BevelBorder.RAISED));
		jPanel = new JPanel();
		jPanel.setLayout(new FlowLayout());
		jPanel.setBorder(new BevelBorder(BevelBorder.RAISED));
		jPanel.add(new JLabel("源  文 件"));
		jPanel.add(txt[0]);
		jPanel.add(Button[0]);
		mPanel.add(jPanel);
		jPanel = new JPanel();
		jPanel.setLayout(new FlowLayout());
		jPanel.setBorder(new BevelBorder(BevelBorder.RAISED));
		jPanel.add(new JLabel("目标文件"));
		jPanel.add(txt[1]);
		jPanel.add(Button[1]);
		mPanel.add(jPanel);
		jPanel = new JPanel();
		jPanel.setLayout(new FlowLayout());
		jPanel.setBorder(new BevelBorder(BevelBorder.RAISED));
		jPanel.add(new JLabel(new ImageIcon(ClassLoader
				.getSystemResource("images/双扣.JPG")), JLabel.CENTER));

⌨️ 快捷键说明

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