图书馆管理系统的可行性分析和设计_第1页
图书馆管理系统的可行性分析和设计_第2页
图书馆管理系统的可行性分析和设计_第3页
图书馆管理系统的可行性分析和设计_第4页
图书馆管理系统的可行性分析和设计_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

...wd......wd......wd...毕业设计〔论文〕题目:图书馆管理系统姓名陈平学号专业计算机网络指导教师周亚凤南京航空航天大学2012年4月目录TOC\o"1-2"\h\z\u摘要III前言IV第一章图书馆管理系统分析11.1需求分析11.2功能分析21.3系统用例图设计21.4绘制系统流程图31.5系统的开发环境4第二章数据库分析与设计52.1数据库分析52.2数据库概念设计52.3数据逻辑构造设计72.4各表之间的联系图9第三章系统设计与功能实现103.1数据库Dao类的构建103.2系统登录模块113.3主窗体模块133.4图书类别管理模块153.5图书信息管理模块173.6读者信息管理模块213.7图书订购管理模块243.8图书借阅管理模块273.9系统维护模块30第四章系统测试354.1测试工程354.2测试用例35完毕语37参考文献38

图书馆管理系统摘要图书馆管理系统是采用Java做前台,后台数据库则采用的是SQLServer2005,本系统提供6个功能模块,分别是图书类别管理模块、图书信息管理模块、读者信息管理模块、新书订购管理模块、图书借阅模块,以及系统维护模块。这6个模块里又有许多子模块,通过这些模块之间的相互连接与配合,完成操作员发出的各种指令。图书馆管理系统是一个供内部人员使用的系统。而图书馆的工作人员也分为两类,一类是操作人员,主要负责图书的借阅和归还的工作;一类是管理员,除了操作人员的所有功能外,还能够对书籍列表、书籍信息、读者信息等进展管理。论文将全面介绍所设计的图书馆管理系统的系统功能和业务流程,并对系统进展详细的数据分析和设计,最终使用Java完成系统开发。关键词:图书馆管理系统,SQLServer2005,Java前言随着社会的开展,人们对于知识的需求也在不断地增长。书籍作为人们获取并增长知识的主要途径,使得图书馆在人们生活中占有了一定位置。但是近几年来,随着书量的不断增长,造成了书库空间极度缺乏,图书挤压,管理不善。这些都直接影响了读者对图书馆藏书的充分利用。这时图书馆就特别需要开发一套图书馆管理系统,通过该系统来提高图书馆的管理效率,从而减少管理方面的工作流和本钱。一个现代化的图书馆在正常运营中总是面对大量的读者信息,书籍信息以及两者相互作用产生的借书信息,还书信息。面对图书馆数以万计的图书,纷繁复杂的读者信息,频繁更替的借还书信息,传统的直接方法不但管理出现漏洞,造成损失。因此有一个智能化、系统化、信息化的图书管理系统十分重要的。充分利用计算机的功能实现对读者管理、书籍管理,借阅管理等自动化控制,将会使图书馆的工作大大减弱。方便友好的图形界面、简便的操作、完善的数据库管理。将会使得图书馆系统极大限度的应用于现代化图书管理中。第一章图书馆管理系统分析1.1需求分析图书馆管理系统是一个高度集成的图书信息处理系统,通过将图书馆的各种功能进展整合,从而到达显示检索信息,提高工作效率,降低管理本钱等目的。一个典型的图书馆管理系统应该能够管理所有的图书种类,图书信息以及读者信息,还需要提供各种图书信息的检索查询功能。该系统还需要能够对图书的借阅,归还进展管理,并对读者的罚款进展自动计算。通过该系统的自动化管理,能够大大减少图书馆管理人员,还能减少管理人员的工作任务,从而降低管理开销和本钱。一个完整的图书馆管理系统包括前台和后台,前台主要是显示在计算机屏幕上的显示界面,有各种指令按钮,操作框以及文本框,后台主要是为前台的一些操作提供一些必要的数据,也就是一个相对于系统比拟完整的数据库,操作员以及各类图书的信息,借书者的信息等等。一个最根本的图书馆管理系统要有如下几个重要功能:用户在借书超期的情况下得到来自管理员的提醒。管理员可以方便进展图书管理,用户管理,管理员管理。图书管理包括图书信息以及图书分类的添加,修改,删除。用户管理包括用户信息的添加,删除,修改。管理员管理包括管理员信息的添加,删除,修改等。用户和管理员可以修改自己的密码,修改前需先核实自己的原始密码。未注册用户〔游客〕也可以浏览所有的图书信息和分类信息,但是无法借阅。〔5〕实现模糊查询,使用户得到更多的相关记录。并且考虑使用的方便性,一些经常使用的输入无须用户输入,比方进展图书查询时图书分类只须用户做选择就可以。〔6〕考虑程序执行操作时可能出现的情况,比方删除图书分类时该分类下存在图书,程序自动跳转该分类图书查看。删除某个用户,如果存在借书记录则不允许删除,跳转到该用户的借书记录。等待管理员确认该用户所借图书已经全部归还之后才允许删除该用户信息。一个图书馆管理系统要是能实现以上的各种功能,那么这个图书馆管理系统也就算是比拟成功的一个系统了。1.2功能分析根据以上需求分析,我所设计的图书馆管理系统有6个功能模块,分别是图书类别管理模块,图书信息管理模块,读者信息管理模块,新书订购管理模块,图书借阅模块以及系统维护模块。其中各功能模块的具体说明如下:图书类别管理模块:该模块主要负责管理图书馆的图书种类信息,如图书种类的名称、可借天数、罚款数目等信息。图书信息管理模块:该模块主要负责管理图书馆的图书信息,如图书编号、图书名称、作者、出版社等信息。读者信息管理模块:该模块主要负责管理图书馆的读者信息,如读者编号、读者信息、证件号码、最大借书量等信息。图书订购管理模块:该模块主要负责管理图书馆的新书订购信息、包括新书订购和验收新书两个子模块。图书借阅管理模块:该模块主要负责图书馆的书籍借阅和归还信息,包括图书借阅、图书归还、图书搜索3个子模块。系统维护模块:该模块主要负责图书馆的工作人员信息,包括用户管理和更改系统口令两个子模块。1.3系统用例图设计图书馆管理系统是一个内部人员使用的系统,也就是说不是所有的人都能够使用它,只有图书馆的工作人员才能使用。而图书馆的工作人员也分为两类,一类是操作人员,主要负责图书的借阅和归还的工作;一类是管理员,除了操作人员的所有功能外,还能够对书籍列表,书籍信息,读者信息等进展管理。下面以管理员为例绘制其所对应的用例图如图1.1所示。图1.1管理员用例图1.4绘制系统流程图本系统首先需要对用户的身份进展识别,只有合法的用户才能进入系统,否则将无法进入系统。进入系统后,首先翻开系统主窗体,在系统首页的菜单栏或者功能区可以选择各种导航链接来进展各种操作。由于不同权限的用户对于系统有不同的功能,下面以功能最多的管理员为例,其系统流程图如图1.2所示。图1.2系统流程图1.5系统的开发环境图书馆管理系统的具体开发环境要求如下:系统开发平台:Eclipse3.4。数据库管理系统软件:SQLServer2005。运行平台:Windows7。Java开发包:JDK5.0以上。分辨率:800×600以上。GUI开发包:Swing。第二章数据库分析与设计2.1数据库分析在开发图书馆管理系统时,考虑到图书量大,数据库维护大的特点,选用SQLServer2005作为数据库管理系统。在SQLServer2005中新增一个数据库,其数据库名为db_library。数据库中可以包含图书信息、图书类别信息、图书借阅信息、操作员信息、图书订购信息及读者信息等实体,用来存储不同的信息。2.2数据库概念设计本系统一共设计规划出6个实体,分别是图书类别信息实体、图书信息实体、读者信息实体、操作员实体、图书借阅信息实体以及图书订购信息实体。图书的类别有很多,因此可以建设一个图书馆类别信息表,专门用来保存图书的类别信息。同时因为每种类别的书籍阅读时间有所不同,所以需要在类别表中保存该类别可借天数信息。图书类别信息实体E-R图如图2.1所示。图2.1图书类别信息实体E-R图对于图书馆来说最重要的就是要管理其下的书籍,所以需要建设一个图书信息表,用来保存图书的所有信息。图书信息实体E-R图如图2.2所示。图2.2图书信息实体E-R图要想在图书馆借书首先需要进展登记并交付押金。领取读书卡才能借书。所以需要建设一个读者信息表来保存图书馆的所有读者的登记信息。读者信息实体E-R图如图2.3所示。图2.3读者信息实体E-R图图书馆里一般有一个以上的系统操作员,需要建设一个操作员信息表,用来保存操作员的身份信息。操作员信息实体E-R图如图2.4所示。图2.4操作员信息实体E-R图图书馆最大的功能就是能够借书,这时需要建设一个图书借阅信息表,用来保存读者的借书信息。图书的借阅信息实体E-R图如图2.5所示。图2.5图书的借阅信息实体E-R图图书馆除了借书,还需要到出版社或其他代理商订购新书,这是需要建设一个图书订购信息表,用来保存所有的订购信息。图书订购信息实体E-R图如图2.6所示。图2.6图书订购信息实体E-R图2.3数据逻辑构造设计根据设计好的各实体E-R图创立数据库的逻辑构造,数据库各表的构造如下:〔1〕图书类别信息采表用来储存所有的图书类别信息,包括图书类别编号、图书类别名称、可借天数以及迟还一天的罚款数目4个字段。该表的逻辑构造如表2.1所示。表2.1图书类别信息表字段名数据类型是否主键描述id整数〔int〕是图书类别编号typeName文本〔varchar〕否图书类别名称days整数〔int〕否可借天数fk浮点数否迟还一天的罚款数目〔2〕图书信息表用来储存所有的图书信息,包括图书编号、类别编号、图书名称、作者、译者、出版社、出版日期以及书籍价格8个字段。该表的逻辑构造如表2.2所示。表2.2图书信息表字段名数据类型是否主键描述ISBN文本〔varchar〕是图书编号typeId整数〔int〕否〔外键〕类别编号bookname文本〔varchar〕否图书名称writer文本〔varchar〕否作者translator文本〔varchar〕否译者publisher文本〔varchar〕否出版社date日期时间〔datetime〕否出版日期price金钱货币〔money〕否书籍价格〔3〕读者信息表用来储存所有的读者信息,包括读者姓名、性别、年龄、证件号码、会员证有效日期、最大借书量、号码、押金、证件类型、职业、读者编号以及办证日期12个字段。该表的逻辑构造如表2.3所示。表2.3读者信息表字段名数据类型是否主键描述name文本〔varchar〕是读者姓名sex文本〔varchar〕否〔外键〕读者性别age整数〔int〕否读者年龄identityCard文本〔varchar〕否证件号码date日期时间〔datetime〕否会员证有效日期maxNum整数〔int〕否最大借书量tel文本〔varchar〕否号码keepMoney金钱货币〔money〕否押金zj整数〔int〕否证件类型zy文本〔varchar〕否职业ISBN文本〔varchar〕是读者编号bztime日期时间〔datetime〕否办证日期〔4〕操作员信息表用来保存操作员信息,包括操作员编号、用户名、性别、年龄、证件号码、工作时间、号码、是否为管理员、密码9个字段。该表的逻辑构造如表2.4所示。表2.4操作员信息表字段名数据类型是否主键描述id整数〔int〕是〔自动递增〕操作员编号name文本〔varchar〕否用户名sex文本〔varchar〕否性别age整数〔int〕否年龄identityCard文本〔varchar〕否证件号码workdate日期时间〔datetime〕否工作时间tel文本〔varchar〕否号码admin整数〔int〕否是否为管理员password文本〔varchar〕否密码〔5〕图书借阅信息表用来保存所有图书的借阅信息,包括借阅编号、书籍编号、操作员编号、读者编号、是够归还、借书日期以及应还日期7字段。该表的逻辑构造如表2.5所示。表2.5图书借阅信息表字段名数据类型是否主键描述id整数〔int〕是〔自动递增〕借阅编号bookISBN文本〔varchar〕否〔外键〕书籍编号operatorId整数〔int〕否〔外键〕操作员编号readerISBN文本〔varchar〕否〔外键〕读者编号isback整数〔int〕否是否归还borrowDate日期时间〔datetime〕否借书日期backdate日期时间〔datetime〕否应还日期〔6〕图书订购信息表用来保存图书馆的所有订购信息,包括书籍编号、订购日期、订购数量、操作员、是否验收以及书籍折扣6个字段。该表的逻辑构造如表2.6所示。表2.6图书订购信息表字段名数据类型是否主键描述ISBn文本〔varchar〕是书籍编号date日期时间〔datetime〕否订购日期number整数〔int〕否订购数量operator文本〔varchar〕否操作员checkAndAccept整数〔int〕否是否验收zk浮点否书籍折扣2.4各表之间的联系图各表间的联系图如图2.7所示。图2.7各表间联系图第三章系统设计与功能实现3.1数据库Dao类的构建首先定义了一个类Dao,并为该类添加了4中方法,分别是构造方法Dao、查询方法executeQuery、更新方法executeUpdate以及关闭连接方法close。publicclassDao{ protectedstaticStringdbClassName= "com.microsoft.sqlserver.jdbc.SQLServerDriver";//数据库连接驱动类 protectedstaticStringdbUrl="jdbc:sqlserver://localhost:1433;" +"DatabaseName=db_library;";//数据库连接URL protectedstaticStringdbUser="sa"; //数据库用户名 protectedstaticStringdbPwd="123"; //数据库密码 privatestaticConnectionconn=null; //数据库连接对象 privatestaticStringISBN; privateDao(){ //构造方法 try{ if(conn==null){ //如果连接对象为空 Class.forName(dbClassName); //加载驱动类 conn=DriverManager.getConnection(dbUrl,dbUser,dbPwd);//获得连接对象 } }catch(Exceptionee){ ee.printStackTrace(); } } privatestaticResultSetexecuteQuery(Stringsql){ //查询方法 try{ if(conn==null)newDao();//如果连接对象为空,则重新调用构造方法 returnconn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE).executeQuery(sql);//执行查询 }catch(SQLExceptione){ e.printStackTrace(); returnnull; //返回null值 }finally{ } } privatestaticintexecuteUpdate(Stringsql){ //更新方法 try{ if(conn==null)newDao(); //如果连接对象为空,则重新调用构造方法 returnconn.createStatement().executeUpdate(sql);//执行更新 }catch(SQLExceptione){ e.printStackTrace(); return-1; }finally{ } } publicstaticvoidclose(){//关闭方法 try{ conn.close();//关闭连接对象 }catch(SQLExceptione){ e.printStackTrace(); }finally{ conn=null; //设置连接对象为null值 } }3.2系统登录模块对于图书馆管理系统而言,不是所有的用户都是可以使用的,所有需要添加一个登陆模块。通过该模块来对用户的合法性进展判断,只有合法的用户才能进入到系统。整个登陆模块的实现非常简单,相信读者能够快速掌握其开发过程。登录模块的运行结果如图3.1所示。图3.1系统登录界面3.2.1登陆窗体界面设计与实现登陆窗体的界面设计我依然采用的是比拟传统的方法,新建一个类BookLoginFrame类,用来显示登录窗体。在该窗体中需要使用到四类控件,分别是JLabel、JTextFieid、JPasswordField以及JButton。其中控件JLabel是用来显示顶部的图片以及标签文本;控件JTextFieid用来接收用户名输入信息;控件JPasswordField用来接收密码输入信息;控件JButton用来创立登陆和重置按钮。3.2.2操作员登陆在Dao类中新增一个方法check,通过该方法来检测用户信息是否合法。该方法接收两个参数,分别是操作员用户名name,操作员密码passsward。主要方法如下:publicstaticOperatercheck(Stringname,Stringpassword){Operateroperater=newOperater();//操作员信息对象 Stringsql="select*fromtb_operatorwherename='"+name +"'andpassword='"+password+"'andadmin=1"; ResultSetrs=Dao.executeQuery(sql); try{ while(rs.next()){ operater.setId(rs.getString("id")); operater.setName(rs.getString("name")); operater.setGrade(rs.getString("admin")); operater.setPassword(rs.getString("password")); ……}}}3.3主窗体模块图书馆管理系统的主窗体模式是由三个局部组成的。第一局部是位于主窗体上组上端的系统菜单栏,用来实现链接系统功能菜单。第二局部位于菜单栏下面的工具栏,用来提供各种常用功能链接。第三局部位于工具下的系统功能窗口区域,主要用来显示各种功能窗口。3.3.1主窗体界面设计在主窗体中可以显示其他功能窗体,所以需要在该窗体中参加一个桌面窗体。通过将其他功能窗体参加到该窗体中。从而实现多窗体显。同时在主窗口体中,还需要添加一个main方法,该方法为系统入口的方法,通过执行该方法来执行系统。其主要代码如下:publicclassLibraryextendsJFrame{ privatestaticfinalJDesktopPane DESKTOP_PANE=newJDesktopPane();//桌面窗体 publicstaticvoidmain(String[]args){ try{ UIManager.setLookAndFeel(UIManager .getSystemLookAndFeelClassName());//设置系统界面外观 newBookLoginIFrame();//登录窗口 }catch(Exceptionex){ ex.printStackTrace(); } } publicstaticvoidaddIFame(JInternalFrameiframe){//添加子窗体的方法 DESKTOP_PANE.add(iframe); //新增子窗体}}下面再来配置主窗体的其他属性,首先需要设置其大小和位置,然后还要设置其菜单栏和工具栏,最后需要在桌面窗体中添加一个背景图片。其代码实现如下。publicLibrary(){super();setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);////设置关闭按钮处理事件Toolkittool=Toolkit.getDefaultToolkit(); //获得默认的工具箱DimensionscreenSize=tool.getScreenSize(); //获得屏幕的大小setSize(800,600); //设置窗体大小setLocation((screenSize.width-getWidth())/2,(screenSize.height-getHeight())/2); //设置窗体位置setTitle("图书馆管理系统"); //设置窗体标题JMenuBarmenuBar=createMenu(); //调用创立菜单栏的方法setJMenuBar(menuBar); //设置菜单栏JToolBartoolBar=createToolBar();//调用创立工具栏的方法getContentPane().add(toolBar,BorderLayout.NORTH);//设置工具栏finalJLabellabel=newJLabel(); //创立一个标签,用来显示图片label.setBounds(0,0,0,0); //设置窗体的大小和位置label.setIcon(null);//窗体背景DESKTOP_PANE.addComponentListener(newComponentAdapter(){publicvoidcomponentResized(finalComponentEvente){Dimensionsize=e.getComponent().getSize();//获得组件大小label.setSize(e.getComponent().getSize());//设置标签大小label.setText("<html><imgwidth="+size.width+"height="+size.height+"src='"+this.getClass().getResource("/backImg.jpg")+"'></html>");//设置标签文本}};DESKTOP_PANE.add(label,newInteger(Integer.MIN_VALUE));//将标签添加到桌面窗体getContentPane().add(DESKTOP_PANE);//将桌面窗体添加到主窗体中}3.3.2主窗体菜单栏设计在Library类中定义一个createMenu方法,在该方法中实现菜单栏的设计。其运行界面如图3.2所示。图3.2主窗体界面3.4图书类别管理模块图书类别管理模块包含两个子模块,分别是图书类别添加和图书类别修改。其中图书类别添加模块用来录入新的图书类别信息,图书列别修改模块用来修改已有的图书列别信息。系统界面如图3.3所示。图3.3图书类别修改界面3.4.1图书类别添加模块要添加图书类别信息,首先要在Dao中添加一个InsertbookType方法,通过该方法来承受用户输入的所有书籍类别信息,然后执行插入操作。其主要方法如下:publicstaticintInsertBookType(StringbookTypeName,Stringdays,doublefk){ inti=0;try{Stringsql="insertintotb_bookType(typeName,days,fk)values('"+bookTypeName+"','"+days+"',"+fk+")"; i=Dao.executeUpdate(sql);//执行插入操作}……}3.4.2图书类别修改模块修改图书类别信息同保存图书类别信息非常类似,首先在Dao中添加一个方法UpdatebookType。通过该方法来接收图书修改表单中提交的书籍类别信息。其代码如下:publicstaticintUpdatebookType(Stringid,StringtypeName,Stringdays,Stringfk){inti=0;try{Stringsql="updatetb_bookTypesettypeName='"+typeName+"',days='"+days+"',fk='"+fk+"'whereid='"+id+"'"; //System.out.println(sql); i=Dao.executeUpdate(sql);//执行更新操作}……}修改图书类别信息,是通过单击修改按钮执行的,上面我们已经为修改按钮注册了一个监听器,其对应的监听器类为ButtonActionLinter。下面来实现该监听器类,其实现代码如下:classButtonAddListenerimplementsActionListener{ publicvoidactionPerformed(ActionEvente){ ObjectselectedItem=bookTypeModel.getSelectedItem();inti=Dao.UpdatebookType(BookTypeId.getText().trim(),selectedItem.toString(),days.getText().trim(),fk.getText().trim()); System.out.println(i); if(i==1){//如果返回值为1,则表示修改成功 JOptionPane.showMessageDialog(null,"修改成功"); Object[][]results=getFileStates(Dao.selectBookCategory()); model.setDataVector(results,columnNames); table.setModel(model); } } }3.5图书信息管理模块图书信息管理模块包含两个子模块,分别是图书信息添加和图书信息修改。其中图书信息添加模块用来录入新的图书信息,图书信息修改模块用来修改已有的图书信息。3.5.1图书信息添加界面设计图书信息添加窗体一共包含三个局部,第一局部是位于窗体最上端的图片。第二局部是位于中间的主面板,用来提供各种标签和表单元素。第三局部是位于主面板下的按钮面板,用来提供添加和关闭两个按钮。其运行界面如图3.4所示。图3.4图书信息添加界面主面板是整个窗体最重要也是最核心的局部,其局部实现代码如下:publicBookAddIFrame(){ super(); finalBorderLayoutborderLayout=newBorderLayout();//创立边框布局管理器 getContentPane().setLayout(borderLayout); //设置布局 setIconifiable(true);//设置窗体可最小化 setClosable(true);//设置窗体可关闭 setTitle("图书信息添加");//设置窗体标题 setBounds(100,100,396,260);//设置窗体位置和大小 finalJPanelmainPanel=newJPanel(); //创立中心面板 mainPanel.setBorder(newEmptyBorder(5,10,5,10));//设置边框 finalGridLayoutgridLayout=newGridLayout(0,4);//创立表格布局管理器 gridLayout.setVgap(5);//设置组件之间垂直距离 gridLayout.setHgap(5);//设置组件之间平行距离 mainPanel.setLayout(gridLayout);//设置布局 getContentPane().add(mainPanel);//将中心面板参加到窗体 finalJLabelISBNLabel=newJLabel(); //创立图书编号标签 ISBNLabel.setText("图书编号:");//设置标签文本 mainPanel.add(ISBNLabel);//添加到中心面板 ISBN=newJTextField("请输入13位书号",13);//创立书号文本框 ISBN.setDocument(newMyDocument(13));//设置书号文本框最大输入值为13 ISBN.setColumns(13);//设置文本框长度 ISBN.addKeyListener(newISBNkeyListener());//注册监听器 ISBN.addFocusListener(newISBNFocusListener());//注册监听器 mainPanel.add(ISBN);……}3.5.2检测书籍编号是否已存在因为不可能存在重复的书籍编号。为了防止操作员的操作错误,所以需要提供一个书籍编号监测系统。如果该书籍号已存在,则不能进展添加,否则可以进展添加。要检测书籍编号是否存在,需要在Dao类中添加一个方法,该方法用来接收输入的书籍编号,然后查询该书籍编号对应的书籍记录,其主要方法如下:publicstaticListselectBookInfo(StringISBN){//根据图书编号查询图书 Listlist=newArrayList();//保存所有查询到的书籍信息 Stringsql="select*fromtb_bookInfowhereISBN='"+ISBN+"'"; ResultSetrs=Dao.executeQuery(sql);//执行查询 ……//插入数据,关闭连接}对书籍编号进展检测,一般是在操作员输入完书籍编号,并准备输入其他信息时来完成。这是需要新建一个ISBNFFocusListener监听类,该类继承了FocusAdoper类,并实现其中的focusLost,其实现代码如下:classISBNFocusListenerextendsFocusAdapter{ publicvoidfocusLost(FocusEvente){ if(!Dao.selectBookInfo(ISBN.getText().trim()).isEmpty()){ JOptionPane.showMessageDialog(null,"添加书号重复!"); return; } } }3.5.3图书信息添加要添加书籍信息,首先要在Dao中添加一个Insertbook方法,通过该方法来承受用户输入的所有书籍信息,然后执行插入操作。其主要方法如下:publicstaticintInsertbook(StringISBN,StringtypeId,Stringbookname,Stringwriter,Stringtranslator,Stringpublisher,Datedate,Doubleprice){inti=0;try{Stringsql="insertintotb_bookInfo(ISBN,typeId,bookname,writer,translator,"+ "publisher,date,price)values('"+ISBN+"','"+typeId+"','"+bookname+"',"+"'"+writer+"','"+translator+"','"+publisher+"','"+date+"',"+price+")"; i=Dao.executeUpdate(sql);//执行插入操作} ……}3.5.4图书修改信息修改图书信息同保存图书信息非常类似,首先在Dao中添加一个方法Updatebook。通过该方法来接收图书修改表单中提交的书籍信息。其代码如下:publicstaticintUpdatebook(StringISBN,StringtypeId,Stringbookname,Stringwriter,Stringtranslator,Stringpublisher,Datedate,Doubleprice){inti=0;//更新记录数try{ Stringsql="updatetb_bookInfosetISBN='"+ISBN+"', typeId='"+typeId+"',bookname='"+bookname+"',writer='"+writer+"',translator='"+translator+"',publisher='"+publisher+"',date='"+date+"',price="+price+"whereISBN='"+ISBN+"'"; i=Dao.executeUpdate(sql);//执行更新 }……}修改图书信息,是通过单击修改按钮执行的,上面我们已经为修改按钮注册了一个监听器,其对应的监听器类为UpdateBookActionLinter。下面来实现该监听器类,其实现代码如下:classUpdateBookActionListenerimplementsActionListener{ publicvoidactionPerformed(finalActionEvente){inti=Dao.Updatebook(ISBNs,bookTypes,bookNames,writer,translators,publishers,Date.valueOf(pubDates),Double.parseDouble(prices)); if(i==1){//如果返回更新记录数为1,表示修改成功 JOptionPane.showMessageDialog(null,"修改成功"); Object[][]results=getFileStates(Dao.selectBookInfo());//重新获得书籍信息 DefaultTableModelmodel=newDefaultTableModel();//获得表格模型 table.setModel(model);//设置表格模型 model.setDataVector(results,columnNames);//设置模型数据和列名 }}}3.6读者信息管理模块读者信息管理模块包含两个子模块,分别是读者信息添加和读者信息修改与删除。其中读者信息添加模块用来录入新的读者信息,读者信息修改与删除模块用来修改和删除已有的读者信息。其系统运行界面如图3.5所示。图3.5读者信息管理模块运行界面3.6.1读者信息添加要添加读者信息,首先要在Dao中添加一个InsertReader方法,通过该方法来承受用户输入的所有读者信息,然后执行插入操作。其主要方法如下:publicstaticintInsertReader(Stringname,Stringsex,Stringage,StringidentityCard,Datedate,StringmaxNum,Stringtel,DoublekeepMoney,Stringzj,Stringzy,Datebztime,StringISBN){ inti=0;try{Stringsql="insertintotb_reader(name,sex,age,identityCard,date,maxNum,tel,keepMoney,zj,zy,bztime,ISBN)values('"+name+"','"+sex+"','"+age+"','"+identityCard+"','"+date+"','"+maxNum+"','"+tel+"',"+keepMoney+",'"+zj+"','"+zy+"','"+bztime+"','"+ISBN+"')"; System.out.println(sql); i=Dao.executeUpdate(sql);//执行插入操作}……}3.6.2读者信息修改与删除修改与删除读者信息同保存读者信息非常类似,首先在Dao中添加两个方法UpdateReader及DelReader。通过这两个方法来接收图读者修改表单中提交的读者信息。其主要代码如下:publicstaticintUpdateReader(Stringid,Stringname,Stringsex,Stringage,StringidentityCard,Datedate,StringmaxNum,Stringtel,DoublekeepMoney,Stringzj,Stringzy,Datebztime,StringISBN){ inti=0; try{Stringsql="updatetb_readersetname='"+name+"',sex='"+sex+"',age='"+age+"',identityCard='"+identityCard+"',date='"+date+"',maxNum='"+maxNum+"',tel='"+tel+"',keepMoney="+keepMoney+",zj='"+zj+"',zy='"+zy+"',bztime='"+bztime+"'whereISBN='"+ISBN+"'"; i=Dao.executeUpdate(sql);//执行更新 }catch(Exceptione){ e.printStackTrace(); } Dao.close();//关闭连接……}publicstaticintDelReader(StringISBN){ inti=0; try{ Stringsql="deletefromtb_readerwhereISBN='"+ISBN+"'"; //System.out.println(sql); i=Dao.executeUpdate(sql); }catch(Exceptione){ e.printStackTrace(); } Dao.close();//关闭连接……}3.7图书订购管理模块图书订购管理模块包含两个子模块,分别是新书订购和验收新书。其中新书订购模块用来录入新的图书信息,验收新书模块用来验收新书信息。其系统运行界面如图3.6和图3.7所示。图3.6新书订购管理界面图3.7图书验收界面3.7.1新书订购管理要添加新书订购信息,首先要在Dao中添加一个InsertBookOrder方法,通过该方法来承受用户输入的所有新书订购信息,然后执行插入操作。其主要方法如下:publicstaticintInsertBookOrder(StringISBN,Datedate,Stringnumber,Stringoperator,StringcheckAndAccept,Doublezk){ inti=0;try{Stringsql="insertintotb_order(ISBN,date,number,operator,checkAndAccept,zk)values('"+ISBN+"','"+date+"','"+number+"','"+operator+"',"+checkAndAccept+",'"+zk+"')"; i=Dao.executeUpdate(sql);//执行插入}……}3.7.2图书验收添加完图书订购信息后,我们还要对图书进展验收,首先要在Dao中添加一个SelectBookOrder方法,通过该方法来查找出所有录入的新书订购信息,再添加一个UpdateCheckBookOrder方法,通过该方法来对图书进展验收。其主要方法如下:publicstaticListselectBookOrder(booleanb){ Listlist=newArrayList(); Stringsql="SELECT*FROMtb_orderwhereISBN='"+ISBN+"'"; ResultSetrs=Dao.executeQuery(sql);//执行查询 try{ while(rs.next()){ Orderorder=newOrder(); order.setISBN(rs.getString("ISBN")); order.setDate(rs.getDate("date")); order.setNumber(rs.getString("number")); order.setOperator(rs.getString("operator")); order.setZk("zk"); order.setCheckAndAccept("checkAndAccept"); list.add(order); } }catch(Exceptione){ e.printStackTrace(); } Dao.close();//关闭连接 returnlist; } publicstaticintUpdateCheckBookOrder(StringISBN){ inti=0; try{ Stringsql="updatetb_ordersetcheckAndAccept=0whereISBN='"+ISBN+"'"; i=Dao.executeUpdate(sql);//执行更新 }catch(Exceptione){ e.printStackTrace(); } Dao.close();//关闭连接 returni; }3.8图书借阅管理模块图书借阅管理模块包含三个子模块,分别是新书借阅、图书归还和图书搜索。其中图书借阅模块用来录入读者信息及所借阅的图书的信息,图书归还模块用来显示归还读者信息及所借阅的图书信息,图书搜索模块用来为读者提供图书搜索功能。其系统运行界面如图3.8、3.9和3.10所示。图3.8图书借阅管理界面图3.9图书会还管理界面图3.10图书查询界面3.8.1图书借阅当读者想要对某图书进展借阅操作时,图书馆管理员必须将读者信息及所借阅的图书信息输入到数据库,此时,需要在Dao中添加一个InsertBookBorrow方法,通过该方法录入读者信息及所借阅的图书信息。其主要方法如下:publicstaticintInsertBookBorrow(StringbookISBN,StringreaderISBN,StringoperatorId,TimestampborrowDate,TimestampbackDate){inti=0;try{Stringsql="insertintotb_borrow(bookISBN,readerISBN,operatorId,borrowDate,backDate)values('"+bookISBN+"','"+readerISBN+"','"+operatorId+"','"+borrowDate+"','"+backDate+"')"; i=Dao.executeUpdate(sql);//执行插入}……}3.8.2图书归还当读者到图书馆还书时,图书馆管理员需要通过输入读者信息查找出读者所借阅的图书信息,此时,需要在Dao中添加一个selectBookBack方法,通过该方法查询出读者所借图书的信息。其主要方法如下:publicstaticListselectBookBack(StringreaderISBN){ Listlist=newArrayList();Stringsql="SELECTa.ISBNASbookISBN,a.bookname,a.typeId,b.id,b.operatorId,b.borrowDate,b.backDate,ASreaderName,c.ISBNASreaderISBNFROMtb_bookInfoaINNERJOINtb_borrowbONa.ISBN=b.bookISBNINNERJOINtb_readercONb.readerISBN=c.ISBNWHERE(c.ISBN='"+readerISBN+"'andisback=1)";System.out.println(sql);ResultSetrs=Dao.executeQuery(sql);//执行查询……}3.8.3图书搜索管理员可以通过图书搜索模块对图书馆所有的图书信息进展搜索。为了查询方便,可以通过图书名称进展查询,也可以通过图书作者进展查询。此时,需要在Dao中添加selectbookmohu和selectbookmohuwriter这两个方法,通过这两个方法查询出图书信息。其主要方法如下:publicstaticListselectbookmohu(Stringbookname){ Listlist=newArrayList(); Stringsql="select*fromtb_bookInfowherebooknamelike'%"+bookname+"%'"; System.out.print(sql); ResultSets=Dao.executeQuery(sql);//通过图书名称执行查询 …… publicstaticListselectbookmohuwriter(Stringwriter){ Listlist=newArrayList(); Stringsql="select*fromtb_bookInfowherewriterlike'%"+writer+"%'"; System.out.print(sql); ResultSets=Dao.executeQuery(sql);//通过图书作者执行查询 ……}}3.9系统维护模块系统维护模块包含两个子模块,分别是更改口令和用户管理。其中更改口令模块用来更改管理员登陆系统口令,用户管理模块用来添加新的用户及对用户进展修改和删除。其系统运行界面如图3.11、3.12和3.13所示图3.11更改密码界面图3.12用户信息添加界面图3.13用户信息修改与删除界面3.9.1更改口令本图书馆管理系统是需要密码才能进入的,而且每个操作员都可以根据自己的喜好更改自己的密码,此时,需要在Dao中添加Updatepass方法,通过该方法来尽心口令的更改。其主要方法如下:publicstaticintUpdatepass(Stringpassword,Stringname){ inti=0; try{Stringsql="updatetb_operatorsetpassword='"+password+"'wherename='"+name+"'";i=Dao.executeUpdate(sql);//执行更新}……}3.9.2用户信息添加要想添加新的用户时,需要将新的用户信息录入到用户表中。此时,需要在Dao中添加Insertoperator方法,通过该方法录入新的用户信息。其主要方法如下:publicstaticintInsertoperator(Stringname,Stringsex,intage,StringidentityCard,Dateworkdate,Stringtel,Stringpassword){inti=0;try{Stringsql="insertintotb_operator(name,sex,age,identityCard,workdate,tel,password)values('"+name+"','"+sex+"',"+age+",'"+identityCard+"','"+workdate+"','"+tel+"','"+password+"')";System.out.println(sql);i=Dao.executeUpdate(sql);//执行插入}……}3.9.3用户信息修改与删除要想实现用户信息修改与删除,需要在Dao中添加Updateuser和Deluser方法,通过这两个方法实现用户信息的修改与删除。其方法如下:publicstaticintDeluser(intid){ inti=0; try{Stringsql="deletefromtb_op

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论