Java 图书馆管理系统附全代码课程设计报告.docx
《Java 图书馆管理系统附全代码课程设计报告.docx》由会员分享,可在线阅读,更多相关《Java 图书馆管理系统附全代码课程设计报告.docx(81页珍藏版)》请在冰豆网上搜索。
Java图书馆管理系统附全代码课程设计报告
《数据库系统概论》课程报告
课题名称:
小型图书管理系统
课题负责人名(学号):
best
同组成员名单(角色):
指导教师:
评阅成绩:
评阅意见:
提交报告时间:
2015年12月15日
小型图书管理系统
计算机科学与技术专业
学生 指导老师
[摘要] 随着计算机技术的飞速发展,利用计算机来获得和处理信息是当今信息管理的一大特点。
伴随计算机硬件的快速发展,有关信息管理的软件——数据库系统软件也在迅猛发展着。
图书馆是高等院校的重要组成部门,是教师和学生获取知识的重要场所。
由于图书馆主要从事大量的图书资料的储存和流通。
所以一直以来,计算机在图书馆的图书管理中得到了广泛的应用。
本系统实现图书信息管理的系统化,规范化和自动化,以最大程度提高操作人员的办公效率。
关键词:
JAVA、JDBC、SQLServer、数据库、图书馆管理
一、实验题目:
小型图书管理系统
二、实验的目的和要求:
完成一个小型图书管理系统,功能要求如下:
1)能够通过书籍基本信息(包括:
书号、书名、出版社、出版日期、作者、内容摘要)单个或以AND方式组合多个条件查询书籍信息;
2)对于每一种书籍,除可查看其基本信息之外还可查看其总数以及目前在馆数量
3)可增添新的书籍
4)可删除已有书籍(如有读者借了该书籍尚未归还,则不允许删除)
5)可修改书籍的基本信息
6)能够通过读者基本信息(包括:
证号、姓名、性别、系名、年级)单个或以AND方式组合多个条件查询读者信息
7)对于每位读者除可查看其基本信息之外,还可查看其已借的书籍列表、数量、借还日期
8)可增添新的读者
9)可删除已有读者(如该读者有尚未归还的借书,则不允许删除)
10)可修改读者的基本信息
11)可完成借还书籍的手续
12)还书时如超期,应该显示超期天数
13)借书时如果有超期的书没有还,则不允许借书
14)可查询有哪些读者有超期的书没有还,列出这些读者的基本信息
三、实验的环境:
1、硬件环境:
CPU:
Intel(R)Corei5-32302.60GHz
RAM:
8GB
2、软件环境:
操作系统:
Windows7UltimateSP1
编译软件:
EclipseLuna
MicrosoftSQLServer2014
四、系统ER图
五、表结构定义(使用表格说明)
六、系统功能模块
1)能够通过书籍基本信息单个或组合多个条件查询书籍信息;
2)对于每一种书籍,除可查看其基本信息之外还可查看其总数以及目前在馆数量
3)可增添新的书籍
4)可删除已有书籍(如有读者借了该书籍尚未归还,则不允许删除)
5)可修改书籍的基本信息
6)能够通过读者基本信息单个或组合多个条件查询读者信息
7)对于每位读者除可查看其基本信息之外,还可查看其已借的书籍列表、数量、借还日期
8)可增添新的读者
9)可删除已有读者(如该读者有尚未归还的借书,则不允许删除)
10)可修改读者的基本信息
11)可完成借还书籍的手续
12)还书时如超期,应该显示超期天数
13)借书时如果有超期的书没有还,则不允许借书
14)可查询有哪些读者有超期的书没有还,列出这些读者的基本信息
七、程序框架流程图
九、程序运行结果
八、核心代码
AddBook.java
importjava.awt.BorderLayout;
importjava.awt.Container;
importjava.awt.GridLayout;
importjava.awt.event.*;
importjava.util.ArrayList;
importjavax.swing.*;
publicclassAddBookextendsJFrameimplementsActionListener{
SQLOperationop=newSQLOperation();
Containerc=getContentPane();
JPanelp1=newJPanel();
JLabelbookNumber=newJLabel("BookNumber:
");
JLabelbookName=newJLabel("BookName:
");
JLabelbookAuthor=newJLabel("BookAuthor:
");
JLabelpress=newJLabel("Press:
");
JLabelpressTime=newJLabel("Presstime:
");
JLabelbookAbstract=newJLabel("Abstract:
");
JLabelstorage=newJLabel("Storage:
");
JLabelremain=newJLabel("Remain");
JLabelremain1=newJLabel("UpdatewithStorage");
JTextFieldnumberField=newJTextField();
JTextFieldnameField=newJTextField();
JTextFieldauthorField=newJTextField();
JTextFieldpressField=newJTextField();
JTextFieldpressTimeField=newJTextField();
JTextFieldabstractField=newJTextField();
JTextFieldstorageField=newJTextField();
JButtoncancel=newJButton("Cancel");
JButtonconfirm=newJButton("Confirm!
!
");
publicAddBook(){
c.add(p1,BorderLayout.NORTH);
p1.setLayout(newGridLayout(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);
}
publicvoidactionPerformed(ActionEvente){
//TODOAuto-generatedmethodstub
if(e.getSource()==cancel){
this.dispose();
}
if(e.getSource()==confirm){
this.dispose();
BookInfobook=newBookInfo(numberField.getText(),
nameField.getText(),authorField.getText(),
pressField.getText(),pressTimeField.getText(),
abstractField.getText(),Integer.parseInt(storageField
.getText()),
Integer.parseInt(storageField.getText()));
ArrayListstrArray=newArrayList();
strArray=op.addBookJudgement();
intn=0;
intreplicate=0;
while(n n++;
if(numberField.getText().equals(strArray.get(n))){
replicate++;
}
}
if(replicate==0){
op.saveBook(book);
JOptionPane.showMessageDialog(null,"Addabooksuccessfully!
",
"Information",JOptionPane.INFORMATION_MESSAGE);
}else{
JOptionPane.showMessageDialog(null,
"Thisbook(number)hasalreadyexisted!
","Warning",
JOptionPane.INFORMATION_MESSAGE);
}
}
}
}
AddReader.java
importjava.awt.BorderLayout;
importjava.awt.Container;
importjava.awt.GridLayout;
importjava.awt.event.*;
importjava.util.ArrayList;
importjavax.swing.*;
publicclassAddReaderextendsJFrameimplementsActionListener{
SQLOperationop=newSQLOperation();
Containerc=getContentPane();
JPanelp1=newJPanel();
JLabelreaderNumber=newJLabel("ReaderNumber:
");
JLabelreaderName=newJLabel("ReaderName:
");
JLabelsex=newJLabel("Sex:
");
JLabeldpt=newJLabel("Department:
");
JLabelgrade=newJLabel("Grade:
");
JTextFieldnumberField=newJTextField();
JTextFieldnameField=newJTextField();
JTextFieldsexField=newJTextField();
JTextFielddptField=newJTextField();
JTextFieldgradeField=newJTextField();
JButtoncancel=newJButton("Cancel");
JButtonconfirm=newJButton("Confirm!
!
");
publicAddReader(){
c.add(p1,BorderLayout.NORTH);
p1.setLayout(newGridLayout(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);
}
publicvoidactionPerformed(ActionEvente){
//TODOAuto-generatedmethodstub
if(e.getSource()==cancel){
this.dispose();
}
if(e.getSource()==confirm){
this.dispose();
ReaderInforeader=newReaderInfo(numberField.getText(),
nameField.getText(),sexField.getText(),
dptField.getText(),Integer.parseInt(gradeField.getText()));
ArrayListstrArray=newArrayList();
strArray=op.addReaderJudgement();
intn=0;
intreplicate=0;
while(n n++;
if(numberField.getText().equals(strArray.get(n))){
replicate++;
}
}
if(replicate==0){
if(!
sexField.getText().equals("boy")
&&!
sexField.getText().equals("girl")){
JOptionPane
.showMessageDialog(
null,
"IntheSexfield,youcanonlyinput'boy'or'girl'!
",
"Warning",JOptionPane.INFORMATION_MESSAGE);
}else{
op.saveReader(reader);
JOptionPane.showMessageDialog(null,
"Addareadersuccessfully!
","Information",
JOptionPane.INFORMATION_MESSAGE);
}
}else{
JOptionPane.showMessageDialog(null,
"Thisreader(number)hasalreadyexisted!
","Warning",
JOptionPane.INFORMATION_MESSAGE);
}
}
}
}
BookDetails.java
importjava.awt.BorderLayout;
importjava.awt.Container;
importjava.awt.Dimension;
importjava.awt.GridLayout;
importjava.awt.event.*;
importjava.util.ArrayList;
importjavax.swing.*;
importjavax.swing.table.DefaultTableModel;
publicclassBookDetailsextendsJFrameimplementsActionListener{
SQLOperationop=newSQLOperation();
Containerc=getContentPane();
JPanelp1=newJPanel();
JPanelp2=newJPanel();
JPanelp3=newJPanel();
JLabelbookNumber=newJLabel("BookNumber:
");
JLabelbookName=newJLabel("BookName:
");
JLabelauthor=newJLabel("Author:
");
JLabelpress=newJLabel("Press:
");
JLabelpressTime=newJLabel("Presstime:
");
JLabelbookAbstract=newJLabel("Abstract:
");
JLabelstorage=newJLabel("Storage:
");
JLabelremain=newJLabel("Remain:
");
JLabelnumberField=newJLabel();
JLabelnameField=newJLabel();
JLabelauthorField=newJLabel();
JLabelpressField=newJLabel();
JLabelpressTimeField=newJLabel();
JLabelabstractField=newJLabel();
JLabelstorageField=newJLabel();
JLabelremainField=newJLabel();
JButtoncancel=newJButton("Cancel");
JLabeldetails=newJLabel("Borrowandreaturndetails");
Object[]s={"Readernumber","Borrowtime","Deadline","Overtime"};
Object[][]ob1=newObject[7][4];
JTabletable=newJTable(ob1,s);
JScrollPanescrollPane=newJScrollPane(table);
publicBookDetails(Stringnumber){
BookInfobook=newBookInfo(number);
ob1=op.borrowListForBook(number);
f