《数据库课程设计报告总结归纳图书管理系统.doc》由会员分享,可在线阅读,更多相关《数据库课程设计报告总结归纳图书管理系统.doc(16页珍藏版)》请在三一办公上搜索。
1、数据库原理课程设计报告书课题名图书信息管理系统指导教师日期目录.23.1可行性分析.23.2系统目标.33.3系统应该具备的功能.33.4系统结构图.4四、 概念设计.5五、 逻辑设计.9六、 物理设计.95.1表命令.95.2表结构图.13七、 代码实现.136.1数据库连接.136.2增加一条图书记录.146.3删除一条图书记录.166.4修改一条图书记录.176.5查询一条图书记录.18八、结束语.22前言近年来,随着我国市场经济的迅速发展和人们生活水平的不断提高,以及计算机的普及使用,图书馆藏书的数目逐渐增大,这也是挑战了图书管理方面的技术,以前的人工管理方式已经不再适应现在的环境,取
2、而代之的是先进的图书管理系统,提高了图书馆的工作效率,为想要借书和还书的人提供更好的服务。1、概述1.1开发目的图书信息管理工作面对大量的可模块化处理的信息,是当今信息革命的一个重要阵地。我们小组开发图书管理信息系统就是采用现代化的信息管理方式代替手工管理方式,提高图书管理工作效率,做到信息的规范管理,科学统计和快速查询,让图书馆更好的为学校、社会服务。2、需求分析2.1可行性分析2.1.1技术可行性就技术力量来说,我们小组可以完成此次开发工作。开发过程中会出现许多问题,有我们预想之中的,也有一些没有在我们预想中,但我们有信心克服一切困难。我们小组各成员已经学习了MySQL,SQL,对网络技术
3、和操作系统也有系统的了解,熟悉计算机原理,能解决常见的硬件故障和硬件选择。2.1.2经济可行性目标系统开发需求比较低,加上具有成熟的软硬件环境,所以在软硬件的支出上十分有限。而且,目标系统并不是十分的复杂,开发的周期较短,人员有限。当系统开发完实际运行后,将很大程度上提高计算机的功能,在为使用者带来便利的同时也为系统的进一步推广创造了条件。2.1.3管理可行性整个系统由于是自行开发,自行使用,所以很方便管理使用。2.2系统目标图书管理信息系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强,数据安全性好的库。而对于
4、后者则要求应用程序功能完备,易使用等特点。系统开发的总体任务是实现各种信息的系统化,规范化和自动化。2.3系统应该具备的功能读者基本信息的输入,包括借书证编号、读者姓名、读者性别等。读者基本信息的查询、修改,包括读者借书证编号、读者姓名、读者性别等。书籍类别标准的制定、类别信息的输入,包括类别编号、类别名称。书籍类别信息的查询、修改,包括类别编号、类别名称。书籍库存信息的输入,包括书籍编号、书籍名称、书籍类别、作者姓名、出版社名称、出版日期、登记日期。书籍库存信息的查询,修改,包括书籍编号、书籍名称、书籍类别、作者姓名、出版社名称、出版日期登记日期等。借书信息的输入,包括读者借书证编号、书籍编
5、号、借书日期。借书信息的查询、修改,包括借书证编号、借书证编号、读者姓名、书籍编号、书籍名称、借书日期等。还书信息的输入,包括借书证编号、书籍编号、还书日期。还书信息的查询和修改,包括还书读者借书证编号、读者姓名、书籍编号、书籍名称、借书日期、还书日期等。超期还书罚款输入,还书超出期限包括超出期限还书的读者借书证号,书籍编号,罚款金额。超期还书罚款查询,删除,包括读者借书证编号、读者姓名、书籍编号、书籍名称,罚款金额等。管理员管理:包括创建读者用户信息、删除读者用户信息、添加图书信息、删除图书信息。超级管理员管理:包括创建管理员用户信息、删除管理员用户信息、创建读者用户信息、删除读者用户信息、
6、添加图书信息、删除图书信息。2.4系统结构图(根据需求分析,图书信息管理系统的结构图如下:)图书管理系统借还书子系统查询子系统管理子系统图书类管理图书管理读者管理逾期图书管理管理员管理直接查询多条件查询借书还书帮助子系统登录子系统3、概念设计所要实现的功能设计,可能建立它们之间的关系,进而实现逻辑结构功能。图书管理信息系统可以划分的实体有:书籍类别信息实体、读者信息实体、书籍信息实体、借阅记录信息实体,归还记录信息实体。用E-R图一一描述这些实体。类别实体图:书籍类别类别编号类别名称读者信息实体图:读者读者姓名读者性别读者种类e登记时间读者借书证编号可借书数已借书数逾期未还书数管理员实体图管理
7、员管理员姓名管理员编号管理员密码管理员权限超级管理员实体图超级管理员管理员姓名管理员编号管理员密码管理员权限书籍实体图:书籍书籍编号书籍名称书籍类别编号书籍作者出版时间收录时间是否被借出版社借阅记录息信实体图:读者借书证编号书籍类别编号借阅时间隔借阅记录信息归还记录信息实体图:归还记录信息读者借书证编号书籍类别编号归还时间隔罚款信息实体图:书籍类别编号罚款信息实体实体罚款金额读者姓名读者借书证编号书籍名称借阅时间隔总的信息实体E-R图:11n信息登记读者书籍书类别归还借阅罚款罚款信息还书信息借阅信息实体mnmnmnn1m创建1管理nnn管理m管理员超级管理员创建1mn出具罚款单4、逻辑设计(1
8、)书籍类别(类别编号,类别名)(2)读者(借书证编号,读者姓名,读者性别,读者种类,登记时期,可借书数,已借书数,逾期未还书数)(3)管理员(管理员编号,管理员姓名,管理员密码,管理员权限)(4)超级管理员(管理员编号,管理员姓名,管理员密码,管理员权限)(5)书籍(书籍编号,书籍名称,书籍类别,书记作者,出版社名称,出版日期,登记日期)(6)借阅(借书证编号,书籍编号,读者借书时间)(7)还书(借书证编号,书籍编号,读者还书时间)(8)罚款(借书证编号,读者姓名,借书证编号,书籍编号,读者借书时间)5、物理设计表命令:(1)创建数据库CREATEDATABASElibrarysystemON
9、(NAME=librarysystem,FILENAME=d:librarysystem.mdf,SIZE=10,MAXSIZE=50,FILEGROWTH=5)LOGON(NAME=library,FILENAME=e:librarysystem.ldf,SIZE=5MB,MAXSIZE=25MB,FILEGROWTH=5MB)(2)书本类别表建立createtablebook_style(bookstylenovarchar(30)primarykey,bookstylevarchar(30)(3)创建书库表createtablesystem_books(bookidvarchar(20)
10、primarykey,booknamevarchar(30)Notnull,bookstylenovarchar(30)Notnull,bookauthorvarchar(30),bookpubvarchar(30),bookpubdatedatetime,bookindatedatetime,isborrowedbit,foreignkey(bookstyleno)referencesbook_style(bookstyleno),)(4)借书证表建立createtablesystem_readers(readeridvarchar(9)primarykey,readernamevarcha
11、r(9)notnull,readersexvarchar(2)notnull,readertypevarchar(10),regdatedatetime,booktotalint,borrowednumint,overduenoreturnnumint)(5)借书记录表建立createtableborrow_record(bookidvarchar(20)primarykey,readeridvarchar(9),borrowdatedatetime,foreignkey(bookid)referencessystem_books(bookid),foreignkey(readerid)ref
12、erencessystem_readers(readerid),)(6)还书记录表建立createtablereturn_record(bookidvarchar(20)primarykey,readeridvarchar(9),returndatedatetime,foreignkey(bookid)referencessystem_books(bookid),foreignkey(readerid)referencessystem_readers(readerid)(7)罚款单表建立createtablereader_fee(readeridvarchar(9)notnull,reader
13、namevarchar(9)notnull,bookidvarchar(20)primarykey,booknamevarchar(30)Notnull,bookfeesmallmoney,borrowdatedatetime,foreignkey(bookid)referencessystem_books(bookid),foreignkey(readerid)referencessystem_readers(readerid)(8)管理员表建立createtablesystem_Administrator(administratoridvarchar(9)primarykey,admini
14、stratornamevarchar(9)notnull,administratorpasswordvarchar(2)notnull,administratorpermissionvarchar(10)(9)索引的创建createindexbookstyle_index_styleonbook_style(bookstyle)createindexborrow_record_index_readeridonborrow_record(readerid)createindexreader_fee_index_readeridonreader_fee(readerid)createindexre
15、turn_record_index_readeridonreturn_record(readerid)createindexsystem_books_index_booknameonsystem_books(bookname)createindexsystem_books_index_stylenoonsystem_books(bookstyleno)createindexsystem_books_index_bookauthoronsystem_books(bookauthor)表3-1book_sytle书籍类别信息表表中列名数据类型可否为空说明bookstylenovarcharnotn
16、ull(主键)种类编号bookstyleVarcharnotnull种类名称表3-2system_readers读者信息表格表中列名数据类型可否为空说明readeridvarcharnotnull(主键)读者借书证号readernamevarcharnotnull读者姓名readersexvarcharnotnull读者性别readertypevarcharnotnull读者种类regdatedatetimenull登记日期booktotalintnull可借书数borrowednumintnull已借书数overduenoreturnnumintnull逾期未还书数表3-3system_bo
17、ok书籍信息表表中列名数据类型可否为空说明bookidVarcharNotnull(主键)书籍编号booknameVarcharNotnull书籍名称续表3-3bookstyleVarcharNotnull书籍类别bookauthorVarcharNotnull书籍作者bookpubVarcharNull出版社名称bookpubdateDatetimeNull出版日期bookindateDatetimeNull登记日期isborrowedBitNotNull是否被借出表3-4borrow_record借阅记录信息表表中列名数据类型可否为空说明readeridVarcharNotnull(外主键
18、)读者借阅证编号bookidVarcharNotnull(外主键)书籍编号borrowdateDatetimeNotnull读者借书时间表3-5return_record借阅记录信息表表中列名数据类型可否为空说明readernameVarcharNotnull(外主键)读者借阅证编号readeridVarcharNotnull(外主键)书籍编号returndatedatetimeNotnull读者还书时间表3-6reader_fee罚款记录信息表表中列名数据类型可否为空说明readeridvarcharNotnull读者借书证编号readernamevarcharNotnull读者姓名book
19、idvarcharNotnull(外主键)书籍编号booknamevarcharNotnull书籍名称bookfeeSmallmoneyNotNull罚款金额borrowdatedatetimeNotNull借阅时间表3-7system_Administrator管理员信息表表中列名数据类型可否为空说明administratoridvarcharnotnull(主键)管理员编号administratornamevarcharnotnull管理员姓名administratorpasswordvarcharnotnull管理员密码administratorpermissionvarcharnotn
20、ull管理员权限表3-8system_Super_Administrator管理员信息表表中列名数据类型可否为空说明superadministratoridvarcharnotnull(主键)管理员编号superadministratornamevarcharnotnull管理员姓名superadministratorpasswordvarcharnotnull管理员密码superadministratorpermissionvarcharnotnull管理员权限表结构图:6、代码实现1)数据库的连接:importjava.sql.*;importjavax.swing.JOptionPane
21、;publicclassQuerypublicstaticConnectionconection=null;staticConnectiongetConnection()/连接MySQL数据库tryClass.forName(org.gjt.mm.mysql.Driver);/加载驱动conection=DriverManager.getConnectionSystem.out.println(数据库连接成功);catch(java.lang.ClassNotFoundExceptionclassnotfound)classnotfound.printStackTrace();/驱动未找到ca
22、tch(java.sql.SQLExceptionsql)sql.printStackTrace();/SQL执行时发生异常,打印栈信息returnconection;2)增加一条图书记录:publicstaticbooleanInsert(BookaBook)Connectionconnect=getConnection();/得到连接booleanres=false;tryStatementstmt=connect.createStatement();/查询集Stringsql=select*frombookwhereBID=+aBook.getBID()+;ResultSetrs=stm
23、t.executeQuery(sql);/执行SQL命令,返回结果集if(rs.next()/图书编号存在res=false;JOptionPane.showMessageDialog(null,学生信息插入失败,该学生ID号已存在,警告,JOptionPane.WARNING_MESSAGE);rs.close();stmt.close();else/不存在StringsqlString=insertintobookvalues(+aBook.getBID()+,+aBook.getBname()+,+aBook.getBauthor()+,+aBook.getPress()+,+aBook
24、.getBinfo()+,+aBook.getYear()+-+aBook.getMonth()+-+aBook.getDay()+,+aBook.getBclass()+);res=stmt.execute(sqlString);res=true;if(res)JOptionPane.showMessageDialog(null,图书信息插入成功,成功,JOptionPane.INFORMATION_MESSAGE);rs.close();elseres=false;JOptionPane.showMessageDialog(null,图书信息插入失败,警告,JOptionPane.WARN
25、ING_MESSAGE);rs.close();catch(SQLExceptione)/捕获异常res=false;System.out.print(ErrorloadingMysqlDriver!);e.printStackTrace();returnres;3)删除一条图书记录:publicstaticbooleandelBook(Stringbid)Connectionconnect=getConnection();booleanres=false;tryStatementstmt=connect.createStatement();Stringsql=select*frombookw
26、hereBid=+bid+;ResultSetrs=stmt.executeQuery(sql);if(rs.next()StringsqlString=deletefrombookwhereBid=+bid+;stmt.executeUpdate(sqlString);JOptionPane.showMessageDialog(null,图书信息删除成功,成功,JOptionPane.INFORMATION_MESSAGE);res=true;rs.close();stmt.close();elseJOptionPane.showMessageDialog(null,图书信息删除失败,该图书
27、ID号不存在,警告,JOptionPane.WARNING_MESSAGE);res=false;rs.close();stmt.close();catch(SQLExceptione)JOptionPane.showMessageDialog(null,图书信息删除失败,成功,JOptionPane.INFORMATION_MESSAGE);res=false;System.out.print(ErrorloadingMysqlDriver!);e.printStackTrace();returnres;4)修改图书信息:publicstaticbooleanmodifyBook(Booko
28、ldBook)Connectionconnect=getConnection();booleanflag=false;tryStatementstmt=connect.createStatement();/查询集StringsqlString=updatebooksetBname=+oldBook.getBname()+,Bauthor=+oldBook.getBauthor()+,Press=+oldBook.getPress()+,BInfo=+oldBook.getBinfo()+,BDate=+oldBook.getYear()+-+oldBook.getMonth()+-+oldBo
29、ok.getDay()+,Bclass=+oldBook.getBclass()+whereBID=+oldBook.getBID()+;stmt.executeUpdate(sqlString);JOptionPane.showMessageDialog(null,图书信息修改成功,成功,JOptionPane.INFORMATION_MESSAGE);flag=true;catch(SQLExceptione)/捕获错误JOptionPane.showMessageDialog(null,图书信息修改失败,警告,JOptionPane.WARNING_MESSAGE);flag=false
30、;System.out.print(ErrorloadingMysqlDriver!);e.printStackTrace();returnflag;5)修改一条图书记录并将结果用表格显示出来:publicjavax.swing.ListSelectionModel;javax.swing.RowSorter;javax.swing.table.DefaultTableModel;javax.swing.table.TableRowSorter;classBookInfoQueryextendsJFrameBorderLayoutborderLayout1=newBorderLayout();
31、/布局方式JSplitPanejSplitPane1=newJSplitPane();/分割面板JScrollPanejScrollPane1=newJScrollPane();/滚动面板,用于放置表格JPaneljPanel1=newJPanel();/面板JTablejTable1=newJTable();/表格DefaultTableModeltablemodel=null;/默认表格模型JPaneljPanel3=newJPanel();/面板GridLayoutgridLayout1=newGridLayout();/网格布局方式JButtonjBexit=newJButton();
32、/退出按钮ListSelectionModelselectionMode=null;publicBookInfoQuery(StringbID,Stringbname,Stringbauthor,Stringpress,StringbInfo,Stringyear,Stringmonth,Stringday,Stringbclass)getContentPane().setLayout(borderLayout1);/设置布局方式Stringname=图书编号,图书名称,作者,出版社,图书简介,出版时间,类别;StringsqlStr=select*frombookwhereYear(BDat
33、e)1900;if(bID!=null)/查询时如果编号不为空sqlStr+=andBID=+bID+;if(bname!=null)/查询时如果图书名不为空sqlStr+=andBnamelike%+bname+%;/模糊查询if(bauthor!=null)/查询时如果作者不为空sqlStr+=andBauthorlike%+bauthor+%;/模糊查询if(press!=null)/查询时如果出版社不为空sqlStr+=andPresslike%+press+%;/模糊查询if(bInfo!=null)/查询时如果图书信息不为空sqlStr+=andBinfolike%+bInfo+%
34、;/模糊查询if(year!=null)/出版年份不为空sqlStr+=andYear(BDate)+year+;/按条件查询if(month!=null)/出版月份不为空sqlStr+=andMonth(BDate)+month+;/按条件查询if(day!=null)/出版日不为空sqlStr+=andDay(BDate)+day+;/按条件查询if(bclass!=null)/图书类别不为空sqlStr+=andBclasslike%+bclass+%;/模糊查询sqlStr+=orderbyBDatedesc;/按出版日期降序排序ToTablebdt=newToTable();tabl
35、emodel=bdt.getTableModel(name,sqlStr);jTable1.setModel(tablemodel);jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);/让其它的列也跟随变动jTable1.setEnabled(true);/设置表格可用jTable1.setCellSelectionEnabled(true);jTable1.setBackground(Color.pink);/设置表格背景颜色selectionMode=jTable1.getSelectionModel();se
36、lectionMode.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);jTable1.setRowHeight(24);/设置表格高度RowSortersorterTableRowSorter(tablemodel)=newjTable1.setRowSorter(sorter);/表格排序过滤jScrollPane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);jScrollPane1.setVerticalScrollBarPolic
37、y(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);jBexit.setText(退出);jBexit.addActionListener(newActionListener()publicvoidactionPerformed(ActionEventarg0)intresult=JOptionPane.showOptionDialog(null,是否退出图书信息查询?,系统提示,JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,null,newString是,否,否);if(result=JOption
38、Pane.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.ge
39、tContentPane().add(jPanel1,java.awt.BorderLayout.SOUTH);this.add(jSplitPane1);setSize(800,640);setVisible(true);setTitle(按复合条件进行查询);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);7、结束语通过对图书信息管理系统的设计,我们对数据库的理论知识有了更多的认识,对需求分析的重要性、对一个系统的各部门的工作流程细节有了更深入的了解,对概念设计的步骤掌握的更加清晰,对分析过程中的原则要求有了更透彻的认识,使得我们对数据库的整体
40、设计有了更好的把握。课程设计中,设计一个图书馆管理系统,其中包含了对图书基本信息的管理,借阅和还书信息管理等,上包含了图书馆管理所要求的信息,能够完成一定的数据管理功能。但总之在设计当中我们学习到了许多东西,用到了很多的数据库的理论知识,增强了一定的实践能里。系统的特色与不足,图书馆管理信息系统是日常生活中经常接触到的一个系统。系统除了基本功能外,增加了报表的功能。系统的不足之处就是对图书预约功能的处理还有待完善,另外就是对图书馆删除图书的相关借阅信息是否需要保存还有待考虑。在此次图书信息管理系统设计之后,我们对数据库的了解突破了只是在书本理论的层次,已经过渡到了实践的层次,对数据库系统的整体设计都有了更深层次的理解和掌握,确实受益匪浅。这次课程设计给了我们一个很好的实践机会,锻炼了我们的意志品质和合作精神,并且真正意义上的实践加深对理论的认识,积累了经验,为以后数据库的学习深造打下了坚实的基础。