版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE深圳广播电视大学计算机信息管理专业毕业设计(论文)《图书管理系统设计与实现》摘要在信息化时代,数据库系统的建设实现对数据信息化的管理。在此基础上建立了图书管理系统,为其信息时代管理和交流提供了极大的便利。该论文着重论述了运用vb程序设计与后台数据库链接等关键技术所建立系统界面的布局分析,功能的实现及管理。关键词:VB程序设计、ACCESS数据库目录摘要 2第一章概述 4第一节课题来源 4第二节开发背景和开发目的 4第二章需求分析 6第一节系统目标 6第二节应用现状调查 6第三节系统总体流程图如下: 6第四节系统功能模块图 7第五节系统功能的分析 7第六节开发工具的选择 8第三章图书管理系统的设计 9第一节数据库设计 9第二节数据库流程图 9第三节数据库逻辑结构设计 10第四章图书管理系统实施 13第一节创建工程项目——prjLMS 13第二节创建图书信息管理系统的主窗体 13第三节创建主窗体的菜单 15第五章设计总结 17参考文献 18附录 19第一章概述第一节课题来源图书管理系统是图书馆管理工作中不可缺少的部分,它的内容对于图书馆的管理者和使用者来说都至关重要,所以图书管理系统应该能够为管理者或读者提供充足的信息和快捷的数据处理手段。但一直以来人们使用传统人工的方式进行图书管理和借阅管理,这种管理方式存在着许多缺点,如:效率低、易忘记、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。所以利用计算机实现图书信息信息管理的自动化将势在必行。第二节开发背景和开发目的当今社会,随着图书馆的规模不断扩大,图书数量急剧增加,有关图书的各种信息也成倍增长特别是图书信息的信息,而面对庞大的信息量,有必要开发图书管理系统来提高图书管理工作的效率。通过这样的系统,可以做到信息的规范管理、科学统计和快速查询,从而减少管理方面的工作量。在图书馆,尤其是在各大图书馆,对于图书的管理是相当重要,而且也是相当麻烦的,它是图书馆管理中最基本的一项常规性工作。而长期以来,图书馆管理都是依赖人工来进行的,面对如此众多的图书信息,其工作量是相当相当巨大的。这样不仅仅浪费了大量的人力物力,而且由于人工管理存在着大量的不可预知性,造成图书信息管理的一些不规范,使得信息管理陷入“事倍功半”的地步。开发本系统就是为了解决图书馆在图书信息管理中的一些不规范,使图书信息的管理向着规范化、简单化、有效化的方向发展。第二章需求分析第一节系统目标采用图书馆现有的软硬件软件及科学的管理系统开发方案,建立图书入库信息管理系统,实现图书入库管理的计算机自动化。系统应符合图书馆原有的图书管理制度,并达到操作直观、方便、实用、安全等要求。第二节应用现状调查当前,很多图书馆的图书管理都是以纸张为介质作记录,人力管理的比例比较大,因此实现图书管理的计算机化是非常必要的,也是可行的,因为使用计算机化的图书管理系统可以彻底改变管理工作的现状,能提高工作效率,能够提供更准确、及时、实用的信息。第三节系统总体流程图如下:开开始界面用户登陆是否合法系统主窗口退出系统否则是非功过第四节系统功能模块图图书馆管理系统图书馆管理系统借还书业务信息查询图书报表系统设置工具基本信息图书详细信息所有图书信息读者信息所有读者信息借书业务所有出借图书还书业务重新登录关于退出图书分类查询会员查询出版查询出借报表图书详细信息记事本计算器第五节系统功能的分析系统开发的总体任务是实现图书信息管理的系统化、规范化和自动化。系统功能分析是在系统开发的总体任务的基础上完成的。读者信息管理系统需要完成的功能主要有:·有关借还书等信息的输入,包括输入借书编号、图书编号、读者编号、借书时间和还书时间等。·借还书信息的查询,包括借书编号、图书编号、读者编号、借书时间和还书时间等。·图书管理信息的添加、修改、查询。·系统用户信息的添加、修改、查询。根据系统功能模块图得出系统的功能,现分析如下:系统功能的分析系统开发的总体任务是实现图书信息管理的系统化、规范化和自动化。系统功能分析是在系统开发的总体任务的基础上完成的。图书信息管理系统需要完成的功能主要有:·有关借还书等信息的输入,包括输入借书编号、图书编号、读者编号、借书时间和还书时间。·借还书信息的查询,包括借书编号、图书编号、读者编号、借书时间和还书时间。·图书信息管理的添加、删除、修改。·图书类别管理的输入,包括输入图书类别、图书编号、图书名称。·读者管理信息的查询。·图书管理信息的查询。·系统用户的添加和删第六节开发工具的选择针对目前世界上流行的大量软件和开发工具,经过认真分析其优缺点,结合数据库管理系统的需要和目前的硬件环境,我们选用微软WINDOWS平台下的VisualBasic6.0(简写为VB6.0)作为软件开发工具。第三章图书管理系统的设计第一节数据库设计数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。同时,合理的数据库结构也将有利于程序的实现。设计数据库系统时应该首先充分了解用户各个方面的需求,包括现有的以及将来可能增加的需求。第二节数据库流程图借书是图书管理系统的主要流程之一,其过程是在借阅信息表中查找自己所需要的图书,然后进行借书、借书登记等操作。数据流程图:NNNYY查阅开始借书借书登记退出借书验证是否被借出输入读者信息是否借满图1借书的主要流程图第三节数据库逻辑结构设计图书信息管理系统数据库中各个表格的设计结果如下所示:借阅表:名称数据类型与长度说明借书编号VARCHAR(20)主键图书编号VARCHAR(20)读者编号VARCHAR(20)借书时间DATETIME(8)还书时间DATETIME(8)表1借阅表读者表:名称数据类型与长度说明读者编号VARCHAR(20)主键姓名VARCHAR(50)性别CHAR(10)类别编号VARCHAR(20)联系电话VARCHAR(50)联系地址VARCHAR(50)工作单位VARCHAR(50)表2读者表读者类别表:名称数据类型与长度说明类别编号VARCHAR(20)主键类别名称VARCHAR(50)表3读者类别表图书表:名称数据类型与长度说明图书编号VARCHAR(20)主键图书名称VARCHAR(50)出版社VARCHAR(50)出版时间DATETIME(8)类别编号DATETIME(20)是否借出CHAR(10)工作人员编号VARCHAR(50)表4图书表图书类别表:名称数据类型与长度说明类别编号VARCHAR(20)主键类别名称VARCHAR(50)表5图书类别表工作人员表:名称数据类型与长度说明工作人员编号VARCHAR(20)主键姓名VARCHAR(20)性别CHAR(10)住址VARCHAR(50)电话VARCHAR(15)表6工作人员表第四章图书管理系统实施第一节创建工程项目——prjLMS为了用VisualBasic创建应用程序,应当使用工程。一个工程是用来建造应用程序的文件的集合,它包括:·跟踪所有部件的工程文件(.vbp)·每个窗体的文件(.frm)·每个窗体的二进制数据文件(.frx),它含有窗体上控件的属性数据。对含有二进制属性的任何.frm文件都是不可编辑的,这些文件都是自动产生的。·每个类模块的一个文件(.cls),该文件是可选项。·每个标准模块的一个文件(.bas),该文件是可选项。·一个或多个包含ActiveX控件的文件(.ocx),该文件是可选项。·单个资源文件(.res),该文件是可选项。启动VisualBasic后,单击File/NewProject菜单,在工程模板中选择StandardEXE,VisualBasic将自动产生一个Form窗体,属性都为缺省设置。删除窗体,单击File/SaveProject菜单,将工程项目命名为图书馆管理系统。第二节创建图书信息管理系统的主窗体VisualBasic创建的应用程序可以是SDI(单文档界面)和MDI(多文档界面)。在SDI的程序中,每个窗体之间是独立的。而MDI的程序中,有一个窗体是主窗体,可以包含其他窗体,它的类型是MDIForm。本系统采用多文档界面,这样可以使程序更加美观、整齐有序。图书馆管理系统主窗体单击工具栏中的“MDIForm”按钮,生成一个窗体,属性设置如表。主窗体及其控件属性设置:控件属性属性取值FrmMain(Form)NameFrmMainCaptionLibraryManagementSystemStartUpPositon3-窗口缺省WindowsState2-MaximizedSbStatusaBar(statusBar)NameSbStatusBar表7主窗体及其属性表在主窗体中加入状态栏控件,可以实时反映系统中的各个状态的变化。状态栏控件需要在通常的属性窗口中设置一般属性,还需要在其特有的弹出式菜单中进行设置。选中状态栏控件,单击鼠标右键,选中Property菜单,在“General”属性页对一般属性进行设置,在“Panels”属性页对各个文本框进行设置,在“Font”属性页对文本字体进行设置,在“Picture”属性页可以添加图片。单击InsertPanel按钮,为状态栏添加3个面板,设置属性如下表:面板属性属性取值1styleSbrText2styleSbrDate3styleSbrTime表8主窗体中面板属性设置表面板1用来显示各种文本信息,面板2用来显示当前日期,面板3用来显示当前时间。第三节创建主窗体的菜单在主窗体中,单击鼠标右键,选择弹出式菜单中的“MenuEditor”命令,创建菜单结构如下表:基本信息基本信息……图书详细信息……所有图书信息……读者信息……所有读者信息借还书业务……借书业务……所有出借图书……还书业务图书查询……图书分类查询……会员查询……发行查询图书报表……出借报表……图书详细信息……会员详细信息工具……记事本……计算器重新登录关于退出系统图9主窗体菜单结构表第五章设计总结本系统的功能基本符合用户需求,能够完成图书信息的存储和查询等操作。使用户方便进行数据输入、修改、删除等管理措施。对于数据的一致性的问题也通过程序进行了有效的解决。在系统设计过程中,我体会到了即使是一件小事也不能马虎,在设计之前一定要对所设计的系统有较为深刻地了解,并对用户的要求加以认真的分析,并给予分类,对所分类进行功能模块化设计,画出系统数据流图,流程图和结构图.这样在进行详细设计时才可以做到有条不紊一步步地进行.编制一个系统还是有很多可学习的地方,不仅要掌握好相关知识,而且做事要细心,谨慎,这也是将来工作和学习应该注意的地方。参考文献[1]《VisualBasic程序设计》刘世峰主编中央电大出版社[2]《软件工程》陈明编中央电大出版社[3]《数据库基础与应用》刘世峰主编中央电大出版社[4]《VisualBasic数据库系统开发实例导航》刘韬编人民邮电出版社[5]《企业办公系统开发实例导航》刘萌人民邮电出版社[6]《数据库开发技术与工程实践》张立科人民邮电出版社附录源程序清单主窗体原代码:SelectCaseButton.IndexCase1frmBookInfo.ShowfrmBookInfo.SetFocusCase2frmMemberInfo.ShowfrmMemberInfo.SetFocusCase5frmIssue.ShowfrmIssue.SetFocusCase6frmReturn.ShowfrmReturn.SetFocusCase9CallmnuLogOff_ClickCase10CallmnuExit_ClickEndSelectEndSub'===================================================='FormEventCoding[Starts]'====================================================PrivateSubMDIForm_Load()'FirstdisplaytheMDIFormfrmMain.Show'DisplayGood-Thoughtsformonstart-upfrmTip.ShowvbModalDoEventsfrmWelcome.ShowDoEventsEndSub'WhenApplicationisUnloadedPrivateSubMDIForm_Unload(CancelAsInteger)OnErrorResumeNextIfApplicationUnload()<>1ThenCancel=TrueElseUnloadfrmSYSTRAYICONEndIfEndSub'===================================================='FormEventCoding[Ends]'===================================================='====================================================='CodeforOpeningWebLinkPrivateSubstatus_PanelClick(ByValPanelAsMSComctlLib.Panel)ShellExecuteMe.hWnd,vbNullString,"",vbNullString,vbNullString,SW_SHOWNORMALEndSub焦作大学信息工程学院《Java实训》报告题目:图书管理系统班级:网络(1)班姓名:学号:沈阳工程学院课程设计报告目录摘要随着信息技术的发展,计算机已被广泛的应用于社会的各个领域,成为推动社会发展的技术动力。而在计算机应用中,软件的作用十分突出,软件已经发展成为信息技术的核心,主导着信息产品的开发和信息技术市场的进一步的开拓。软件产业已成为社会信息化进程中的一个战略性产业。在软件技术的应用中软件的开发技术尤其是应用型软件产品的开发技术成了重中之重。不断开发适应用户需求、市场需要的新型软件产品。尤其是在校园里,各种软件的应用无处不在,为我们的学习和生活提供了方便。学校的图书馆不仅给我们提供看书学习的地方,还给我们提供了一套功能齐全的图书馆系统,方便我们搜索书籍、借阅图书。我们本次的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章绪论PAGE1第1章绪论随着社会经济的迅速发展和科学技术的全面进步,计算机事业的飞速发展,以计算机与通信技术为基础的信息系统正处于蓬勃发展的时期。随着经济文化水平的显著提高,人们对生活质量及工作环境的要求也越来越高。书籍做为人类的精神食粮,在现代社会中越来越受到重视,大量的书籍出现在市场上,人们有了各种各样不同的选择。与此同时,为了管理大量的图书,图书管理系统也大量的出现,随着图书的大量增加,其管理难度也越来越大,如何优化管理也就成为了一个大众化的问题。现已有的图书管理系统,其功能已十分强大,为了便于管理员对图书管理系统进行妥善的管理和读者的查询,图书管理系统为管理员提供了管理日志、管理员添加、管理员切换、读者添加、读者修改、读者查询、读者删除、新书入库等功能,为读者提供了书籍查询、读者借阅信息查询、图书网上续借等很多功能。大学为我们提供了自由的学习环境,使我们有更多的时间到图书馆借阅书籍,让我们可以随时掌握各方面的知识,不断提高自我、充实自我,但由于图书馆藏书成千上万,我们很难一本一本的去查找自己感兴趣的书籍,因此我们会经常用到学校为我们提供的图书管理系统,用时间长了便对此产生了兴趣,正好本次课程设计为我们提供了良好的机会,让我们亲自设计并实现了图书管理系统的部分功能。设计一个图书管理系统必不可少的必须对全管书籍进行分类汇总。而这就是我们所说的数据库设计的第一阶段:需求分析。在这一阶段除了对具体情况诸如实行对管理员的管理、对读者的管理、书籍管理、书籍的借阅与归还、借阅超时等功能的实现,还需要对用户的需求进行调查和分析,否则就失去了设计这个系统的意义了。对于界面的设计我们应该追求的是:美观、易读性强、清晰度高;原则是:不能因为刻意追求美观而以整个界面的清晰度的牺牲作为代价,不能为了清晰度而抛弃对易读性的追求。再设计的过程中我们应该根据实际的情况进行设计,做到具体问题具体分析,不刻意追求原则。在对应的界面与Access数据库建立连接,并实现对应的SQL语句进行实现将产生的结果显示出来。并运用捕捉异常的方法,将异常信息显示出来。实现SQL语句的时候借助前台开发工具中关于数据处理的控件来完成。对于读者而言他们的需求是了解图书的基本情况,自己的借阅情况。总而言之就是实现对各个信息表的查询。对于图书管理员而言要实现的功能相对而言比较多,例如实现新书入库、Access数据库表的创建、系统的维护等等,这些都需要设计和实现的。第2章系统功能介绍PAGE8第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章数据库设计第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章系统功能实现PAGE24第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); PAGE34 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.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 省考面试数字高分解读技巧
- 医患关系案例举报与分享
- 护理之翼守护健康
- 骨科护理质量管理与持续改进
- 康复技术在老年护理中的应用
- 静脉输液并发症识别与干预
- 盆景光照管理对生长的影响
- 2025 七年级数学下册二元一次方程组的解的验证方法课件
- 2025 七年级数学下册不等式组解集边界值的取舍判断课件
- 黄体破裂的护理新进展
- GB/T 17119-2025连续搬运设备带承载托辊的带式输送机运行功率和张力的计算
- 四川省成都市第七中学2025-2026学年高二上学期11月半期考试英语(含答案)
- (2025版)国家基层高血压防治管理指南课件
- 2026届黑龙江省优才计划 中学生标准学术能力测试高三数学联考试题(含解析)
- 贵州省黔西南州金成实验学校2024-2025学年九年级上学期期末检测物理试题(无答案)
- 屠宰场安全生产知识培训课件
- 石油管道巡护安全培训课件
- 胶济铁路428事故讲解
- 智能教育设备设备使用风险防控方案
- 防洪影响评价编制培训课件
- GJB3206B-2022技术状态管理
评论
0/150
提交评论