图书馆图书管理的数据库系统第一章概述1.1数据库及其应用自20世纪70年代以来,数据库技术得到迅速发展.目前世界上已经有数百万个数据库系统在运行,其应用已经深入到社会生活的各个领域,从企业管理,银行管理,资源管理,经济预测一直到信息检索,档案管理,普查统计等.我国20世纪90年代初在全国范围内装备了12个以数据库为基础的大型计算机系统,这些系统分布在邮电,计委,银行,电力,铁路,气象,民航,情报,公安,军事,航天和财税等行业.现在,数据库技术还在不断发展,并且不断的与其它计算机技术相互渗透.数据库技术与网络通信技术相结合,产生了分布式数据库系统.数据库技术与面象对象技术相结合,产生了面向对象数据库系统等各种数据库系统.在人类迈向21世纪知识经济的时候,信息变为经济发展的战略资源,信息技术已成为社会生产力重要的组成部分.人们充分认识到,数据库是信息化社会中信息资源管理与开发利用的基础.对于一个国家,数据库的建设规模,使用水平已成为衡量该国信息化程度的重要标志.因此,数据库的学习是非常重要的.1.2数据库系统数据库系统本质上是一个用计算机存储记录的系统。
数据库本身可被看作为一种电子文件柜:也就是说,它是收集计算机数据文件的仓库或容器。
系统用户可以对这些文件执行插入数据、检索数据、更改数据、删除数据等一系列操作。
总之,数据库系统是一个计算机存储记录的系统,即,它是一个计算机系统,该系统的目标存储信息并支持用户检索和更新所需要的信息。
图1-2是一个数据库系统的简图。
图1-2 数据库系统简图1.3数据库系统简介本人设计的是一个关于图书馆图书管理的数据库系统,通过这个系统管理员可以简捷、方便的对图书记录查阅、增加、删除等功能,而用户也可以通过这个系统对进行图书查询、借阅、归还等功能。
该数据库应用程序按照用户权限和实现功能的不同分为两部分:外部学生对数据库的查询访问和内部管理人员对数据记录的管理维护.每一部分中包含各自实现的各项功能,对每一项功能的实现,将按照窗体设计以及运行情况的顺序逐一进行设计.本系统采用microsoft access技术建立数据库,使用VB技术建立数据源的链接,并且生成图书管理的数据库应用程序从而实现数据库的管理功能。
第二章数据库系统设计2.1数据库设计概述计算机信息系统以数据库为核心,在数据库管理系统的支持下,进行信息的收集、整理、存储、检索、更新、加工、统计和传播等操作。
对于数据库应用开发人员来说,为使现实世界的信息流计算机话,并对计算机话的信息进行各种操作,就是如何利用数据库管理系统、系统软件和相关硬件系统,将用户的要求转化成有效的数据结构,并使数据库结构易于实现用户新的要求的过程。
确切的说,数据库设计是指对于一个给定的应用环境,提供一个确定最优数据模型与处理模式的逻辑设计,以及一个确定数据库存储结构与存取方法的物理设计,建立起既能反映现实世界信息和信息联系,满足用户数据要求和加工要求,有能被某个数据库管理系统所接受,同时能实现系统目标,并有效存取数据的数据库。
2.2数据库设计周期根据软件工程的思想,数据库设计的周期可以划分为六个阶段:(1)规划阶段确定开发的总目标,给出计划开发的软件系统的功能、性能、可靠性以及接等方面的设想。
(2)需求分析阶段认真细致地了解用户对数据的加工要求,确定系统的功能与边界。
本阶段的最终结果,提供一个可作为设计基础的系统说明书,包括对软硬件环境的要求和一整套完善的数据流程图。
(3)设计阶段把需求分析阶段所确定的功能细化,主要工作是概念设计阶段、逻辑设计阶段、物理设计阶段,然后,对每个阶段内部设计详细的流程。
(4)程序编制阶段以一种或几种特定的程序设计语言表达上一阶段确定的各模块控制流程。
程序编制时应遵循结构化程序设计方法。
(5)调试阶段对已编好的程序进行单元调试(分调),整体调试(联调)和系统测试(验收)。
(6)运行和维护阶段这是整个设计周期最长的阶段,其工作重点是收集和记录系统实际运行的数据。
在运行中,必须保持数据库的完整性,必须有效的处理数据故障和进行数据库恢复。
同时解决开发过程的遗留问题,改正错误进行功能完善。
第三章图书管理系统具体设计3.1图书管理系统总体规划对于数据库系统,规划工作是十分必要的。
规划的好坏将直接影响到整个图书管理系统的成功与否,数据库设计中的规划阶段的主要任务是建立数据库的必要性及可行性分析,确定数据库系统在整个图书管理系统的地位。
根据图书管理数据库对技术人员和管理人员的水平、数据采集和管理活动以及借阅者的计算机素质的要求;数据库技术对计算机系统的软硬件的要求。
决定把数据库管理系统设计成为一个综合的数据库。
此数据库包括所有操作人员的所有活动功能。
因为,此图书管理系统应用界面较简单、功能单一。
所以,用一个综合的数据库就能满足图书管理要求,而且实现容易。
因此,图书管理系统可以按照用户权限和实现功能的不同分为两部分:外部学生对数据库的查阅访问和内部管理人员对图书记录的管理维护。
但是,这两部分都调用的是同一数据库,只不过内部管理人员能实现所有管理功能,而外部学生访问数据库时,一些功能被屏蔽,只能进行查阅。
3.2 需求分析3.2.1需求描述与分析设计一个性能良好的数据库系统,明确应用环境对系统的要求是首要的和最基本的。
特别是数据应用非常广泛,非常复杂,要是事先没有对信息进行充分和细致的分析,这种设计就很难取得成功。
通过需求分析阶段对图书管理系统的整个应用情况作全面的、详细的调查,确定图书管理的目标,收集支持系统总的设计目标的基础数据和对这些数据的要求,确定用户的需求,并把这些写成用户和数据库设计者都能够接受的文档。
事实上,需求分析是数据库开发中最难的任务之一。
因为,第一,系统本身是可变的,用户的需求必须不断调整,使之与这种变化相适应。
第二,用户很难说清某部分工作的功能处理过程。
所以,设计人员必须认识到:在整个需求分析以及系统设计过程中,用户参与的重要性,通过各种方法展开调查分析。
3.2.2需求分析的步骤需求分析大致可分为三步来完成,即需求信息的收集、分析整理和评审通过。
(1)需求信息的收集需求信息的收集又称为系统调查。
为了充分地了解用户可能提出的要求,在调查研究之前,要做好充分的准备工作,要了解调查的目的、调查的内容和调查的方式。
1)调查的目的首先,要了解组织的机构设置,主要管理活动和职能。
其次,要确定组织的目标,大致管理流程和任务范围划分。
因此,图书管理系统主要是通过对现有的图书管理系统进行考察、研究。
并且通过和图书管理人员、学生交流来完善管理功能。
2)调查的内容外部要求:信息的性质,响应的时间、频度和如何发生的规则,以及图书管理的要求,安全性及完整性要求。
管理的现状:即图书管理信息的种类,信息流程,信息的处理方式,各种图书服务工作过程。
组织机构:了解图书管理机构的作用、现状、存在的问题,及是否适应计算机管理。
3)调查方式通过对图书管理人员的访问、交谈可获得图书管理高层的、内部的管理需求,以及图书管理的管理目标、未来图书管理发展变化趋势和长远规划的有关信息。
并且,还可通过具体借阅活动,了解借阅的流程、借阅的控制方式、日常管理信息,对图书管理系统有一个深刻得了解。
(2)需求信息的分析整理要想把收集到的信息(如文件、图表、票据、笔记)转化为下一阶段设计工作可用的形式信息,必须对需求信息做分析整理的工作。
1) 管理流程分析图书管理人员必须完成日常的借书还书工作,还需进行图书馆的维护(图书维护、读者资料维护)和进行图书和读者的查询。
2)注意事项分析管理员在借书时,应根据读者提供的有效资料(借书证)验证读者的身份合法性,确定读者能不能借书,(根据对管理员的调查结果表明当读者不是本校学生、读者借书超期末还、读者借书总数据超过8本未还者不能借书。
)管理员在对系统进行维护时不能对借出的书籍进行修改、删除,不能对借有图书的读者进行修改、删除等。
定期对超期未归还图书的读者公告等。
3.3概念设计按照上述系统设计的构思进行程序设计,根据结构化程序设计的思想,本设计程序的总体结构,依据系统结构模块来划分程序模块。
按系统的要求,本系统包括主要有四个方面:借书、还书、系统查询、系统维护。
故含有借书、还书、系统查询(包含图书档案查询和读者档案查询)、系统维护(包括图书档案维护和读档案维护),退出、帮助等六个模块。
1、总控模块总控程序是整个系统控制的中心,也是系统进入各级模块的入口。
它由主程序和主菜单组成。
2、借书模块本模块实现借书功能,用户输入借书证号和图书编号,系统会根据输入的内容判断能否借书,借书日期由系统给出。
并且借书成功与否系统都会给出提示。
3、还书模块本模块实现还书功能,用户输入借书证号和还书的图书编号,系统会根据输入的内容判断输输入的内容是否正确,并会给出相应的提示。
4、系统查询模块本系统提供了多种的查询模式,包括对图书的查询和对读者的查询。
该模块的功能强大,读者档案查询包括有按借书证号、姓名、班级、专业等四种查询模式;图书档案查询包括有按图书编号、书名、作者、出版社等四种查询模式,另外还可以查询愈期还书读者。
5、系统维护模块本模块由图书档案维护和读者档案维护两个模块组成,主要完成日常的图书档案和读者维护,包括添加修改,删除,读者档案和图书档案等。
6、退出模块本模块是一个过程,实现系统的退出。
7、帮助模块本模块提供了本系统的一些信息。
3.4逻辑设计为了实现系统功能,本系统设立了一个数据库tsgl.dbc共有三个数据库表,它们分别是:图书档案数据库表ts.dbf,读者档案数据库表dj.dbf,借书记录数据库表js.dbf。
1、 ts.dbf(图书档案)数据库表结构如下:字段字段名类型宽度1 图书编号字符型 62 书名字符型 203 作者字符型 104 单价字符型 65 出版社字符型 202、 dj.dbf(读者档案)数据库表结构如下:字段字段名类型宽度1 借书证号字符型82 姓名字符型103 性别字符型 24 专业字符型 105 班级字符型 103、 js.dbf(借书记录)数据库表借物如下:字段字段名类型宽度1 借书证号字符型82 图书编号字符型、 63 借书日期日期型 84 还书日期日期型 8下面将本系统的逻辑模型图列出如下:3.5物理设计以逻辑设计的结果作为输入,结合具体DBMS的特点与存储设备特性进行设计,选定数据库在物理设备上的存储结构和存取方法。
3.5.1索引的选择本系统针对图书资料和读者资料两个不同的数据库设计两个主索引:图书编号和借书证号。
3.5.2存储结构和存取本系统的数据直接存放在电脑的硬盘上,进行直接存取方法。
第四章数据库实现1、系统主菜单:tsglt.mpr`********************************************************** ** * TSGLXT.MPR** ********************************************************** ** * 菜单定义* ** *********************************************************SET SYSMENU TOSET SYSMENU AUTOMATICDEFINE PAD _0y40w84b0 OF _MSYSMENU PROMPT "借书" COLOR SCHEME 3DEFINE PAD _0y40w84b3 OF _MSYSMENU PROMPT "还书" COLOR SCHEME 3DEFINE PAD _0y40w84b4 OF _MSYSMENU PROMPT "系统查询" COLOR SCHEME 3DEFINE PAD _0y40w84b5 OF _MSYSMENU PROMPT "系统维护" COLOR SCHEME 3DEFINE PAD _0y40w84b6 OF _MSYSMENU PROMPT "退出" COLOR SCHEME 3DEFINE PAD _0y40w84b7 OF _MSYSMENU PROMPT "帮助" COLOR SCHEME 3ON SELECTION PAD _0y40w84b0 OF _MSYSMENU do form jsON SELECTION PAD _0y40w84b3 OF _MSYSMENU do form hsON PAD _0y40w84b4 OF _MSYSMENU ACTIVATE POPUP 新菜单项ON PAD _0y40w84b5 OF _MSYSMENU ACTIVATE POPUP _0xg1eijc4ON SELECTION PAD _0y40w84b6 OF _MSYSMENU quitON SELECTION PAD _0y40w84b7 OF _MSYSMENU do form sxDEFINE POPUP 新菜单项 MARGIN RELATIVE SHADOW COLOR SCHEME 4DEFINE BAR 1 OF 新菜单项 PROMPT "图书查询"DEFINE BAR 2 OF 新菜单项 PROMPT "读者查询"DEFINE BAR 3 OF 新菜单项 PROMPT "查询逾期还书读者"ON BAR 1 OF 新菜单项 ACTIVATE POPUP _0xg1ebks9ON BAR 2 OF 新菜单项 ACTIVATE POPUP _0xg1eevn6ON SELECTION BAR 3 OF 新菜单项 ;DO _0y40w84bg ;IN LOCFILE("\TSGLXT\TSGLXT" ,"MPX;MPR|FXP;PRG" ,"WHERE is TSGLXT?")DEFINE POPUP _0xg1ebks9 MARGIN RELATIVE SHADOW COLOR SCHEME 4DEFINE BAR 1 OF _0xg1ebks9 PROMPT "按编号查询"DEFINE BAR 2 OF _0xg1ebks9 PROMPT "按书名查询"DEFINE BAR 3 OF _0xg1ebks9 PROMPT "按作者查询"DEFINE BAR 4 OF _0xg1ebks9 PROMPT "按出版社查询"ON SELECTION BAR 1 OF _0xg1ebks9 do form cqtsON SELECTION BAR 2 OF _0xg1ebks9 do form asncqtsON SELECTION BAR 3 OF _0xg1ebks9 do form azzcqtsON SELECTION BAR 4 OF _0xg1ebks9 do form acbscqtsDEFINE POPUP _0xg1eevn6 MARGIN RELATIVE SHADOW COLOR SCHEME 4 DEFINE BAR 1 OF _0xg1eevn6 PROMPT "按借书证号查询"DEFINE BAR 2 OF _0xg1eevn6 PROMPT "按姓名查询"DEFINE BAR 3 OF _0xg1eevn6 PROMPT "按专业查询"DEFINE BAR 4 OF _0xg1eevn6 PROMPT "按班级查询"ON SELECTION BAR 1 OF _0xg1eevn6 do form ajsxhcqdjON SELECTION BAR 2 OF _0xg1eevn6 do form axmcqdjON SELECTION BAR 3 OF _0xg1eevn6 do form ajycqdjON SELECTION BAR 4 OF _0xg1eevn6 do form abjcqdjDEFINE POPUP _0xg1eijc4 MARGIN RELATIVE SHADOW COLOR SCHEME 4 DEFINE BAR 1 OF _0xg1eijc4 PROMPT "图书档案维护"DEFINE BAR 2 OF _0xg1eijc4 PROMPT "读者档案维护"ON BAR 1 OF _0xg1eijc4 ACTIVATE POPUP _0xg1eivt0ON BAR 2 OF _0xg1eijc4 ACTIVATE POPUP _0xg1elfhvDEFINE POPUP _0xg1eivt0 MARGIN RELATIVE SHADOW COLOR SCHEME 4 DEFINE BAR 1 OF _0xg1eivt0 PROMPT "添加图书档案"DEFINE BAR 2 OF _0xg1eivt0 PROMPT "修改图书档案"DEFINE BAR 3 OF _0xg1eivt0 PROMPT "删除图书档案"DEFINE BAR 4 OF _0xg1eivt0 PROMPT "清空记录"ON SELECTION BAR 1 OF _0xg1eivt0 do form tjtsON SELECTION BAR 2 OF _0xg1eivt0 do form syxgtshON SELECTION BAR 3 OF _0xg1eivt0 do form sysqtshON SELECTION BAR 4 OF _0xg1eivt0 ;DO _0y40w84br ;IN LOCFILE("\TSGLXT\TSGLXT" ,"MPX;MPR|FXP;PRG" ,"WHERE is TSGLXT?") DEFINE POPUP _0xg1elfhv MARGIN RELATIVE SHADOW COLOR SCHEME 4DEFINE BAR 1 OF _0xg1elfhv PROMPT "添加读者档案"DEFINE BAR 2 OF _0xg1elfhv PROMPT "修改读者档案"DEFINE BAR 3 OF _0xg1elfhv PROMPT "删除读者档案"DEFINE BAR 4 OF _0xg1elfhv PROMPT "清空记录"ON SELECTION BAR 1 OF _0xg1elfhv do form tjdjON SELECTION BAR 2 OF _0xg1elfhv do form syxgdjhON SELECTION BAR 3 OF _0xg1elfhv do form sysqdjhON SELECTION BAR 4 OF _0xg1elfhv ;DO _0y40w84bv ;IN LOCFILE("\TSGLXT\TSGLXT" ,"MPX;MPR|FXP;PRG" ,"WHERE is TSGLXT?")* ********************************************************** ** * _0Y40W84BG ON SELECTION BAR 3 OF POPUP 新菜单项* ** * ProcedureOrigin:* ** * From Menu: TSGLXT.MPR, Record: 19 * * Called By: ON SELECTION BAR 3 OF POPUP 新菜单项* * Prompt: 查询逾期还书读者* *Snippet: 1* ** **********************************************************PROCEDURE _0y40w84bgSELECT Dj.*, Js.借书日期, Ts.图书编号, Ts.书名, Ts.单价;FROM tsgl!dj INNER JOIN tsgl!js;INNER JOIN tsgl!ts ;ON Js.图书编号 = Ts.图书编号 ;ON Dj.借书证号 = Js.借书证号;WHERE Js.借书日期 > Js.还书日期;AND Js.借书日期 < date( )-90* ********************************************************** ** * _0Y40W84BR ON SELECTION BAR 4 OF POPUP _0xg1eivt0* ** * ProcedureOrigin:* ** * From Menu: TSGLXT.MPR, Record: 27 * * Called By: ON SELECTION BAR 4 OF POPUP _0xg1eivt0* * Prompt: 清空记录* *Snippet: 2* ** **********************************************************PROCEDURE _0y40w84bruse tszap* ********************************************************** ** * _0Y40W84BV ON SELECTION BAR 4 OF POPUP _0xg1elfhv* ** * ProcedureOrigin:* ** * From Menu: TSGLXT.MPR, Record: 33 * * Called By: ON SELECTION BAR 4 OF POPUP _0xg1elfhv* * Prompt: 清空记录* *Snippet: 3* ** **********************************************************PROCEDURE _0y40w84bvuse djzap2、借书表单(JS.scx):程序:Form1.Init:thisform.text3.value=date()Command1(确定). Clickselect djlocate for dj.借书证号=thisform.text1.valueif found()=.f.messagebox("没有这个借书证号,请查证后重新输入",0+64) thisform.text1.value=""elseselect tslocate for ts.图书编号=thisform.text2.valueif found()=.f.messagebox("没有这本书,请查证后重新输入",0+64) thisform.text2.value=""elseselect jsset delete onlocate for js.图书编号=thisform.text2.valueif found( ) and js.借书日期 > js.还书日期messagebox("这本书借出未还!",0+48)thisform.text2.value=" "ELSElocate for 借书证号=thisform.text1.valueif found() and date()-js.借书日期 >30messagebox("此人有书超期未还,不能借书!!",0+64)elsego bottomappend blankreplace js.借书证号 with thisform.text1.value,js.图书编号 with thisform.text2.value; js.借书日期 with thisform.text3.valuemessagebox("借书成功",0+64)thisform.text1.value=""thisform.text2.value=""endifendifENDIFendifthisform.refreshCommnand2(取消).Clickthisform.RELEASE3、还书表单(hs.scx)程序:Form1.Initthisform.text3.value=date()Command1(确定).Clickselect djlocate for 借书证号=thisform.text1.valueif found()=.f.messagebox("没有这个读者记录,请查证后重新输入!",0+64)thisform.text1.value=""thisform.text1.setfocusELSEselect tsset delete onlocate for 图书编号=thisform.text2.valueif found()=.f.messagebox("没有这本书或这本书已归还了,请重新输入!",0+64)thisform.text2.value=""thisform.text2.setfocusELSESELECT jslocate for 借书证号=thisform.text1.value and 图书编号 = thisform.text2.value if found()=.f.messagebox("此输入有误,请重新输入!",0+16)thisform.text1.value=" "thisform.text2.value=" "elsereplace 还书日期 with thisform.text3.value deletemessagebox("还书成功",0+64)thisform.text1.value=""thisform.text2.value=""ENDIFENDIFENDIFthisform.refreshCommand2(返回).Clickthisform.release4、系统查询模块:1)、按编号查询图书(cqts.scx)程序:Command1(确定).Clickuse tslocate for 图书编号=thisform.text1.valueif found()=.t.thisform.text2.value=ts.图书编号thisform.text3.value=ts.书名thisform.text4.value=ts.作者thisform.text5.value=ts.出版社thisform.text6.value=ts.单价elsemessagebox("没有这个书名,请重新输入",0+64)thisform.text1.value=""endifthisform.refreshCommand2(取消).Clickthisform.release2)、按书名查询图书(asncqts.scx)Command1(确定).Clickclose alluse tslocate for 书名=trim(sm)if not found()messagebox("经查询没有这个书名,请查证后再输入",0+32)elseuse tssele all 图书编号, 书名, 作者, 出版社, 单价 from ts where 书名=trim(sm) endifthisform.releaseCommand2(返回).Clickthisform.release3)、按作者查询图书表单(azzcqts.scx)程序:Command1(确定).Clickclose alluse tslocate for 作者=trim(au)if not found()messagebox("经查询没有这个作者的书,请查证后再输入",0+32)elseuse tssele all 图书编号, 书名, 作者, 出版社, 单价 from ts where 作者=trim(au) endifthisform.releaseCommand2.(返回).Clickthisform.release4)、按出版社查询(acbscqts.scx)程序:Command1(确定).Clickclose alluse tslocate for 出版社=trim(pu)if not found()messagebox("经查询没有这个出版社的书,请查证后再输入",0+32)elseuse tssele all 图书编号, 书名, 作者, 出版社, 单价 from ts where 出版社=trim(pu) endifthisform.releaseCommand2(返回).Clickthisform.release5)、按借书证号查询读者(ajsxhcqdj.scx)程序:Command1(确定).Clickuse djlocate for 借书证号=thisform.text1.valueif found()=.f.messagebox("没有这个记录,请查证后重新输入",0+64)thisform.text1.value=""thisform.text1.setfocuselsethisform.text2.value=借书证号thisform.text3.value=姓名thisform.text4.value=性别thisform.text5.value=专业thisform.text6.value=班级thisform.refreshendifCommand2(取消).Clickthisform.release6)、按姓名查询读者(axmcqdj.scx)程序:Command1(确定).Clickclose alluse djlocate for 姓名=trim(xm)if not found()messagebox("经查询没有这个姓名,请查证后再输入",0+32) elseuse djsele all 借书证号, 姓名, 性别, 专业, 班级 from dj where 姓名=trim(xm) endifthisform.releaseCommand2(取消).Clickthisform.release7)、按专业查询读者(azycqdj.scx)表单程序:Command1(确定).Clickclose alluse djlocate for 专业=trim(jy)if not found()messagebox("经查询没有这个专业的学生,请查证后再输入",0+32)thisform.text1.value=" "thisform.text1.gotfocuselseuse djsele all 借书证号, 姓名, 性别, 专业, 班级 from dj where 专业=trim(jy) thisform.releaseendifCommand2(返回).Clickthisform.release8)、按班级查询读者表单(abjcqdj.scx)程序:Command1(确定).Clickclose alluse djlocate for 班级=trim(bj)if not found()messagebox("经查询没有这个班级的学生,请查证后再输入",0+32)thisform.text1.value=" "thisform.text1.gotfocuselseuse djsele all 借书证号, 姓名, 性别, 专业, 班级 from dj where 班级=trim(bj) thisform.releaseendifCommand2(返回).Clickthisform.release5、系统维护模块1)、添加图书档案表单(tjts.scx)程序:Command1(添加).Clickclose alluse tsif mand1.caption="添加"go bottomappend blankmand1.caption="保存"mand2.caption="放弃"elselocate for 图书编号=thisform.text1.valueif found()=.t.messagebox("书号已存在,请重新输入!",0+64,"信息")thisform.text1.value=" "elsego bottomreplace 图书编号 with thisform.text1.value, 书名 with thisform.text2.value;作者 with thisform.text3.value,出版社 with thisform.text4.value;单价 with thisform.text5.valuethisform.text1.value=""thisform.text2.value=""thisform.text3.value=""thisform.text4.value=""thisform.text5.value=""mand1.caption="添加"mand2.caption="关闭"thisform.text1.setfocusendifendifthisform.refreshCommand2(关闭).Clickif mand2.caption="关闭"thisform.releaseelseif mand1.caption="保存"deletepackthisform.text1.value=""thisform.text2.value=""thisform.text3.value=""thisform.text4.value=""thisform.text5.value=""mand1.caption="添加"mand2.caption="关闭"thisform.text1.setfocusendifthisform.refreshendif2)、修改图书模块(1)、输入修改图书号表单(syxgtsh.scx)程序:Text1.lostfocuspublic jszhjszh=thisform.text1.valueCommand1(确定).Clickclose alluse tslocate for 图书编号=trim(tsbh)if not found()messagebox("经查询没有这个记录,请查证后再输入",0+32) thisform.text1.value=" "thisform.text1.gotfocuselsedo form xgtsdathisform.releaseendifCommand2(取消).Clickthisform.release(2)修改图书档案表单(xgtsda.scx)程序:Form1.Initclose alluse tslocate for 图书编号=trim(tsbh)thisform.text1.value=图书编号thisform.text2.value=书名thisform.text3.value=作者thisform.text4.value=出版社thisform.text5.value=单价thisform.refreshCommand1(修改).Clickclose alluse jslocate for 图书编号=trim(tsbh)if found() and js.借书日期 > js.还书日期messagebox("这本书借出未还,不能修改!",0+16,"警告") elseclose alluse tslocate for 图书编号=trim(tsbh)private ii=messagebox("真的要修改这名读者吗?",4+32,"警告")if i=6replace 图书编号 with thisform.text1.value, 书名 with thisform.text2.value;作者 with thisform.text3.value,出版社 with thisform.text4.value;单价 with thisform.text5.valuemessagebox("成功修改该记录!",0+64,"信息")endifthisform.releaseendifCommand2(关闭).Clickthisform.release3)、删除图书档案(1)、输入删除图书号表单(syxqtsh.scx)程序:Text1.lostfocuspublic tshtsh=thisform.text1.valueCommand1(确定).Clickclose alluse tslocate for 图书编号=trim(tsh)if not found()messagebox("经查询没有这个学生,请查证后再输入",0+32) thisform.text1.value=" "thisform.text1.gotfocuselsedo form sqtsdathisform.releaseendifCommand2(返回).Clickthisform.release(2)、删除图书档案表单(sytsda.scx)程序:Form1.Initclose alluse tslocate for 图书编号=trim(tsh)thisform.text1.value=图书编号thisform.text2.value=书名thisform.text3.value=作者thisform.text4.value=出版社thisform.text5.value=单价thisform.refreshCommand1(删除).Clickclose alluse jslocate for 图书编号=trim(tsh)if found() and js.借书日期 > js.还书日期messagebox("这本书借出未还,不能删除!",0+16,"警告") elseclose alluse tslocate for 图书编号=trim(tsh)private ii=messagebox("真的要删除这个记录吗?",4+32,"警告") if i=6deletepackmessagebox("成功删除了该记录!",0+64,"信息") thisform.releaseendifendifCommand2(关闭).Clickthisform.release4)、清空图书档案程use tszap5)、添加读者档案表单(tjdj.scx)程序:Command1(添加).Clickclose alluse djif mand1.caption="添加"go bottomappend blankmand1.caption="保存" mand2.caption="放弃"elselocate for 借书证号=thisform.text1.value if found()=.t.messagebox("借书证号已存在,请重新输入!",0+64,"信息")thisform.text1.value=" "elsego bottomreplace 借书证号 with thisform.text1.value, 姓名 with thisform.text2.value;性别 with thisform.text3.value,专业 with thisform.text4.value;班级 with thisform.text5.valuethisform.text1.value=""thisform.text2.value=""thisform.text3.value=""thisform.text4.value=""thisform.text5.value=""mand1.caption="添加"mand2.caption="关闭"thisform.text1.setfocusendifendifthisform.refreshCommand2(关闭).Clickclose alluse djif mand1.caption="添加"go bottomappend blankmand1.caption="保存"mand2.caption="放弃"elselocate for 借书证号=thisform.text1.valueif found()=.t.messagebox("借书证号已存在,请重新输入!",0+64,"信息")thisform.text1.value=" "elsego bottomreplace 借书证号 with thisform.text1.value, 姓名 with thisform.text2.value;性别 with thisform.text3.value,专业 with thisform.text4.value;班级 with thisform.text5.valuethisform.text1.value=""thisform.text2.value=""thisform.text3.value=""thisform.text4.value=""thisform.text5.value=""mand1.caption="添加"mand2.caption="关闭"thisform.text1.setfocusendifendifthisform.refresh6)、修改读者档案模块(1)输入修改读者借书号(sysgdjh.scx)程序:Text1.Lostfocuspublic jszhjszh=thisform.text1.valueCommand1(确定).Clickclose alluse djlocate for 借书证号=trim(jszh)if not found()messagebox("经查询没有这个学生,请查证后再输入",0+32) thisform.text1.value=" "thisform.text1.gotfocuselsedo form xgdjdathisform.releaseendifCommand2(返回).Clickthisform.release2)修改读者档案(xgdjda.scx)程序:Form1.Initsele djlocate for dj.借书证号=trim(jszh) thisform.text1.value=dj.借书证号thisform.text2.value=姓名thisform.text3.value=性别thisform.text4.value=专业thisform.text5.value=班级thisform.refreshCommand1(修改).Clickclose alluse jslocate for 借书证号=trim(jszh)if found() and js.借书日期 > js.还书日期messagebox("这名读者有书未还,不能修改!",0+16,"警告")elseclose alluse djlocate for dj.借书证号=trim(jszh)private ii=messagebox("真的要修改这名读者吗?",4+32,"警告")if i=6replace 借书证号 with thisform.text1.value, 姓名 with thisform.text2.value;性别 with thisform.text3.value,专业 with thisform.text4.value;班级 with thisform.text5.valuemessagebox("成功修改该记录!",0+64,"信息")endifthisform.releaseendifCommand2(关闭).Clickthisform.release7)删除读者档案(1)、输入删除读者号(sysqdjh.scx)程序:Text1.Lostfocuspublic jshjsh=thisform.text1.valueCommand1(确定).Clickclose alluse djlocate for 借书证号=trim(jsh)if not found()messagebox("经查询没有这个学生,请查证后再输入",0+32) thisform.text1.value=" "thisform.text1.gotfocuselsedo form sqdjdathisform.releaseendifCommand2(返回).Clickthisform.release(2)删除读者档案(sqdjda.scx)程序:Form1.Initsele djlocate for dj.借书证号=trim(jsh) thisform.text1.value=dj.借书证号thisform.text2.value=姓名thisform.text3.value=性别thisform.text4.value=专业thisform.text5.value=班级thisform.refreshCommand1(删除).Clickclose alluse jslocate for 借书证号=trim(jsh)if found() and js.借书日期 > js.还书日期messagebox("这名读者有书未还,不能删除!",0+16,"警告") elseclose alluse djlocate for dj.借书证号=trim(jsh)private ii=messagebox("真的要删除这名读者吗?",4+32,"警告")if i=6deletepackmessagebox("成功删除了该记录!",0+64,"信息") thisform.releaseendifendifCommand2(关闭).Clickthisform.release8)清空读者档案过程use djzap6、退出模块使用命令,退出本系统。