Java图书馆管理系统(附全代码)_课程设计报告
《数据库系统概论》课程报告
课题名称:小型图书管理系统
课题负责人名(学号): 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
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", https://www.360docs.net/doc/2516226787.html,RMATION_MESSAGE);
} else {
JOptionPane.showMessageDialog(null,
"This book(number) has already existed!", "Warning",
https://www.360docs.net/doc/2516226787.html,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
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",
https://www.360docs.net/doc/2516226787.html,RMATION_MESSAGE);
} else {
op.saveReader(reader);
JOptionPane.showMessageDialog(null,
"Add a reader successfully!", "Information",
https://www.360docs.net/doc/2516226787.html,RMATION_MESSAGE);
}
} else {
JOptionPane.showMessageDialog(null,
"This reader(number) has already existed!", "Warning",
https://www.360docs.net/doc/2516226787.html,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
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;
https://www.360docs.net/doc/2516226787.html, = name;
}
public BookInfo(String number, String name, String author, String press,
String pressTime, String bookAbstract, int total, int remain) { this.number = number;
https://www.360docs.net/doc/2516226787.html, = 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;
}
}