java程序设计的图书馆管理系统(共40页).doc
精选优质文档-倾情为你奉上摘 要随着科学技术的进步,计算机行业的迅速发展,大大提高人们的工作效率。计算机信息处理系统的引进已彻底改变了许多系统的经营管理。图书管理系统是学校管理机制中的重要组成部分,通过对图书管理系统的运行管理机制进行调查研究,开发了此图书系统。本系统中解决了学校图书管理事务中的常用基本问题以及相关统计工作。我们本次的Java课程设计的最终目标是实现一个图书馆管理系统,使其具有一般图书管理系统所具有的功能,可以实现管理员日志、管理员添加、管理员退出、读者添加、读者修改、读者查询、读者删除、新书入库、书籍查询、书籍借阅与归还等功能。因为Java是一门很优秀的编程语言,具有面向对象、与平台无关、安全、稳定和多线程等特点,所以用Java编程为我们本次程序的编写提供了方便。在设计中我们主要进行了数据库及类的设计,把整系统分成了15个类和5个表。通过应用awt、swing、sql、util等包,合理的添加了按钮、菜单、文本框、文本区、表格等组件类,还包含窗口、面板等容器类,经过设计者合理的布局,完成了窗体的设计,并通过建立JDBC-ODBC桥接器连接到Access数据库后,向数据库发送SQL语句实现程序与数据库中表间的消息通信,从而实现了相应的图书馆管理系统的功能。本文主要分为前言、系统功能介绍、数据库需求分析、系统功能实现、结束语、参考文献7大块。在绪论中介绍了本次课设选题的缘由及思想。系统功能介绍中详细介绍了本图书管理系统的整体思想及其具体功能。在数据库需求分析中详细说明了数据库的需求分析、概念设计及表的设计。在系统功能实现中主要通过抓图来体现设计的结果。总之,我们的整体设计思想均在报告中体现。关键词: 图书馆管理系统;数据库的需求分析;概念设计 目 录 2.2.2读者管理模块功能介绍. 52.2.3书籍管理模块功能介绍.62.2.4书籍借阅与归还功能介绍.63.系统需求分析.83.1业务规划分析.83.2业务需求分析.83.3功能需求分析.94.数据库设计.114.1数据库概要说明.114.2数据库总结构设计.114.3数据库需求分析.124.4数据库概念结构设计.124.5数据库表的设计.1455.3图书管理模块功能实现.285.3.1图示浏览.285.3.2图书查询.315.3.3图书删除.3336专心-专注-专业1. 前言1.1作业背景本文根据java面向对象程序设计课程要求而做。本管理系统采用JAVA语言编写,软件以Windows操作系统为环境,数据库使用SQL Server2005,开发工具使用eclipse。我为组员分配任务,根据合理的安排,按照系统开发的流程及方法,踏实地开展课程设计活动。课程设计活动中,撰写相关技术文档。最后提交详细的课程设计报告。开发出可上机运行的管理信息系统,通过上机检查。1.2选题说明随着计算机的广泛应用,其逐步成为现代化的标志。图书馆或者一些企业内部,甚至是书店,在正常运行过程中总是面对大量的读者信息,书籍信息以及两者相互作用产生的借书信息、还书信息。因此需要对读者资源、书籍资源、借书信息、还书信息进行管理,及时了解各个环节中信息的变更,要对因此而产生的单据进行及时的处理,为了提高图书馆或者企业内部对图书存销的自动化的管理,能够更快速的满足读者的要求,提高各种工作的效率,现对其设计相应的系统,以达到上述的目的1。图书管理系统的主要功能是实现图书馆图书借阅和归还的管理的自动化。围绕这一主要功能,本系统涉及到以下核心功能:借阅管理,归还管理。除了这些核心功能外,还包括一些基本和辅助功能,它们是:用户管理、图书馆参数管理、图书管理、统计查询。1.2.1基本思路 本次设计的目标是,开发一个图书馆借阅管理系统。借助该系统,管理员通过快捷可靠的数据库管理,方便的管理图书馆的信息资料,规范化的管理读者用户,设定不同用户权限,并能通过互联网向读者提供更为方便的在线查询服务,方便读者的使用,最终达到提高图书馆资源利用效率的目的。论文设计和实现了图书借阅管理系统系统,可以根据用户的不同权限,对图书馆的的各种信息进行添加、删除、修改或查询操作。论文分为五个部分: 第一章即前言,简述图书馆借阅管理系统这个课题的背景情况以及开发本系统的意义。 第二章为系统功能分析,本章详细介绍了本图书管理系统的整体思想及其具体功能,这部分归组员负责。第三章是数据库需求分析,其中详细说明了数据库的需求分析、概念设计及表的设计,这部分由我负责。第四章为系统功能实现,其中主要通过抓图来体现设计的结果,这部分我们共同承担,每人做其中的一部分。第五章 为结束语,为此次课程设计做一个总结,总结所获得的经验和体会。1.2.2 作业目标通过对图书管理信息系统的设计与开发,熟练使用所学的结构化分析以及设计方法描述系统,分析系统,设计系统。掌握业务流程图,数据流程图等工具。学会使用模块设计方法,数据库设计方法,代码设计方法,输入输出设计方法等设计物理系统。1.3 工作业绩1.3.1 个人主要工作在这次课设中我做系统整体的规划和设计,对系统的业务进行分析,得出数据库需求分析和E-R图,最后和小组成员一起参与系统的实施。1.3.2主要收获通过小组成员的通力合作完成了系统规划,系统的分析,系统的设计,系统的实施及最后的运行与维护。在整个过程中小组成员通过合理的分配,把各自的强项分配到各个部分,最终完成了此管理系统。在完成规划部分时,资料来源于网络、书本以及每个组员的讨论。我们不但成功的连接了数据库,也成功实现了很多功能:在管理员方面实现了管理员登陆、管理日志、管理员添加、管理员切换四个功能,在读者管理方面实现了读者添加、读者修改、读者查询、读者删除四个功能,在书籍管理方面实现了新书入库、书籍查询两个功能,在书籍借阅与归还方面实现了借阅书籍、归还书籍两个功能,在借阅超时方面也成功实现了此功能。在众多功能中刚开始时借阅书籍方面出了问题,但最后在全组人认真思考、仔细研究下终于改正了错误,使此功能终于可以正常使用了。1.3.3 自我评定 优 良 中 及格 不及格1.3. 4 小组成员任务分工情况本组为本次课程设计第五组,组长为:贾琳,小组所有成员分工如下:小组成员分工表学号姓名任务备注贾琳系统实施组长李范系统分析组员安宁系统维护组员汤长江排版组员王佳新系统实施组员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.)归还书籍功能介绍此模块主要实现读者凭所要归还图书的图书证号归还图书。输入所要归还的图书编号后,可显示了该图书证持有者的全部信息(包括借书证号、姓名、性别、所在班级、所属系部、当前可借阅图书个数),供读者确认信息。还书成功后,从数据库中删除该书的借出记录,并修改数据库中的相应信息。3. 系统需求分析3.1业务规则分析通过对图书馆管理的进一步了解,又结合图书馆网络管理系统向读者提供图书、用户对图书的查询、借阅等相关联系,制作出以下的业务规则分析:u 一个图书馆可以又多个图书室组成,每个图书室都有其各自的编号以及所处的楼层。u 一个图书室又有几类不同的图书类型组成,比如历史地理类、文学考古类等。u 每类图书又会放在图书室不同的指定的书架上,并且每个书架都有各自独自的标号。u 而同一类的图书需要知道借阅信息、馆藏数量、还书期限等。u 学生是由学号为唯一标号,需要存储学生姓名、借阅信息、历史借阅记录等。3.2业务需求分析业务需求及处理流程共同构成系统的逻辑模型,一个系统如果没有了业务需求及处理流程,那么这个系统就会显得特别没有代表性。只有业务需求及处理流程的精确定义放在一起,才能共同构成系统的规格说明。而系统开发时,常用卡片的形式书写保存描述一个数据元素。下面给出本系统的主要数据元素的数据字典卡片:名字:读者信息查询报表别名:读者信息表描述:读者基本情况查询结果的信息表定义:读者信息查询报表读者编号读者姓名性别类别单位住址电话登记日期已借书数量位置:输出到打印机图3-1 读者信息表名字:图书信息查询报表别名:图书信息表描述:各种书籍查询基本信息表定义:图书信息查询报表图书编号书名类别作者出版社出版日期登记日期是否被借出位置:输出到打印机图3-2 图书信息表3.3功能需求分析图书管理部分:包括图书信息管理和类别管理,其功能是实现对各部分数据内容进行添加、修改、查询等操作。各管理部分的明细如下:(1)借书管理:包括添加借书信息和查询借书信息2部分功能。其中,借阅信息包括借阅编号、读者编号、读者姓名、图书编号、图书名称、出借日期和还书日期。1)图书信息管理:包括图书信息的添加、图书信息的修改、图书信息的查询和图书的信息删除4部分。其中,图书信息包括图书编号、书名、图书类别、作者、出版社、出版日期、登记日期以及是否已被借出。2)图书类别管理:包括图书类别的添加、图书类别的修改、图书类别的删除3部分功能。其中,图书类别包括类别名称和类别编号两部分。借阅管理部分:包括借书管理和还书管理,其功能是实现对各部分数据内容的添加和查询等操作。各管理部分的明细如下:(2)还书管理:实现添加还书信息功能。其中,还书信息与借阅信息部分明细相同。1)读者信息管理:包括读者信的添加、读者信息的修改、读者信息的查询和读者信息的删除4部分功能。其中,读者信息包括读者姓名、读者编号、性别、读者类别、工作单位、家庭住址、电话号码、登记日期和已借书数量。2)读者类别管理:包括读者类别的添加、读者类别的修改、读者类别的删除3部分功能。其中,读者类别包括各种类名称、借书期限和有效期限4部分。系统管理部分:包括修改系统用户密码、增加新用户和退出系统三项功能。系统初始设置一个超级用户名和密码,操作人员可以利用这个超级用户名和密码登录,之后,可以设置其他的超级用户名称,也可以设置权限用户,同时也设置了这个用户可以使用的权限。 4.数据库设计4.1数据库概要说明SQL Server 2005 具有很强的完整性与课伸缩性,具有较低的价格与较高的性能。数据库的树形结构图如图所示:在此图书馆管理系统中,使用到了一个重要的连接,即与数据库Accesss相连。数据库中存有图书馆中所信息,包括读者信息、管理员资料、借阅与退还记录。所有与管理有关的数据皆在其中,是保证系统能够正常实现各种功能的一架桥。4.2 数据库总结构图设计图书馆管理系统E-R图,如图2-1。mn读者图书管理员性别系别班级姓名图书证号书号书名作者出版社会化密码用户名管理管理mnm借阅1入库时间是否借出价格图4-1 图书馆管理系统E-R图4.3数据库需求分析 管理员表:记录了用户名和密码。管理日志表:记录了书号、书名、图书证号、借/还、操作日期、已付款额。图书表:记录了书号、书名、作者、出版社、入库时间、是否借出、价格。借阅表:记录了图书证号、书号、借阅日期、应还日期。读者表:记录了图书证号、姓名、性别、系别、班级。4.4概念结构设计1.管理员信息属性包括:账号、密码。管理员信息账号密码图4-2管理员信息E-R图管理日志包括书号、书名、图书证号、借/还、操作日期、已付款额。管理日志书名借/还书号图书证号操作日期已付款额图4-3管理日志E-R图图书表包括书号、书名、作者、出版社、入库时间、是否借出、价格图书表书号书名作者入库时间是否借出价格出版社图4-4图书表E-R图借阅表包括图书证号、书号、借阅日期、应还日期。借阅表书号借阅日期容应还日期间图书证号图4-5借阅信息E-R图读者表包括图书证号、姓名、性别、系别、班级。读者表姓名性别年龄系别图书证号图4-6读者表E-R图4.5 数据库表的设计管理员表表中记录了可以使管理员进入该系统的用户名及密码,如表4-1所示。表4-1 管理员信息表字段名称数据类型长 度备 注用户名文 本10密 码文 本15管理日志表表中记录借还书日志,用于存下所有对图书操作的记录,以便以后可以翻阅和查找,如表4-2所示。表4-2 管理日志表字段名称数据类型长 度备 注书号文 本10书名文 本15作者文 本15出版社文 本15入库时间DATE15已付款额文 本10图书表表中记录了库内所有图书的所有资料,如表4-3。表4-3 图书表字段名称数据类型长 度备 注书号文 本10书名文 本15作者文 本15出版社文 本15入库时间DATE15是否借出文 本10价格文 本10读者表表中记录库中所有读者的相关信息,如表4-4所示表4-4 读者表字段名称数据类型长 度备 注图书证号文 本10姓名文 本15性别文 本15系别文 本15班级文 本15借阅表表内记录了此时图书的借阅情况,如表4-5所示。表4-5 借阅表字段名称数据类型长 度备 注图书证号文 本10书号文 本15借阅日期DATE15应还日期DATE155.系统功能实现5.1 管理员模块功能实现5.1.1 管理员登陆此模块是整个系统最主要的部分,管理员可以通过此模块实现进入其余各个模块如管理日志、管理员添加、管理员切换、读者添加、读者修改、读者查询、读者删除、新书入库、书籍查询、借阅书籍、归还书籍、借阅超时及退出的功能。图书管理系统管理员界面如图5-1所示。图5-1 图书管理系统管理员主要程序代码如下:public void actionPerformed(ActionEvent e) if(e.getSource()=itemAdmiqh)this.dispose();In winin=new In("系统登陆");if(e.getSource()=itemtc)System.exit(0);if(e.getSource()=itemAdmixj)CreatAdmi creatAdmi=new CreatAdmi("管理员添加");if(e.getSource()=itemAdmirz)WinTable wintable=new WinTable("管理日志");if(e.getSource()=itemBookrk)AddInfy addInfy=new AddInfy();if(e.getSource()=itemPersonlr)Winpersonadd winperson=new Winpersonadd("读者添加");if(e.getSource()=itemPersoncx)Winpersonsearch winperson=new Winpersonsearch("读者信息查询");if(e.getSource()=itemPersonxg)Winpersonmodify winperson=new Winpersonmodify("读者信息修改");if(e.getSource()=itemPersonsc)Winpersondelete winperson=new Winpersondelete("读者删除");if(e.getSource()=itemBookcx)Windowjj ok=new Windowjj();if(e.getSource()=itemchaoshi)day win=new day(); if(e.getSource()=itemBorrowjs)Borrowbook win=new Borrowbook(); if(e.getSource()=itemBorrowhs)Returnbook win=new Returnbook(); 5.1.2 管理员添加功能实现功能介绍:该程序主要实现管理员的添加,以便于让实行对图书管理员的管理。按照标签提示输入信息,然后点击确定按钮。首先判断管理员名文本框中输入的文本信息是否符合大于3个字符并小于10个字符的规则,如果不符合规则,则提示错误,如果符合规则,再到Admi表中进行查询,如果相同则用提示框提示错误。若无相同则可注册。但还需要保证前后两次的密码相同,才能成功注册,管理员登陆窗口如图5-2所示。图5-2管理员添加成功界面 主要程序代码如下: public void actionPerformed(ActionEvent c)String b=textUser.getText();String d=textPassword1.getText();String g=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,"用户名应在310个字符之间");textUser.setText(null);elsetry Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");catch(ClassNotFoundException e)System.out.println(""+e);try con=DriverManager.getConnection("jdbc:odbc:sun","123","123");sql=con.createStatement();rs=sql.executeQuery("SELECT * FROM Admi WHERE 用户名="+"'"+b+"'");f(rs.next()String user=rs.getString(1);if(b.equals(user)JOptionPane.showMessageDialog(null,"此管理员已被注册","警",JOptionPane.WARNING_MESSAGE); elseif(d.equals(g) sql.executeUpdate("INSERTINTOAdmi VALUES"+"("+"'"+b+"'"+","+"'"+d+"'"+")"); this.dispose();JOptionPane.showMessageDialog(null,"管理员注册成功");else JOptionPane.showMessageDialog(null,"两次输入密码不一致","警",JOptionPane.ERROR_MESSAGE); con.close(); catch(SQLException e)System.out.println(""+e);5.1.3管理员切换此模块功能是退出当前管理员界面,进入管理员切换窗口,另一用户可以通过输入自己的用户名和密码直接进入该系统。但此用户名和密码都必须与已经连接好的数据库中表Admi中的用户名和密码相吻合。管理员切换界面如图5-3所示。 图5-3 管理员切换主要程序代码如下: public void windowClosing(Wpublic void windowClosing(WindowEvent e)e.getWindow().dispose();5.2 读者管理模块功能实现5.2.1 读者添加功能介绍:添加新的读者,使其能够进入图书系统阅览图书,读者添加如图5-4所示。 图5-4 读者添加主要程序代码如下: public void actionPerformed(ActionEvent e)if(e.getSource()=button1) / 添加String ch=text1.getText();if(ch.length()!=5)JOptionPane.showMessageDialog(null,"请输入5位图书证号!"); text1.setText(null);else/连接数据库String number,name,sex,dept,classes,record,insertStr;number=text1.getText();name=text2.getText();if(box1.getState()=true)sex=box1.getLabel();elsesex=box2.getLabel();dept=text3.getText();classes=text4.getText();rs=sql.executeQuery("SELECT * FROM person WHERE 图书证号="+"'"+number+"'");if(rs.next()JOptionPane.showMessageDialog(null,"此图书证号已存在","警告",JOptionPane.WARNING_MESSAGE);text1.setText(null);record="("+"'"+number+"'"+","+"'"+name+"'"+","+"'"+sex+"'"+","+"'"+dept+"'"+","+"'"+classes+"'"+")"insertStr="INSERT INTO person VALUES"+record;sql.executeUpdate(insertStr); JOptionPane.showMessageDialog(null,"添加成功!");con.close();5.2.2 读者修改功能介绍:对读者需要修改的资料进行重定义,读者信息修改如图5-5所示。图5-5 读者信息修改主要程序代码如下:public void actionPerformed(ActionEvent e) if(e.getSource()=button1) /修改String ch=text1.getText();if(ch.length()!=5)JOptionPane.showMessageDialog(null,"请输入5位图书证号!");text1.setText(null);elsetry/连接数据库String number,name,sex,dept,classes,newnum,record,updateStr; newnum=text5.getText(); number=text1.getText(); name=text2.getText();if(box1.getState()=true) sex=box1.getLabel(); elsesex=box2.getLabel();dept=text3.getText();classes=text4.getText();sql=con.createStatement();rs=sql.executeQuery("SELECT * FROM person where 图书证号="+"'"+newnum+"'");if(rs.next()rs1=sql.executeQuery("SELECT * FROM person where 图书证号="+"'"+number+"'");if(rs1.next()JOptionPane.showMessageDialog(null,"此图书证号已存在","警告",JOptionPane.WARNING_MESSAGE);text1.setText(null);elseupdateStr="UPDATE person SET 图书证号="+"'"+number+"'"+","+"姓名 ="+"'"+name+"'"+","+"性别="+"'"+sex+"'"+","+"系别="+"'"+dept+"'"+","+"班级="+"'"+classes+"'"+"WHERE 图书证号="+"'"+newnum+"'"sql.executeUpdate(updateStr);JOptionPane.showMessageDialog(null,"修改成功!");elseJOptionPane.showMessageDialog(null,"查无此人!");/连接数据库con.close();5.2.3 读者查询功能介绍:可以对数据库中已有的读者信息进行查询。读者查询如图5-6。图5-6读者信息查询 主要程序代码如下:public void actionPerformed(ActionEvent e)