免费预览已结束,剩余14页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
图书管理系统一、系统规划1、现行系统的初步调查及项目开发背景很多学校和单位都有自己的图书馆或阅览室,需要管理大量的图书或期刊杂志。开发图书管理系统可以有效地管理图书资源,控制借书、还书的流程,对图书馆或阅览室的管理有很大的益处,直接关系到图书的借用率,所以图书管理系统应该能够为管理员和读者提供充足的信息和快捷的查询手段。现在我国的许多学校和单位的图书管理仍采用手工管理方式, 经调查发现手工管理图书已经不能适应用户的需求,因为手工管理方式效率低下、保密性差, 查询图书、统计图书的库存数量和借出数量较困难。随着计算机技术、网络技术的发展,微机的使用越来越普及,其强大的功能己为人们深刻认识,它己进入人类社会的各个领域并发挥着越来越重要的作用。信息时代这种传统的图书管理方式必然被以计算机为基础的管理信息系统所取代。因为使用计算机对图书信息进行管理,具有手工管理方式无法比拟的优点,例如检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高图书管理的效率。因此有必要在现行手工管理图书的基础上开发图书管理系统,以适应现行图书管理工作的要求,提高工作效率。2、制订系统开发计划表:略二、系统分析1、现行系统业务流程的调查对某学校进行实地调查,该学校的图书室藏书有10多万册,还订阅了50多种各个学科的杂志,但其现行图书管理工作都是采用传统的手工管理,经过对其图书管理工作中的图书信息、读者管理及借书管理工作的全面调查研究,其现行手工流程具体分析如下。(1)图书登记:对上级分配、学校购入和社会捐赠的图书进行图书信息登记。 (2)读者登记:图书管理员根据学校有关部门提供的教师花名册和学生花名册进行读者登记,然后填发借书证。学生毕业和教师调出时将其借书证注销。(3)借书管理:读者持借书证到图书室借书,图书管理员将借书日期填写在书籍卡片上,将卡片夹在借书证中间,存放在图书室。学生看完后,送还所借书籍,收回借书证或另借其他书籍。 这种传统的手工管理方式存在着许多缺点,如,效率低、保密性差,一方面导致教师、学生对学校图书室藏书情况不了解,图书室究竟有哪些图书也不知道;另一方面图书管理员对图书管理工作倍感头痛,因为时间一长,将产生大量的纸质文档,这对于查找、更新和维护都带来了不少的困难,耗费劳动力大,难以避免错误的产生,如借书证挂失后,仍有少数学生冒用己挂失的借书证借出图书,造成图书外流。2、用户需求分析经与学校领导和图书管理员交流,他们要求利用计算机管理图书,以便能快捷地对图书信息进行维护与查询,对读者的借书情况进行跟踪分析,提高图书管理的质量。对新开发的图书管理系统的具体需求如下。(1) 学校领导的需求使用图书管理系统后,只配3至5名图书管理员。能及时了解学校图书室的藏书情况和学生、老师的借书情况。能及时了解哪些图书比较受师生的欢迎。(2) 图书管理员的需求快捷地添加、修改、查询图书分类信息和图书信息。能及时掌握图书室的藏书数量及种类,各个学科的图书数量,迅速盘点图书库存。快捷地添加、修改、查询借书证信息,且具有借书证挂失功能。 图书的借出、归还、续借、挂失、催还手续简便,效率高。为学校教师和学生提供快捷的查询手段,让教师和学生能够及时查询图书信息,更好地为读者服务。(3) 性能要求功能齐全,安全稳定,可靠性高。操作简便,使用灵活,实时性强,准确率高。具有海量存储能力和快速交换速度,自动及时进行数据备份。对数据有多重保护措施,具有断电保护功能和异常情况的及时处理功能。 系统的安全保密性高,能防止非法访问。系统出现故障时,能尽可能提供较为明确的出错提示及解决方法指导,具备必要的错误保护机制。3、新系统逻辑模型的建立(1) 新开发的图书管理系统的功能分析在图书管理系统中,主要有三类外部实体:图书管理员、读者、学校领导。图书管理系统的大部分功能是为图书管理员设置的。经调查分析,新开发的图书管理系统应具有以下功能。 查询和维护读者基本信息,包括读者信息的增加、修改、删除等。 管理读者借书证,包括借书证的办理、挂失和注销等。 登记新书,主要是对上级分配、学校购入和社会捐赠的图书进行主登记,即记载图书信息,若图书室有10本同样的图书,在图书信息表中只记载一条信息,同时副本数记为10。 图书编目,即对登记的新书进行编码后入总书目表,总书日表中记载了图书室每一本书的信息,若图书室中有10本相同的图书,在总书目表中对应有10条记录。 图书的流通处理,即借书、还书处理。(2) 绘制数据流图绘制数据流图时,只考虑图书员和读者两个外部实体,顶层数据流图如同1所示。 图1 顶层数据流图0层数据流图如图2所示。由于1层图没有完整绘制, 0层图中只属于一个加工的文件(例如权限表)也在0层图上出现。0层数据流图通过反映整个系统中不同数据的流向,来揭示系统的组成结构以及各组成部门之间的关系,这种关系主要体现在对数据的操作和处理上。借阅管理的1层数据流图如图3所示。 图2 o层数据流图 图3 1层数据流图之一(借阅管理)借阅管理的2层数据流图如图4所示。借书处理部分,首先根据输入的借书证号验证借书证的有效性,包括借书证的状态是否有效,是否已达到图书的最大借书数量。其次,检查该借书证是否存在超期图书未罚款的情况。最后,如果满足所有的借书条件,则进行借书处理:若不满足某个条件,则返回相应的提示,告诉图书管理员做相应的处理。借书处理同时操作总书目表和图书借阅表,将当前所借图书的信息写入图书借阅表中,将总书目表中该图书的状态标志设置为借出状态。 图4 2层数据流图之一2层数据流图还书处理部分,首先检查图书条型码,判断是否为本图书室的图书。如果为有效条型码则判断图书是否超期,如果己超期,则记录超期应罚金额到超期罚款表,等待汇总读者总罚款,再交罚款且打印罚款单。最后进行还书处理,设置总书目表中该图书为在藏状态,同时从图书借阅表中删除当前所还图书的记录。 (3) 数据字典数据字典是进行数据收集和数据分析所获得的主要成果,是系统中各类数据描述的集合。数据字典通常包括数据项、数据流、数据存储、处理逻辑。数据项: 名称:借书证号 别名:借书证号 说明:惟-标识一个借书证 类型:字符型长度: 12取值范围: 000000000001 999999999999数据存储文件:名称:图书借阅表 别名:无简述:存储读者借书信息 组成:流通号+条型码+借书证编号+借出日期+应归还日期+挂失日期+借书标记 组织方式:数据表文件以流通号为关键字进行索引 查询要求:要求能立即查询并修改数据流: 名称:还书 别名:无 简述::还书时附带的数据 数据流来源:读者 数据流去向:检查条型码 数据流量: 300份/天 组成:条型码+借书证编号+借出日期+借书标记加工逻辑:名称:审核借书证编号:3.1.1激发条件:接受到借书证 输入:借书证号 输出:认定为有效的借书证号 处理逻辑:根据借书证表和读者借书证号判断 if 读者借书证号在借书证表中存在 then 借书证有效else 借书证无效三、系统设计 1、系统总体结构设计与功能模块划分本系统的主要功能模块包括如下。(1) 图书管理模块图书分类管理功能:为了便于对库存的图书存放、查找,需要对图书进行分类。可以实现添加、修改、删除、查询图书分类信息。图书基本信息管理功能:包括登记新书,修改、查询、删除图书基本信息。 图书编目功能:对登记的新书进行编码后入总书目表,总书目表中记载了图书室每一本书的信息。图书库存管理功能:包括图书入库管理、图书库存盘点、查询图书库存记录。 (2) 读者管理模块读者类别管理功能:为不同类别的读者设置不同的限借数量、限借期限、有效期限。 读者信息管理功能:包括添加、修改、查询、注销读者信息。 借书证管理功能:包括添加、修改、查询借书证信息,查询指定借书证的借书信息, 借书证挂失。(3) 借书管理模块借书管理模块包括借书、还书、续借、图书挂失、催还、超期罚款、查询等管理功能。 (4) 系统管理模块包括添加、修改、删除、查询系统用户名、口令、身份、数据备份、数据恢复等功能。 2、绘制功能结构图 图书管理系统的功能结构图如图5所示。 图5 图书管理系统的功能结构图3、系统配置方案设计鉴于本系统的业务性质,必须选择具有较高的可靠性、稳定性和必要的容错能力的计算机硬件和软件系统,以保证任何情况下都不至于丢失、损坏数据。必须具有较高的响应速度,以保证各项具体业务的顺利进行。应考虑具有良好的可维护性,可操作性和可扩充性,以保证将来系统规模的扩展和升级的需要。4、开发与运行环境的选用开发平台:windows 2000 server 开发前台工具: visual foxpro 6.0操作系统对整个网络起着重要的作用, windows 2000作为一种强健的、多用途的操作系统,不仅能够运行强有力的客户/服务器应用软件,还可以提供可靠的文件与打印服务,再加其内置的通信与intemet/intranet服务功能,以及安装、使用、管理和维护的方便性,因此,本系统采用microsoft windows 2000 server作为操作系统。本系统准备采用客户机/服务器( c/s)结构模式。c/s结构的最大优势在于广泛采用了网络技术,将系统中的各部分任务分配给分布在网络上的担任不同角色的计算机。把较复杂的计算和管理任务交给服务器完成,而把一些频繁与用户打交道的任务交给客户机完成。通过这种结构完全实现了网络上信息资源的共享。开发基于c/s结构的管理信息系统所用到的开发工具包括前台开发工具和后台数据库管理系统。前台开发工具可以选择visual basic、visual c+、visual foxpro、delphi、powerbuilder 等软件工具,可以用它们来设计直观明了的人机界面,主要根据开发者对开发工具的熟悉程度而定。本系统的前端开发工具采用visual foxpro 6.0。5、编码(code)设计(1) 图书的isbn书号采用中国标准书号。(2) 其他编码的设计图书管理系统中需要设计编码的数据项有读者类别编码、部门编码、读者编码、借书证编码、图书条型码等。例如读者类别编码取1位字符,取值分别为1、2、3、4,分别代表特殊读者、图书管理员、教师、学生。部门编码取2位字符。借书证编码取12位字符,左 起第14位为办证年份,第5位为读者类别编码,第6和7位为部门编码,第812为读者顺序号。6、数据库设计(1) 概念结构设计经过分析后设计出如图6所示e-r图。为了能够清晰看出不同实体之间的关系, 各实体的属性没有出现在e-r图中,而用表格的形式单独列出,各实体名称及其属性参见表1。e-r图中各实体的关系说明如下。 简书目记载图书室中所登记的一类书,而总书目记载图书室中的每一本书,这两个实体之间为一对多关系。 图书类型中一种类型的图书,总书目则有多本,这两个实体之间为一对多关系。 图书借阅表中记载图书借出的情况,它和总书目之间为一对一关系。 超期罚款表中记载在借阅图书中超期未罚的记录,它和图书借阅是一对一关系。 一本借书证可以同时借阅多本图书,每一本图书在同一时间内只能被一个借书证所借,这两个实体之间为一对多关系。 读者类型表中的同一类读者对应于多个不同的读者,这两个实体间为一对多关系。 一个读者只能拥有一本借书证,这两个实体之间为一对一关系。 一个部门有多位职员,这两个实体之间为一对多关系。 图6 图书管理系统的e-r图表1 图书管理系统中的关系表序号 关系名称 关系的属性1 图书类型 分类号、分类名称、存放位置、描述信息2 简书目 图书编号、isbn、条型码、书名、作者、出版社、出版日期、价格、分类号、字数、页数、副本数3 总书目 条型码、图书编号、入库日期、图书状态4 超期罚款 借书证编号、条型码、超期天数、罚款金额5 图书借阅 条型码、借书证编号、借出日期、应归还日期、借书标记6 借书证 借书证编号、读者编号、发证日期、类别编号、借书证状态7 读者 读者编号、借书证编号、姓名、部门、证件号码、类别编号、电话8 读者类型 类别编号、类别名称、限借数量、限借期限、超期日罚金9 部门 部门编号、部门名称、电话、负责人(2) 逻辑结构设计将概念模型转化为关系模型,对于图6所示的图书管理系统e-r图,经过转化后的关系见表1,表中加下划线的为关系的主键。(3) 物理结构设计选用了vfp作为数据库管理系统,相应的数据库、数据表应符合vfp的要求。字段的确定根据关系的属性同时结合实际需求,字段名称一般采用英文字母或汉语拼音表示,字段类型的选取还需要参考数据字典。将表1所示的关系设计成相应的数据表(表2),为便于对照,字段名暂用汉字表示,具体设计表结构中再换成英文或拼音。下面以简书目表和总书目表为例说明数据表结构的设计,见表3和表4。进行数据表设计时,要注意null (表示为空)的使用,主键不允许为空。若一个字段可以取null,则表示该字段可以不输入数据。但对于允许不输入数据的字段来说,最好给它设定一个默认值,即在不输入值时,系统为该字段提供一个预先设定的默认值,以免由于使用null值带来的不便。表2 图书管理系统中的数据表 简书目表cbookinfo)表3 简书目表的表结构字段名 类 型 长 度 是否为主键 是否允许为空 中文说明bookid 字符型 10yes 否 简书目标识isbn 字符型 18 否 isbn号bookname 字符型 32 是 图书名称author 字符型 16 是 作者publisher 字符型 30 是 出版社publishdate 日期型 8 是 出版日期price 浮动型 7.2 是 价格typenum 字符型 5 否 分类号words 整型4 是 字数pages 整型4 是 页数copy 整型4 否 副本数总书目(bookstore) 表4 总书目的表结构字段名 字段类型 长 度 是否为主键 是否允许为空 中文说明tmid 字符型 6 yes 否 条型码bookid字符型10 否 简书目标识(为bookinfo中主键)indate日期型8 否 入库日期state 字符型l 是 图书状态(0为在藏, 1为借出)各表的主键、外键、索引以及各表间的关系如图7所示。说明:为便于绘制图形,图中有些表省略了一些字段。图中标pk (primary key)的表示主键,标fk (fore key)的表示外键,标i (index)的表示索引。 图7 各表的主键、外键、索引以及各表间的关系图 7、输入输出设计输入输出设计的基本要求如下。(1) 输入数据简单方便,并提供实时帮助。(2) 输入数据可以复查,但确定输入后不可随意修改,应经过批准后才能修改。 (3) 输出的数据格式符合标准,输出操作简单、快捷。(4) 输出数据应提供文本和电子报表两种形式。8、用户界面设计用户界面充分发挥可视化程序设计的优势,采用图形化操作方式,适应用户的能力和要求,尽量做到简单、方便、一致,为用户提供友好的操作环境。用户界面设计保持风格一致,系统与各子系统的命令或菜单采用相同或相似的形式。数据输入界面的设计应以方便输入为准。查询用户、数据录入员及部门管理员只能在工作站登录,无权直接对数据库进行任何操作,由系统管理员完成各种对数据库的直接操作。在各个层次和各种操作界面上,尽可能提供在线帮助功能和一定的错误恢复功能。图书管理系统的界面由窗口构成,一般分为登录窗口、主窗口、多个子窗口、对话框、 报表等。子窗口的设计要和系统功能联系,以不同的系统功能来构建相应的窗口。 9、对话柜的设计对话框一般是应用程序和用户之间的交互窗口,系统通过对话框给用户关于操作的相关信息,一般要求用户进行响应。对话框的类型一般分为提示、警告、帮助等类型。 10、报表的设计管理信息系统中一般需要设计一些报表来进行数据的统计和显示,报表的设计格式要参照应用程序设计的要求,一般分为主从表结构、单表结构、分组统计报表等。 四、系统实施与测试1、图书管理系统程序代码的编写(1) 图书管理系统的系统主文件public currentuser &用于保存当前用户用户名public currentpwd &用于保存当前用户口令public currentpop &用于保存当前用户权限代码public login &用于保存当前用户是否登录成功*设置初始值currentuser= currentpwd=cuentpop=login=.f.application. visible=.f. &隐藏visual f oxpro主窗口set default to d:图书管理系统 &设置默认的访问路径do form formssysuserlogin.scx &显示登录表单read events &建立事件循环if loginapplication .visible=.t. &显示visual foxpro主窗口application .caption=图书管理系统do menulibrarymenu.mpr &登录成功,显示图书管理系统菜单read events &建立事件循环endifquit &关闭visual f oxpro主窗口(2) 图书管理系统的登录窗口登录窗口的主要任务是验证用户身份,以防止非法用户进入系统。登录窗口一般采用模态方式显示,即用户必须进行响应,不能切换到其他窗口。(3) 图书管理系统的主窗口主窗口是整个图书管理系统的主界面,用来管理和启动系统,一般由菜单、工具栏和状态栏等构成。图书管理系统的主窗口如图8所示。 图8 图书管理系统的主窗口(4) 图书管理系统的各个子窗口根据前面的功能分析可知,图书管理系统的主要功能包括:图书管理、读者管理、借阅 管理和系统管理四个功能模块。 图书管理模块的主要子功能模块的功能及其程序代码新书编目管理:主要是进行图书登记,操作的表是简书目表,记载新采购图书的信息,每一种图书对应一条记录,同时在副本数量中记录其入库数量。另外还可以对图书信息进行修改、删除等。当用户单击添加按钮时,进入添加记录状态,取消各个文本框的数据绑定属性和只读属性,并清空,使其进入编辑状态。thisform.txtbookname .controlsource=thisform.txtbookname . value= &取消各个文本框数据绑定属性在保存后再恢复thisform.txtcopy. readonly=.f. &取消文本框的只读属性 thisform.isadd=.t. &设置添加状态标志thisform.caption=新书编目管理-添加 &修改表单标题this form. mynavigator 1.enabled=.f. &禁用记录导航条thisform.cmdexit.enabled=.f. &禁用退出按钮thisform.cmdadd.enabled=.f. &禁用添加按钮 thisform.cmdedit.enabled=.f. &禁用修改按钮 thisform.cmddelete.enabled=.f. &禁用删除按钮当用户单击修改按钮时,进入修改记录状态,取消各个文本框的数据绑定属性和只读属性,使其进入编辑状态。 &代码参见前面 thisform .cmdadd .enabled=.f. &禁用添加按钮当用户单击保存按钮时,保存新添加的记录或修改的当前记录。首先检验输入的数据是否有效,然后使用insert语句将添加的记录或使用replace语句将修改的当前记录保存至数据表中,且恢复各个文本框的数据绑定属性和只读属性。cname=alltrim(thisform. txtbookname. value)c writer=alltrim( thisform. txtauthor. value) &保存文本框中的值 if empty(cname) &验证书名是否为空 messagebox(书名不能为空! ,16,图书管理)thisform. txtbookname.value=thisform. txtbookname.setfocus return endif. &验证文本框中是否为空*检验书名和副本数是否重复nrecno=recno() &记录当前记录编号locate for altrim(书名)= =cname and alltrim(副本数)=ccode if found()messagebox(书名: 与中与第+;alltrim(str(recno()+条记录重复! ,16,新书编目管理) this form. txtcopy.setfocusgo nrecnoreturnendif*将通过验证的数据保存到bookinfo表if thisform.isaddinsert into bookinfo (书名,图书编号,作者,出版社,isbn,价格,副本数,字数,页数,出版日期,分类号) ;values (cname,cindex,c writer,cpb,ccontent,ckey,ccode,nsum,npage,dpd,tnum)elseselect bookinforeplace书名withcname,图书编号with cindex,作者with cwriter,出版社with cpb,; isbn with ccontent,价格withckey具ij本数with ccode,字数withnsu日1 , ; 页数withnpage,出版日期with dpd,分类号with tnum record nrecnoendif*恢复各个文本框数据绑定属性this form. txtbookname.controlsource=bookinfo.书名this form. txtauthor.controlsource=bookinfo.作者.*恢复文本框的只读属性 thisform.txtbookname.readonly=. t.thisform. txtauthor.readonly=. t.*使新添加的记录或被修改记录成为当前记录 if thisform.isaddgo bottomelsego nrecnoendifthisform.refreshmessagebox(数据保存成功,64,新书编目管理it)*清除编辑和添加状态标记thisform . isadd=.f.thisform. isediting=.f. 当用户单击退出按钮时,退出当前添加或修改状态,恢复各个文本框的数据绑定属性和只读属性。if thisform.isadd or thisform.iseditting nrecno=recnoo &记录当前记录编号*恢复各个文本框数据绑定属性thisform.txtbookname.controlsource=bookinfo.书名 &恢复各个文本框数据绑定属性go nrecnothisform.re仕esh*恢复文本框的只读属性 thisform.txtbookname.readonly=. t. &恢复文本框的只读属性*清除编辑和添加状态标记(略) .endif当用户单击删除按钮时,删除当前记录。if reccount() 1return &在无记录时直接返回endifif messagebox (是否删除当前记录,36,新书书目管理)=6nrecno=recno()deletepack*使被删除记录的下一条记录成为当前记录if reccount()= 1go topelseif nrecno=reccount()+ 1 go bottomelsego nrecnoendif endifthisform.re丘eshendif当用户单击关闭按钮时,关闭表单。if messagebox(是否退出新书编目管理? ,36,新书编目管理)=6thisform.release &关闭新书编目管理表单endif图书入库管理:主要进行图书入库操作:即从简书目库中取出一条记录:并对其编条型码,然后写入总书目库中,一本书的所有副本都要进行编码入库。(程序代码略) 读者管理的主要子功能模块读者类型管理:主要对各类读者的限借数量、限借期限、超期日罚金进行设置,对于不同类别的读者,设置不同的值。当用户单击保存按钮时,首先检验读者类型表中是否有记录,如果没有记录,则使用insert into语句为表添加记录,否则使用replace 语句修改原来的记录数据。with this form if recount()=oinsert into readertype (类别编号,限借数量,限借期限,超期日罚金);.values ( 1 ,.text2.value,.text3.value,.text4.value). &保存各种读者类型数据elsereplace限借数量with . text2 . value ,限借期限with .text3.value, ; 超期日罚金with .text4.value for类别编号=1 &保存各种读者类型数据endifendwithmessagebox(数据保存成功,64,读者类型管理)读者基本信息管理:主要对读者信息表中的读者的编号、姓名、借书证号等数据进行添加、修改和删除等操作。如图9所示,代码与前面图书管理相似,在此不再重述,读者可参考前面的代码。 图9 读者管理窗口借书证管理:主要进行借书证的办证、挂失、注销等操作。对于借书证注销处理:就是从借书证表中删除该借书证号,其操作较为复杂,如图10所示。 图10 借书证注销处理示意图 借阅管理的主要子功能模块借阅管理子功能模块主要完成图书的借阅、续借、归还等管理功能。所借图书的超期判断用户在借书证号文本框中输入借书证号并按回车键,接着执行select命令,获得读者的身份信息和借书清单,并显示在表单中,在显示信息的同时判断该借书证是否存在超期未还图书,如果读者借阅的部分图书过期,则显示相应的提示信息,并禁用借书和续借按钮,先进行罚款处理,然后才能进行借书处理, 如图11所示。 图11 图书借阅管理窗口lparameters nkeycode, nshiftaltctrlif nkeycode= 13ccode=alltrim( this. text)if not empty( ccode)*在输入借书证编号不为空时执行查询获得读者个人数据select reader. * ,限借数量,限借期限,部门名称from reader,readertype,department; where reader.类别编号= =readertype.类别编号and alltrim(借书证编号)= =ccode; and reader.部门编号= =department.部门编号into cursor temp cursor *显示读者个人数据select tempcursorif recount()=omessagebox(借书证编号输入错误,16,图书借阅管理) returnelsego top this form. txtname.value=姓名 this form. txtdept.value=部门名称if限借期限=0thisform. txtlenddate. value=无限制elsethis form. txtlenddate. value=alltrim( str(限借期限)+个月”endifdo casecase类别编号=1thisform剧type. value=特殊读者 this form. txtsum. value=24 case类别编号=2.endcaseendifuse &关闭临时表*执行查询获得读者借阅图书数据select borrow.条型码,书名,借出日期,应归还日期 from borrow,bookstore,bookinfo ; where alltrim(borrow.借书证编号)= =alltrim(this.text) and borrow.条型码=;bookstore.条型码and bookstore .简书目id= =bookinfo.简书目id into cursor temp cursor*显示读者个人借书清单thisform. txtlended. value=recount()thisform. txtcode. value=条型码thisformtxtoutdatevalue=借出日期thisform.grid l.recordsourcetype= 1thisform.grid l.recordsource=tempcursorthisform.gridl.setall(dynamicbackcolor, lif( not (应归还日期dateo and十; (not empty(应归还日期), rgb(255,255,255), rgb(255,0,0), column) *提示图书过期信息select tempcursorgo topcmsg=n=oif应归还日期dateo and (not emp可(应归还日期)cmsg=cmsg+ ”+条型码+chr(13)+chr(10)n=n+lendif *根据读者借阅图书册数是否达到借书数量限制禁用或启用借书按钮 if val ( thisform. txtsum. text )=val( thisform. txtlended. text)thisform.cmdlend.enabled= .f. else thisform.cmdlend.enabled=. t.endifthisform.cmdreturn.enabled=. t.if no &检测是否有过期图书cmsg=共+alltrim(str(n)+本图书过期,条型码如下: + chr(13)+chr(lo)+cmsg messagebox( cmsg, 16,图书借阅管理) *有图书过期时禁用借书、续借按钮thisform.cmdlend.enabled= .f.thisform. cmdrelend. enabled=.f.else*无图书过期时启用借书、续借按钮this form. cmdlend. enabled=. t.thisform.cmdrelend.enabled=. t.endifendifendif图书的借阅图书借阅步骤为:先判断借书证是否有效:根据所输入的借书证号扫描借书证表, 找到该借书证所在的记录,如果借书证状态字段值为0,则表示该借书证无效,不允许借书。然后进行借书处理,根据图书条型码,检查库存图书表是否存在该条型码的图书,以及读者是否借阅了该条型码图书。只有在通过校验后,才将所借图书的信息写入到借阅表中, 同时取当天的日期为借书日期,由借书证号找到该读者信息,根据读者类型计算出还书日期, 并判断是否超过该类型读者限借数量。最后根据所借图书的条型码在总书目库中设置图书为借出状态。程序代码如下。ccode=alltrim( this form. txtcode. text)select bookstorelocate for alltrim(条型码)= =ccode and alltrim(图书状态)= =1if not found()messagebox(无条型码图书,16,图书借阅管理) thisform. txtcode.setfocusreturnendif*检查读者是否已经借阅了该条型码图书selecttempcursorlocate for alltrim(条型码)=ccodeif found( )messagebox(读者已经借阅该条型码图书,16,图书借阅管理) thisform.txtcode.setfocusreturnendif*保存读者借书记录ndate=val( thisform. txtlenddate. text)*特殊读者 ifndate=oinsert into borrow (条型码,借书证编号,借出日期,借书标记) ; values(ccode,alltrim(thisform. txtlnum. text),date(),”1”)elsenyear=year( date()nmonth=month( date()nday=day( date()nmonth=nmonth+ndmeif nmonth 12nyear=nyear+1nmonth=nmonth-12endifddate=date(nyear,nmonth,nday)insert into borrow (条型码,借书证编号,借出日期,应归还日期,借书标记) ;values (ccode,alltrim( thisform.txtnum.text),date(),ddate, 1 )endif.*刷新读者借书清单,执行查询获得读者借阅图书数据cnum=alltrim( this form. txtnum. text)select borrow.条型码,书名,借出日期,应归还日期from borrow,bookstore,bookinfo ; where alltrim(borrow.借书证编号)=cnum and borrow.条型码=bookstore.条型码; and bookstore.简书目id=bookinfo.简书目id into cursor temp cursor *显示读者个人借书清单this form. txtlended. value=reccountothisform.grid l.recordsourcetype= 1thisform. grid 1.recordsource=tempcursor*根据读者借阅图书册数是否达到借书数量限制禁用或启用借书按钮if this form. txtsum. value=thisform. txtlended. valuethisform. cmdlend. enabled=.f.elsethisform.cmdlend.enabled=. t.endif当用户单击续借按钮时,先输入图书条型码,检查读者是否借阅了该条码的图书,通过检验后修改相应的借书记录中的借书日期和应归还日期,并刷新读者借书清单。程序代码与前面的借阅相似,在此不重复说明。图书的归还图书归还步骤为:输入所还图书的条型码,判断该图书是否超期,若无超期情况,则首先设置总书目表中的图书状态标志为在藏,然后删除借阅表中的当前记录,并刷新读者借书清单。若有超期情况,可分为两种情况来处理,一种是根据所还图书的条型码在借阅表中找出借书证号,根据借书证号找到读者信息,根据读者类型表中该读者超期应付的日罚金超 期天数计算出超期应罚总金额,进行罚款处理。另一种情况是,若当时没有进行罚款处理,则将该借书证号、超期图书的条型码、超期天数及
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生产安全主题班会
- 内镜室医疗安全提醒
- 铝扣板候车室装修协议
- 前台礼仪规范塑造良好企业形象
- 展览活动吊车租赁合同样本
- 化学品安全异常处理办法
- 石家庄市文化交流中心租赁合同
- 制度评审在制造业的作用
- 市场合作经营协议
- 《人体早期发育》课件
- 航空与航天学习通超星期末考试答案章节答案2024年
- DB15-T 3677-2024 大兴安岭林区白桦树汁采集技术规程
- Unit-3-UI-The-Road-to-Success-高中英语新教材外研版(选择性必修第一册)
- 2024眩晕病(原发性高血压)优势病种诊疗方案
- 英语雅思8000词汇表
- 广东省中山市2023-2024学年九年级上学期期末语文试题及答案
- 2024秋八年级英语上册 Unit 10 If you go to the partyyoull have a great time Section B(3a-Self Check)教案 (新版)人教新目标版
- 2024年山东省济南市中区六年级数学第一学期期末统考试题含解析
- 人行道开挖施工方案
- 小学奥数-几何模型分类总结(鸟头、燕尾、风筝、一般模型等)
- 2024-2030年中国黄酒行业供需分析及发展前景研究报告
评论
0/150
提交评论