用java的swing组件实现简易的图书管理系统 |
您所在的位置:网站首页 › 图书管理系统构建图 › 用java的swing组件实现简易的图书管理系统 |
图书管理系统在生活和学校中是最为常见的,这学期的java课程设计题目中的其中一个就是实现图书管理系统, 做完课设后,在此记录下。 我的图书管理系统一共分为几个模块。图书查询模块,管理员模块(默认只有一个管理员),读者模块。 图书管理系统结构图如下所示:
1、管理员模块 管理员模块中一共包含三个部分,其一是管理员登录(此系统默认只有一个管理员),其二是图书入库管理,其三是用户借阅信息管理。 主窗口程序代码如下:主要执行查询操作和显示查询结果: package per.tushu.frame; import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.SwingConstants; import javax.swing.table.DefaultTableModel; import per.tushu.storage.FindBook; public class MainFrame extends JFrame{ JLabel label1,label2,info; JPanel jpanel,jp1,jp2,jp3; JTextField text; JButton button,admin,stu; JButton lend; DefaultTableModel tableModel; public MainFrame(){ this.setLayout(new BorderLayout()); this.setBounds(400, 200, 600, 450); this.setTitle("图书查询"); //窗体最上面的部分 label1 = new JLabel("图书查询",SwingConstants.CENTER); label1.setFont(new Font("楷体",Font.BOLD,40)); //设置字体和大小 //窗体中间的部分 label2 = new JLabel("书名:"); text = new JTextField(15); button = new JButton("查询"); jpanel = new JPanel(); jpanel.setLayout(new BorderLayout()); jp1 = new JPanel(); jp2 = new JPanel(); //窗体最下面的部分(及显示查询内容的地方) // jp2.setBackground(Color.BLUE); stu = new JButton("用户登录"); admin = new JButton("管理员"); // //测试 // lend = new JButton("确认借阅"); jp1.add(label2); jp1.add(text); jp1.add(button); // jp1.add(lend); jp3 = new JPanel(); jp2.setLayout(new BorderLayout()); jp3.setLayout(new FlowLayout(FlowLayout.RIGHT)); jp3.add(stu); jp3.add(admin); jp2.add(jp3,BorderLayout.SOUTH); // jp2.add(info,BorderLayout.SOUTH); jpanel.add(jp1,BorderLayout.NORTH); jpanel.add(jp2); this.add(label1,BorderLayout.NORTH); this.add(jpanel); MyEvent(); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void MyEvent(){ // 查询按钮事件 button.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub new FindBook().findInfo(jp2,text); } }); // 管理员按钮事件 admin.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub new LoginFrame().show(); } }); //用户按钮事件 stu.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub new UserLoginFrame().show(); } }); } public static void main(String[] args){ new MainFrame(); } }主窗口显示效果如下:
管理员登录:默认管理员账号为admin,若密码输入错误则有提示信息,密码正确则进入管理员管理界面。完整代码如下: package per.tushu.frame; import java.awt.BorderLayout; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTextField; import javax.swing.SwingConstants; // 管理员登录模块 public class LoginFrame extends JFrame{ JLabel label,name,pass; JButton login; JTextField adminName; JPasswordField password; JPanel panel,jp1,jp2; public LoginFrame(){ this.setBounds(400, 200, 300, 200); this.setTitle("图书馆管理系统登录"); this.setLayout(new BorderLayout()); label = new JLabel("登录",SwingConstants.CENTER); label.setFont(new Font("楷体",Font.BOLD,30)); name = new JLabel("账 号"); pass = new JLabel("密 码"); adminName = new JTextField(12); adminName.setText("admin"); adminName.setHorizontalAlignment(SwingConstants.CENTER); password = new JPasswordField(12); password.setHorizontalAlignment(SwingConstants.CENTER); password.setEchoChar('*'); //设置回显字符 panel = new JPanel(); jp1 = new JPanel(); jp2 = new JPanel(); panel.setLayout(new BorderLayout()); jp1.add(adminName); jp1.add(name); jp1.add(password); jp1.add(pass); panel.add(jp1); login = new JButton("登录"); jp2.add(login); panel.add(jp2,BorderLayout.SOUTH); this.add(label,BorderLayout.NORTH); this.add(panel); MyEvent(); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void MyEvent(){ login.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub String word = "123456"; // 正确密码 String str = new String(password.getPassword()); if(str.equals(word)) new LendAdminFrame().show(); // new TableFrame().show(); // new RuKuFrame(); else{ String str1 = "你输入的密码不正确,原因可能是:\n" + "1、忘记密码;\n" + "2、未开启小键盘;\n" + "3、大小写未区分。"; JOptionPane.showMessageDialog(null, str1); // new LoginErrorFrame().show(); } LoginFrame.this.dispose(); } }); } public static void main(String[] args){ new LoginFrame(); } }代码执行后显示如下:
密码错误时:
图书入库管理:管理员在此界面内对图书信息进行管理。包括图书在馆内的图书号、图书名、撰写此书的作者、书的种类(可以是专业分类)、出版社、入库日期、借阅状态以及分布的校区(或分馆)。 用户借阅信息管理:管理员在此界面可以对用户的借阅信息进行管理。包括借阅者账号(默认为姓名)、所借图书编号、书名以及借书日期。此表会根据用户借阅图书以及归还图书动态变化。 图书入库管理和用户借阅信息管理的功能我用了一个类来实现。不过由另外一个类写了两个按钮,来保证究竟要哪一个功能起作用。用于管理这两个小模块的代码如下: package per.tushu.frame; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class LendAdminFrame extends JFrame{ JPanel panel; JButton storage,lendInfo; public LendAdminFrame(){ this.setTitle("管理员"); this.setBounds(400,300,200,200); this.setLayout(new FlowLayout(FlowLayout.CENTER)); storage = new JButton("图书入库管理"); lendInfo = new JButton("借阅信息管理"); this.add(storage); this.add(lendInfo); MyEvent(); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void MyEvent(){ // 图书入库管理 storage.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub new TableFrame(storage.getText()).show(); } }); // 用户借阅信息管理 lendInfo.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub new TableFrame(lendInfo.getText()).show(); } }); } public static void main(String[] args){ new LendAdminFrame(); } }代码显示效果如下:
图书入库显示效果如下所示:
图书添加操作:
借阅信息管理显示如下:
2、图书查询模块 图书查询分为两个部分,一个是查询全部(查询框无内容时),另一个是按照关键字查询。 查询全部:查询框无查询内容时直接点击查询按钮,则会显示数据库中所有的图书数据。 按照关键字查询:查询框中有关键字时,则会显示与关键字相关的图书数据。 此模块用一个类来实现,需要连接数据库,由主页面的查询按钮控制代码如下: package per.tushu.storage; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.ArrayList; import java.util.Vector; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.table.DefaultTableModel; public class FindBook { Vector tableName; // 拿到数据库中所有表的名字并储存到集合中 private Vector getTableName(){ tableName = new Vector(); Connection conn; PreparedStatement preparedStatement; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bookstorage","root","123456"); // if(!conn.isClosed()) // System.out.println("成功打开数据库"); String sql = "show tables"; preparedStatement = conn.prepareStatement(sql); ResultSet result = preparedStatement.executeQuery(); ResultSetMetaData metaData = result.getMetaData(); while(result.next()){ for(int i = 1; i |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |