ava图书馆管理系统附全代码课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据库系统概论》课程报告
课题名称:小型图书管理系统课题负责人名(学号):
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.60GHz
RAM: 8GB
2、软件环境:操作系统:Windows 7 Ultimate SP1
编译软件:Eclipse Luna
Microsoft SQL Server 2014
四、系统ER图
五、表结
构定义
(使用
表格说
明)
六、系统
功能模块
1)能够通
过书籍基本信息单个或组合多个条件查询书籍信息;
2)对于每一种书籍,除可查看其基本信息之外还可查看其总数以及
目前在馆数量
3)可增添新的书籍
4)可删除已有书籍(如有读者借了该书籍尚未归还,则不允许删除)
5)可修改书籍的基本信息
6)能够通过读者基本信息单个或组合多个条件查询读者信息
7)对于每位读者除可查看其基本信息之外,还可查看其已借的书籍
列表、数量、借还日期
8)可增添新的读者
9)可删除已有读者(如该读者有尚未归还的借书,则不允许删除)
10)可修改读者的基本信息
11)可完成借还书籍的手续
12)还书时如超期,应该显示超期天数
13)借书时如果有超期的书没有还,则不允许借书
14)可查询有哪些读者有超期的书没有还,列出这些读者的基本信息
七、程序框架流程图
九、程序运行结果
八、核心代码
AddBook.java
import 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"); JTextField numberField = new JTextField(); JTextField nameField = new JTextField();
JTextField authorField = new JTextField(); JTextField pressField = new JTextField();
JTextField pressTimeField = new JTextField(); JTextField abstractField = new JTextField(); JTextField 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);
}
public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub
if (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 = new ArrayList<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 book successfully!",
"Information",
RMATION_MESSAGE);
} else {
JOptionPane.showMessageDialog(null,
"This book(number) has already existed!", "Warning",
RMATION_MESSAGE);
}
}
}
}
AddReader.java
import 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(); 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);
}
public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub
if (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();
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.java
import 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(new Dimension(400, 100));
cancel.addActionListener(this);
}
public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub
if (e.getSource() == cancel) {
this.dispose();
}
}
}
BookInfo.java
public class BookInfo {
private String number, name, author, press, pressTime, bookAbstract;
private int total, remain;
// default constructor
public 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.java
import 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(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);
}
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 = new ArrayList<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 = new ReturnBook();
// 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 = new SelectEdit();
// f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setTitle("Edit a book");
f.setLocation(300, 200);
f.setSize(300, 200);
f.setVisible(true);
}
}
}
BorrowBook.java
import 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();
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);
}
public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub
if (e.getSource() == cancel) {
this.dispose();
}
if (e.getSource() == borrow) {
String bookNumber = numberField.getText();
ArrayList<String> strArray = new ArrayList<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 = new ArrayList<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",。