当前位置:文档之家› 数据库课程设计报告总结归纳图书管理系统

数据库课程设计报告总结归纳图书管理系统

数据库原理课程设计报告书课题名图书信息管理系统指导教师日期目录 (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 系统结构图(根据需求分析,图书信息管理系统的结构图如下:)(1)书籍类别(类别编号,类别名)(2)读者(借书证编号,读者姓名,读者性别,读者种类,登记时期,可借书数,已借书数,逾期未还书数)(3) 管理员(管理员编号,管理员姓名,管理员密码,管理员权限)(4) 超级管理员(管理员编号,管理员姓名,管理员密码,管理员权限)(5)书籍(书籍编号,书籍名称,书籍类别,书记作者,出版社名称,出版日期,登记日期)(6)借阅(借书证编号,书籍编号,读者借书时间)(7)还书(借书证编号,书籍编号,读者还书时间)(8)罚款(借书证编号,读者姓名,借书证编号,书籍编号,读者借书时间)5、物理设计表命令:(1)创建数据库CREATE DATABASE librarysystemON(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)表结构图: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.getConnectionSystem.out.println("数据库连接成功");}catch(ng.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 号已存在","警告",JOptionPane.WARNING_MESSAGE);rs.close();stmt.close();} else{ //不存在String sqlString="insert into bookvalues('"+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," 图书信息插入成功","成功",RMATION_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,"图书信息删除成功", "成功",RMATION_MESSAGE);res=true;rs.close();stmt.close();}else{JOptionPane.showMessageDialog(null,"图书信息删除失败,该图书ID 号不存在","警告",JOptionPane.WARNING_MESSAGE);res=false;rs.close();stmt.close();}}catch (SQLException e){JOptionPane.showMessageDialog(null,"图书信息删除失败", "成功",RMATION_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,"图书信息修改成功", "成功",RMATION_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 JFrameBorderLayout 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<DefaultTableModel> sorterTableRowSorter<DefaultTableModel>(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,640);setVisible(true);setTitle("按复合条件进行查询");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}7、结束语通过对图书信息管理系统的设计,我们对数据库的理论知识有了更多的认识,对需求分析的重要性、对一个系统的各部门的工作流程细节有了更深入的了解,对概念设计的步骤掌握的更加清晰,对分析过程中的原则要求有了更透彻的认识,使得我们对数据库的整体设计有了更好的把握。

相关主题