Java图书馆管理系统(附全代码)_课程设计报告

Java图书馆管理系统(附全代码)_课程设计报告
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 = new 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 = new 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 = new 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;

}

}

相关主题
相关文档
最新文档