最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

数据库课程设计报告图书管理系统

来源:动视网 责编:小OO 时间:2025-10-02 15:43:32
文档

数据库课程设计报告图书管理系统

数据库原理课程设计报告书课题名图书信息管理系统指导教师日期一、前言..............................................................2二、概述..............................................................22.1开发目的.......................................................2三、需求分析.................
推荐度:
导读数据库原理课程设计报告书课题名图书信息管理系统指导教师日期一、前言..............................................................2二、概述..............................................................22.1开发目的.......................................................2三、需求分析.................
数据库原理课程设计

报 告 书

课 题 名   图书信息管理系统    

指导教师                

  日    期                 

一、前言..............................................................2

二、概述..............................................................2

2.1开发目的.......................................................2

三、需求分析..........................................................2

3.1可行性分析.....................................................2

3.2系统目标.......................................................3

3.3系统应该具备的功能.............................................3

3.4系统结构图.....................................................4

四、概念设计.........................................................5

五、逻辑设计.........................................................9

六、物理设计.........................................................9

5.1表命令........................................................9

5.2表结构图.....................................................13

七、代码实现........................................................13

6.1数据库连接...................................................13

6.2增加一条图录.............................................14

6.3删除一条图录.............................................16

6.4修改一条图录.............................................17

6.5查询一条图录.............................................18

八、结束语..........................................................22

前言

近年来,随着我国市场经济的迅速发展和人们生活水平的不断提高,以及计算机的普及使用,图书馆藏书的数目逐渐增大,这也是挑战了图书管理方面的技术,以前的人工管理方式已经不再适应现在的环境,取而代之的是先进的图书管理系统,提高了图书馆的工作效率,为想要借书和还书的人提供更好的服务。

1、概述

1.1 开发目的

 图书信息管理工作面对大量的可模块化处理的信息,是当今信息的一个重要阵地。我们小组开发图书管理信息系统就是采用现代化的信息管理方式代替手工管理方式,提高图书管理工作效率,做到信息的规范管理,科学统计和快速查询,让图书馆更好的为学校、社会服务。

2、需求分析

2.1可行性分析

2.1.1技术可行性

 就技术力量来说,我们小组可以完成此次开发工作。开发过程中会出现许多问题,有我们预想之中的,也有一些没有在我们预想中,但我们有信心克服一切困难。我们小组各成员已经学习了MySQL,SQL,对网络技术和操作系统也有系统的了解,熟悉计算机原理,能解决常见的硬件故障和硬件选择。

2.1.2经济可行性

 目标系统开发需求比较低,加上具有成熟的软硬件环境,所以在软硬件的支出上十分有限。而且,目标系统并不是十分的复杂,开发的周期较短,人员有限。当系统开发完实际运行后,将很大程度上提高计算机的功能,在为使用者带来便利的同时也为系统的进一步推广创造了条件。

2.1.3管理可行性

整个系统由于是自行开发,自行使用,所以很方便管理使用。

2.2系统目标

图书管理信息系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强,数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。系统开发的总体任务是实现各种信息的系统化,规范化和自动化。

2.3 系统应该具备的功能

①读者基本信息的输入,包括借书证编号、读者姓名、读者性别等。

②读者基本信息的查询、修改,包括读者借书证编号、读者姓名、读者性别等。

③书籍类别标准的制定、类别信息的输入,包括类别编号、类别名称。

④书籍类别信息的查询、修改,包括类别编号、类别名称。

⑤书籍库存信息的输入,包括书籍编号、书籍名称、书籍类别、作者姓名、出版社名称、出版日期、登记日期。

⑥书籍库存信息的查询,修改,包括书籍编号、书籍名称、书籍类别、作者姓名、出版社名称、出版日期登记日期等。

⑦借书信息的输入,包括读者借书证编号、书籍编号、借书日期。

⑧借书信息的查询、修改,包括借书证编号、借书证编号、读者姓名、书籍编号、书籍名称、借书日期等。

⑨还书信息的输入,包括借书证编号、书籍编号、还书日期。    

⑩还书信息的查询和修改,包括还书读者借书证编号、读者姓名、书籍编号、书籍名称、借书日期、还书日期等。

⑾超期还书罚款输入,还书超出期限包括超出期限还书的读者借书证号,书籍编号,罚款金额。

⑿超期还书罚款查询,删除,包括读者借书证编号、读者姓名、书籍编号、书籍名称,罚款金额等。

⒀管理员管理:包括创建读者用户信息、删除读者用户信息、添加图书信息、删除图书信息。

⒁超级管理员管理:包括创建管理员用户信息、删除管理员用户信息、创建读者用户信息、删除读者用户信息、添加图书信息、删除图书信息。

2.4 系统结构图

(根据需求分析,图书信息管理系统的结构图如下:)

3、概念设计

        所要实现的功能设计,可能建立它们之间的关系,进而实现逻辑结构功能。图书管理信息系统可以划分的实体有:书籍类别信息实体、读者信息实体、书籍信息实体、借阅记录信息实体,归还记录信息实体。用E-R图一一描述这些实体。

①类别实体图:

②读者信息实体图:

③管理员实体图

④超级管理员实体图

⑤书籍实体图:

⑥借阅记录息信实体图:

⑦归还记录信息实体图:

⑧罚款信息实体图:

⑨总的信息实体E-R图:

4、逻辑设计

(1)书籍类别(类别编号,类别名)

(2)读者(借书证编号,读者姓名,读者性别,读者种类,登记时期,     可借书数 ,已借书数,逾期未还书数)

(3) 管理员(管理员编号,管理员姓名,管理员密码,管理员权限)

(4) 超级管理员(管理员编号,管理员姓名,管理员密码,管理员权限)

(5)书籍(书籍编号,书籍名称,书籍类别,作者,出版社名称,     出版日期,登记日期)

(6)借阅(借书证编号,书籍编号,读者借书时间)

(7)还书(借书证编号,书籍编号,读者还书时间)

(8)罚款(借书证编号,读者姓名,借书证编号,书籍编号,读者借书     时间)

5、 物理设计

表命令:

(1)创建数据库

CREATE DATABASE librarysystem

ON 

(

   NAME = librarysystem,

   FILENAME = 'd:\\librarysystem.mdf',

   SIZE = 10,

   MAXSIZE = 50,

   FILEGROWTH = 5 )

LOG ON

   NAME = 'library',

   FILENAME = 'e:\\librarysystem.ldf',

   SIZE = 5MB,

   MAXSIZE = 25MB,

   FILEGROWTH = 5MB 

)

(2)书本类别表建立

create table book_style

   bookstyleno varchar(30) primary key,

   bookstyle varchar(30)

)

(3)创建书库表

create table system_books

  bookid varchar(20) primary key,

  bookname varchar(30) Not null, 

  bookstyleno varchar(30) Not null,

  bookauthor varchar(30),

  bookpub varchar(30) ,

  bookpubdate datetime,

  bookindate datetime ,

  isborrowed bit,

  foreign key (bookstyleno) references book_style (bookstyleno),

)

(4)借书证表建立

create table system_readers 

  readerid varchar(9)primary key,

  readername varchar(9)not null ,

  readersex varchar(2) not null,

  readertype varchar(10),

  regdate datetime,

booktotal int,

borrowednum int,

overduenoreturnnum int 

)

(5)借录表建立

create table borrow_record

  bookid varchar(20)  primary key,

  readerid varchar(9),

  borrowdate datetime,

  foreign key (bookid) references system_books(bookid),

  foreign key (readerid) references system_readers(readerid),

)

(6)还录表建立

create table return_record

  bookid varchar(20) primary key,

  readerid varchar(9),

  returndate datetime,

  foreign key (bookid) references system_books(bookid),

  foreign key (readerid) references system_readers(readerid)

(7)罚款单表建立

create table reader_fee

  readerid varchar(9)not null,

  readername varchar(9)not null ,

  bookid varchar(20) primary key,

  bookname varchar(30) Not null, 

  bookfee smallmoney,

  borrowdate datetime,

  foreign key (bookid) references system_books(bookid),

  foreign key (readerid) references system_readers(readerid)

)

(8) 管理员表建立

create table system_Administrator 

(

 administratorid varchar(9)primary key,

 administratorname varchar(9)not null ,

 administratorpassword  varchar(2) not null,

 administratorpermission varchar(10)

  )

(9) 索引的创建

create index bookstyle_index_style on book_style(bookstyle)

create index borrow_record_index_readerid  on borrow_record(readerid)

create index reader_fee_index_readerid  on reader_fee (readerid)

create index return_record_index_readerid  on return_record(readerid)

create index system_books_index_bookname  on system_books(bookname)

create index system_books_index_styleno  on system_books(bookstyleno)

create index system_books_index_bookauthor  on system_books(bookauthor)

表3-1  book_sytle 书籍类别信息表

表中列名数据类型可否为空说明
bookstylenovarcharnot null(主键)种类编号
bookstyleVarcharnot null种类名称
表3-2  system_readers读者信息表格

表中列名数据类型可否为空说明
readeridvarcharnot null(主键)读者借书证号
readernamevarcharnot null读者姓名
readersex

varcharnot null读者性别
readertypevarcharnot null读者种类
regdatedatetimenull登记日期
booktotalintnull可借书数
borrowednumintnull已借书数
overduenoreturnnum

intnull逾期未还书数
表3-3 system_book书籍信息表

表中列名数据类型可否为空说明
bookidVarchar

Not null(主键)

书籍编号
booknameVarchar

Not null书籍名称
续表3-3

bookstyleVarchar

Not null书籍类别
bookauthorVarchar

Not null书籍作者
bookpubVarchar

Null出版社名称
bookpubdateDatetime

Null出版日期
bookindateDatetime

Null登记日期
isborrowedBitNot Null

是否被借出
表3-4 borrow_record 借阅记录信息表

表中列名数据类型可否为空说明
readerid

VarcharNot null(外主键)读者借阅证编号
bookid

VarcharNot null(外主键)书籍编号
borrowdateDatetimeNot null读者借书时间
表3-5 return_record 借阅记录信息表

表中列名数据类型可否为空说明
readernameVarcharNot null(外主键)读者借阅证编号
readeridVarcharNot null(外主键)书籍编号
returndate

datetimeNot null读者还书时间
表3-6 reader_fee 罚款记录信息表

表中列名数据类型可否为空说明
readeridvarcharNot null读者借书证编号
readernamevarcharNot null读者姓名
bookidvarcharNot null(外主键)书籍编号
booknamevarcharNot null书籍名称
bookfeeSmallmoney

Not Null

罚款金额
borrowdatedatetimeNot Null

借阅时间
表3-7system_Administrator管理员信息表

表中列名数据类型可否为空说明
administratoridvarcharnot null(主键)管理员编号
administratornamevarcharnot null管理员姓名
administratorpasswordvarcharnot null管理员密码
administratorpermissionvarcharnot null管理员权限
表3-8  system_Super_Administrator管理员信息表

表中列名数据类型可否为空说明
superadministratoridvarcharnot null(主键)管理员编号
superadministratornamevarcharnot null管理员姓名
superadministratorpasswordvarcharnot null管理员密码
superadministratorpermissionvarcharnot null管理员权限
表结构图:

6、代码实现

1)数据库的连接:

 import java.sql.*; 

 import javax.swing.JOptionPane; 

 public class Query 

public static Connection conection = null; 

static Connection getConnection()

{    //连接 MySQL 数据库 

try{ 

Class.forName("org.gjt.mm.mysql.Driver");//加载驱动 

conection = DriverManager.getConnection

System.out.println("数据库连接成功"); 

}catch(java.lang.ClassNotFoundException classnotfound)

classnotfound.printStackTrace();//驱动未找到 

}

catch(java.sql.SQLException sql)

sql.printStackTrace();//SQL 执行时发生异常,打印栈信息 

}

 return conection; 

2)增加一条图录:

public static boolean Insert(Book aBook) 

{    

Connection connect=getConnection();//得到连接 

boolean res=false; 

try { 

Statement stmt = connect.createStatement();//查询集 

String sql = "select * from book where BID='"+aBook.getBID()+"'"; 

ResultSet rs=stmt.executeQuery(sql);//执行 SQL 命令,返回结果集 

if (rs.next())//图书编号存在 

{     res=false; 

JOptionPane.showMessageDialog(null,"学生信息插入失败,该 学生             ID 号已存在.WARNING_MESSAGE); 

rs.close(); 

stmt.close(); 

} else{ //不存在 

String sqlString="insert into book                 values('"+aBook.getBID()+"','"+aBook.getBname()+"','"+

aBook.getBauthor()+"','"+aBook.getPress()+"','"+

aBook.getBinfo()+"','"+aBook.getYear()+"-"+

aBook.getMonth()+"-"+aBook.getDay()+"','"+     aBook.getBclass()+"')"; 

res =stmt.execute(sqlString); 

res=true; 

if(res) 

JOptionPane.showMessageDialog(null," 图 书 信 息 插     入 成 功.INFORMATION_MESSAGE);     rs.close(); 

} else{ 

res=false; 

JOptionPane.showMessageDialog(null,"图书信息插入    失败", "警告",JOptionPane.WARNING_MESSAGE);     rs.close(); 

}catch (SQLException e) //捕获异常 

res=false; 

System.out.print("Error loading Mysql Driver!");     e.printStackTrace(); 

return res; 

3)删除一条图录:

public static boolean delBook(String bid) 

{    

Connection connect=getConnection(); 

boolean res=false; 

try { 

Statement stmt = connect.createStatement(); 

String sql = "select * from book where Bid='"+bid+"'"; 

ResultSet rs=stmt.executeQuery(sql); 

if (rs.next()) 

String sqlString="delete from book where Bid='"+bid+"'";     stmt.executeUpdate(sqlString); 

JOptionPane.showMessageDialog(null,"图书信息删除成功", "成功            ",JOptionPane.INFORMATION_MESSAGE); 

res=true; 

rs.close(); 

stmt.close(); 

else{ 

JOptionPane.showMessageDialog(null,"图书信息删除失败,该 图书     ID 号不存在.WARNING_MESSAGE); 

res=false; 

rs.close(); 

stmt.close(); 

}catch (SQLException e)         

{     

JOptionPane.showMessageDialog(null,"图书信息删除失败", "成功    ",JOptionPane.INFORMATION_MESSAGE);     

res=false;

System.out.print("Error loading Mysql Driver!");     

e.printStackTrace();

return res;

}  

4)修改图书信息:

 public static boolean modifyBook(Book oldBook) 

{    Connection connect=getConnection(); 

boolean flag=false; 

try { 

Statement stmt = connect.createStatement(); //查询集 

String sqlString="update book set     Bname='"+oldBook.getBname()+"',

Bauthor='"+oldBook.getBauthor() +"', Press='"+oldBook.getPress()+"', 

BInfo='"+oldBook.getBinfo()+"',BDate='"+oldBook.getYear()+"-"+

oldBook.getMonth()+"-"+oldBook.getDay()+"',Bclass='"+

oldBook.getBclass()+"' 

where BID='"+oldBook.getBID()+"'"; stmt.executeUpdate(sqlString);     

JOptionPane.showMessageDialog(null,"图书信息修改成功", "成功    ",JOptionPane.INFORMATION_MESSAGE); 

flag=true; 

}catch (SQLException e) //捕获错误         

{     JOptionPane.showMessageDialog(null,"图书信息修改失败", "警告                ",JOptionPane.WARNING_MESSAGE);

flag=false; 

System.out.print("Error loading Mysql Driver!");

     e.printStackTrace(); 

return flag; 

}  

5)修改一条图录并将结果用表格显示出来:

public 

{    javax.swing.ListSelectionModel; 

javax.swing.RowSorter; javax.swing.table.DefaultTableModel;     javax.swing.table.TableRowSorter; 

class BookInfoQuery extends JFrame 

BorderLayout borderLayout1 = new BorderLayout();//布局方式 

JSplitPane jSplitPane1 = new JSplitPane();//分割面板 

JScrollPane jScrollPane1 = new JScrollPane();//滚动面板,用于放置表格 

JPanel jPanel1 = new JPanel();//面板 

JTable jTable1 = new JTable();//表格

DefaultTableModel tablemodel = null;//默认表格模型 

JPanel jPanel3 = new JPanel();//面板 

GridLayout gridLayout1 = new GridLayout();// 网格布局方式 

JButton jBexit = new JButton();//退出按钮 

ListSelectionModel selectionMode=null; 

public BookInfoQuery(String bID,String bname,String bauthor, String press,

String bInfo,String year,String month,String day,String bclass) 

{ getContentPane().setLayout(borderLayout1);//设置布局方式 

String[] name = {"图书编号

String sqlStr = "select * from book where Year(BDate)>1900";

if(bID!=null)//查询时如果编号不为空 

{     

sqlStr+=" and BID='"+bID+"'"; 

if(bname!=null)//查询时如果图书名不为空 

sqlStr+=" and Bname like '%"+bname+"%'";//模糊查询 

if(bauthor!=null)//查询时如果作者不为空 

sqlStr+=" and Bauthor like'%"+bauthor+"%'";//模糊查询 

if(press!=null)//查询时如果出版社不为空 

sqlStr+=" and Press like '%"+press+"%'";//模糊查询 

if(bInfo!=null)//查询时如果图书信息不为空 

{     

sqlStr+=" and Binfo like '%"+bInfo+"%'";//模糊查询 

if(year!=null)//出版年份不为空 

sqlStr+=" and Year(BDate)"+year+" ";//按条件查询 

if(month!=null)//出版月份不为空 

sqlStr+=" and Month(BDate)"+month+" ";//按条件查询 

}

if(day!=null)//出版日不为空 

sqlStr+=" and Day(BDate)"+day+" ";//按条件查询 

if(bclass!=null)// 图书类别不为空 

sqlStr+=" and Bclass like '%"+bclass+"%'";//模糊查询 

sqlStr+=" order by BDate desc";//按出版日期降序排序 

ToTable bdt = new ToTable(); 

tablemodel = bdt.getTableModel(name,sqlStr); 

jTable1.setModel(tablemodel);     jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMN S);

//让其它的列也跟随变动 

jTable1.setEnabled(true);//设置表格可用 

jTable1.setCellSelectionEnabled(true); 

jTable1.setBackground(Color.pink);//设置表格背景颜色     selectionMode=jTable1.getSelectionModel();

selectionMode.setSelectionMode(ListSelectionModel.SINGLE_SELEC TION);     jTable1.setRowHeight(24);//设置表格高度 

RowSorter sorter     TableRowSorter(tablemodel)= newjTable1.setRowSorter(sorter);

//表格排序过滤 

jScrollPane1.setHorizontalScrollBarPolicy(JScrollPane.

HORIZONTAL_SCROLLBAR_ALWAYS); 

jScrollPane1.setVerticalScrollBarPolicy(JScrollPane.                     VERTICAL_SCROLLBAR_ALWAYS); 

jBexit.setText("退出"); 

jBexit.addActionListener(new ActionListener() 

public void actionPerformed(ActionEvent arg0)

 { int result = JOptionPane.showOptionDialog(null,"是否退 出图书信息查询?        提示", JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,         null,new String[] {"是

if (result == JOptionPane.YES_OPTION) 

dispose();//隐藏 

}

 } 

}

jPanel1.add(jBexit); 

jScrollPane1.getViewport().add(jTable1);//将表格添加至滚动面板中     jSplitPane1.add(jPanel1, JSplitPane.BOTTOM); 

jSplitPane1.resetToPreferredSizes();

     jSplitPane1.add(jScrollPane1, JSplitPane.TOP); 

this.getContentPane().add(jSplitPane1, java.awt.BorderLayout.CENTER);     this.getContentPane().add(jPanel1, java.awt.BorderLayout.SOUTH);     this.add(jSplitPane1); 

setSize(800,0); 

setVisible(true); 

setTitle("按复合条件进行查询");     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 } 

7、结束语

通过对图书信息管理系统的设计,我们对数据库的理论知识有了更多的认识,对需求分析的重要性、对一个系统的各部门的工作流程细节有了更深入的了解,对概念设计的步骤掌握的更加清晰,对分析过程中的原则要求有了更透彻的认识,使得我们对数据库的整体设计有了更好的把握。

课程设计中,设计一个图书馆管理系统,其中包含了对图书基本信息的管理,借阅和还书信息管理等,上包含了图书馆管理所要求的信息,能够完成一定的数据管理功能。但总之在设计当中我们学习到了许多东西,用到了很多的数据库的理论知识,增强了一定的实践能里。

系统的特色与不足,图书馆管理信息系统是日常生活中经常接触到的一个系统。系统除了基本功能外,增加了报表的功能。系统的不足之处就是对图书预约功能的处理还有待完善,另外就是对图书馆删除图书的相关借阅信息是否需要保存还有待考虑。

在此次图书信息管理系统设计之后,我们对数据库的了解突破了只是在书本理论的层次,已经过渡到了实践的层次,对数据库系统的整体设计都有了更深层次的理解和掌握,确实受益匪浅。这次课程设计给了我们一个很好的实践机会,锻炼了我们的意志品质和合作精神,并且真正意义上的实践加深对理论的认识,积累了经验,为以后数据库的学习深造打下了坚实的基础。

文档

数据库课程设计报告图书管理系统

数据库原理课程设计报告书课题名图书信息管理系统指导教师日期一、前言..............................................................2二、概述..............................................................22.1开发目的.......................................................2三、需求分析.................
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top