Java 图书馆管理系统(附全代码)_课程设计报告
- 格式:docx
- 大小:350.48 KB
- 文档页数:76
图书管理系统java课程设计报告一、教学目标本课程旨在通过学习Java语言实现图书管理系统,使学生掌握Java编程的基本语法和面向对象编程思想,具备运用Java语言解决实际问题的能力。
具体目标如下:1.知识目标:–掌握Java基本语法和数据结构;–理解面向对象编程的基本概念和方法;–熟悉图书管理系统的业务流程和设计方法。
2.技能目标:–能够使用Java编写简单的程序;–能够运用面向对象编程思想进行程序设计;–能够独立完成图书管理系统的开发和调试。
3.情感态度价值观目标:–培养学生的团队合作意识和沟通能力;–培养学生的问题解决能力和创新精神;–培养学生的自主学习能力和持续进步意识。
二、教学内容本课程的教学内容主要包括Java基本语法、数据结构、面向对象编程思想和图书管理系统的设计与实现。
具体安排如下:1.Java基本语法:介绍Java语言的基本元素、运算符、控制结构等;2.数据结构:讲解数组、链表、栈和队列等基本数据结构的使用和实现;3.面向对象编程:讲解类和对象、继承和多态、封装等基本概念和应用;4.图书管理系统:介绍图书管理系统的业务需求、设计方法和实现技巧。
三、教学方法本课程采用讲授法、案例分析法和实验法等多种教学方法,以激发学生的学习兴趣和主动性。
1.讲授法:通过讲解基本概念、原理和方法,使学生掌握相关知识;2.案例分析法:通过分析实际案例,使学生理解图书管理系统的业务流程和设计方法;3.实验法:通过动手实践,使学生熟悉Java编程环境和开发工具,提高编程能力。
四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备等。
1.教材:选用权威、实用的Java编程教材,如《Java核心技术》等;2.参考书:提供相关的Java编程参考书籍,如《Java编程思想》等;3.多媒体资料:制作课件、视频等多媒体教学资料,以便学生随时复习和巩固知识;4.实验设备:提供计算机、网络等实验设备,确保学生能够进行实验和实践。
《数据库系统概论》课程报告欧阳家百(2021.03.07)课题名称:小型图书管理系统课题负责人名(学号):best同组成员名单(角色):指导教师:评阅成绩:评阅意见:提交报告时间:12月15日小型图书管理系统计算机科学与技术专业学生指导老师[摘要] 随着计算机技术的飞速发展,利用计算机来获得和处理信息是当今信息管理的一大特点。
伴随计算机硬件的快速发展,有关信息管理的软件——数据库系统软件也在迅猛发展着。
图书馆是高等院校的重要组成部门,是教师和学生获取知识的重要场所。
由于图书馆主要从事大量的图书资料的储存和流通。
所以一直以来,计算机在图书馆的图书管理中得到了广泛的应用。
本系统实现图书信息管理的系统化,规范化和自动化,以最大程度提高操作人员的办公效率。
关键词:JAVA、JDBC、SQL Server、数据库、图书馆管理一、实验题目:小型图书管理系统二、实验的目的和要求:完成一个小型图书管理系统,功能要求如下:1)能够通过书籍基本信息(包括:书号、书名、出版社、出版日期、作者、内容摘要)单个或以AND方式组合多个条件查询书籍信息;2)对于每一种书籍,除可查看其基本信息之外还可查看其总数以及目前在馆数量3)可增添新的书籍4)可删除已有书籍(如有读者借了该书籍尚未归还,则不允许删除)5)可修改书籍的基本信息6)能够通过读者基本信息(包括:证号、姓名、性别、系名、年级)单个或以AND方式组合多个条件查询读者信息7)对于每位读者除可查看其基本信息之外,还可查看其已借的书籍列表、数量、借还日期8)可增添新的读者9)可删除已有读者(如该读者有尚未归还的借书,则不允许删除)10)可修改读者的基本信息11)可完成借还书籍的手续12)还书时如超期,应该显示超期天数13)借书时如果有超期的书没有还,则不允许借书14)可查询有哪些读者有超期的书没有还,列出这些读者的基本信息三、实验的环境:1、硬件环境:CPU:Intel(R) Core i532302.60GHzRAM:8GB2、软件环境:操作系统:Windows 7 UltimateSP1编译软件:Eclipse LunaMicrosoft SQL Server四、系统ER图五、表结构定义(使用表格说明)六、系统功能模块1)能够通过书籍基本信息单个或组合多个条件查询书籍信息;2)对于每一种书籍,除可查看其基本信息之外还可查看其总数以及目前在馆数量3)可增添新的书籍4)可删除已有书籍(如有读者借了该书籍尚未归还,则不允许删除)5)可修改书籍的基本信息6)能够通过读者基本信息单个或组合多个条件查询读者信息7)对于每位读者除可查看其基本信息之外,还可查看其已借的书籍列表、数量、借还日期8)可增添新的读者9)可删除已有读者(如该读者有尚未归还的借书,则不允许删除)10)可修改读者的基本信息11)可完成借还书籍的手续12)还书时如超期,应该显示超期天数13)借书时如果有超期的书没有还,则不允许借书14)可查询有哪些读者有超期的书没有还,列出这些读者的基本信息七、程序框架流程图九、程序运行结果八、核心代码AddBook.javaimport java.awt.BorderLayout;import java.awt.Container;import java.awt.GridLayout;import java.awt.event.*;import java.util.ArrayList;import javax.swing.*; publicclassAddBookextends JFrame implements ActionListener {SQLOperation op = new SQLOperation();Container c = getContentPane();JPanel p1 = new JPanel();JLabel bookNumber = new JLabel("Book Number:");JLabel bookName = new JLabel("Book Name:");JLabel bookAuthor = new JLabel("Book Author:");JLabel press = new JLabel("Press:");JLabel pressTime = new JLabel("Press time:");JLabel bookAbstract = newJLabel("Abstract:");JLabel storage = new JLabel("Storage:");JLabel remain = new JLabel("Remain");JLabel remain1 = new JLabel("Update with Storage");JTextFieldnumberField = newJTextField(); JTextFieldnameField = newJTextField(); JTextFieldauthorField = newJTextField(); JTextFieldpressField = newJTextField(); JTextFieldpressTimeField = newJTextField(); JTextFieldabstractField = newJTextField(); JTextFieldstorageField = newJTextField();JButton cancel = new JButton("Cancel");JButton confirm = new JButton("Confirm!!"); public AddBook() {c.add(p1, BorderLayout.NORTH);p1.setLayout(new GridLayout(9, 2, 20, 10));p1.add(bookNumber);p1.add(numberField);p1.add(bookName);p1.add(nameField);p1.add(bookAuthor);p1.add(authorField);p1.add(press);p1.add(pressField);p1.add(pressTime);p1.add(pressTimeField);p1.add(bookAbstract);p1.add(abstractField);p1.add(storage);p1.add(storageField);p1.add(remain);p1.add(remain1);p1.add(cancel);p1.add(confirm);cancel.addActionListener(this);confirm.addActionListener(this);}publicvoid actionPerformed(ActionEvent e) { // TODO Autogenerated method stubif (e.getSource() == cancel) {this.dispose();}if (e.getSource() == confirm) {this.dispose();BookInfo book = newBookInfo(numberField.getText(),nameField.getText(), authorField.getText(), pressField.getText(), pressTimeField.getText(), abstractField.getText(),Integer.parseInt(storageField.getText()),Integer.parseInt(storageField.getText()));ArrayList<String> strArray = new ArrayList<String>();strArray = op.addBookJudgement();intn = 0;intreplicate = 0;while (n < Integer.parseInt(strArray.get(0))) {n++;if (numberField.getText().equals(strArray.get(n))) { replicate++;}}if (replicate == 0) {op.saveBook(book);JOptionPane.showMessageDialog(null, "Add a book successfully!","Information",RMATION_MESSAGE);} else {JOptionPane.showMessageDialog(null, "This book(number) has already existed!", "Warning",RMATION_MESSAGE);}}}}AddReader.javaimport java.awt.BorderLayout;import java.awt.Container;import java.awt.GridLayout;import java.awt.event.*;import java.util.ArrayList;import javax.swing.*; publicclassAddReaderextends JFrame implements ActionListener {SQLOperation op = new SQLOperation();Container c = getContentPane();JPanel p1 = new JPanel();JLabel readerNumber = new JLabel("Reader Number:");JLabel readerName = new JLabel("Reader Name:");JLabel sex = new JLabel("Sex:");JLabel dpt = new JLabel("Department:");JLabel grade = new JLabel("Grade:");JTextField numberField = new JTextField();JTextField nameField = new JTextField();JTextField sexField = new JTextField();JTextField dptField = new JTextField();JTextField gradeField = new JTextField();JButton cancel = new JButton("Cancel");JButton confirm = new JButton("Confirm!!"); public AddReader() {c.add(p1, BorderLayout.NORTH);p1.setLayout(new GridLayout(6, 2, 20, 10));p1.add(readerNumber);p1.add(numberField);p1.add(readerName);p1.add(nameField);p1.add(sex);p1.add(sexField);p1.add(dpt);p1.add(dptField);p1.add(grade);p1.add(gradeField);p1.add(cancel);p1.add(confirm);cancel.addActionListener(this);confirm.addActionListener(this);}publicvoid actionPerformed(ActionEvent e) {// TODO Autogenerated method stubif (e.getSource() == cancel) {this.dispose();}if (e.getSource() == confirm) {this.dispose();ReaderInfo reader = new ReaderInfo(numberField.getText(),nameField.getText(), sexField.getText(), dptField.getText(),Integer.parseInt(gradeField.getText()));ArrayList<String> strArray = new ArrayList<String>();strArray = op.addReaderJudgement();intn = 0;intreplicate = 0;while (n < Integer.parseInt(strArray.get(0))) {n++;if (numberField.getText().equals(strArray.get(n))) { replicate++;}}if (replicate == 0) {if (!sexField.getText().equals("boy")&& !sexField.getText().equals("girl")) {JOptionPane.showMessageDialog(null,"In the Sex field, you can only input 'boy' or 'girl'!","Warning",RMATION_MESSAGE);} else {op.saveReader(reader);JOptionPane.showMessageDialog(null, "Add a reader successfully!", "Information",RMATION_MESSAGE);}} else {JOptionPane.showMessageDialog(null, "This reader(number) has already existed!", "Warning",RMATION_MESSAGE);}}}}BookDetails.javaimport java.awt.BorderLayout;import java.awt.Container;import java.awt.Dimension;import java.awt.GridLayout;import java.awt.event.*;import java.util.ArrayList;import javax.swing.*;import javax.swing.table.DefaultTableModel; publicclassBookDetailsextends JFrame implementsActionListener {SQLOperation op = new SQLOperation();Container c = getContentPane();JPanel p1 = new JPanel();JPanel p2 = new JPanel();JPanel p3 = new JPanel();JLabel bookNumber = new JLabel("Book Number:");JLabel bookName = new JLabel("Book Name:");JLabel author = new JLabel("Author:");JLabel press = new JLabel("Press:");JLabel pressTime = new JLabel("Press time:");JLabel bookAbstract = newJLabel("Abstract:");JLabel storage = new JLabel("Storage:");JLabel remain = new JLabel("Remain:");JLabel numberField = new JLabel();JLabel nameField = new JLabel();JLabel authorField = new JLabel();JLabel pressField = new JLabel();JLabel pressTimeField = new JLabel();JLabel abstractField = new JLabel();JLabel storageField = new JLabel();JLabel remainField = new JLabel();JButton cancel = new JButton("Cancel");JLabel details = new JLabel("Borrow and reaturn details");Object[] s = { "Reader number", "Borrow time", "Deadline", "Over time" };Object[][] ob1 = new Object[7][4];JTable table = new JTable(ob1, s);JScrollPane scrollPane = new JScrollPane(table);public BookDetails(String number) {BookInfo book = newBookInfo(number);ob1 = op.borrowListForBook(number);for (inti = 0; i < 5; i++) {DefaultTableModel books = new DefaultTableModel(ob1, s);for (intn = 0; n < 7; n++) {for (intm = 0; m < 4; m++) {ob1[n][m] = this.ob1[n][m];}table.setModel(books);table.invalidate();}}ArrayList<String> strArray = new ArrayList<String>();strArray = op.outputBook(book); numberField.setText(number);nameField.setText(strArray.get(1)); authorField.setText(strArray.get(2)); pressField.setText(strArray.get(3)); pressTimeField.setText(strArray.get(4)); abstractField.setText(strArray.get(5)); storageField.setText(strArray.get(6)); remainField.setText(strArray.get(7));c.add(p1, BorderLayout.NORTH);c.add(p2, BorderLayout.CENTER);c.add(p3, BorderLayout.SOUTH);p1.setLayout(new GridLayout(9, 2, 20, 10)); p1.add(bookNumber);p1.add(numberField);p1.add(bookName);p1.add(nameField);p1.add(author);p1.add(authorField);p1.add(press);p1.add(pressField);p1.add(pressTime);p1.add(pressTimeField);p1.add(bookAbstract);p1.add(abstractField);p1.add(storage);p1.add(storageField);p1.add(remain);p1.add(remainField);p1.add(details);scrollPane.setBounds(0, 0, 800, 300);p2.add(scrollPane);p3.add(cancel);table.setPreferredScrollableViewportSize(new Dimension(400, 100));cancel.addActionListener(this);}publicvoid actionPerformed(ActionEvent e) { // TODO Autogenerated method stubif (e.getSource() == cancel) {this.dispose();}}}BookInfo.javapublicclass BookInfo {private String number, name, author, press, pressTime, bookAbstract;privateinttotal, remain;// default constructorpublic BookInfo() {}public BookInfo(String number) {this.number = number;}public BookInfo(String number, String name) { this.number = number; = name;}public BookInfo(String number, String name, String author, String press,String pressTime, String bookAbstract, inttotal, intremain) {this.number = number; = name;this.author = author;this.press = press;this.pressTime = pressTime;this.bookAbstract = bookAbstract;this.total = total;this.remain = remain;}publicvoid setRemain(inti) {this.remain=i;}public String getNumber() { returnnumber;}public String getName() { returnname;}public String getAuthor() { returnauthor;}public String getPress() { returnpress;}public String getPressTime() { returnpressTime;}public String getBookAbstract() { returnbookAbstract;}publicint getTotal() { returntotal;}publicint getRemain() {returnremain;}}BookRetrieval.javaimport java.awt.BorderLayout;import java.awt.Container;import java.awt.Dimension;import java.awt.Font;import java.awt.GridLayout;import java.awt.event.*;import java.util.ArrayList;import javax.swing.*;import javax.swing.table.DefaultTableModel; classBookRetrievalextends JFrame implements ActionListener {SQLOperation op = new SQLOperation();Container c = getContentPane();JPanel p1 = new JPanel();JPanel p4 = new JPanel();JPanel p5 = new JPanel();JLabel bookNumber = new JLabel("Book Number:");JLabel bookName = new JLabel("Book Name:");JTextField number = new JTextField();JTextField name = new JTextField();JButton back = new JButton("Back (Fresh)");JButton addBook = new JButton("Add a book");JButton deleteBook = new JButton("Delete a book");JButton editBook = new JButton("Edit a book");JButton search = new JButton("Search for details!");JButton borrowBook = new JButton("Borrow a book");JButton returnBook = new JButton("Return a book");Font font1 = new Font("00", Font.BOLD, 20);Object[] s = { "Number", "Name", "Author","Press", "Press Time","Abstract", "Storage", "Remain" };Object[][] ob = new Object[40][8];JTable table = new JTable(ob, s);JScrollPane scrollPane = new JScrollPane(table);public BookRetrieval() {BookInfo book = new BookInfo();ob = op.allBook(book);for (inti = 0; i < 5; i++) {DefaultTableModel books = new DefaultTableModel(ob, s);for (intn = 0; n < 20; n++) {for (intm = 0; m < 8; m++) {ob[n][m] = this.ob[n][m];}table.setModel(books);table.invalidate();}}c.add(p4, BorderLayout.NORTH);c.add(p1, BorderLayout.CENTER);c.add(p5, BorderLayout.SOUTH);search.setFont(font1);p4.setLayout(new GridLayout(2, 4, 20, 10)); p4.add(back);p4.add(addBook);p4.add(editBook);p4.add(deleteBook);p4.add(borrowBook);p4.add(returnBook);p1.setLayout(null);scrollPane.setBounds(0, 0, 800, 300);p1.add(scrollPane);p5.setLayout(new GridLayout(5, 1, 0, 0));p5.add(bookNumber);p5.add(number);p5.add(bookName);p5.add(name);p5.add(search);table.setPreferredScrollableViewportSize(new Dimension(400, 300));addBook.addActionListener(this);search.addActionListener(this);back.addActionListener(this);deleteBook.addActionListener(this);editBook.addActionListener(this);borrowBook.addActionListener(this); returnBook.addActionListener(this);}publicvoid actionPerformed(ActionEvent e) {if (e.getSource() == search) {ArrayList<String> strArray = new ArrayList<String>();strArray = op.addBookJudgement();String s1 = number.getText();String s2 = name.getText();intn = 0;intreplicate = 0;while (n < Integer.parseInt(strArray.get(0))) {n++;if (s1.equals(strArray.get(n))) {replicate++;}}ArrayList<String> strArray1 = new ArrayList<String>();strArray1 = op.addBookJudgement1();intn1 = 0;intreplicate1 = 0;while (n1 < Integer.parseInt(strArray1.get(0))) { n1++;if (s2.equals(strArray1.get(n1))) {replicate1++;}}if (replicate == 0 && replicate1 == 0) {JOptionPane.showMessageDialog(null, "Please input a correct book number or name!", "Warning",RMATION_MESSAGE);} elseif (replicate != 0 || replicate1 != 0) {if (replicate == 0 && replicate1 != 0) {BookInfo book = new BookInfo(s1, s2);String s =op.searchBookByName(book);BookDetails f = new BookDetails(s);//f.setDefaultCloseOperation(JFrame.EXIT_ON_CL OSE);f.setTitle("Book Details");f.setLocation(300, 200);f.setSize(480, 470);f.setVisible(true);} elseif (replicate != 0) {BookDetails f = new BookDetails(s1);//f.setDefaultCloseOperation(JFrame.EXIT_ON_CL OSE);f.setTitle("Book Details");f.setLocation(300, 200);f.setSize(480, 470);f.setVisible(true);}}}if (e.getSource() == back) {this.dispose();MyFrame f = new MyFrame();//f.setDefaultCloseOperation(JFrame.EXIT_ON_CL OSE);f.setTitle("Library Management System");f.setLocation(300, 200);f.setSize(580, 300);f.setVisible(true);}if (e.getSource() == addBook) {AddBook f = new AddBook();//f.setDefaultCloseOperation(JFrame.EXIT_ON_CLf.setTitle("Add a book");f.setLocation(300, 200);f.setSize(300, 400);f.setVisible(true);}if (e.getSource() == deleteBook) {DeleteBook f = new DeleteBook(); //f.setDefaultCloseOperation(JFrame.EXIT_ON_CL OSE);f.setTitle("Delete a book");f.setLocation(300, 200);f.setSize(300, 200);f.setVisible(true);}if (e.getSource() == borrowBook) {BorrowBook f = new BorrowBook();//f.setDefaultCloseOperation(JFrame.EXIT_ON_CLf.setTitle("Borrow a book");f.setLocation(300, 200);f.setSize(300, 200);f.setVisible(true);}if (e.getSource() == returnBook) {ReturnBook f = new ReturnBook(); //f.setDefaultCloseOperation(JFrame.EXIT_ON_CL OSE);f.setTitle("Return a book");f.setLocation(300, 200);f.setSize(300, 200);f.setVisible(true);}if (e.getSource() == editBook) {SelectEdit f = new SelectEdit();//f.setDefaultCloseOperation(JFrame.EXIT_ON_CL OSE);f.setTitle("Edit a book");f.setLocation(300, 200);f.setSize(300, 200);f.setVisible(true);}}}BorrowBook.javaimport java.awt.BorderLayout;import java.awt.Container;import java.awt.GridLayout;import java.awt.event.*;import java.util.ArrayList;import javax.swing.*; publicclassBorrowBookextends JFrame implements ActionListener {SQLOperation op = new SQLOperation();Container c = getContentPane();JPanel p1 = new JPanel();JLabel bookNumber = new JLabel("Book Number:");JTextField numberField = new JTextField();JLabel readerNumber = new JLabel("Reader Number:");JTextField readerNumberField = new JTextField();JButton cancel = new JButton("Cancel");JButton borrow = new JButton("Borrow!!"); public BorrowBook() {c.add(p1, BorderLayout.NORTH);p1.setLayout(new GridLayout(3, 2, 20, 10));p1.add(bookNumber);p1.add(numberField);p1.add(readerNumber);p1.add(readerNumberField);p1.add(cancel);p1.add(borrow);cancel.addActionListener(this);borrow.addActionListener(this);}publicvoid actionPerformed(ActionEvent e) {// TODO Autogenerated method stubif (e.getSource() == cancel) {this.dispose();}if (e.getSource() == borrow) {String bookNumber = numberField.getText();ArrayList<String> strArray = new ArrayList<String>();strArray = op.addBookJudgement();intn = 0;intreplicate = 0;while (n < Integer.parseInt(strArray.get(0))) {n++;if (bookNumber.equals(strArray.get(n))) { replicate++;}}String readerNumber = readerNumberField.getText();ArrayList<String> strArray1 = new ArrayList<String>();strArray1 = op.addReaderJudgement();intn1 = 0;intreplicate1 = 0;while (n1 < Integer.parseInt(strArray1.get(0))) { n1++;if (readerNumber.equals(strArray1.get(n1))) { replicate1++;}}if (replicate == 0 || replicate1 == 0) {JOptionPane.showMessageDialog(null,"Please input a correct book number and a reader number!","Warning",RMATION_MESSAGE);} else {BookInfo book = new BookInfo(bookNumber);ArrayList<String> s = new ArrayList<String>();s = op.outputBook(book);if (Integer.parseInt(s.get(7)) > 0) {ints1 = op.reBorrowCheck(numberField.getText(), readerNumberField.getText());if (s1 == 1) {JOptionPane.showMessageDialog(null,"You have borrowed this book, can not reborrowit!","Unsuccessful",RMATION_MESSAGE);} else { longcurrentTime = System.currentTimeMillis();if (op.deadLineCheck(readerNumberField.getText(), currentTime) != 0) {JOptionPane.showMessageDialog(null,"You have exceeded the deadline, please return these books first!","Unsuccessful",RMATION_MESSAGE);} else {BookInfo book1 = new BookInfo(s.get(0), s.get(1),s.get(2), s.get(3), s.get(4), s.get(5),Integer.parseInt(s.get(6)),Integer.parseInt(s.get(7)) 1);op.inputBook(book1);String borrowTime = Long.toString(System.currentTimeMillis());String deadline = Long.toString(System.currentTimeMillis() + 2592000000l);System.out.println(borrowTime);System.out.println(deadline);op.insertBorrow(numberField.getText(), readerNumberField.getText(), borrowTime, deadline);JOptionPane.showMessageDialog(null,"Borrowed this book successfully, you have 30 days to enjoy this book!","Successful",RMATION_MESSAGE);}}} else {JOptionPane.showMessageDialog(null, "This book has been borrowed!", "Unsuccessful",RMATION_MESSAGE);}}this.dispose();}}}BorrowList.Javaimport java.awt.BorderLayout;import java.awt.Container;import java.awt.Dimension;importjava.awt.Font;importjava.awt.GridLayout;import java.awt.event.*;importjava.util.ArrayList;import javax.swing.*;import javax.swing.table.DefaultTableModel; publicclassBorrowListextends JFrame implements ActionListener {SQLOperation op = new SQLOperation();Container c = getContentPane();JPanel p1 = new JPanel();JPanel p2 = new JPanel();JButton back=new JButton("Back");Object[] s = { "Book number", "Reader number", "Borrow time", "Deadline","OverTime"};Object[][] ob = new Object[100][5];JTable table = new JTable(ob, s);JScrollPane scrollPane = newJScrollPane(table);public BorrowList() {// TODO Autogenerated constructor stubObject[][] ob1 = op.borrowList();for (inti = 0; i < 5; i++) {DefaultTableModel list = new DefaultTableModel(ob, s);for (intn = 0; n < 100; n++) {for (intm = 0; m < 5; m++) {ob[n][m] = ob1[n][m];}table.setModel(list);table.invalidate();}}c.add(p1, BorderLayout.CENTER);c.add(p2,BorderLayout.SOUTH); scrollPane.setBounds(0, 0, 800, 300);p1.add(scrollPane);p2.add(back);table.setPreferredScrollableViewportSize(new Dimension(400, 400));back.addActionListener(this);}publicvoid actionPerformed(ActionEvent e) { if (e.getSource() == back) {this.dispose();MyFrame f = new MyFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CL OSE);f.setTitle("Library Management System");f.setLocation(300, 200);f.setSize(580, 300);f.setVisible(true);}// TODO Autogenerated method stub}}Date.javaimport java.text.DateFormat;import java.text.SimpleDateFormat;publicclass Date {public Date(){}static String borrowTimeInterface(longtime) {SimpleDateFormat df = (SimpleDateFormat) DateFormat.getInstance();df.applyPattern("yyyyMMdd");String s = df.format(time);returns;}}DeleteBook.javaimport java.awt.BorderLayout;import java.awt.Container;import java.awt.GridLayout;import java.awt.event.*;import javax.swing.*; publicclassDeleteBookextends JFrame implements ActionListener {SQLOperation op = new SQLOperation();Container c = getContentPane();JPanel p1 = new JPanel();JLabel bookNumber = new JLabel("Book Number:");JTextField numberField = new JTextField();JButton cancel = new JButton("Cancel");JButton delete = new JButton("Delete!!");public DeleteBook() {c.add(p1, BorderLayout.NORTH);p1.setLayout(new GridLayout(2, 2, 20, 10));p1.add(bookNumber);p1.add(numberField);p1.add(cancel);p1.add(delete);cancel.addActionListener(this);delete.addActionListener(this);}publicvoid actionPerformed(ActionEvent e) {// TODO Autogenerated method stubif (e.getSource() == cancel) {this.dispose();}if (e.getSource() == delete) {BookInfo book = newBookInfo(numberField.getText());this.dispose();if (op.deleteBookCheck(numberField.getText()) != 0) {JOptionPane.showMessageDialog(null,"Delete the book unsuccessfully. The book bas been borrowed!","Warning",RMATION_MESSAGE);} else {if (op.deleteBook(book) == 1) {JOptionPane.showMessageDialog(null, "Delete the book successfully!", "Information",RMATION_MESSAGE);} else {JOptionPane.showMessageDialog(null,"Delete the book unsuccessfully. The book does notexist!","Warning",RMATION_MESSAGE);}}}}}DeleteReader.javaimport java.awt.BorderLayout;import java.awt.Container;import java.awt.GridLayout;import java.awt.event.*;import javax.swing.*; publicclassDeleteReaderextends JFrame implements ActionListener {SQLOperation op = new SQLOperation();Container c = getContentPane();JPanel p1 = new JPanel();JLabel readerNumber = new JLabel("Reader Number:");JTextField numberField = new JTextField();JButton cancel = new JButton("Cancel");JButton delete = new JButton("Delete!!"); public DeleteReader() {c.add(p1, BorderLayout.NORTH);p1.setLayout(new GridLayout(2, 2, 20, 10));p1.add(readerNumber);p1.add(numberField);p1.add(cancel);p1.add(delete);cancel.addActionListener(this);delete.addActionListener(this);}publicvoid actionPerformed(ActionEvent e) {// TODO Autogenerated method stubif (e.getSource() == cancel) {this.dispose();}if (e.getSource() == delete) {ReaderInfo reader = new ReaderInfo(numberField.getText());this.dispose();if(op.deleteReaderCheck(numberField.getText()) != 0) {JOptionPane.showMessageDialog(null,"Delete the reader unsuccessfully. Please return books first!","Warning",RMATION_MESSAGE);} else {if (op.deleteReader(reader) == 1) {JOptionPane.showMessageDialog(null, "Delete the reader successfully!", "Information",RMATION_MESSAGE);} else {JOptionPane.showMessageDialog(null,"Delete the reader unsuccessfully. The reader does not exist!","Warning",RMATION_MESSAGE);}}}}}EditBook.javaimport java.awt.BorderLayout;import java.awt.Container;import java.awt.GridLayout;import java.awt.event.*;import java.util.ArrayList;import javax.swing.*; publicclassEditBookextends JFrame implements ActionListener {。
目录目录 (1)一、系统简介 (1)二、需求分析 (2)、学生用户端 (2)、治理员端 (2)、开发环境 (2)三、概要设计 (2)、系统功能结构图 (2)四、数据库设计 (3)、数据库分析 (3)、系统E-R图 (3)、数据库表的设计 (5)五、详细设计 (7)、类图设计 (7)、类图说明 (8)六、系统实现 (9)、学生端系统预览 (9)、治理员端系统预览 (11)七、利用说明 (13)八、总结 (13)一、系统简介图书馆治理系统要紧目的是对图书馆种类繁多的图书进行治理,而且合理治理好用户的借还信息。
其开发要紧包括后台数据库的成立和爱惜,和前端应用程序的开发。
前者要求成立起数据一致性各完整性强、数据平安性好的数据库。
而后者那么要求应用程序具有功能完备、易用等特点。
因此本系统结合开放式图书馆的要求,采纳数据库进行系统的开发。
图书馆治理系统包括图书馆内图书的信息、学校在校学生的信息、学生的借阅预约图书信息等。
此系统功能分为面向学生和面向治理员两部份,其中学生能够进行借阅、预约、挂失和查询图书等操作,治理员能够完成图书和学生的增加、删除、修改和查询和对学生,借阅、预约、归还挂失的确认,超级治理员还能够对任意治理员的信息进行增、删、改、查,而一般治理员只有修改自已密码的权限。
二、需求分析图书馆治理系统应实现以下功能:、学生用户端●查询图书,学生用户能够进行简单查询和高级查询;●预约图书,当要借的书不在馆时,能够提早预约;●挂失图书,图书丢失需要挂失,可在学生端实现。
、治理员端●学生用户治理,实现不宪政用户信息的增、删、改、查;●图书治理,包括图书的增、删、改、查;●治理员治理,操作者包括超级治理员和普能治理员,超级治理员可对任意治理员的信息进行增、删、改、查,而一般治理员只有修改自已密码权限。
●借阅治理,主若是学生借阅图书、归还图书和交纳罚款的治理。
、开发环境开发此图书馆治理系统所需要用到的软件环境如下。
沈阳工程学院课程设计设计题目:Java程序设计课程设计——图书馆管理系统系别:信息工程系班级:计专本学生姓名:学号:指导教师:职称:副教授、教授起止日期:2011 年6月13日起——至2011年6月25日止沈阳工程学院课程设计任务书课程设计题目:Java程序设计课程设计-----图书馆管理系统系别:信息工程系班级:计专本101学生姓名:学号:0指导教师:职称:副教授、教授课程设计进行地点:实训F任务下达时间:2011 年 6 月13 日起止日期:2011 年 6 月13 日起——至2011年6月25 日止教研室主任:2011年6月12 日批准1.设计的原始资料及依据查阅有关数据库设计、java程序设计、面向对象程序设计等资料,进一步加深对课程内容的理解,利用程序设计的基本思想进行程序的开发,进一步掌握编程的方法和技巧,提高学生用程序的思想来解决实际问题的能力。
本课程设计主要涉及到需求分析、总体设计、详细设计以及底层数据库设计几个主要环节。
2.设计的主要内容及要求(1)写出系统的需求分析。
(2)写出数据库设计。
(3)写出系统的详细设计及各模块的功能。
(4)编写代码,开发系统。
3.对设计说明书撰写内容、格式、字数的要求⑴学生应撰写的内容为:中文摘要和关键词、目录、正文、参考文献等。
课程设计说明书(论文)的结构及各部分内容要求可参照《沈阳工程学院毕业设计(论文)撰写规范》执行。
应做到文理通顺,内容正确完整,书写工整,装订整齐。
⑵装订格式封面、任务书、成绩评审意见表、摘要和关键词、目录、正文、结论、致谢、参考文献。
⑶课程设计说明书(论文)是体现和总结课程设计成果的载体,一般不应少于3000字。
打印时采用A4纸,页边距均为20mm,正文采用宋体小四号字,行间距18磅。
文中大标题采用黑体小三号字,一级节标题采用黑体四号字,二级节标题采用黑体小四号字,三级节标题采用黑体小四号字,表题与图题采用宋体五号字。
4. 设计完成后应提交成果的种类、数量、质量等方面的要求⑴课程设计任务书⑵课程设计报告⑶设计成品5.时间进度安排6.主要参考资料(文献)[1] 耿祥义.JA V A2 实用教程.北京:清华大学出版社,2006[2] 朱仲杰.JA V A2 全方位学习.北京:机械工业出版社,2006[3] 张思民.JA V A程序设计实践教程.北京:清华大学出版社,2006[4] 汤一平.Java 语言程序设计.北京:科学出版社,2006沈阳工程学院课程设计成绩评定表系(部):信息工程系班级:计专本101 学生姓名:王凌飞、王洋、王婵、王雪摘要随着信息技术的发展,计算机已被广泛的应用于社会的各个领域,成为推动社会发展的技术动力。
java版图书管理系统课程设计报告第一章系统概述当今时代是飞速发展的信息时代。
在各行各业中离不开信息处理,这正是计算机网被广泛应用于管理信息系统的外部环境。
计算机的最大好处在于利用它能够进行信息管理。
使用计算机进行信息处理,不仅提高了工作效率,而且大大的提高了其安全性。
尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。
计算机进行信息管理与管理信息系统的开发密切相关,系统的开发是系统管理的前提。
本系统就是为了管理好图书馆信息而设计的。
图书馆作为一种信息资源的集聚地,图书和用户借阅资料繁多,包含很多的信息数据的管理。
该软件最终的使用者是学校,公司,图书馆管理者,并提供以下的功能:1.默认页提供关于图书馆管理系统的基本信息;2.图书馆管理者可以根据读者信息创建读者的帐户;3.如果读者输入的 ID 在数据库不存在,系统将显示错误页;4.图书馆管理者必须先登录才能在了解图书馆的详细信息和自己的基本信息,并可以对图书进行添加、查找、修改、注销等的操作,还可对读者进行管理与归类;5.读者必须先登录才能对图书进行借阅、归还、续借等操作。
第二章需求分析2.1 需求2.1.1功能需求2.1.1.1登录界面为了方便进行管理,我们设置了一个统一的登陆界面。
对于不同身份的人由系统自动判断。
2.1.1.1.1 用户登录(1) 用户信息此模块包括用户的姓名、密码、年龄和性别。
(2) 图书信息此模块包括图书的类别、名称、作者、出版社、以及图书馆里的现有数量。
(3) 借阅图书此模块包括借阅图书的用户、借阅的时间。
(4) 密码的更改管理员可根据自己的喜好更改自己的登录密码。
登录界面流程图2.1.1.2 图书信息管理2.1.1.2.1图书清单1.图书名2.图书编号3.类型4.作者5.已借出的本数6.所剩本数2.1.1.2.2新进图书信息2.1.1.2.3图书查询(1)按作者(2)按图书名2.1.1.2.4图书信息的更新及删除对图书信息进行修改,添加或删除。
Java图书馆管理系统课程设计摘要本文介绍了一个基于Java的图书馆管理系统的课程设计。
该系统旨在帮助图书馆有效地管理图书借阅、归还以及读者信息管理等功能。
系统采用Java语言编写,利用面向对象的思想进行设计与实现,实现了图书的分类管理、借阅记录的管理、读者信息的管理等功能。
通过该系统的设计与实现,方便图书馆管理员进行日常的图书信息管理工作,同时提高读者借阅图书和归还图书的便捷性。
1.引言图书馆作为一个重要的文化及知识传播机构,其管理任务日益复杂。
借助计算机技术的发展,图书馆管理系统帮助图书馆实现了自动化的图书信息管理、借阅管理和读者管理等功能,极大地提高了工作效率与准确性。
本文介绍的Java图书馆管理系统具有以下特点:•使用Java语言编写,具有良好的跨平台性;•采用面向对象的思想设计,具有良好的扩展性与可维护性;•实现了图书分类管理、借阅记录管理、读者信息管理等功能,并提供了相应的操作界面;•提高了图书管理员的工作效率,提供了读者便捷的查询借阅信息和操作的途径。
2.系统设计2.1 需求分析在开始系统设计之前,我们需要对图书馆管理系统的需求进行分析。
根据实际需求,我们确定了以下功能模块:•图书管理:包括图书的添加、删除、修改和查询;•读者管理:包括读者的添加、删除、修改和查询;•借阅管理:包括借阅记录的添加、删除、修改和查询;•统计分析:包括图书借阅量和读者借阅排行等统计分析功能。
2.2 系统架构系统采用三层架构进行设计,分为表示层、业务逻辑层和数据访问层。
•表示层:负责展示图书馆管理系统的界面,接受用户的操作输入,并将输入传递给业务逻辑层进行处理;•业务逻辑层:负责处理用户操作的业务逻辑,包括图书管理、读者管理、借阅管理等功能的实现;•数据访问层:负责与数据库进行数据交互,包括读取图书信息、读者信息、借阅记录信息等。
2.3 类设计在系统设计过程中,我们根据功能模块的需求,设计了以下类:•图书类(Book):表示一本书的信息,包括书名、作者、出版社等;•读者类(Reader):表示一个读者的信息,包括姓名、年龄、性别等;•借阅记录类(BorrowRecord):表示一条借阅记录的信息,包括图书、读者、借阅时间等;•图书管理类(BookManager):实现图书的添加、删除、修改和查询功能;•读者管理类(ReaderManager):实现读者的添加、删除、修改和查询功能;•借阅管理类(BorrowManager):实现借阅记录的添加、删除、修改和查询功能;•统计分析类(StatisticsManager):实现图书借阅量和读者借阅排行等统计分析功能。
湖南科技学院2012年 6月目录课题说明 (3)程序设计思路 (4)程序状态转换图 (4)数据库设计 (5)程序部分源代码 (6)Login.java登录类 (6)QueryBook.java 查找修改书籍类 (10)BookIn.java图书入库类 (17)RemoveBook.java 图书删除类 (22)Book.java 主界面类 (29)ConnectMysql.java数据库连接类 (33)程序测试 (34)登录 (34)主界面 (34)图书查询修改界面 (35)图书入库界面 (36)图书删除界面 (37)图书概览界面 (37)修改密码界面 (38)学生信息查询界面 (38)设计总结 (39)前期准备 (39)编程实现 (39)经验体会 (39)参考文献 (40)课题说明1、设计一个图书信息管理系统2、图书信息包括图书编号、书名、作者、出版社、出版日期、图书简介及图书类别等。
3、本系统功能描述:图书信息录入功能;图书信息浏览功能;查询功能(至少一种查询方式);图书信息修改功能;及其它你认为必要的功能。
程序设计思路程序较小,分为七个个模块,分别实现:登录,图书查询修改,图书入库,图书修改,图书概览,修改密码,学生信息查询。
程序通过登录模块登录后可以通过点击相应按钮使用其余六个模块的功能,从而实现图书管理员。
程序状态转换图Login.java通过ConnectMysql.连java接数据库登录取消确定,修改QueryBook.java 借书者信息StudenInfo.java通过通过ConnectMysql.java取消ConnectMysql.java 连接数据tpl库登录系统连接数据tpl库打开图书查询修改界打开学生查询界面面图书查询修改确定,修改学生信息查询修改确定,取消BookIn.java Login.java UpdateMima.java 通过通过通过ConnectMysql.java 图书入库ConnectMysql.java修改密码ConnectMysql.java连接数据tpl库连接数据tpl库连接数据tpl库打开图书入库界面打开程序主界面打开修改密码界面确定,取消借阅图书删除RemoveBook.java BookBrower.java通过图书概览通过ConnectMysql.java ConnectMysql.java连接数据tpl库连接数据tpl库打开图书删除界面取消打开图书概览界面查询,删除确定,返回数据库设计数据库类型为 MySQL Server 5.5数据库名称为 tpl下图为表结构程序部分源代码由于源代码较多,故只写出部分源代码Login.java登录类import java.awt.event.*;import javax.swing.*;import java.awt.*;import java.sql.*;@SuppressWarnings ( "serial" )class Login extends JFrame implements ActionListener// 登录窗口类{ // 定义各容器和组件Container cp=null ;JFrame f =null ;JButton j1 , j2 ;JTextField t1 ;JPasswordField t2 ;JLabel jlable1 , jlable2 ;Color c;JPanel jp1 , jp2 ;//构造函数Login(){//创建各对象f =new JFrame( " 小型图书管理系统 " );j1=new JButton("确定");j2=new JButton("取消");cp =f .getContentPane();jlable1 =new JLabel( "输入用户名" );jlable2 =new JLabel( "用户密码" );// 重构 painComponent 函数实现 JPanel 添加背景jp1 =new JPanel(){public void paintComponent(Graphics g) {super .paintComponent(g);ImageIcon img =new ImageIcon( "1.jpg" );g.drawImage(img.getImage(), 0, 0,null );}};jp2 =new JPanel();t1 =new JTextField(18);t2 =new JPasswordField(18);//将各组件加入相应的容器jp1 .add( jlable1 );jp1 .add( t1 );jp1 .add( jlable2 );jp1 .add( t2 );JLabel JL=new JLabel( " 欢迎登陆 " ,SwingConstants.CENTER);cp.add(JL, "North" );jp2 .add( j1 );jp2 .add( j2 );cp.add( jp1 , "Center" );cp.add( "South" , jp2 );jp1 .setBackground(new Color(255,153,255));Toolkit kit=Toolkit.getDefaultToolkit();Dimension screen=kit.getScreenSize();int x=screen. width ;/* 取得显示器窗口的宽度*/int y=screen. height ;/* 取得显示器窗口的高度*///setSize(x,y); /*让系统窗口平铺整个显示器窗口*/f .setSize(300,300);int xcenter=(x-300)/2;int ycenter=(y-300)/2;f .setLocation(xcenter,ycenter);/* 显示在窗口中央*/f .setVisible(true );//-----------------------------------------------------j1 .addActionListener(this ); // 注册事件监听器j2 .addActionListener(this );f .addWindowListener(new WindowAdapter(){//关闭窗口函数public void windowClosing(WindowEvent e){System.exit (0);}});}@SuppressWarnings ( "deprecation" )public void confirm() // 验证用户和密码是否存在{try { ConnectMysql a=new ConnectMysql();Connection con=a.Connecting();Statement sql=con.createStatement();String uName=t1 .getText().trim();String password=t2 .getText().trim();String queryMima="select * from user where用户名='" +uName+"' and密码='" +password+ "'" ;ResultSet rs=sql.executeQuery(queryMima);if (rs.next()){new Book(uName);f.hide();con.close();}else {JOptionPane.showMessageDialog( null , "该用户不存在" , " 提示! " ,JOptionPane.YES_NO_OPTION);}t1.setText("");t2.setText("");}catch (SQLException g){System.out .println("E Code" +g.getErrorCode());System.out .println("E M" +g.getMessage());}}//响应监听的不同事件public void actionPerformed(ActionEvent e){String cmd=e.getActionCommand();if (cmd.equals(" 确定 " )){confirm();}else if (cmd.equals(" 取消 " )){f .dispose();}}@SuppressWarnings ( "unused" )public static void main(String []arg){Login a=new Login();}}QueryBook.java 查找修改书籍类import java.awt.event.*;import javax.swing.*;import java.awt.*;import java.sql.*;class QueryBook implements ActionListener// 查询修改书籍信息窗口类{//定义容器和组件JFrame f3 ;Container cp;JPanel jp1 , jp2 , jp3 , jp4 , jp , jpanelWest ;JButton jbt1 , jbt2 , jbt3 , jbt4 ; // 按钮,确定、取消、修改、借书者信息JLabel label ;// 标签:请输入图书号JTextField tf , tf1 , tf2 , tf3 , tf4 , tf5 , tf6 , tf7 , tf8 ;// 定义文本框JLabel label1 , label2 , label3 , label4 ;QueryBook(){f3 =new JFrame();cp=f3 .getContentPane();//初始化面板、按钮、标签、文本框jp1 =new JPanel();jp2 =new JPanel();jp3 =new JPanel();jp4 =new JPanel();jpanelWest=new JPanel();jp =new JPanel();//------------------------------------------------jbt1=new JButton("确定");jbt2=new JButton("取消");jbt3=new JButton("修改");jbt4=new JButton(" 借书者信息 " );label=new JLabel(" 请输入图书号: " ,SwingConstants. CENTER); label.setForeground(Color.blue );tf=new JTextField(20);tf1=new JTextField(20);tf2=new JTextField(20);tf3=new JTextField(20);tf4=new JTextField(20);tf5=new JTextField(20);tf6=new JTextField(20);tf7=new JTextField(20);tf8=new JTextField(20);//布局 , 添加控件JPanel jpanel=new JPanel();jpanel.add(label);jpanel.add(tf );JPanel pp4=new JPanel();JPanel jpane4=new JPanel();cp.add(jpanel,"North" );JPanel pp2=new JPanel(new GridLayout(8,1));JPanel pp3=new JPanel();pp4.setLayout(new GridLayout(8,1));pp4.add(new JLabel(" 图书名 " ,SwingConstants.CENTER)); pp2.add(tf1);pp4.add(new JLabel(" 图书号 " ,SwingConstants.CENTER)); pp2.add(tf2);pp4.add(new JLabel(" 单价 " ,SwingConstants.));CENTERpp2.add(tf3);pp4.add(new JLabel(" 作者 " ,SwingConstants.CENTER)); pp2.add(tf4);pp4.add(new JLabel(" 出版社 " ,SwingConstants.));CENTERpp2.add(tf5);pp4.add(new JLabel(" 入库时间 " ,SwingConstants.CENTER)); pp2.add(tf6);pp4.add(new JLabel(" 是否被借 " ,SwingConstants.CENTER)); pp2.add(tf7);pp4.add(new JLabel(" 借书者学号 " ,SwingConstants.));CENTER pp2.add( tf8 );//将按钮加入 pp3中pp3.add( jbt1 ); // 按钮确定pp3.add( jbt2 ); // 按钮取消pp3.add( jbt3 ); // 按钮修改pp3.add( jbt4 ); // 按钮借书者信息cp.add(pp4, "West" );cp.add(pp2, "Center" );cp.add(pp3, "South" );cp.add(jpane4, "East" );//------------------------------------------------Toolkit kit=Toolkit.getDefaultToolkit();Dimension screen=kit.getScreenSize();int x=screen. width ;/* 取得显示器窗口的宽度*/int y=screen. height ;/* 取得显示器窗口的高度*/f3 .setSize(350,330);int xcenter=(x-350)/2;int ycenter=(y-330)/2;f3 .setLocation(xcenter,ycenter);/* 显示在窗口中央*/f3 .setVisible(true );//-------------------------------------------------jbt1 .addActionListener(this ); // 注册监听器jbt2 .addActionListener(this );jbt3 .addActionListener(this );jbt4 .addActionListener(this );}//------------------------------------------------public void showRecord(){try { ConnectMysql a=new ConnectMysql();Connection con=a.Connecting();Statement sql;String ql=tf .getText().trim();String s="select * from book where图书号='"+ql + "'" ;sql=con.createStatement();ResultSet rs=sql.executeQuery(s);if (rs.next()){String bname=rs.getString(1);String bno=rs.getString(2);String price=rs.getString(3);String writer=rs.getString(4);String publish=rs.getString(5);String indate=rs.getString(6);String isBorrowed=rs.getString(7);String borrowedName=rs.getString(8);tf1 .setText(bname);tf2 .setText(bno);tf3 .setText(price);tf4 .setText(writer);tf5 .setText(publish);tf6 .setText(indate);tf7 .setText(isBorrowed);tf8 .setText(borrowedName);}else{JOptionPane.showMessageDialog( null , "您输入的图书号不存在,请重新输入" , " 输入错误 " , JOptionPane.YES_NO_OPTION);}con.close();}catch (SQLException g){System.out .println("E Code" +g.getErrorCode());System.out .println("E M" +g.getMessage());}tf1.setEditable(true);tf2.setEditable(true);tf3.setEditable(true);tf4.setEditable(true);tf5.setEditable(true);tf6.setEditable(true);tf7.setEditable(true);tf8.setEditable(true);}public void fixRecord(){try { ConnectMysql a=new ConnectMysql();Connection con=a.Connecting();Statement sql;String s="update book set图书名='" +tf1 .getText()+"',图书号='" +tf2 .getText()+"',单价 ='" +tf3 .getText()+ "', 作者 ='" +tf4 .getText()+ "', 出版社 ='" +tf5 .getText()+ "', 入库时间='"+tf6 .getText()+ "', 是否被借 ='" +tf7 .getText()+ "', 借书者学号 ='" +tf8 .getText()+ "' where 图书号 ='"+tf2 .getText()+ "'" ;sql=con.createStatement();int fix=sql.executeUpdate(s);if (fix==1){JOptionPane.showMessageDialog( null , "修改成功!" ," 信息 " , RMATION_MESSAGE);}con.close();}catch (SQLException g){System.out .println("E Code" +g.getErrorCode());System.out .println("E M" +g.getMessage());}}public void ShowStuRecord(){StudentInfo Info=new StudentInfo();Info. tf .setText( tf8 .getText());Info.showRecord();}@SuppressWarnings ( "deprecation" ) public void actionPerformed(ActionEvent e){String cmd=e.getActionCommand();if (cmd.equals(" 确定 " )){showRecord();tf .setText( "" );}if (cmd.equals(" 修改 " )){fixRecord();}if (cmd.equals( " 借书者信息" )){ShowStuRecord();}if (cmd.equals(" 取消 " ))f3 .hide();}@SuppressWarnings ( "unused" )public static void main(String []arg){ QueryBook a=new QueryBook();}}BookIn.java图书入库类import java.awt.event.*;import javax.swing.*;import java.awt.*;import java.sql.*;//extends JFrameclass BookIn implements ActionListener// 图书入库类{JFrame f3 ;Container cp;JPanel jp1 , jp2 , jp3, jp4 , jp , jpanelWest ;JButton jbt1, jbt2; // 按钮 : 确定、取消、JLabel label;//标签JTextField tf1, tf2, tf3 , tf4 , tf5 , tf6 , tf7 , tf8 ;// 定义文本框JLabel label1 , label2 , label3 , label4 ;String sno;BookIn(){f3 =new JFrame();cp=f3 .getContentPane();//初始化面板、按钮、标签、文本框jp1 =new JPanel();jp2 =new JPanel();jp3 =new JPanel();jp4 =new JPanel();jpanelWest=new JPanel();jp =new JPanel();//------------------------------------------------jbt1 =new JButton(" 确定 " );jbt2 =new JButton(" 取消 " );//------------------------------------------------label =new JLabel( " 图书入库 " ,SwingConstants.CENTER); label .setForeground(Color.blue );//------------------------------------------------tf1 =new JTextField(20);tf2 =new JTextField(20);tf3 =new JTextField(20);tf4 =new JTextField(20);tf5 =new JTextField(20);tf6 =new JTextField(20);tf7 =new JTextField(20);tf8 =new JTextField(20);//------------------------------------------------//布局 , 添加控件jp1 .add( jbt1 );jp1 .add( jbt2 );sno =tf4 .getText();jp1 .add( new JLabel( " 您好 " +sno+" 欢迎登陆学生信息系统" )); JPanel jpanel=new JPanel();jpanel.add( label );JPanel pp4=new JPanel();JPanel jpane4=new JPanel();cp.add(jpanel,"North" );JPanel pp2= new JPanel(new GridLayout(8,1));JPanel pp3=new JPanel();pp4.setLayout(new GridLayout(8,1));pp4.add( new JLabel( " 图书名 " ,SwingConstants.CENTER));pp2.add(tf1);pp4.add(new JLabel(" 图书号 " ,SwingConstants.CENTER));pp2.add(tf2);pp4.add(new JLabel(" 单价 " ,SwingConstants.));CENTERpp2.add(tf3);pp4.add(new JLabel(" 作者 " ,SwingConstants.CENTER));pp2.add(tf4);pp4.add( new JLabel( " 出版社 " ,SwingConstants.CENTER));pp2.add( tf5 );pp4.add( new JLabel( " 入库时间 " ,SwingConstants.CENTER)); pp2.add( tf6 );pp4.add( new JLabel( " 是否被借 " ,SwingConstants.CENTER)); pp2.add( tf7 );pp4.add( new JLabel( " 借书者学号 " ,SwingConstants.CENTER)); pp2.add( tf8 );pp3.add( jbt1 );pp3.add( jbt2 );cp .add(pp4, "West" );cp .add(pp2, "Center" );cp .add(pp3, "South" );cp .add(jpane4, "East" );//------------------------------------------------Toolkit kit=Toolkit.getDefaultToolkit();Dimension screen=kit.getScreenSize();int x=screen. width ;/* 取得显示器窗口的宽度*/int y=screen. height ;/* 取得显示器窗口的高度*/f3 .setSize(350,330);int xcenter=(x-350)/2;int ycenter=(y-330)/2;f3.setLocation(xcenter,ycenter);/* 显示在窗口中央 */f3.setVisible(true );//-------------------------------------------------jbt1.addActionListener(this);// 注册监听器jbt2.addActionListener(this);}//------------------------------------------------public void insertRecord(){if ( tf1 .getText().equals("" )|| tf2 .getText().equals("" )|| tf3 .getText().equals("" )|| tf4 .getText().equals("" )|| tf5 .getText().equals("" )|| tf6 .getText().equals("" )) {JOptionPane.showMessageDialog( f3 , "请填写图书资料" );return ;}try { ConnectMysql a=new ConnectMysql();Connection con=a.Connecting();Statement sql;String s="insert into book values('"+tf1 .getText()+ "','"+tf2 .getText()+ "','"+ tf3 .getText()+ "','" +tf4 .getText()+ "','" +tf5 .getText()+ "','" +tf6 .getText()+ "','" +tf7 .getText()+ "','"//查询输入的图书号是否在数据库中存在String query="select * from book where图书号='" +tf2 .getText()+"'" ; sql=con.createStatement();ResultSet rs=sql.executeQuery(query);// 返回查询结果集boolean moreRecords=rs.next();// 判断结果集是否有数据if (moreRecords){JOptionPane.showMessageDialog( f3 , "图书号已经被使用,请重新输入" ); con.close();tf2 .setText( "" );return ;}int insert=sql.executeUpdate(s);if (insert==1){JOptionPane.showMessageDialog( null , "图书信息录入成功!" );tf1.setText("");tf2.setText("");tf3.setText("");tf4.setText("");tf5.setText("");tf6.setText("");tf7.setText("");tf8.setText("");}}catch(SQLException g){System.out .println("E Code" +g.getErrorCode());System.out .println("E M" +g.getMessage());}}@SuppressWarnings ( "deprecation")public void actionPerformed(ActionEvent e){String cmd=e.getActionCommand();if (cmd.equals(" 确定 " )){insertRecord();}else if (cmd.equals(" 取消 " ))f3 .hide();}@SuppressWarnings ( "unused" )public static void main(String []arg){BookIn a=new BookIn();}}RemoveBook.java 图书删除类import java.awt.event.*;import javax.swing.*;import java.awt.*;import java.sql.*;class RemoveBook implements ActionListener// 图书删除类{JFrame f ;Container cp;JPanel jpS , jpanelWest ;JButton jbt1 , jbt2 , jbt3 , jbt4 ; // 按钮,查询、取消、修改JLabel label , L;// 标签:请输入学号JTextField tf ;// 定义文本框JTable table ; // 用来接收数据库中返回的信息Object columnName[]={ " 图书名 " , " 图书号 " , " 单价 " , " 作者 " , " 出版社 " , " 入库时间 " , " 是否被借 " , "借书者学号"};Object ar [][] =new Object[80][8];String sno;String count ="xx" ;@SuppressWarnings ( "unused" )RemoveBook(){f =new JFrame();cp=f .getContentPane(); // 初始化面板、按钮、标签、文本框 jpS=new JPanel();jpanelWest=new JPanel();//------------------------------------------------jbt1=new JButton("查询");jbt2=new JButton("取消");jbt3=new JButton("删除");jbt4=new JButton("修改");//------------------------------------------------label =new JLabel( " 请输入要删除的图书名:" ,SwingConstants.CENTER);label .setForeground(Color.blue );L=new JLabel( " 该种图书共有" +count +" 本 " );//------------------------------------------------table =new JTable( ar , columnName); //ar存放表中的数据,columnname表示列名JScrollPane scrollpane =new JScrollPane(table );//------------------------------------------------tf =new JTextField(18);//------------------------------------------------//布局 , 添加控件jpS .add( jbt1 );jpS .add( jbt2 );jpS .add( jbt3 );jpS .add( jbt4 );JPanel jpanel=new JPanel();jpanel.add(label );jpanel.add(tf);JPanel pp4=new JPanel();JPanel jpE=new JPanel();cp.add(jpanel,"North" );JPanel jp=new JPanel();JPanel p= new JPanel(); // 用来放两个表p.setLayout(new BorderLayout());p.add( L, "North" );p.add(scrollpane);cp.add(pp4, "West" );cp.add(p, "Center" );cp.add( jpS , "South" );cp.add(jpE, "East" );//------------------------------------------------Toolkit kit=Toolkit.getDefaultToolkit(); Dimension screen=kit.getScreenSize();int x=screen. width ;/* 取得显示器窗口的宽度*/ int y=screen. height ;/* 取得显示器窗口的高度*/f .setSize(400,330);int xcenter=(x-350)/2;int ycenter=(y-330)/2;f .setLocation(xcenter,ycenter);/* 显示在窗口中央*/f .setVisible(true );//-------------------------------------------------jbt1.addActionListener(this); // 注册监听器jbt2.addActionListener(this);jbt3.addActionListener(this);jbt4.addActionListener(this);}int i=0;public void showRecord(String ql){while( i >=0){ar [i ][0]="";ar [i ][1]="";ar [i ][2]="";ar [i ][3]="";ar [i ][4]="";ar [i ][5]="";ar [i ][6]="";ar [i ][7]="";i--;}i =0;try{ ConnectMysql a= new ConnectMysql();Connection con=a.Connecting();Statement sql;String s="select * from book where图书名 ='" +ql+ "'" ;sql=con.createStatement();ResultSet rs=sql.executeQuery(s);while (rs.next()){String bname=rs.getString(1);String bno=rs.getString(2);String price=rs.getString(3);String writer=rs.getString(4);String publish=rs.getString(5);String indate=rs.getString(6);String isBorrowed=rs.getString(7);String borrowedName=rs.getString(8);ar [ i ][0]=bname;ar [ i ][1]=bno;ar [ i ][2]=price;ar [ i ][3]=writer;ar [ i ][4]=publish;ar [ i ][5]=indate;ar [ i ][6]=isBorrowed;ar [ i ][7]=borrowedName;i ++;}count ="" +i +"" ;L.setText( " 该种图书共有" +count +" 本 " );f .repaint();con.close();System.out .println(ar [0][1]);}catch (SQLException g){System.out .println("E Code" +g.getErrorCode());System.out .println("E M" +g.getMessage());}}public void deleteRecord( int index){try { ConnectMysql a=new ConnectMysql();Connection con=a.Connecting();Statement sql;String ql=(String)(ar [index][1]);String s="delete from book where图书号='" +ql+ "'" ;sql=con.createStatement();int del=sql.executeUpdate(s);if (del==1){JOptionPane.showMessageDialog( null , "删除成功!" ," 信息 " , JOptionPane.INFORMATION_MESSAGE);}con.close();f.repaint();}catch (SQLException g){System.out .println("E Code" +g.getErrorCode());System.out .println("E M" +g.getMessage());}}@SuppressWarnings ( "unused" )public void fixRecord( int index){try { ConnectMysql a=new ConnectMysql();Connection con=a.Connecting();Statement sql;String ql=(String)(ar [index][1]);String s="update book set图书名='" +(String)(ar [index][0])+"',图书号word 资料='"+(String)(ar [index][3])+"',出版社 ='" +(String)(ar [index][4])+"', 入库时间='"+(String)(ar [index][5])+"',是否被借 ='" +(String)(ar [index][6])+"',借书者学号='"+(String)(ar [index][7])+"' where图书号 ='" +(String)( ar [index][1])+"'" ;sql=con.createStatement();int fix=sql.executeUpdate(s);if (fix==1){JOptionPane.showMessageDialog( null , "修改成功!具体还没实现" ," 信息 " , JOptionPane.YES_NO_OPTION);}con.close();f.repaint();}catch (SQLException g){System.out .println("E Code" +g.getErrorCode());System.out .println("E M" +g.getMessage());}}@SuppressWarnings ({ "unused" , "deprecation"})public void actionPerformed(ActionEvent e){String remember="" ;String ql="" ;String cmd=e.getActionCommand();if (cmd.equals(" 查询 " )){ql=tf .getText().trim();remember=ql;showRecord(ql);}if (cmd.equals(" 删除 " )){int index= table .getSelectedRow();word 资料JOptionPane.showMessageDialog( null , "请选定要删除的表格行" ,"输入错误 " , JOptionPane. YES_NO_OPTION);else {deleteRecord(index);//showRecord(remember);}}if (cmd.equals(" 修改 " )){int index= table.getSelectedRow();if ( index==-1)JOptionPane.showMessageDialog( null , "请选定要删除的表格行" ,"输入错误 " , JOptionPane. YES_NO_OPTION);else {fixRecord(index);//showRecord(remember);}}if (cmd.equals(" 取消 " ))f .hide();}@SuppressWarnings ( "unused" )public static void main(String []arg){RemoveBook a=new RemoveBook();}}Book.java 主界面类/* 本类为用户界面*/import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.*;@SuppressWarnings ( "serial")class Book extends JFrame implements ActionListener// 主窗口类{JButton QueryScore =new JButton( " 图书查询修改" );JButton putBook =new JButton(" 图书入库 " );JButton shanchu =new JButton(" 图书删除 " );JButton lookBook =new JButton(" 图书概览 " );JButton gaiMima =new JButton(" 修改密码 " );JButton StuSearch =new JButton(" 学生信息查询 " );JMenuBar mb = new JMenuBar();// 菜单栏JPanel jp =new JPanel(){public void paintComponent(Graphics g) {super .paintComponent(g);ImageIcon img =new ImageIcon( "dabeijing.jpg");g.drawImage(img.getImage(), 0, 0,null );}}; ; // 用来填放子模块, 设置背景图片Container cp=getContentPane();String username ;Book(){}@SuppressWarnings ( "unused" )Book(String username){this . username=username;mb.add( QueryScore );mb.add( putBook );mb.add( shanchu );mb.add( lookBook );mb.add( gaiMima );mb.add( StuSearch );cp .add( mb, "North" );//设置边框jp .setBorder(BorderFactory.createTitledBorder(BorderFactory .createLineBorder(Color.blue , 2),null ,TitledBorder.CENTER,TitledBorder.TOP));jp .setLayout(new BorderLayout());JLabel JL=new JLabel( " 欢迎登陆 " ,SwingConstants.CENTER);jp .add(JL, "North" );JLabel label2 =new JLabel( new ImageIcon( "2.jpg")); JScrollPane scrollpane=new JScrollPane( jp );cp .add(scrollpane);setTitle(" 欢迎登陆 " ); // 在此直接创建对象Toolkit kit=Toolkit.getDefaultToolkit();Dimension screen=kit.getScreenSize();int x=screen. width ;/* 取得显示器窗口的宽度*/int y=screen. height ;/* 取得显示器窗口的高度*///setSize(x,y); /*让系统窗口平铺整个显示器窗口*/setSize(600,600);int xcenter=(x-600)/2;int ycenter=(y-600)/2;setLocation(xcenter,ycenter);/* 显示在窗口中央*/setVisible(true );setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//注册临听器QueryScore .addActionListener(this );putBook .addActionListener(this );shanchu .addActionListener(this );lookBook .addActionListener(this );gaiMima .addActionListener(this );StuSearch .addActionListener(this );}public void actionPerformed(ActionEvent e)// 状态转换{String cmd=e.getActionCommand();if (cmd.equals( " 图书查询修改" )){new QueryBook();}if (cmd.equals(" 图书入库 " )){new BookIn();}if (cmd.equals(" 图书删除 " )){new RemoveBook();}if (cmd.equals(" 图书概览 " )){new BookBrower().showRecord();}if (cmd.equals(" 修改密码 " )){new UpdateMima( username );}if (cmd.equals( " 学生信息查询" )){new StudentInfo();}}public static void main(String[]args){new Book( "" );}}ConnectMysql.java数据库连接类import java.sql.*;public class ConnectMysql { // 连接数据库类String url = "jdbc:mysql://localhost/tpl?user=root&password=789524613";/*** @paramargs* @throws SQLException*/public ConnectMysql(){this . url = "jdbc:mysql://localhost/tpl?user=root&password=789524613";}public Connection Connecting()throws SQLException{ // 连接数据库函数try {Class.forName( "com.mysql.jdbc.Driver");}catch (ClassNotFoundException e){System.out .println(" 加载驱动程序失败 !" );}String url ="jdbc:mysql://localhost/tpl?user=root&password=789524613"; // 直接使用当前类目录下的数据库文件return DriverManager.getConnection (url);}@SuppressWarnings ( "unused" )public static void main(String[] args) {//TODOAuto-generated method stubConnectMysql a=new ConnectMysql();}}程序测试登录主界面图书查询修改界面查询 000001 号书查询借书者信息,修改图书单价输入入库信息图书入库删除图书《图书管理》图书概览界面所有图书信息修改密码界面修改密码学生信息查询界面查询学号为200905002109 学生的信息设计总结前期准备开始程序编写前先将题目要求实现的功能理清,然后分析需求,设计出各个界面草图以及数据库表的结构。
原创Java图书馆管理系统课程设计报告1. 引言本文档为Java图书馆管理系统课程设计报告,旨在介绍系统的设计与实现。
图书馆管理系统是一个管理图书馆馆藏图书、读者信息以及借还书等功能的软件系统。
本课程设计旨在通过使用Java编程语言和相关技术,构建一个简单但功能完善的图书馆管理系统。
2. 需求分析根据对图书馆管理系统的需求分析,我们确定了以下功能模块:图书管理、借阅管理、读者管理、系统登录和退出。
下面对每个功能模块进行详细说明:2.1 图书管理图书管理模块负责对图书进行管理,包括图书的添加、删除、修改和查询等功能。
管理员可以通过该模块完成对图书信息的操作,保证图书信息的准确性和完整性。
2.2 借阅管理借阅管理模块负责处理读者借阅图书的操作。
读者可以通过该模块查询图书的借阅情况,并进行借书和还书的操作。
借阅管理模块需要与图书管理模块进行交互,以确保图书库存和借阅情况的实时更新。
2.3 读者管理读者管理模块负责对读者信息进行管理,包括读者的注册、修改和查询等功能。
管理员可以通过该模块管理读者信息,并对读者进行权限的控制。
2.4 系统登录和退出系统登录和退出模块负责用户身份验证和系统的安全控制。
用户需要通过有效的用户名和密码进行登录,否则将无法操作系统。
系统退出时,需要进行数据保存和清理工作,确保系统数据的完整性和安全性。
3. 系统设计在系统设计阶段,我们采用面向对象的设计思想,将系统划分为多个类,并定义了它们的属性和方法。
下面是系统设计中的几个重要类:3.1 图书类(Book)图书类表示馆藏的图书。
它包含图书的编号、名称、作者、出版社和数量等属性,并提供对这些属性的访问方法。
public class Book {private int bookId;private String title;private String author;private String publisher;private int quantity;// Getters and setters// ...}3.2 读者类(Reader)读者类表示图书馆的读者。
Java课程设计:图书馆管理系统代码介绍本文档是关于使用Java编写的图书馆管理系统代码的设计和实现。
图书馆管理系统是一种用于管理图书馆藏书、借还书籍和读者信息的应用程序。
它可以帮助图书馆提高管理效率和服务质量,并提供方便的读者查询和借还书的功能。
功能和需求1.用户管理:图书馆管理员可以添加、删除和编辑读者信息,包括姓名、联系方式和借书情况等。
2.图书管理:管理员可以添加、删除和编辑图书信息,包括书名、作者、出版日期和库存数量等。
3.借书和还书功能:读者可以借阅图书,管理员可以归还已借出的图书,并更新库存数量。
4.图书查询功能:读者可以根据图书名称、作者或出版日期等条件进行图书查询,以了解图书的详细信息和当前库存情况。
5.借阅记录查询:管理员可以查询读者的借阅记录,包括借阅时间、归还时间和借阅状态等。
系统设计数据模型系统设计采用面向对象的编程思想,主要包括以下几个类:图书馆类(Library)•属性:–读者列表(Reader[] readers)–图书列表(Book[] books)•方法:–添加读者(addReader)–删除读者(removeReader)–编辑读者信息(editReader)–添加图书(addBook)–删除图书(removeBook)–编辑图书信息(editBook)–借书(borrowBook)–还书(returnBook)–图书查询(searchBook)–借阅记录查询(searchRecords)读者类(Reader)•属性:–姓名(String name)–联系方式(String contact)–借阅记录列表(Record[] records)•方法:–借书(borrowBook)–还书(returnBook)图书类(Book)•属性:–书名(String title)–作者(String author)–出版日期(Date publicationDate)–库存数量(int quantity)•方法:–增加库存(increaseQuantity)–减少库存(decreaseQuantity)借阅记录类(Record)•属性:–图书(Book book)–读者(Reader reader)–借阅日期(Date borrowDate)–归还日期(Date returnDate)•方法:–设置归还日期(setReturnDate)系统流程图下图展示了图书馆管理系统的基本流程:graph LRA[开始] --> B[登录]B --> C{用户类型}C -->|管理员| E[管理图书馆]C -->|读者| F[查询图书]F --> G{查询类型}G -->|书名| H[查询结果]G -->|作者| H[查询结果]G -->|出版日期| H[查询结果]F --> I[返回主菜单]I --> FE --> J{操作类型}J -->|添加读者| K[输入读者信息]K --> L[保存读者信息]J -->|删除读者| M[输入读者ID]M --> N[删除读者信息]J -->|编辑读者| O[输入读者ID]O --> P[输入更新信息]P --> Q[更新读者信息]J -->|添加图书| R[输入图书信息]R --> S[保存图书信息]J -->|删除图书| T[输入图书ID]T --> U[删除图书信息]J -->|编辑图书| V[输入图书ID]V --> W[输入更新信息]W --> X[更新图书信息]J -->|借书| Y[输入读者ID和图书ID]Y --> Z[创建借阅记录]J -->|还书| A1[输入借阅记录ID]A1 --> B1[设置归还日期]B1 --> C1[更新借阅记录]J -->|查询借阅记录| D1[输入读者ID]D1 --> E1[查询借阅记录信息]代码实现以下是Java图书馆管理系统的代码实现:public class Library {private Reader[] readers;private Book[] books;public void addReader(Reader reader) {// 添加读者}public void removeReader(int readerId) {// 删除读者}public void editReader(int readerId, Reader reader) { // 编辑读者信息}public void addBook(Book book) {// 添加图书}public void removeBook(int bookId) {// 删除图书}public void editBook(int bookId, Book book) { // 编辑图书信息}public void borrowBook(int readerId, int bookId) { // 借书}public void returnBook(int recordId) {// 还书}public Book[] searchBook(String keyword) {// 图书查询}public Record[] searchRecords(int readerId) { // 借阅记录查询}}public class Reader {private String name;private String contact;private Record[] records;public void borrowBook(int bookId) {// 借书}public void returnBook(int recordId) {// 还书}}public class Book {private String title;private String author;private Date publicationDate;private int quantity;public void increaseQuantity(int amount) {// 增加库存}public void decreaseQuantity(int amount) {// 减少库存}}public class Record {private Book book;private Reader reader;private Date borrowDate;private Date returnDate;public void setReturnDate(Date returnDate) {// 设置归还日期}}快速开始编译和运行图书馆管理系统的示例代码,请按照以下步骤:1.准备Java开发环境。
图书管理系统 Java 课程设计报告1. 引言本报告旨在介绍一个基于 Java 的图书管理系统的设计和实现。
图书管理系统是一个常见的应用场景,通过该系统可以实现图书的借阅、归还、查询等功能。
在本报告中,我们将逐步讨论系统的设计思路和实现过程。
2. 系统需求分析在开始系统设计之前,我们首先需要分析系统的功能需求。
根据用户的需求和使用场景,我们确定了以下主要功能:1.用户登录与身份验证:系统需要支持用户的登录,并对用户进行身份验证,以确保只有授权用户能够使用系统。
2.图书管理:系统需要支持管理员对图书进行管理,包括添加新的图书、删除图书、更新图书信息等。
3.图书借阅与归还:系统需要支持用户对图书的借阅和归还操作,并记录借阅归还的时间。
4.图书查询:用户可以通过关键词查询图书,并获取相关的图书信息。
5.用户管理:管理员可以管理用户信息,包括添加新用户、删除用户等。
3. 系统设计基于以上需求分析,我们可以开始进行系统的设计。
我们将系统分为以下几个模块:3.1 用户模块用户模块负责处理用户的登录与身份验证。
用户需要提供正确的用户名和密码才能成功登录系统。
我们可以使用数据库来存储用户信息,并在用户登录时进行验证。
3.2 图书管理模块图书管理模块负责处理图书的添加、删除和更新等操作。
我们可以使用数据库来存储图书信息,并提供相应的接口供管理员使用。
3.3 图书借阅与归还模块图书借阅与归还模块负责处理用户对图书的借阅和归还操作。
我们可以使用数据库来记录借阅和归还的信息,并提供相应的接口供用户使用。
3.4 图书查询模块图书查询模块负责处理用户对图书的查询请求。
用户可以通过关键词进行图书的搜索,并获取相关的图书信息。
我们可以使用数据库来存储图书信息,并提供相应的接口供用户使用。
3.5 用户管理模块用户管理模块负责处理管理员对用户信息的管理。
管理员可以添加新用户、删除用户等操作。
我们可以使用数据库来存储用户信息,并提供相应的接口供管理员使用。
数据库系统概论》课程报告课题名称:小型图书管理系统课题负责人名(学号):best同组成员名单(角色):指导教师:评阅成绩:评阅意见:提交报告时间:2015年 12 月 15日小型图书管理系统计算机科学与技术专业学生指导老师[摘要]随着计算机技术的飞速发展,利用计算机来获得和处理信息是当今信息管理的一大特点。
伴随计算机硬件的快速发展,有关信息管理的软件——数据库系统软件也在迅猛发展着。
图书馆是高等院校的重要组成部门,是教师和学生获取知识的重要场所。
由于图书馆主要从事大量的图书资料的储存和流通。
所以一直以来,计算机在图书馆的图书管理中得到了广泛的应用。
本系统实现图书信息管理的系统化,规范化和自动化,以最大程度提高操作人员的办公效率。
关键词:JAVA、JDBC、SQL Server、数据库、图书馆管理、实验题目:小型图书管理系统、实验的目的和要求: 完成一个小型图书管理系统,功能要求如下:1)能够通过书籍基本信息(包括:书号、书名、出版社、出版日期、作者、内容摘要)单个或以AND 方式组合多个条件查询书籍信息;2)对于每一种书籍,除可查看其基本信息之外还可查看其总数以及目前在馆数量3)可增添新的书籍4)可删除已有书籍(如有读者借了该书籍尚未归还,则不允许删除)5)可修改书籍的基本信息6)能够通过读者基本信息(包括:证号、姓名、性别、系名、年级)单个或以AND方式组合多个条件查询读者信息7)对于每位读者除可查看其基本信息之外,还可查看其已借的书籍列表、数量、借还日期8)可增添新的读者9)可删除已有读者(如该读者有尚未归还的借书,则不允许删除)10)可修改读者的基本信息11)可完成借还书籍的手续12)还书时如超期,应该显示超期天数13)借书时如果有超期的书没有还,则不允许借书14)可查询有哪些读者有超期的书没有还,列出这些读者的基本信息三、实验的环境:1、硬件环境:CPU: Intel(R) Core i5-3230 2.60GHzRAM: 8GB2、软件环境:操作系统:Windows 7 Ultimate SP1 编译软件:EclipseLunaMicrosoft SQL Server 2014四、系统 ER 图五、表结构定义(使用表格说明)添加图书用户名密码删除读者 编号 权限管理员删除图书 拥有书名修改读者修改图书管理 作者 管理编号 出版社姓名 图书读者出版时间 借阅性别摘要 总量系名超期时间 应还时间 借阅时间六、系统功能模块1)能够通过书籍基本信息单个或组合多个条件查询书籍信息;2)对于每一种书籍,除可查看其基本信息之外还可查看其总数以及目前在馆数量3)可增添新的书籍4)可删除已有书籍(如有读者借了该书籍尚未归还,则不允许删除)5)可修改书籍的基本信息6)能够通过读者基本信息单个或组合多个条件查询读者信息7)对于每位读者除可查看其基本信息之外,还可查看其已借的书籍列表、数量、借还日期8)可增添新的读者9)可删除已有读者(如该读者有尚未归还的借书,则不允许删除)10)可修改读者的基本信息11)可完成借还书籍的手续12)还书时如超期,应该显示超期天数13)借书时如果有超期的书没有还,则不允许借书14)可查询有哪些读者有超期的书没有还,列出这些读者的基本信息七、程序框架流程图登录借阅列表组合查询删除读者编辑读者增加读者详细信息详细信息九、程序运行结果课程名称:数据库系统概论八、核心代码AddBook.javaimport java.awt.BorderLayout; import java.awt.Container; import java.awt.GridLayout; import java.awt.event.*; import java.util.ArrayList; import javax.swing.*;public class AddBook extends JFrame implements ActionListener {SQLOperation op = new SQLOperation(); Container c = getContentPane(); JPanel p1 = new JPanel();JLabel bookNumber = new JLabel("Book Number:"); JLabel bookName = new JLabel("Book Name:");JLabel bookAuthor = new JLabel("Book Author:"); JLabel press = new JLabel("Press:");JLabel pressTime = new JLabel("Press time:"); JLabel bookAbstract = new JLabel("Abstract:"); JLabel storage = new JLabel("Storage:"); JLabel remain = new JLabel("Remain");JLabel remain1 = new JLabel("Update with Storage");numberField = new JTextField(); nameField = new JTextField(); authorField = new JTextField(); pressField = new JTextField(); pressTimeField = new JTextField(); abstractField = newJTextField(); storageField = new JTextField(); JButton cancel = new JButton("Cancel"); JButton confirm = new JButton("Confirm!!"); public AddBook() {c .add(p1, BorderLayout.NORTH ); p1.setLayout(new GridLayout(9, 2, 20, 10)); p1.add(bookNumber ); p1.add(numberField ); p1.add(bookName ); p1.add(nameField );p1.add(bookAuthor ); p1.add(authorField ); p1.add(press ); p1.add(pressField ); p1.add(pressTime );p1.add(pressTimeField ); p1.add(bookAbstract ); p1.add(abstractField ); p1.add(storage );p1.add(storageField ); p1.add(remain ); p1.add(remain1); p1.add(cancel ); p1.add(confirm );cancel .addActionListener(this ); confirm .addActionListener(this );JTextField JTextField JTextField JTextField JTextField JTextField JTextField}public void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubif (e.getSource() == cancel) {this.dispose();}if (e.getSource() == confirm) {this.dispose();BookInfo book = new BookInfo(numberField.getText(),nameField.getText(), authorField.getText(),pressField.getText(),pressTimeField.getText(),abstractField.getText(),Integer.parseInt(storageField.getText()),Integer.parseInt(storageField.getText()));ArrayList<String> strArray = newArrayList<String>();strArray = op.addBookJudgement();int n = 0;int replicate = 0;while (n < Integer.parseInt(strArray.get(0))) { n++;if(numberField.getText().equals(strArray.get(n))) { replicate++;}}if (replicate == 0) {op.saveBook(book);JOptionPane.showMessageDialog(null, "Add a booksuccessfully!",Information",RMATION_MESSAGE);} else {JOptionPane.showMessageDialog (null,"This book(number) has already existed!", Warning",RMATION_MESSAGE);}AddReader.javaimport java.awt.BorderLayout;import java.awt.Container;import java.awt.GridLayout;import java.awt.event.*;import java.util.ArrayList;import javax.swing.*;public class AddReader extends JFrame implements ActionListener {SQLOperation op = new SQLOperation();Container c = getContentPane();JPanel p1 = new JPanel();JLabel readerNumber = new JLabel("Reader Number:");JLabel readerName = new JLabel("Reader Name:");JLabel sex = new JLabel("Sex:");JLabel dpt = new JLabel("Department:");JLabel grade = new JLabel("Grade:");JTextField numberField = new JTextField();JTextField nameField = new JTextField();JTextField sexField = new JTextField();JTextField dptField = new JTextField();gradeField = new JTextField();JTextFieldJButton cancel = new JButton("Cancel");JButton confirm = new JButton("Confirm!!");public AddReader() {c.add(p1, BorderLayout.NORTH);p1.setLayout(new GridLayout(6, 2, 20, 10));p1.add(readerNumber);p1.add(numberField);p1.add(readerName);p1.add(nameField);p1.add(sex);p1.add(sexField);p1.add(dpt);p1.add(dptField);p1.add(grade);p1.add(gradeField);p1.add(cancel);p1.add(confirm);cancel.addActionListener(this);confirm.addActionListener(this);public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if (e.getSource() == cancel) { this.dispose();}if (e.getSource() == confirm) { this.dispose();ReaderInfo reader = newReaderInfo(numberField.getText(),nameField.getText(), sexField.getText(),dptField.getText(),Integer.parseInt(gradeField.getText()));ArrayList<String> strArray = new ArrayList<String>();strArray = op.addReaderJudgement();int n = 0;int replicate = 0;while (n < Integer.parseInt(strArray.get(0))) { n++;if(numberField.getText().equals(strArray.get(n))) { replicate++;}}if (replicate == 0) {if (!sexField.getText().equals("boy")&& !sexField.getText().equals("girl")){ JOptionPane. showMessageDialog(null,"In the Sex field, you can only input 'boy' or 'girl'!","Warning",RMATION_MESSAGE);} else {op.saveReader(reader);JOptionPane.showMessageDialog (null,"Add a reader successfully!","Information",RMATION_MESSAGE);}} else {JOptionPane.showMessageDialog (null,"This reader(number) has already existed!", "Warning",RMATION_MESSAGE); BookDetails.javaimport java.awt.BorderLayout;import java.awt.Container;import java.awt.Dimension;import java.awt.GridLayout;import java.awt.event.*;import java.util.ArrayList;import javax.swing.*;import javax.swing.table.DefaultTableModel;public class BookDetails extends JFrame implements ActionListener {SQLOperation op = new SQLOperation(); Container c =getContentPane(); JPanel p1 = new JPanel();JPanel p2 = new JPanel();JPanel p3 = new JPanel();JLabel bookNumber = new JLabel("Book Number:");JLabel bookName = new JLabel("Book Name:");JLabel author = new JLabel("Author:");JLabel press = new JLabel("Press:");JLabel pressTime = new JLabel("Press time:");JLabel bookAbstract = new JLabel("Abstract:");JLabel storage = new JLabel("Storage:");JLabel remain = new JLabel("Remain:");JLabel numberField = new JLabel();JLabel nameField = new JLabel();JLabel authorField = new JLabel();JLabel pressField = new JLabel();JLabel pressTimeField = new JLabel();JLabel abstractField = new JLabel();JLabel storageField = new JLabel();JLabel remainField = new JLabel();JButton cancel = new JButton("Cancel");JLabel details = new JLabel("Borrow and reaturn details"); Object[] s = { "Reader number", "Borrow time", "Deadline", "Over time" };Object[][] ob1 = new Object[7][4];JTable table = new JTable(ob1, s);JScrollPane scrollPane = new JScrollPane(table);public BookDetails(String number) {BookInfo book = new BookInfo(number);ob1 = op.borrowListForBook(number);for ( int i = 0; i < 5; i++) {DefaultTableModel books = new DefaultTableModel(ob1, s);for (int n = 0; n < 7; n++) {for ( int m = 0; m < 4; m++) { ob1[n][m] =this.ob1[n][m];}table.setModel(books); table.invalidate();}}ArrayList<String> strArray = new ArrayList<String>();strArray = op.outputBook(book);numberField.setText(number);nameField.setText(strArray.get(1));authorField.setText(strArray.get(2));pressField.setText(strArray.get(3));pressTimeField.setText(strArray.get(4));abstractField.setText(strArray.get(5));storageField.setText(strArray.get(6));remainField.setText(strArray.get(7));c.add(p1, BorderLayout.NORTH);c.add(p2, BorderLayout.CENTER);c.add(p3, BorderLayout.SOUTH);p1.setLayout(new GridLayout(9, 2, 20, 10)); p1.add(bookNumber); p1.add(numberField); p1.add(bookName);p1.add(nameField); p1.add(author); p1.add(authorField); p1.add(press);p1.add(pressField); p1.add(pressTime);p1.add(pressTimeField); p1.add(bookAbstract);p1.add(abstractField); p1.add(storage);p1.add(storageField); p1.add(remain); p1.add(remainField);p1.add(details); scrollPane.setBounds(0, 0, 800, 300);p2.add(scrollPane);p3.add(cancel);table.setPreferredScrollableViewportSize(newDimension(400, 100));cancel.addActionListener(this);public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if (e.getSource() == cancel) { this.dispose();}}BookInfo.javapublic class BookInfo {private String number, name, author, press, pressTime, bookAbstract;private int total, remain;// default constructorpublic BookInfo() {}public BookInfo(String number) {this.number = number;}public BookInfo(String number, String name) { this.number = number; = name;}public BookInfo(String number, String name, String author,String press,String pressTime, String bookAbstract, int total, int remain) {this.number = number; = name;this.author = author; this.press = press;this.pressTime = pressTime; this.bookAbstract =bookAbstract; this.total = total;this.remain = remain;}public void setRemain(int i) {this .remain=i;}public String getNumber() {return number;}public String getName() {return name;}public String getAuthor() { return author;}public String getPress() {return press;}public String getPressTime() { return pressTime;}public String getBookAbstract() { return bookAbstract;}public int getTotal() {return total;}public int getRemain() { return remain;}}BookRetrieval.javaimport java.awt.BorderLayout;import java.awt.Container;import java.awt.Dimension;import java.awt.Font;import java.awt.GridLayout;import java.awt.event.*;import java.util.ArrayList;import javax.swing.*;import javax.swing.table.DefaultTableModel;class BookRetrieval extends JFrame implements ActionListener { SQLOperation op = new SQLOperation();Container c = getContentPane();JPanel p1 = new JPanel();JPanel p4 = new JPanel();JPanel p5 = new JPanel();JLabel bookNumber = new JLabel("Book Number:");JLabel bookName = new JLabel("Book Name:");JTextField number = new JTextField();JTextField name = new JTextField();JButton back = new JButton("Back (Fresh)");JButton addBook = new JButton("Add a book");JButton deleteBook = new JButton("Delete a book");JButton editBook = new JButton("Edit a book");JButton search = new JButton("Search for details!");JButton borrowBook = new JButton("Borrow a book");JButton returnBook = new JButton("Return a book");Font font1 = new Font("00", Font.BOLD, 20);Object[] s = { "Number", "Name", "Author", "Press", "Press Time","Abstract", "Storage", "Remain" };Object[][] ob = new Object[40][8];JTable table = new JTable(ob, s);JScrollPane scrollPane = new JScrollPane(table);public BookRetrieval() {BookInfo book = new BookInfo();ob = op.allBook(book);for ( int i = 0; i < 5; i++) {DefaultTableModel books = new DefaultTableModel(ob, s);for (int n = 0; n < 20; n++) {for ( int m = 0; m < 8; m++) {ob[n][m] = this.ob[n][m];}table.setModel(books); table.invalidate();}}c.add(p4, BorderLayout.NORTH);c.add(p1, BorderLayout.CENTER);c.add(p5, BorderLayout.SOUTH);search.setFont(font1);p4.setLayout(new GridLayout(2, 4, 20, 10)); p4.add(back);p4.add(addBook);p4.add(editBook);p4.add(deleteBook);p4.add(borrowBook);p4.add(returnBook);p1.setLayout(null); scrollPane.setBounds(0, 0, 800, 300);p1.add(scrollPane);p5.setLayout(new GridLayout(5, 1, 0, 0));p5.add(bookNumber);p5.add(number);p5.add(bookName);p5.add(name);p5.add(search);table.setPreferredScrollableViewportSize(newDimension(400, 300));addBook.addActionListener(this);search.addActionListener(this);back.addActionListener(this);deleteBook.addActionListener(this);editBook.addActionListener(this);borrowBook.addActionListener(this);returnBook.addActionListener(this);}public void actionPerformed(ActionEvent e) {if (e.getSource() == search) {ArrayList<String> strArray = new ArrayList<String>();strArray = op.addBookJudgement();String s1 = number.getText();String s2 = name.getText();int n = 0;int replicate = 0;while (n < Integer.parseInt(strArray.get(0))) { n++;if (s1.equals(strArray.get(n))) { replicate++;}}ArrayList<String> strArray1 = newArrayList<String>();strArray1 = op.addBookJudgement1();int n1 = 0;int replicate1 = 0;while (n1 < Integer.parseInt(strArray1.get(0))){ n1++;if (s2.equals(strArray1.get(n1))) { replicate1++;}} if (replicate == 0 && replicate1 == 0){ JOptionPane.showMessageDialog (null,"Please input a correct book number or name!","Warning",RMATION_MESSAGE);} else if (replicate != 0 || replicate1 != 0) { if(replicate == 0 && replicate1 != 0) { BookInfo book =new BookInfo(s1, s2); String s =op.searchBookByName(book);BookDetails f = new BookDetails(s); //f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.setTitle("Book Details"); f.setLocation(300,200);f.setSize(480, 470);f.setVisible(true);} else if (replicate != 0) {BookDetails f = new BookDetails(s1); //f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.setTitle("Book Details");f.setLocation(300, 200);f.setSize(480, 470); f.setVisible(true);}}}if (e.getSource() == back) {this.dispose();MyFrame f = new MyFrame();//f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.setTitle("Library Management System");f.setLocation(300, 200);f.setSize(580, 300);f.setVisible(true);}if (e.getSource() == addBook) {AddBook f = new AddBook();// f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.setTitle("Add a book");f.setLocation(300, 200);f.setSize(300, 400);f.setVisible(true);}if (e.getSource() == deleteBook) { DeleteBook f = new DeleteBook(); //f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.setTitle("Delete a book");f.setLocation(300, 200);f.setSize(300, 200);f.setVisible(true);}if (e.getSource() == borrowBook) { BorrowBook f = new BorrowBook(); //f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.setTitle("Borrow a book");f.setLocation(300, 200);f.setSize(300, 200);f.setVisible(true);}if (e.getSource() == returnBook) { ReturnBook f = newReturnBook(); //f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.setTitle("Return a book"); f.setLocation(300, 200);f.setSize(300, 200);f.setVisible(true);}if (e.getSource() == editBook) { SelectEdit f = newSelectEdit(); //f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.setTitle("Edit a book"); f.setLocation(300, 200);f.setSize(300, 200); f.setVisible(true);}}}BorrowBook.javaimport java.awt.BorderLayout;import java.awt.Container;import java.awt.GridLayout;import java.awt.event.*;import java.util.ArrayList;import javax.swing.*;public class BorrowBook extends JFrame implements ActionListener {SQLOperation op = new SQLOperation();Container c = getContentPane();JPanel p1 = new JPanel();JLabel bookNumber = new JLabel("Book Number:");JTextField numberField = new JTextField();JLabel readerNumber = new JLabel("Reader Number:");JTextField readerNumberField = new JTextField(); JButtoncancel = new JButton("Cancel");JButton borrow = new JButton("Borrow!!");public BorrowBook() {c.add(p1, BorderLayout.NORTH); p1.setLayout(newGridLayout(3, 2, 20, 10)); p1.add(bookNumber);p1.add(numberField);p1.add(readerNumber); p1.add(readerNumberField);p1.add(cancel);p1.add(borrow);cancel.addActionListener(this);borrow.addActionListener(this);}public void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubif (e.getSource() == cancel) { this.dispose();}if (e.getSource() == borrow) {String bookNumber = numberField.getText();ArrayList<String> strArray = newArrayList<String>();strArray = op.addBookJudgement();int n = 0;int replicate = 0;while (n < Integer.parseInt(strArray.get(0))) { n++;if (bookNumber.equals(strArray.get(n))){ replicate++;}}String readerNumber = readerNumberField.getText();ArrayList<String> strArray1 = newArrayList<String>();strArray1 = op.addReaderJudgement();int n1 = 0;int replicate1 = 0;while (n1 < Integer.parseInt(strArray1.get(0))){ n1++;if (readerNumber.equals(strArray1.get(n1))){ replicate1++;}}if (replicate == 0 || replicate1 == 0) {JOptionPane. showMessageDialog(null,"Please input a correct book number and a reader number!","Warning",RMATION_MESSAGE);} else {BookInfo book = new BookInfo(bookNumber);ArrayList<String> s = new ArrayList<String>(); s= op.outputBook(book);if (Integer.parseInt (s.get(7)) > 0) {int s1 =op.reBorrowCheck(numberField.getText(),readerNumberField.getText());if (s1 == 1) {JOptionPane. showMessageDialog(null,"You have borrowed this book, can not reborrow it!","Unsuccessful",RMATION_MESSAGE);} else {long currentTime = System.currentTimeMillis();if(op.deadLineCheck(readerNumberField.getText(), currentTime) != 0) {JOptionPane. showMessageDialog(null,"You have exceeded the deadline, please return these books first!","Unsuccessful", RMATION_MESSAGE);} else {BookInfo book1 = new BookInfo(s.get(0), s.get(1),s.get(2), s.get(3), s.get(4), s.get(5),Integer.parseInt(s.get(6)),Integer.parseInt(s.get(7)) - 1);op.inputBook(book1);String borrowTime =Long.toString(System. currentTimeMillis());String deadline = Long.toString(System. currentTimeMillis() + 2592000000l);System.out.println(borrowTime);System.out.println(deadline);op.insertBorrow(numberField.getText(),readerNumberField.getText(), borrowTime,deadline);JOptionPane. showMessageDialog( null, "Borrowed this book successfully, you have 30 days to enjoy this book!", "Successful",RMATION_MESSAGE);}}} else {JOptionPane.showMessageDialog (null, "This book has been borrowed!", "Unsuccessful",RMATION_MESSAGE); } }this.dispose();}}}BorrowList.Javaimport java.awt.BorderLayout;import java.awt.Container;import java.awt.Dimension;import java.awt.Font;import java.awt.GridLayout;import java.awt.event.*;import java.util.ArrayList;import javax.swing.*;import javax.swing.table.DefaultTableModel;public class BorrowList extends JFrame implements ActionListener {SQLOperation op = new SQLOperation();Container c = getContentPane();JPanel p1 = new JPanel();JPanel p2 = new JPanel();JButton back=new JButton("Back");Object[] s = { "Book number", "Reader number", "Borrow time", "Deadline","OverTime"};Object[][] ob = new Object[100][5];JTable table = new JTable(ob, s);JScrollPane scrollPane = new JScrollPane(table);public BorrowList() {// TODO Auto-generated constructor stub Object[][] ob1 =op.borrowList();for ( int i = 0; i < 5; i++) {DefaultTableModel list = new DefaultTableModel(ob, s);for (int n = 0; n < 100; n++) { for ( int m = 0; m <5; m++) { ob[n][m] = ob1[n][m];}table.setModel(list); table.invalidate();}}c.add(p1, BorderLayout.CENTER);c.add(p2,BorderLayout.SOUTH);scrollPane.setBounds(0, 0, 800, 300);p1.add(scrollPane);p2.add(back);table.setPreferredScrollableViewportSize(new Dimension(400,400));back.addActionListener(this);}public void actionPerformed(ActionEvent e) {if (e.getSource() == back) {this.dispose();MyFrame f = new MyFrame();f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.setTitle("Library Management System");f.setLocation(300, 200);f.setSize(580, 300);f.setVisible(true);}// TODO Auto-generated method stub}}Date.javaimport java.text.DateFormat;import java.text.SimpleDateFormat;public class Date {public Date(){}static String borrowTimeInterface(long time) { SimpleDateFormat df = (SimpleDateFormat) DateFormat.getInstance();df.applyPattern("yyyy-MM-dd");String s = df.format(time);return s;}}DeleteBook.javaimport java.awt.BorderLayout;import java.awt.Container;import java.awt.GridLayout;import java.awt.event.*;import javax.swing.*;public class DeleteBook extends JFrame implements ActionListener {SQLOperation op = new SQLOperation();Container c = getContentPane();JPanel p1 = new JPanel();JLabel bookNumber = new JLabel("Book Number:");JTextField numberField = new JTextField();JButton cancel = new JButton("Cancel");JButton delete = new JButton("Delete!!");public DeleteBook() {c.add(p1, BorderLayout.NORTH); p1.setLayout(newGridLayout(2, 2, 20, 10)); p1.add(bookNumber);p1.add(numberField);p1.add(cancel);p1.add(delete);cancel.addActionListener(this);delete.addActionListener(this);}public void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubif (e.getSource() == cancel){ this.dispose();}if (e.getSource() == delete) { BookInfo book = new BookInfo(numberField.getText());this.dispose();if (op.deleteBookCheck(numberField.getText()) != 0){JOptionPane. showMessageDialog(null,"Delete the book unsuccessfully.The book bas been borrowed!","Warning",RMATION_MESSAGE);} else {if (op.deleteBook(book) == 1) {JOptionPane.showMessageDialog (null,"Delete the book successfully!", "Information",RMATION_MESSAGE);} else {JOptionPane. showMessageDialog(null,"Delete the book unsuccessfully. The book does not exist!","Warning",RMATION_MESSAGE);}}}}}DeleteReader.javaimport java.awt.BorderLayout;import java.awt.Container;import java.awt.GridLayout;import java.awt.event.*;import javax.swing.*;public class DeleteReader extends JFrame implements ActionListener {SQLOperation op = new SQLOperation();Container c = getContentPane();JPanel p1 = new JPanel();JLabel readerNumber = new JLabel("Reader Number:");JTextField numberField = new JTextField();JButton cancel = new JButton("Cancel");JButton delete = new JButton("Delete!!");public DeleteReader() {c.add(p1, BorderLayout.NORTH); p1.setLayout(newGridLayout(2, 2, 20, 10)); p1.add(readerNumber);p1.add(numberField);p1.add(cancel);p1.add(delete);cancel.addActionListener(this);delete.addActionListener(this);}public void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubif (e.getSource() == cancel){ this.dispose();}if (e.getSource() == delete) { ReaderInfo reader = new ReaderInfo(numberField.getText()); this.dispose();if (op.deleteReaderCheck(numberField.getText()) != 0) { JOptionPane. showMessageDialog(null,"Delete the reader unsuccessfully. Please return books first!","Warning",RMATION_MESSAGE);} else {if (op.deleteReader(reader) == 1) {"Information", JOptionPane.showMessageDialog(null,"Delete the reader successfully!"RMATION_MESSAGE);} else {unsuccessfully.JOptionPane. showMessageDialog( null,"Delete the reader The reader does not exist!","Warning",RMATION_MESSAGE);}}}}EditBook.javaimport java.awt.BorderLayout;import java.awt.Container;import java.awt.GridLayout;import java.awt.event.*;import java.util.ArrayList;import javax.swing.*;public class EditBook extends JFrame implements ActionListener { SQLOperation op = new SQLOperation();Container c = getContentPane();JPanel p1 = new JPanel();JLabel bookNumber = new JLabel("Book Number:");JLabel bookName = new JLabel("Book Name:");JLabel author = new JLabel("Book Author:");JLabel press = new JLabel("Press:");JLabel pressTime = new JLabel("Press time:");JLabel bookAbstract = new JLabel("Abstract:");JLabel storage = new JLabel("Storage:");JLabel remain = new JLabel("Remain:");JLabel remain1 = new JLabel("Update with storage");JLabel numberField = new JLabel();JTextField nameField = new JTextField();JTextField authorField = new JTextField();JTextField pressField = new JTextField();JTextField pressTimeField = new JTextField();JTextField abstractField = new JTextField();storageField = new JTextField(); JTextFieldJTextField temp1 = new JTextField();JTextField temp2 = new JTextField();JButton cancel = new JButton("Cancel");JButton save = new JButton("Save!!");public EditBook(String number) {BookInfo book = new BookInfo(number); ArrayList<String> strArray = new ArrayList<String>(); strArray = op.outputBook(book); numberField.setText(number);nameField.setText(strArray.get(1));authorField.setText(strArray.get(2));pressField.setText(strArray.get(3));pressTimeField.setText(strArray.get(4));abstractField.setText(strArray.get(5));storageField.setText(strArray.get(6));temp1.setText(strArray.get(6));temp2.setText(strArray.get(7));c.add(p1, BorderLayout.NORTH);p1.setLayout(new GridLayout(9, 2, 20, 10));p1.add(bookNumber);p1.add(numberField);p1.add(bookName);p1.add(nameField);p1.add(author);p1.add(authorField);p1.add(press);p1.add(pressField);p1.add(pressTime);p1.add(pressTimeField);p1.add(bookAbstract);p1.add(abstractField);p1.add(storage);p1.add(storageField);p1.add(remain);p1.add(remain1);。