Java实现简单图书管理系统

经过长时间JavaSE的学习,我们对Java的三大特性----继承,封装,多态有了一定的了解,对于语法的学习我们需要项目来复习和巩固,这次这个图书管理系统主要目的是为了练习一些重要语法知识.,让大家能把语法用起来同时达到复习的效果.

大家可以根据生活经验想一想,一个图书系统有什么,需要什么?简单的肯定是有书的,书又要放在书架上,这样我们就可以抽象出两个类(书的类和书架的类).有了书之后我们还需要对书操作的用户,用户我们又可以抽象出普通用户和管理书的用户.然而对应不同的用户输入不同的操作会用不同的效果.

对于不同用户而言操作是不一样的,就这个项目而言,我们不同用户实现的操作有以下:

管理员用户:

       1.增添图书

        2.删除图书

        3.查找图书

        4.展示图书

        5.退出系统

普通用户:

        1.查找图书

        2.借阅图书

        3.归还图书

        4.退出系统

 

为了方便管理我们定义一个book包  ,在这个包里会有书和书架两个类

 

一.不管是什么用户,都是对书进行操作,首先我们抽象出书类:

book类

 对于一本书,会有书名,作者,价钱,类型,和是否借出的状态.所以我们把这些定义成book类的成员属性,我们学过封装,进一步我们可以把这些属性封装起来,使属性的安全性更高.对于封装的属性我们就需要提供get和set方法来获取和设置属性.一个标准的类至少有一个无参或者全参的构造方法,对于书这个类,我们需要一个有书名,作者,价钱,类型的参数来构造这个数据.是否借出不用在构造方法中,因为在书籍在刚开始是未被借出的,所以默认的就是false未被借出,如果被借出就改为true.想要打印出不一样的效果,我们可以重写toString()方法.

Book类应有的以下属性:

1.String name //书名

2.String author  //作者

3.int  price  //价钱

4.String  type  //类型

5.Boolean  borrow //是否借出

6.构造方法

7.为封装的属性提供get set方法

8.重写toString方法

 Book代码如下:

public class Book {
    //一本书有哪些成员
    private String name;
    private String author;
    private int price;
    private String type;
    private boolean borrow;

    //为成员提供get set方法

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public boolean isBorrow() {
        return borrow;
    }

    public void setBorrow(boolean borrow) {
        this.borrow = borrow;
    }

    //提供构造方法
    public Book(String name, String author, int price, String type) {
        this.name = name;
        this.author = author;
        this.price = price;
        this.type = type;
    }
    //重写tostring方法

    @Override
    public String toString() {
        return "Book{" +
                "name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                ", type='" + type + '\'' +
                ( borrow==true ? "  已被借出":"  未被借出")+
                '}';
    }
}

BookList类 

 Book类每次实例化就是一本书,为了方便管理,我们就在书架类中定义一个Book类的数组用来存放每一本书,这样增删改查就相对于来说方便一些.然后再定义一个useSize来用于记录放书的数组有多少本书.因为这两个属性都是由private修饰我们又需要提供get和set方法.

BookList类应有的属性:

 1.存放Book类对象的数组books

 2.用于存储书籍个数的useSize

 3.初始化书架的实例代码块

BookList代码如下: 

public class BookList {
    private Book[] books=new Book[10];
    private int UseSize;
    public BookList(){
        books[0]=new Book("活着","余华",45,"小说");
        books[1]=new Book("狂人日记","鲁迅",56,"小说");
        books[2]=new Book("红高粱","莫言",35,"小说");
        UseSize=3;
    }
    /*
    * 返回对应下标的书籍
    * */
    public Book getBooks(int pos) {
        return this.books[pos];
    }
    /*
     * 在pos位置中放入这本书
     * */
    public void setBooks(int pos, Book book){
        books[pos]=book;
    }
    //为UseSize提供get和set方法
    /**
     *
     * 这个方法用来获取系统存书籍的数量
     * */
    public int getUseSize() {
        return UseSize;
    }
    /**
     *
     * 改变书籍的存储个数
     * */
    public void setUseSize(int useSize) {
        UseSize = useSize;
    }
}

 二.书类定义完成后,我们需要一些对书的操作,此时就需要一些操作类

我们把操作的类放在一个Opera包中

 1.operation接口

operation接口是所有功能类的公共规范,所以它应该具有抽象方法work,而且这个方法的操作对象应该是BookList类的对象. 

operation接口代码如下:

package opera;

import book.Book;
import book.BookList;


public interface Operation {
    public void work(BookList bookList);
}

2.实现operation接口的类

为了方便我们对各种实现类work方法的调用,所以这些类都需要实现operation接口,并且对其中的operation进行重写.

a.Addoperation类

package opera;

import book.Book;
import book.BookList;

import java.util.Scanner;

public class Addoperation implements Operation{
    @Override
    public void work(BookList bookList) {
        //System.out.println("增加书籍");
        System.out.println("新增图书:");
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入书名:");
        String name=scanner.nextLine();

        System.out.println("请输入作者:");
        String author=scanner.nextLine();

        System.out.println("请输入类型:");
        String type=scanner.nextLine();

        System.out.println("请输入价格:");
        int price=scanner.nextInt();
        Book book=new Book(name,author,price,type);

        int currentUsize= bookList.getUseSize();
        for (int i = 0; i <currentUsize; i++) {
            Book tmp=bookList.getBooks(i);
            if(tmp.getName().equals(name)){
                System.out.println("本书已存在,请勿在放入");
                return;
            }
        }
        bookList.setBooks(currentUsize,book);
        System.out.println("放入成功!");
        bookList.setUseSize(currentUsize+1);
    }
}

b.Brrowoperation类

package opera;

import book.Book;
import book.BookList;

import java.util.Scanner;

public class Brrowoperation implements Operation{
    @Override
    public void work(BookList bookList) {
        //System.out.println("借出书籍");
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入你要借的书名:");
        String name=scanner.nextLine();
        int currentSize= bookList.getUseSize();
        for (int i = 0; i < currentSize; i++) {
            Book book=bookList.getBooks(i);
            if(book.getName().equals(name)&& !book.isBorrow()){
                book.setBorrow(true);
                System.out.println("借阅成功");
                return;
            }
        }
    }
}

C.Deloperation类

package opera;

import book.Book;
import book.BookList;

import java.util.Scanner;

public class Deloperation implements Operation{
    @Override
    public void work(BookList bookList) {
        //System.out.println("删除书籍");
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入你要删除的书名:");
        String name=scanner.nextLine();
        int currentSize= bookList.getUseSize();
        int index=-1;
        for (int i = 0; i < currentSize; i++) {
            Book tmp=bookList.getBooks(i);
            if(tmp.getName().equals(name)){
                index=i;
                break;
            }
        }

        for (int j = index; j <currentSize-1 ; j++) {
            Book book=bookList.getBooks(j+1);
            bookList.setBooks(j,book);
        }
        //删除书之后将长度-1
        bookList.setUseSize(currentSize-1);
        //因为删除的对象是引用类型,所以把最后一个置为空
        bookList.setBooks(currentSize-1,null);
    }
}

D.Exitoperation类

package opera;

import book.Book;
import book.BookList;

public class Exitoperation implements Operation{
    @Override
    public void work(BookList bookList) {
        System.out.println("退出系统");
        System.exit(0);
    }
}

E.Findoperation类

package opera;

import book.Book;
import book.BookList;

import java.util.Scanner;

public class Findoperation implements Operation{
    @Override
    public void work(BookList bookList) {
        //System.out.println("查找书籍");
        System.out.println("请输入你要查找的书名:");
        Scanner scanner=new Scanner(System.in);
        String name=scanner.nextLine();
        int currentUse= bookList.getUseSize();
        for (int i = 0; i < currentUse; i++) {
            Book book=bookList.getBooks(i);
            if(book.getName().equals(name)){
                System.out.println("找到了这本书");
                System.out.println(book);
                return;
            }
        }
        System.out.println("没有这本书");
    }
}

F.Returnoperation类

package opera;

import book.Book;
import book.BookList;

import java.util.Scanner;

public class Returnoperation implements Operation{
    @Override
    public void work(BookList bookList) {
        System.out.println("归还书籍");
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入你要归还的书名:");
        String name=scanner.nextLine();
        int currentSize= bookList.getUseSize();
        for (int i = 0; i < currentSize; i++) {
            Book book=bookList.getBooks(i);
            if(book.getName().equals(name)&& book.isBorrow()){
                book.setBorrow(false);
                System.out.println("归还成功");
                return;
            }
        }
    }
}

G.Showoperation类

package opera;

import book.Book;
import book.BookList;

public class Showoperation implements Operation{
    @Override
    public void work(BookList bookList) {
        int currentSize= bookList.getUseSize();
        for (int i = 0; i < currentSize; i++) {
            Book  book=bookList.getBooks(i);
            System.out.println(book);
        }
    }
}

三.操作类编写完成后,我们需要抽象出用户进行操作

我们把用户放在user包

在这个包中有两个用户类型,一个是管理员,一个是普通用户,因此它们有不同的菜单,不同的菜单实现不同的功能,但是它们的用户名是一样的,所以需要定义一个User父类,以父类来构建子类.

1.抽象类User

这是一个抽象父类,我们需要定义一个用户名,并且定义一个以Operation为基本类型的数组,但是双方菜单都不一样,因此菜单方法需要抽象化,然后就是实现功能的方法,这个方法很巧妙,首先我们可以先利用通过菜单的选项,来实现Operation数组里面的具体类,并且调用哪个类里面的work方法,就可以实现不同用户有不同的功能.

package user;

import book.BookList;
import opera.Operation;

public abstract class User{
    public String name;
    protected Operation[] operations;
    public User(String name) {
        this.name = name;
    }
    public abstract int menu();

    public void dowork(int choice, BookList bookList){
        this.operations[choice].work(bookList);
    }
}

 2.普通用户类

普通用户具有借阅,归还,查找,打印图书的功能。Operation数组中应该具有这几种类

package user;

import opera.*;

import java.util.Scanner;

public class Normalluser extends User{
    public Normalluser(String name) {
        super(name);
        this.operations=new Operation[]{
                new Exitoperation(),
                new Findoperation(),
                new Brrowoperation(),
                new Returnoperation()
        };
    }

    @Override
    public int menu() {
        System.out.println("******************************");
        System.out.println("hello "+name+" 欢迎来到图书小练习");
        System.out.println("1.查找图书");
        System.out.println("2.借阅图书");
        System.out.println("3.归还图书");
        System.out.println("0.退出系统");
        System.out.println("******************************");
        System.out.println("请输入您的操作:");
        Scanner scanner=new Scanner(System.in);
        int choice=scanner.nextInt();
        return choice;
    }
}

3.管理用户

管理员具有增加,删除,查找,打印图书的功能.Operation数组中应该具有这几种类

package user;

import opera.*;

import java.util.Scanner;

public class Adminuser extends User{
    public Adminuser(String name){
        super(name);
        this.operations=new Operation[]{
                new Exitoperation(),
                new Findoperation(),
                new Addoperation(),
                new Deloperation(),
                new Showoperation()
        };
    }

    @Override
    public int menu() {
        System.out.println("******************************");
        System.out.println("hello "+name+" 欢迎来到图书小练习");
        System.out.println("1.查找图书");
        System.out.println("2.新增图书");
        System.out.println("3.删除图书");
        System.out.println("4.显示图书");
        System.out.println("0.退出系统");
        System.out.println("******************************");
        System.out.println("请输入您的操作:");
        Scanner scanner=new Scanner(System.in);
        int choice=scanner.nextInt();
        return choice;
    }
}

四.所有代码一编写完毕,需要一个测试类来让程序跑起来

Main类

Main主要是把这些功能串起来,并且对图书管理系统的整合,然后需要一个用户自己选择身份的方法,然后我们提供一个让用户选择的方法.方法的返回值用用用户的父类接收,由此实现向上转型,我们可以利用User来调用菜单,这样不同的User就可以实现不同的菜单.

import book.BookList;
import user.Adminuser;
import user.Normalluser;
import user.User;

import java.util.Scanner;

public class Main {
    public static User login(){
        System.out.println("请输入您的姓名:");
        Scanner scanner=new Scanner(System.in);
        String name=scanner.nextLine();
        System.out.println("请输入您的身份:1->> 管理员 0->>普通用户");
        int choice=scanner.nextInt();
        if(choice==1){
            return new Adminuser(name);
        }else{
            return new Normalluser(name);
        }
    }
    public static void main(String[] args) {
        BookList bookList=new BookList();
        User user=login();
        while(true){
            int choice= user.menu();
            user.dowork(choice,bookList);
        }
    }
}

 五.总结

        这个图书管理系统最重要的是大家对框架有一定的了解,进一步了解面向对象编程.而且还利用了封装,继承,多态Java的三大特性,接口和抽象类的应用,对我们有着巩固和复习的作用.

以上是我对图书管理系统的一些理解,如有错误望指出.

import java.awt.*; import java.awt.event.*; import java.net.*; import java.io.*; import javax.swing.event.*; import javax.swing.border.*; import java.sql.*; import java.io.*; import java.net.*; import javax.swing.*; public class Java{ public static void main(String args[]){ One one=new One(); } } class One extends JFrame implements ActionListener{ JLabel jlabel1,jlabel2; JButton jbutton1,jbutton2; JTextField jtextfield1; JPanel jpanel1; JPasswordField passwordText; One(){ jpanel1=new JPanel(); jlabel1=new JLabel("用户名:"); jlabel2=new JLabel("密 码:"); jbutton1=new JButton("登录"); jbutton2=new JButton("取消"); Font f=new Font("楷体_GB2312",Font.BOLD,22); jlabel1.setFont(f); jlabel2.setFont(f); jtextfield1=new JTextField(10); passwordText=new JPasswordField(10); passwordText.setEchoChar('*'); jbutton1.addActionListener(this); jbutton2.addActionListener(this); setLayout(new FlowLayout()); jpanel1.add(jbutton1); jpanel1.add(jbutton2); add(jlabel1); add(jtextfield1); add(jlabel2); add(passwordText); add(jpanel1); setBounds(100,100,200,200); setVisible(true); validate(); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); } public void actionPerformed(ActionEvent e){ if(e.getSource()==jbutton1){ String str1,str2; str1=jtextfield1.getText().trim(); str2=passwordText.getText(); Connection con; Statement sql; ResultSet rs; try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); }catch(ClassNotFoundException ee){ System.out.println(""+ee); } try{ con=DriverManager.getConnection("jdbc:odbc:renshi","",""); sql=con.createStatement(); rs=sql.executeQuery("SELECT * FROM login"); boolean boo=true; while(rs.next()){ if(rs.getString(1).equals(str1) && rs.getString(2).equals(str2)){ JOptionPane.showMessageDialog(this,"欢迎进入图书管理系统","login",JOptionPane.PLAIN_MESSAGE); setVisible(false); FrameMain t=new FrameMain(); boo=false; } } if(boo){ JOptionPane.showMessageDialog(this,"用户不存在或者输入错误请重新输入!","提示",JOptionPane.WARNING_MESSAGE); jtextfield1.setText(""); passwordText.setText(""); } con.close(); }catch(SQLException eee){System.out.println(eee);} } else{ System.exit(0); } } } class FrameMain extends JFrame implements ActionListener{ JPanel contentPane; JMenuBar mb1=new JMenuBar(); JMenu readr=new JMenu("读者"); JMenu book=new JMenu("图书"); JMenu help=new JMenu("帮助"); JMenu exit=new JMenu("退出"); JMenuItem r1=new JMenuItem("浏览读者信息"); JMenuItem b1=new JMenuItem("浏览图书信息"); JMenuItem b2=new JMenuItem("增加图书"); JMenuItem b3=new JMenuItem("删除图书"); JMenuItem b4=new JMenuItem("修改图书信息"); JMenuItem h1=new JMenuItem("使用网络信息帮助"); JMenuItem h2=new JMenuItem("读取java文件帮助信息"); JMenuItem e1=new JMenuItem("退出系统"); FrameMain(){ setTitle("图书馆信息管理系统"); readr.add(r1); book.add(b1); book.add(b2); book.add(b3); book.add(b4); help.add(h1); help.add(h2); exit.add(e1); mb1.add(readr); mb1.add(book); mb1.add(help); mb1.add(exit); setJMenuBar(mb1); r1.addActionListener(this); b1.addActionListener(this); b2.addActionListener(this); b3.addActionListener(this); b4.addActionListener(this); h1.addActionListener(this); h2.addActionListener(this); e1.addActionListener(this); setBounds(200,200,500,500); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void actionPerformed(ActionEvent e){ if(e.getSource()==r1){ new showReader(); } else if(e.getSource()==b1){ new showBook(); } else if(e.getSource()==b2){ new InsertBook(); } else if(e.getSource()==b3){ new Delete(); } else if(e.getSource()==b4){ new Modify(); } else if(e.getSource()==h1){ Help1 flink=new Help1(); } else if(e.getSource()==h2){ class Help2 extends JFrame { Help2(){ byte b[]=new byte[30]; JTextArea text=new JTextArea(20,20); setSize(330,300); setVisible(true); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); add(text,BorderLayout.CENTER); try{ FileInputStream input=new FileInputStream("help.java"); ProgressMonitorInputStream in=new ProgressMonitorInputStream(this,"读取help文件",input); ProgressMonitor p=in.getProgressMonitor(); while(in.read(b)!=-1){ String s=new String(b); text.append(s); Thread.sleep(200); } }catch(InterruptedException e){} catch(IOException e){} } } new Help2(); } else if(e.getSource()==e1){ System.exit(0); } } } class Help1 extends JFrame implements ActionListener,Runnable{ JButton button; URL url; JTextField text; JEditorPane editPane; byte b[]=new byte[118]; Thread thread; public Help1(){ text=new JTextField(20); editPane=new JEditorPane(); editPane.setEditable(false); button=new JButton("确定"); button.addActionListener(this); thread=new Thread(this); JPanel p=new JPanel(); p.add(new JLabel("输入网址: ")); p.add(text); p.add(button); Container con=getContentPane(); con.add(new JScrollPane(editPane),BorderLayout.CENTER); con.add(p,BorderLayout.NORTH); setBounds(60,60,500,500); setVisible(true); validate(); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); editPane.addHyperlinkListener(new HyperlinkListener (){ public void hyperlinkUpdate(HyperlinkEvent e){ if(e.getEventType()==HyperlinkEvent.EventType.ACTIVATED){ try{ editPane.setPage(e.getURL()); }catch(IOException e1){ editPane.setText(""+e1); } } } }); } public void actionPerformed(ActionEvent e){ if(!(thread.isAlive())) thread=new Thread(this); try{ thread.start(); }catch(Exception ee){ text.setText("我正在读取"+url); } } public void run(){ try{ int n=-1; editPane.setText(null); url=new URL(text.getText().trim()); editPane.setPage(url); }catch(MalformedURLException e1){ text.setText(""+e1); return; }catch(IOException eee){ text.setText(""+eee); return; } } } class InsertBook extends JDialog implements ActionListener{ JLabel insertBook; Object name[]={"编号","书名","出版社","出版日期"}; Object a[][]=new Object[1][4]; JTable table; JButton insert; Connection con; Statement sql; ResultSet rs; InsertBook(){ insertBook=new JLabel("请输入新书信息:"); table=new JTable(a,name); insert=new JButton("确定插入"); setLayout(new FlowLayout()); add(insertBook); add(table); add(insert); setBounds(100,100,800,200); setVisible(true); insert.addActionListener(this); } public void actionPerformed(ActionEvent e){ try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); }catch(ClassNotFoundException ee){ System.out.println(""+ee); } try{ con=DriverManager.getConnection("jdbc:odbc:renshi","",""); sql=con.createStatement(); int k=sql.executeUpdate("INSERT INTO bookinformation VALUES('"+a[0][0]+"','"+a[0][1]+"','"+a[0][2]+"','"+a[0][3]+"')"); if(k==1) JOptionPane.showMessageDialog(this,"插入成功","成功",JOptionPane.PLAIN_MESSAGE); setVisible(false); con.close(); } catch(SQLException ee){ JOptionPane.showMessageDialog(this,"插入失败","失败",JOptionPane.ERROR_MESSAGE); } } } class showReader extends JDialog implements ActionListener{ JTable table; Object a[][]; Object name[]={"学号","姓名","年龄","出生日期"} ; JButton showReader; showReader(){ showReader=new JButton("显示信息"); showReader.addActionListener(this); add(showReader,BorderLayout.NORTH); setBounds(200,200,500,500); setVisible(true); } public void actionPerformed(ActionEvent e){ Connection con; Statement sql; ResultSet rs; try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); }catch(ClassNotFoundException ee){ System.out.println(""+ee); } try{ con=DriverManager.getConnection("jdbc:odbc:renshi","",""); sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); rs=sql.executeQuery("SELECT * FROM readerinformation"); rs.last(); int lastNumber=rs.getRow(); a=new Object[lastNumber][4]; int k=0; rs.beforeFirst(); while(rs.next()){ a[k][0]=rs.getString(1); a[k][1]=rs.getString(2); a[k][2]=rs.getString(3); a[k][3]=rs.getString(4); k++; } con.close(); }catch(SQLException ee){ System.out.println(ee); } table=new JTable(a,name); getContentPane().removeAll(); add(showReader,BorderLayout.NORTH); add(new JScrollPane(table),BorderLayout.CENTER); setVisible(true); validate(); } } class showBook extends JDialog implements ItemListener{ JTable table; Object a[][]; Object name[]={"编号","书名","出版社","出版日期"} ; JCheckBox showBook; showBook(){ showBook=new JCheckBox("显示信息"); showBook.addItemListener(this); add(showBook,BorderLayout.NORTH); setBounds(200,200,500,500); setVisible(true); } public void itemStateChanged(ItemEvent e){ JCheckBox box=(JCheckBox)e.getItemSelectable(); if(box.isSelected()){ Connection con; Statement sql; ResultSet rs; try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); }catch(ClassNotFoundException ee){ System.out.println(""+ee); } try{ con=DriverManager.getConnection("jdbc:odbc:renshi","",""); sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); rs=sql.executeQuery("SELECT * FROM bookinformation"); rs.last(); int lastNumber=rs.getRow(); a=new Object[lastNumber][4]; int k=0; rs.beforeFirst(); while(rs.next()){ a[k][0]=rs.getString(1); a[k][1]=rs.getString(2); a[k][2]=rs.getString(3); a[k][3]=rs.getString(4); k++; } con.close(); }catch(SQLException ee){ System.out.println(ee); } table=new JTable(a,name); getContentPane().removeAll(); add(showBook,BorderLayout.NORTH); add(new JScrollPane(table),BorderLayout.CENTER); setVisible(true); validate(); } else table.setVisible(false); } } class Delete extends JDialog implements ActionListener{ JLabel input; JTextField inputNumber; Object name[]={"编号","书名","出版社","出版日期"} ; Object a[][]=new Object[1][4]; JTable table; JButton delete; JPanel pane=new JPanel(); Connection con; Statement sql; ResultSet rs; String num; Delete(){ input=new JLabel("请输入删除书的编号:(以回车结束)"); inputNumber=new JTextField(20); delete=new JButton("删除"); table=new JTable(a,name); pane.add(input); pane.add(inputNumber); add(pane,BorderLayout.NORTH); add(table,BorderLayout.CENTER); add(delete,BorderLayout.SOUTH); inputNumber.addActionListener(this); delete.addActionListener(this); setBounds(100,100,800,300); setVisible(true); } public void actionPerformed(ActionEvent e){ try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); }catch(ClassNotFoundException eee){ System.out.println(""+eee); } try{ num=inputNumber.getText().trim(); con=DriverManager.getConnection("jdbc:odbc:renshi","",""); sql=con.createStatement(); rs=sql.executeQuery("SELECT *FROM bookinformation where 编号='"+num+"'"); boolean boo=rs.next(); if(boo==false){ JOptionPane.showMessageDialog(this,"编号不存在","提示",JOptionPane.WARNING_MESSAGE); } else{ a[0][0]=rs.getString(1); a[0][1]=rs.getString(2); a[0][2]=rs.getString(3); a[0][3]=rs.getDate(4).toString(); table.repaint(); if(e.getSource()==delete){ int n=JOptionPane.showConfirmDialog(this,"确认要删除吗?","确认对话框",JOptionPane.YES_OPTION); if(n==JOptionPane.YES_OPTION){ sql=con.createStatement(); int k=sql.executeUpdate("DELETE FROM bookinformation WHERE 编号='"+num+"'"); if(k==1) { JOptionPane.showMessageDialog(this,"删除成功!","删除",JOptionPane.PLAIN_MESSAGE); setVisible(false); } else { JOptionPane.showMessageDialog(this,"删除失败!","删除",JOptionPane.ERROR_MESSAGE); setVisible(false); } } } } con.close(); }catch(SQLException ee){ System.out.println(ee); } } } class Modify extends JDialog implements ActionListener{ JLabel infor; JTextField inputNumber; Object name[]={"编号","书名","出版社","出版日期"}; Object a[][]=new Object[1][4]; JTable table; JButton queren; Connection con; Statement sql; ResultSet rs; String num; Modify(){ infor=new JLabel("输入编号(以回车确认):"); inputNumber=new JTextField(20); table=new JTable(a,name); queren=new JButton("修改记录"); setLayout(new FlowLayout()); infor.setPreferredSize(new Dimension(100,70)); add(infor); add(inputNumber); add(table); queren.setPreferredSize(new Dimension(80,50)); add(queren); inputNumber.addActionListener(this); queren.addActionListener(this); setBounds(20,60,300,500); setVisible(true); } public void actionPerformed(ActionEvent e){ try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); }catch(ClassNotFoundException ee){ System.out.println(""+ee); } if(e.getSource()==inputNumber){ try{ num=inputNumber.getText().trim(); con=DriverManager.getConnection("jdbc:odbc:renshi","",""); sql=con.createStatement(); rs=sql.executeQuery("SELECT * FROM bookinformation WHERE 编号='"+num+"'"); boolean boo=rs.next(); if(boo==false){ JOptionPane.showMessageDialog(this,"编号不存在","提示",JOptionPane.WARNING_MESSAGE); } else{ a[0][0]=rs.getString(2); a[0][1]=rs.getString(3); a[0][2]=rs.getDate(4).toString(); table.repaint(); } con.close(); } catch(SQLException eee){ System.out.println(eee); } } if(e.getSource()==queren){ try{ table.repaint(); con=DriverManager.getConnection("jdbc:odbc:renshi","",""); sql=con.createStatement(); int k=sql.executeUpdate("UPDATE bookinformation SET 书名='"+a[0][0]+"',出版社='"+a[0][1]+"',出版日期 ='"+a[0][2]+"' WHERE 编号='"+num+"'"); if(k==1){ JOptionPane.showMessageDialog(this,"更新成功","成功",JOptionPane.PLAIN_MESSAGE); con.close(); setVisible(false); } }catch(SQLException eeee){ JOptionPane.showMessageDialog(this,"更新失败"+eeee,"失败",JOptionPane.ERROR_MESSAGE); } } } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值