版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
年4月19日图书管理系统java课程设计报告文档仅供参考,不当之处,请联系改正。焦作大学信息工程学院《Java实训》报告题目:图书管理系统班级:网络(1)班姓名:张辉学号:12月22日摘要随着信息技术的发展,计算机已被广泛的应用于社会的各个领域,成为推动社会发展的技术动力。而在计算机应用中,软件的作用十分突出,软件已经发展成为信息技术的核心,主导着信息产品的开发和信息技术市场的进一步的开拓。软件产业已成为社会信息化进程中的一个战略性产业。在软件技术的应用中软件的开发技术特别是应用型软件产品的开发技术成了重中之重。不断开发适应用户需求、市场需要的新型软件产品。特别是在校园里,各种软件的应用无处不在,为我们的学习和生活提供了方便。学校的图书馆不但给我们提供看书学习的地方,还给我们提供了一套功能齐全的图书馆系统,方便我们搜索书籍、借阅图书。我们本次的Java课程设计的最终目标是实现一个图书馆管理系统,使其具有一般图书管理系统所具有的功能,能够实现管理员日志、管理员添加、管理员退出、读者添加、读者修改、读者查询、读者删除、新书入库、书籍查询、书籍借阅与归还等功能。因为Java是一门很优秀的编程语言,具有面向对象、与平台无关、安全、稳定和多线程等特点,因此用Java编程为我们本次程序的编写提供了方便。在设计中我们主要进行了数据库及类的设计,把整系统分成了15个类和5个表。经过应用awt、swing、sql、util等包,合理的添加了按钮、菜单、文本框、文本区、表格等组件类,还包含窗口、面板等容器类,经过设计者合理的布局,完成了窗体的设计,并经过建立JDBC-ODBC桥接器连接到Access数据库后,向数据库发送SQL语句实现程序与数据库中表间的消息通信,从而实现了相应的图书馆管理系统的功能。本文主要分为绪论、系统功能介绍、数据库需求分析、系统功能实现、结论、致谢、参考文献7大块。在绪论中介绍了本次课设选题的缘由及思想。系统功能介绍中详细介绍了本图书管理系统的整体思想及其具体功能。在数据库需求分析中详细说明了数据库的需求分析、概念设计及表的设计。在系统功能实现中主要经过抓图来体现设计的结果。总之,我们的整体设计思想均在报告中体现。关键词:图书馆管理系统,Java程序设计语言,Access数据库目录摘要 I第1章绪论 1第2章系统功能介绍 22.1系统功能总框图 22.2模块功能介绍 22.2.1管理员模块功能介绍 22.2.2读者管理 32.2.3书籍管理模块功能介绍 32.2.4书籍借阅与归还功能介绍 42.2.5借阅超时功能介绍 42.3组内任务分工 4第3章数据库设计 53.1数据库需求分析 53.2数据库概念结构设计 53.3数据库表的设计 6第4章系统功能实现 84.1管理员模块功能实现 84.1.1管理员登陆 84.1.2管理日志 104.1.3管理员添加功能实现 114.1.4管理员切换 134.2读者管理模块功能实现 144.2.1读者添加 144.2.2读者修改 154.2.3读者查询 174.2.4读者删除 184.3书籍管理模块功能实现 194.3.1新书入库实现 194.3.2查询功能实现 214.4书籍借阅与归还功能实现 234.4.1借阅书籍功能实现 234.4.2归还书籍功能实现 254.5借阅超时功能实现 28结论 30致谢 31参考文献 32第1章绪论随着社会经济的迅速发展和科学技术的全面进步,计算机事业的飞速发展,以计算机与通信技术为基础的信息系统正处于蓬勃发展的时期。随着经济文化水平的显著提高,人们对生活质量及工作环境的要求也越来越高。书籍做为人类的精神食粮,在现代社会中越来越受到重视,大量的书籍出现在市场上,人们有了各种各样不同的选择。与此同时,为了管理大量的图书,图书管理系统也大量的出现,随着图书的大量增加,其管理难度也越来越大,如何优化管理也就成为了一个大众化的问题。现已有的图书管理系统,其功能已十分强大,为了便于管理员对图书管理系统进行妥善的管理和读者的查询,图书管理系统为管理员提供了管理日志、管理员添加、管理员切换、读者添加、读者修改、读者查询、读者删除、新书入库等功能,为读者提供了书籍查询、读者借阅信息查询、图书网上续借等很多功能。大学为我们提供了自由的学习环境,使我们有更多的时间到图书馆借阅书籍,让我们能够随时掌握各方面的知识,不断提高自我、充实自我,但由于图书馆藏书成千上万,我们很难一本一本的去查找自己感兴趣的书籍,因此我们会经常见到学校为我们提供的图书管理系统,用时间长了便对此产生了兴趣,正好本次课程设计为我们提供了良好的机会,让我们亲自设计并实现了图书管理系统的部分功能。设计一个图书管理系统必不可少的必须对全管书籍进行分类汇总。而这就是我们所说的数据库设计的第一阶段:需求分析。在这一阶段除了对具体情况诸如实行对管理员的管理、对读者的管理、书籍管理、书籍的借阅与归还、借阅超时等功能的实现,还需要对用户的需求进行调查和分析,否则就失去了设计这个系统的意义了。对于界面的设计我们应该追求的是:美观、易读性强、清晰度高;原则是:不能因为刻意追求美观而以整个界面的清晰度的牺牲作为代价,不能为了清晰度而抛弃对易读性的追求。再设计的过程中我们应该根据实际的情况进行设计,做到具体问题具体分析,不刻意追求原则。在对应的界面与Access数据库建立连接,并实现对应的SQL语句进行实现将产生的结果显示出来。并运用捕捉异常的方法,将异常信息显示出来。实现SQL语句的时候借助前台开发工具中关于数据处理的控件来完成。对于读者而言她们的需求是了解图书的基本情况,自己的借阅情况。总而言之就是实现对各个信息表的查询。对于图书管理员而言要实现的功能相对而言比较多,例如实现新书入库、Access数据库表的创立、系统的维护等等,这些都需要设计和实现的。第2章系统功能介绍2.1系统功能总框图图书馆管理系统功能总框图,如图2-1所示。图书馆管理系统图书馆管理系统管理员读者管理书籍管理书籍借阅归还管理员管理日志管理员添加管理员切换读者添加读者信息修改读者删除新书入库书籍查询借阅书籍归还书籍借阅超时读者信息查询图2-1系统功能框架图2.2模块功能介绍2.2.1管理员模块功能介绍1.管理员登陆此模块主要是利用MenuBar添加菜单条,利用Menu和MenuItem添加菜单和菜单的各个参数,经过事件ActionEvent能够实现进入各个模块如管理日志、管理员添加、管理员切换、读者添加、读者修改、读者查询、读者删除、新书入库、书籍查询、借阅书籍、归还书籍、借阅超时及退出的功能。2.管理日志此模块能够清楚的显示出书籍借阅与归还的信息,包括书号、书名、图书证号、借/还、操作日期、已付款额。读者能够经过此模块实现的功能清楚的了解图书被借阅和归还的详细信息,从而给读者带来了很多方便。3.管理员添加功能介绍此模块功能是增加新管理员的登陆帐户。在图书馆管理系统中必须有每一个管理者的帐户让其能够正常进行新图书证的办理、借阅书籍和归还书籍等系统管理。因此在管理员功能模块中增加了管理员添加这个功能。4.管理员切换此模块的主要功能是进行管理员之间的切换,即单击管理员菜单下的管理员切换,就会退出当前管理员界面,从而出现管理员切换窗口,而另一管理员就能够在管理员切换窗口中的用户名和密码两栏中经过输入自己的用户名和密码直接进入该系统。2.2.2读者管理1.读者添加此模块主要的实现功能是添加新的读者信息,即当有新的读者要看查看本图书馆中的书藉,能够经过此功能实现,当数据库中存在其新信息,即成为本图书馆的新一位读者。其中信息分别包括图书证号、学生姓名、性别、系别、班级,同时可有三项功能在此处实现,即添加、重置以及返回。2.读者修改此模块主要的实现功能对有信息更新的读者进行即时修改,以随时更新读者在数据库中的信息。本模块经过图书证号确定读者,可对读者信息的新图书证号、学短姓名、性别、系别、班级。此处可分别实现对该功能的修改、重置、返回。3.读者查询此模块主要可对所要了解的读者信息。即把读者的信息从数据库调出来,显示在该窗口中的文字区域。查询方式分别有按图书证查询、按姓名查询、按班级查询、按年级查询,并可经过办理入相应的关键字,更加缩小查询范围。此处可实现查询和返回功能。4.读者删除此模块能够删除一些不再使用本系统的读者资料,从而达到对数据库中的清理,即清除一些不必要资料,此处有四种删除途径,分别为按图书证号删除、按姓名删除、按班级删除、安年级删除,并可经过所输入的关键字尽快找到所要删除的资料。此处可分别实现对该功能的修改、重置、返回。2.2.3书籍管理模块功能介绍1.新书入库功能介绍此模块主要的实现功能是将新来的图书输入到图书馆管理系统的书库当中,其中主要按如下信息往书库中输入,这部分的操作主要是便于书库合理的管理,有利于读者能够对新书有一个更详细的了解。其中包括如下信息:新书书号、新书名称、新书出版日期、新书出版社、入库数量、编写作者、新书单价。2.书籍查询功能介绍在图书馆管理系统中书籍查询是最基本的功能,读者能够根据自己的需求来查询想要借阅的书籍。本系统是用Java应用程序和Access数据库一起开发的其中利用Java来编程实现功能的代码和布置运行界面。界面是由检索项、检索词和显示文本区三个部分组成的用户根据自己的需要在检索项中选择自己所要按什么字段进行查询,其中书籍查询功能的检索项中能够按书号查询、按书名查询、按作者名查询、按出版社查询、按入库时间查询等基础查询。选择检索项后用户只要在检索词中添写自己所要查询的内容并确定键确认后用户要查询的内容就能够在显示文本区中显示出来。用户能够根据显示的信息得知自己所要借阅书籍的情况。2.2.4书籍借阅与归还功能介绍1.借阅书籍功能介绍此模块主要实现读者可凭有效的图书证号,借阅图书馆内未借出的图书。输入图书证号后,可显示了该图书证持有者的全部信息(包括借书证号、姓名、性别、所在班级、所属系部、当前可借阅图书个数),供读者确认信息。经过输入有效的图书编号,查询该图书的全部信息(包括书号、书名、作者、出版社、是否借出、价格)。借阅成功后,将该图书证号、书号、借阅日期、应还日期信息插入到数据库的表中进行记录。2.归还书籍功能介绍此模块主要实现读者凭所要归还图书的图书证号归还图书。输入所要归还的图书编号后,可显示了该图书证持有者的全部信息(包括借书证号、姓名、性别、所在班级、所属系部、当前可借阅图书个数),供读者确认信息。还书成功后,从数据库中删除该书的借出记录,并修改数据库中的相应信息。2.2.5借阅超时功能介绍此模块主要实现显示过期图书的信息(包括图书证号、书号、借阅日期、应还日期)提醒读者还书。2.3组内任务分工组内分工情况如下表2-1所示。表2-1组内分工情况表组长邹刚读者添加、查询、修改、删除。组员罗姗姗书籍借阅与归还模块、借书超期限子系统。李呈呈管理员添加、新书入库、按指定条件进行图书查询。刘兰兰数据库创立、登陆界面设计、管理员模块。第3章数据库设计在此图书馆管理系统中,使用到了一个重要的连接,即与数据库Accesss相连。数据库中存有图书馆中所信息,包括读者信息、管理员资料、借阅与退还记录。所有与管理有关的数据皆在其中,是保证系统能够正常实现各种功能的一架桥。3.1数据库需求分析⒈Admi表,即管理员表,记录了用户名和密码。⒉Admirz表,即管理日志表,记录了书号、书名、图书证号、借/还、操作日期、已付款额。⒊book表,即图书表,记录了书号、书名、作者、出版社、入库时间、是否借出、价格。⒋borrowbook表,即借阅表,记录了图书证号、书号、借阅日期、应还日期。⒌person表,即读者表,记录了图书证号、姓名、性别、系别、班级。3.2数据库概念结构设计图书馆管理系统E-R图,如图3-1。mmn读者图书管理员性别系别班级姓名图书证号书号书名作者出版社会化密码用户名管理管理mnm借阅1入库时间是否借出价格图3-1图书馆管理系统E-R图3.3数据库表的设计⒈Admi表表中记录了能够使管理员进入该系统的用户名及密码,如表3-1所示。表3-1管理员信息表字段名称数据类型长度备注用户名文本10密码文本15⒉Admirz表表中记录借还书日志,用于存下所有对图书操作的记录,以便以后能够翻阅和查找,如表3-2所示。表3-2管理日志表字段名称数据类型长度备注书号文本10书名文本15作者文本15出版社文本15入库时间DATE15已付款额文本10⒊book表表中记录了库内所有图书的所有资料,如表3-3。表3-3图书表字段名称数据类型长度备注书号文本10书名文本15作者文本15出版社文本15入库时间DATE15是否借出文本10价格文本10⒋person表表中记录库中所有读者的相关信息,如表3-4所示。表3-4读者表字段名称数据类型长度备注图书证号文本10姓名文本15性别文本15系别文本15班级文本15⒌borrowbook表表内记录了此时图书的借阅情况,如表3-5所示。表3-5借阅表字段名称数据类型长度备注图书证号文本10书号文本15借阅日期DATE15应还日期DATE15第4章系统功能实现4.1管理员模块功能实现4.1.1管理员登陆此模块是整个系统最主要的部分,管理员能够经过此模块实现进入其余各个模块如管理日志、管理员添加、管理员切换、读者添加、读者修改、读者查询、读者删除、新书入库、书籍查询、借阅书籍、归还书籍、借阅超时及退出的功能。图书管理系统管理员界面如图4-1所示。图4-1图书管理系统管理员主要程序代码如下: publicvoidactionPerformed(ActionEvente) { if(e.getSource()==itemAdmiqh) { this.dispose(); Inwinin=newIn("系统登陆"); } if(e.getSource()==itemtc) { System.exit(0); } if(e.getSource()==itemAdmixj) { CreatAdmicreatAdmi=newCreatAdmi("管理员添加"); } if(e.getSource()==itemAdmirz) { WinTablewintable=newWinTable("管理日志"); } if(e.getSource()==itemBookrk) { AddInfyaddInfy=newAddInfy(); } if(e.getSource()==itemPersonlr) { Winpersonaddwinperson=newWinpersonadd("读者添加"); } if(e.getSource()==itemPersoncx) { Winpersonsearchwinperson=newWinpersonsearch("读者信息查询"); } if(e.getSource()==itemPersonxg) { Winpersonmodifywinperson=newWinpersonmodify("读者信息修改"); } if(e.getSource()==itemPersonsc) { Winpersondeletewinperson=newWinpersondelete("读者删除"); } if(e.getSource()==itemBookcx) { Windowjjok=newWindowjj(); } if(e.getSource()==itemchaoshi) { daywin=newday(); } if(e.getSource()==itemBorrowjs) { Borrowbookwin=newBorrowbook(); } if(e.getSource()==itemBorrowhs) { Returnbookwin=newReturnbook(); } }4.1.2管理日志此模块经过定义类WinTable继承顶层容器JFrame,再添加普通容器JScrollPane、Jpanel,然后经过BorderLayout布局创立界面,最后主要经过数组利用while循环在连接好的数据库中查找表Admirz中的内容,从而实现了能够清楚的显示出书籍借阅与归还信息的功能。管理日志界面如图4-2所示。图4-2管理日志主要程序代码如下:WinTable(Strings) { super(s); try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch(ClassNotFoundExceptione) { System.out.println(""+e); } try{ con=DriverManager.getConnection("jdbc:odbc:sun","123","123"); sql=con.createStatement(); rs=sql.executeQuery("SELECT*FROMAdmirz"); while(rs.next()) { k++; } } catch(SQLExceptione) { System.out.println(""+e); } try{ con=DriverManager.getConnection("jdbc:odbc:sun","123","123"); sql=con.createStatement(); rs=sql.executeQuery("SELECT*FROMAdmirz"); a=newObject[k][6]; while(rs.next()) { for(intj=0;j<6;j++) { if(j<5) a[i][j]=rs.getString(j+1); else { a[i][j]=rs.getDouble(j+1); i++; } } } con.close(); } catch(SQLExceptione) { System.out.println(""+e); } table=newJTable(a,name); Containercon=getContentPane(); getContentPane().add(newJScrollPane(table),BorderLayout.CENTER); setBounds(120,125,700,500); setVisible(true); validate(); addWindowListener(newDisposeListener()); }}4.1.3管理员添加功能实现功能介绍:该程序主要实现管理员的添加,以便于让实行对图书管理员的管理。按照标签提示输入信息,然后点击确定按钮。首先判断管理员名文本框中输入的文本信息是否符合大于3个字符并小于10个字符的规则,如果不符合规则,则提示错误,如果符合规则,再到Admi表中进行查询,如果相同则用提示框提示错误。若无相同则可注册。但还需要保证前后两次的密码相同,才能成功注册,管理员登陆窗口如图4-3所示。图4-3管理员添加成功界面主要程序代码如下:publicvoidactionPerformed(ActionEventc) { Stringb=textUser.getText(); Stringd=textPassword1.getText(); Stringg=textPassword2.getText(); if(c.getSource()==buttonqk) { textUser.setText(null); textPassword1.setText(null); textPassword2.setText(null); } if(c.getSource()==buttonEnter||c.getSource()==textPassword2) { if(b.length()<3||b.length()>10) { JOptionPane.showMessageDialog(null,"用户名应在3~10个字符之间"); textUser.setText(null); } else { try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch(ClassNotFoundExceptione) { System.out.println(""+e); } try{ con=DriverManager.getConnection("jdbc:odbc:sun","123","123"); sql=con.createStatement(); rs=sql.executeQuery("SELECT*FROMAdmiWHERE用户名="+"'"+b+"'"); if(rs.next()) { Stringuser=rs.getString(1); if(b.equals(user)) { JOptionPane.showMessageDialog(null,"此管理员已被注册","警告",JOptionPane.WARNING_MESSAGE); } } else { if(d.equals(g)) {sql.executeUpdate("INSERTINTOAdmiVALUES"+"("+"'"+b+"'"+","+"'"+d+"'"+")"); this.dispose(); JOptionPane.showMessageDialog(null,"管理员注册成功"); } elseJOptionPane.showMessageDialog(null,"两次输入密码不一致","警告",JOptionPane.ERROR_MESSAGE); } con.close(); } catch(SQLExceptione) { System.out.println(""+e); } }} }4.1.4管理员切换此模块功能是退出当前管理员界面,进入管理员切换窗口,另一用户能够经过输入自己的用户名和密码直接进入该系统。但此用户名和密码都必须与已经连接好的数据库中表Admi中的用户名和密码相吻合。管理员切换界面如图4-4所示。图4-4管理员切换主要程序代码如下:publicvoidwindowClosing(WindowEvente) { e.getWindow().dispose(); }4.2读者管理模块功能实现4.2.1读者添加功能介绍:添加新的读者,使其能够进入图书系统阅览图书,读者添加如图4-5所示。图4-5读者添加主要程序代码如下:publicvoidactionPerformed(ActionEvente) { if(e.getSource()==button1)//添加 { Stringch=text1.getText(); if(ch.length()!=5){ JOptionPane.showMessageDialog(null,"请输入5位图书证号!"); text1.setText(null); } else{ ……//连接数据库 Stringnumber,name,sex,dept,classes,record,insertStr; number=text1.getText(); name=text2.getText(); if(box1.getState()==true) { sex=box1.getLabel(); } else { sex=box2.getLabel(); } dept=text3.getText(); classes=text4.getText(); rs=sql.executeQuery("SELECT*FROMpersonWHERE图书证号="+"'"+number+"'");if(rs.next()){JOptionPane.showMessageDialog(null,"此图书证号已存在","警告",JOptionPane.WARNING_MESSAGE);text1.setText(null); } record="("+"'"+number+"'"+","+"'"+name+"'"+","+"'"+sex+"'"+","+"'"+dept+"'"+","+"'"+classes+"'"+")"; insertStr="INSERTINTOpersonVALUES"+record; sql.executeUpdate(insertStr); JOptionPane.showMessageDialog(null,"添加成功!"); con.close();}4.2.2读者修改功能介绍:对读者需要修改的资料进行重定义,读者信息修改如图4-6所示。图4-6读者信息修改主要程序代码如下:publicvoidactionPerformed(ActionEvente) { if(e.getSource()==button1)//修改 { Stringch=text1.getText(); if(ch.length()!=5){ JOptionPane.showMessageDialog(null,"请输入5位图书证号!"); text1.setText(null); }else{ try { ……//连接数据库 Stringnumber,name,sex,dept,classes,newnum,record,updateStr; newnum=text5.getText(); number=text1.getText(); name=text2.getText(); if(box1.getState()==true) { sex=box1.getLabel(); } else { sex=box2.getLabel(); } dept=text3.getText(); classes=text4.getText(); sql=con.createStatement(); rs=sql.executeQuery("SELECT*FROMpersonwhere图书证号="+"'"+newnum+"'"); if(rs.next()){ rs1=sql.executeQuery("SELECT*FROMpersonwhere图书证号="+"'"+number+"'"); if(rs1.next()){ JOptionPane.showMessageDialog(null,"此图书证号已存在","警告",JOptionPane.WARNING_MESSAGE); text1.setText(null); }else {updateStr="UPDATEpersonSET图书证号="+"'"+number+"'"+","+"姓名="+"'"+name+"'"+","+"性别="+"'"+sex+"'"+","+"系别="+"'"+dept+"'"+","+"班级="+"'"+classes+"'"+"WHERE图书证号="+"'"+newnum+"'"; sql.executeUpdate(updateStr); JOptionPane.showMessageDialog(null,"修改成功!"); } } else { JOptionPane.showMessageDialog(null,"查无此人!"); } ……//连接数据库 con.close(); }4.2.3读者查询功能介绍:能够对数据库中已有的读者信息进行查询。读者查询如图4-7。图4-7读者信息查询主要程序代码如下:publicvoidactionPerformed(ActionEvente) { if(e.getSource()==button1||e.getSource()==text){//查询 area.setText(null); if((str=="按图书证号查询"||str==null)&&text.getText()!=null) { booleanflag=true,f=true; Stringnum=text.getText(); ……//连接数据库 rs=sql.executeQuery("SELECT*FROMpersonwhere图书证号="+"'"+num+"'"); while(rs.next()) { f=false; Stringnumber=rs.getString("图书证号"); Stringname=rs.getString("姓名"); Stringsex=rs.getString("性别"); Stringdept=rs.getString("系别"); Stringclasses=rs.getString("班级"); if(flag){ area.append("图书证号为"+num+"的学生信息如下:"); flag=false; } area.append("\n姓名:"+name+"性别:"+sex+"系别:"+dept+"班级:"+classes+"\n"); } if(f){area.append("查无此人!");} } catch(SQLExceptionc) { System.out.println(c); } }4.2.4读者删除功能介绍:删除数据库中已有信息。读者删除如图4-8所示。图4-8读者删除主要程序代码如下:if(e.getSource()==button1){//删除area.setText(null);if((str=="按图书证号删除"||str==null)&&text.getText()!=null){Stringnum=text.getText();try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundExceptionc){System.out.println(""+c);}……//连接数据库rs=sql.executeQuery("SELECT*FROMpersonwhere图书证号="+"'"+num+"'");if(rs.next()){area.append("该信息已删除!");}StringdelStr="DELETEFROMpersonWHERE图书证号="+"'"+num+"'"; sql.executeQuery(delStr);con.close();}catch(SQLExceptionc){System.out.println(c);}}4.3书籍管理模块功能实现4.3.1新书入库实现功能介绍:此界面主要完成的功能是往数据库book表中添加新书的记录,在book表中可查看最新的记录。在新书信息输入的过程中,会出现一些异常处理,如某个字段的信息没有填写;新书信息输入字段的过程中,输入的字段类型与给定的字段类型与输入不匹配(如:货币、日期);输入的信息长度超过给定的字段长度等。如果填写的内容正确则能够成功将新书添加入库,新书入库窗口如图4-9所示。图4-9添加新书入库界面主要程序代码如下:publicvoidactionPerformed(ActionEventc){ if(c.getSource()==button2) { this.dispose();} if(c.getSource()==button1) { ……//连接数据库rs=stm.executeQuery("select书号frombookwhere书号='"+textField1.getText()+"'");if(rs.next()){JOptionPane.showMessageDialog(null,"此书号已存在!","警告",JOptionPane.WARNING_MESSAGE); return; } floatm; Stringstr1,str2,str3,str4,str6,str7,str8,str9,str10; str1=textField1.getText(); …… str10="未借出"; m=Float.parseFloat(str9); str="("+"'"+str1+"','"+str3+"','"+str8+"','"+str6+"','"+str7+"','"+str10+"',"+m+")";Stringinsert="INSERTINTObook(书号,书名,作者,出版社,入库时间,是否借出,价格)VALUES"+str; stm.executeUpdate(insert); textField1.setText(""); …… JOptionPane.showMessageDialog(null,"增加信息成功!"); con.close(); }catch(Exceptione){JOptionPane.showMessageDialog(null,"请认真检查各项!然后重试.","异常警告",JOptionPane.WARNING_MESSAGE);} }4.3.2查询功能实现功能介绍:本系统包含两项一是检索项令一个是检索词,在检索项中用户能够根据自己的需求来选择所要查询的项目并在检索词中添写自己所要查询的内容。本系统副带四个按钮:确定、取消、查看全库,该图书馆管理系统的查询界面如图4-10所示。图4-10查询系统界面在该系统中为了用户使用方便还设有查看全库一项,用户能够经过这一功能来查看全库的图书,所查询的内容将在下方的文本区中显示,其界面4-11所示。图4-11查看全库信息使用检索词必须得满足一定的查询条件才能够执行,用户必须得在检索项中选择查询方式并添好检索词才可查询否则系统会显示未找到您要查找的内容并给以提示,如图4-12所示。图4-12检索项按书号查询主要程序代码如下:publicvoiditemStateChanged(ItemEvente) { area.setText(null); Stringname=choice1.getSelectedItem(); area.append("请您在检索项中输入您要查找的内容:"); } publicvoidactionPerformed(ActionEvente) { if(e.getSource()==button2)//取消键 {text1.setText(null);} elseif(e.getSource()==button3)//返回键 {this.dispose();}elseif(e.getSource()==button4)//查看全库 {Connectioncon; Statementsql;ResultSetrs; try//建立数据源 {Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");} catch(ClassNotFoundExceptionc) {System.out.println(""+c);}try { con=DriverManager.getConnection("jdbc:odbc:sun","",""); sql=con.createStatement(); rs=sql.executeQuery("select*frombook"); while(rs.next()) { Stringbookname=rs.getString("书名"); Stringauther=rs.getString("作者"); Stringchubanshe=rs.getString("出版社"); Stringbookno=rs.getString("书号"); Stringdata=rs.getString("入库时间"); Stringyesorno=rs.getString("是否借出"); area.append("\n书号:"+bookno); area.append("书名:"+bookname); area.append("作者:"+auther); area.append("出版社:"+chubanshe); area.append("\n入库时间:"+data); area.append("是否借出:"+yesorno); } con.close(); } catch(SQLExceptionc) {System.out.println(""+c);} } 4.4书籍借阅与归还功能实现4.4.1借阅书籍功能实现输入图书证号“0001”后点击查看按钮,可显示该读者信息,若输入图书证号错误,点击查看按钮则会弹出借书证错误对话框,如图4-13所示。输入图书编号“0000003”按回车键,可显示该图书信息,若输入图书编号错误,按回车键则会弹出图书编号错误对话框,如图4-14所示。点击借阅按钮则会弹出图书借阅成功对话框。借阅书籍功能的具体实现如图4-15所示。图4-13借书证错误图4-14图书编号错误图4-15借阅书籍主要程序代码如下:publicvoidactionPerformed(ActionEvente) { if(e.getSource()==tj) { if(!tscard.getText().equals(null)&&!tsid.getText().equals(null)) { Stringstr1,str2; str1=tsid.getText(); str2=tscard.getText(); try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch(ClassNotFoundExceptionc) { System.out.println(""+c); } ……//连接数据库 rs=sql.executeQuery("SELECT*FROMpersonwhere图书证号="+"'"+str2+"'"); Stringls1=null,ls2=null,ls3=null; intis1=0; if(rs.next()) { ls2=str2; } con.close(); ……//连接数据库 rs=sql.executeQuery("SELECT*FROMbookwhere书号="+"'"+str1+"'"); if(rs.next()) { if(rs.getString("是否借出").equals("未借出")) ls1=str1; ls3=rs.getString("书名"); } con.close(); ……//连接数据库 rs=sql.executeQuery("SELECTcount(书号)FROMborrowbookwhere图书证号="+"'"+str1+"'"); rs.next(); is1=rs.getInt(1); con.close(); ……//连接数据库 if(ls1==str1&&ls2==str2&&is1<5) {Dateda=newDate(); inty=da.getYear()+1900; intm=da.getMonth()+1; intd=da.getDate(); Stringjyrq=String.valueOf(y)+"-"+String.valueOf(m)+"-"+String.valueOf(d); ……//计算借阅时间 Stringyhrq=String.valueOf(y)+"-"+String.valueOf(m)+"-"+String.valueOf(d); Stringinsertstr="INSERTINTOborrowbookVALUES('"+ls2+"','"+ls1+"','"+jyrq+"','"+yhrq+"')"; Stringupdatestr="UPDATEbookSET是否借出='借出'WHERE书号="+"'"+str1+"'"; Stringinsertstr2="INSERTINTOAdmirzVALUES('"+ls1+"','"+ls3+"','"+ls2+"','借书','"+jyrq+"',0)"; sql.executeUpdate(insertstr); sql.executeUpdate(insertstr2); sql.executeUpdate(updatestr);JOptionPane.showMessageDialog(this,"借阅成功请在"+yhrq+"之前退还,否则将支付滞纳金","图书借阅成功",JOptionPane.WARNING_MESSAGE);tsid.setText(null); tscard.setText(null); } 4.4.2归还书籍功能实现输入图书编号“0000003”点击回车键,则该界面右侧会显示借书者的信息,若图书编号错误则会弹出图书编号错告对话框,如图4-16所示。点击还书按钮会弹出归还成功对话框。归还书籍功能的具体实现,如图4-17所示。4-16图书编号错误4-17归还书籍主要程序代码如下:publicvoidactionPerformed(ActionEvente){if(e.getSource()==tj){ Stringnum=tsid.getText(); intjc; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch(ClassNotFoundExceptionc) { System.out.println(""+c); } try { Stringtsz=null; ……//连接数据库 rs=sql.executeQuery("SELECT*FROMpersonwhere图书证号=(SELECT图书证号FROMborrowbookwhere书号="+"'"+num+"')"); if(rs.next()) { tsz=rs.getString("图书证号"); } con.close(); ……//连接数据库 rs=sql.executeQuery("SELECT*FROMvbbookwhere书号="+"'"+num+"'"); Dateda=newDate(); inty=da.getYear()+1900; intm=da.getMonth()+1; intd=da.getDate(); Stringczrq=String.valueOf(y)+"-"+String.valueOf(m)+"-"+String.valueOf(d); floatmoney; Stringsm=null; intday=0; if(rs.next()) { sm=rs.getString("书名"); Stringyhrq=rs.getString("应还日期"); y=(y-Integer.parseInt(yhrq.substring(0,4))); intmm=Integer.parseInt(yhrq.substring(5,7)); day=y; d=Integer.parseInt(yhrq.substring(8,10))-d; if(y!=0) mm=mm+12; while(m>mm) {…//计算还书时间 } day=day+d; if(day>0) { JOptionPane.showMessageDialog(this,"您比应还日期晚了"+String.valueOf(day)+"天归还,请交付相应滞纳金","延期还书",JOptionPane.WARNING_MESSAGE); money=day/10; tsid.setText(null); }}4.5借阅超时功能实现数据库borrowbook(借书表)表中的“应还日期”字段中的时间与当前时间相比较,若比当前时间早则说明该书借阅超时,那么该条记录将在此被显示出来。借阅超时功能具体实现如图4-18所示。图4-18借阅超时主要程序代码如下:……//连接数据库 Datenowtime=newDate();//当前日期 SimpleDateFormatmatter1=newSimpleDateFormat("yyyy-MM-dd"); Stringstime=matter1.format(nowtime); Stringdyear=stime.substring(0,4); year2=Integer.parseInt(dyear);//年 Stringdmoon=stime.substring(5,7); moon2=Integer.parseInt(dmoon);//月 Stringdday=stime.substring(8,10); day2=Integer.parseInt(dday);//日 rs=sql.executeQuery("SELECT*FROMborrowbook"); while(rs.next()){x=x+1;} rs.beforeFirst(); a=newObject[x][4]; while(rs.next
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房屋认购协议书效力
- 展会白金赞助合同
- 合作开饭馆协议书格式
- 子女抚养协议书范文经典版
- 2024个人股权融资合作协议书
- 个人木材买卖合同范本
- 广告网络推广合同范例
- 常州全日制工作合同
- 房地产面积鉴定协议
- 成都市商品代销合同模板
- 教育局学校食品安全事故应急预案
- 义务教育信息科技课程标准(2022年版)考试题库及答案
- 2024年国家开放大学(电大)-混凝土结构设计(A)考试近5年真题集锦(频考类试题)带答案
- 2024-2025学年人教版八年级物理上学期期中模拟卷
- 新员工三级安全教育考试试题参考答案
- 统编版(2024)语文七年级上册 第10课 往事依依 公开课一等奖创新教案
- 危大工程清单及安全管理措施(样表)-纯图版
- 2024中国东方航空技术限公司全球校园招聘高频500题难、易错点模拟试题附带答案详解
- 2025届江苏省苏州市梁丰八年级数学第一学期期末学业质量监测试题含解析
- 2024-2030年中国氦液化系统市场深度调查与未来发展前景预测研究报告
- 2024年全国统考“营养师或营养指导员”相关知识考前试题库与参考答案
评论
0/150
提交评论