图书管理系统论文_第1页
图书管理系统论文_第2页
图书管理系统论文_第3页
图书管理系统论文_第4页
图书管理系统论文_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、图书管理系统的实现及应用【摘要】本文介绍了数据库管理系统的基本设计方法,详细阐述了整个应用系统的设计思路,并对各部分设计周期进行了详尽的分析,最终达成了一个完整的设计方案;在文章的最后,还根据数据库系统的调试结果,提出了可以进一步改进的部分,以便在投入实际应用后系统可以更加稳定可靠的工作。 本文的数据库系统是一个图书管理系统,包括管理员界面和借阅者界面,分别有添加、删除、查阅等功能。【关键字】图书管理系统 图书管理系统的实现 数据库系统 目 录第一章、图书管理系统设计概述.1.1统一开发的背景及设计目标.1.2系统设计原则第三章、图书管理系统具体设计2.1 图书管理系统总体规划2.2 系统设计

2、.2.3需求分析.2.4概念设计.2.5逻辑设计.第二章、数据库系统设计3.1数据库设计概述3.2数据库设计周期第四章、数据库实现4.1数据库的建立.4.2数据库应用程序的实现4.3图书管理系统的调试4.4装入图书数据4.5图书管理系统的实现.4.6图书管理系统的编译和发行第五章、结束语参考文献第一章、图书管理系统设计概述1.1统一开发的背景及设计目标 近年来,随着图书馆规模的不断扩大,图书数量也相应的增加,有关图书的各种信息量也成倍增加,面对着庞大的信息量,传统的人工方式管理会导致图书馆管理上的混乱,人力与物力过多浪费,图书馆管理费用的增加,从而使图书馆的负担过重,影响整个图书馆的运作和控制

3、管理,因此,必须制定一套合理、有效,规范和实用的图书管理系统,对图书资料进行集中统一的管理。系统开发的总的设计目标是实现图书管理的系统化、规范化和自动化,实现对图书资料的集中统一的管理。1.2系统设计原则1.2.1实用性原则:确保系统具有良好的系统性能,友好的用户界面,较高的处理效率,便于使用和维护,并采用成熟的技术。1.2.2先进性原则:尽量采用先进而且成熟的技术,使系统具有较高的技术水平和较长的生命周期。1.2.3开放性、安全性、可靠性原则。1.2.4兼容性原则:对于所选硬件系统及平台,能很好地适应开发和使用的需要。第二章 图书管理系统具体设计2.1图书管理系统总体规划图书馆在正常运营中总

4、是面对大量的读书信息、书记信息以及两者相互作用产生的借书信息、还书信息。因此需要对读者资源、书籍资源、借书信息、还书信息进行管理,及时了解各个环节中信息的变更,有利于提高管理效率。对于数据库系统,规划工作是十分必要的。规划的好坏将直接影响到整个图书管理系统的成功与否,数据库设计中的规划阶段的主要任务是建立数据库的必要性及可行性分析,确定数据库系统在整个图书管理系统的地位。根据图书管理数据库对技术人员和管理人员的水平、数据采集和管理活动以及借阅者的计算机素质的要求;数据库技术对计算机系统的软硬件的要求。决定把数据库管理系统设计成为一个综合的数据库。此数据库包括所有操作人员的所有活动功能。因为,此

5、图书管理系统应用界面较简单、功能单一。所以,用一个综合的数据库就能满足图书管理要求,而且实现容易。因此,图书管理系统可以按照用户权限和实现功能的不同分为两部分:外部学生对数据库的查阅访问和内部管理人员对图书记录的管理维护。但是,这两部分都调用的是同一数据库,只不过内部管理人员能实现所有管理功能,而外部学生访问数据库时,一些功能被屏蔽,只能进行查阅。2.2系统设计系统开发的总体任务是实现各种信息的系统化、规范化和自动化。系统功能分析是在系统开发的总体任务的基础上完成。该图书管理信息系统需要完成功能主要有:l 有关读者类别标准的制定、类别信息的输入,包括类别编号、类别名称、借书数量、借书期限、有效

6、期限、备注等。l 读者类别信息的修改、查询等。l 读者基本信息的输入,包括读者编号、读者姓名、读者类别、读者性别、工作单位、家庭住址、电话号码、电子邮件地址、办证日期、备注等。l 读者基本信息的查询、修改,包括读者编号、读者姓名、读者类别、读者性别、工作单位、家庭住址、电话号码、电子邮件地址、办证日期、备注等。l 图书类别标准的制定、类别信息的输入,包括类别编号、类别名称、关键词、备注信息等。l 图书类别的查询、修改,包括类别编号、类别名称、关键词、摘要等。l 图书信息的输入,包括图书编号、图书名称、图书类别、作者姓名、出版社名称、出版日期、图书页数、关键词、登记日期、备注信息等。l 图书信息

7、的查询、修改,包括图书编号、图书名称、图书类别、作者姓名、出版社名称、出版日期、图书页数、关键词、登记日期、摘要等。l 借书信息的输入,包括借书信息编号、读者编号、读者姓名、图书编号、图书名称、借书日期、摘要等。l 还书信息的输入、查询和修改,包括还书信息编号、读者编号、读者姓名、图书编号、图书名称等。2.3 需求分析2.3.1需求描述与分析设计一个性能良好的数据库系统,明确应用环境对系统的要求是首要的和最基本的。特别是数据应用非常广泛,非常复杂,要是事先没有对信息进行充分和细致的分析,这种设计就很难取得成功。通过需求分析阶段对图书管理系统的整个应用情况作全面的、详细的调查,确定图书管理的目标

8、,收集支持系统总的设计目标的基础数据和对这些数据的要求,确定用户的需求,并把这些写成用户和数据库设计者都能够接受的文档。事实上,需求分析是数据库开发中最难的任务之一。因为,第一,系统本身是可变的,用户的需求必须不断调整,使之与这种变化相适应。第二,用户很难说清某部分工作的功能处理过程。所以,设计人员必须认识到:在整个需求分析以及系统设计过程中,用户参与的重要性,通过各种方法展开调查分析。2.3.2需求分析的步骤需求分析大致可分为三步来完成,即需求信息的收集、分析整理和评审通过。(1)需求信息的收集 需求信息的收集又称为系统调查。为了充分地了解用户可能提出的要求,在调查研究之前,要做好充分的准备

9、工作,要了解调查的目的、调查的内容和调查的方式。1) 调查的目的 首先,要了解组织的机构设置,主要管理活动和职能。其次,要确定组织的目标,大致管理流程和任务范围划分。因此,图书管理系统主要是通过对现有的图书管理系统进行考察、研究。并且通过和图书管理人员、学生交流来完善管理功能。2) 调查的内容外部要求:信息的性质,响应的时间、频度和如何发生的规则,以及图书管理的要求,安全性及完整性要求。管理的现状:即图书管理信息的种类,信息流程,信息的处理方式,各种图书服务工作过程。组织机构:了解图书管理机构的作用、现状、存在的问题,及是否适应计算机管理。3) 调查方式通过对图书管理人员的访问、交谈可获得图书

10、管理高层的、内部的管理需求,以及图书管理的管理目标、未来图书管理发展变化趋势和长远规划的有关信息。并且,还可通过具体借阅活动,了解借阅的流程、借阅的控制方式、日常管理信息,对图书管理系统有一个深刻得了解。(2)需求信息的分析整理要想把收集到的信息(如文件、图表、票据、笔记)转化为下一阶段设计工作可用的形式信息,必须对需求信息做分析整理的工作。2.3.3数据库需求分析用户的需求具体体现在各种信息的提供、保存、更新和查询,这就要求数据库结构能充分满足各种信息的输出和输入。收集基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典,为后面的具体设计打下基础。书籍信息返回书籍类别设置书籍信息管理

11、书籍登记信息管理基本信息录入书籍类别信息管理基本信息录入借阅信息管理读者信息返回借阅信息录入读者信息管理读者登记信息管理基本信息录入读者种类信息管理读者种类设置基本信息录入在详细调查有关图书管理信息需求的基础上,得到如图所示的本系统所处理的数据流程图。针对一般图书馆管理信息系统的需求,通过对图书管理工作过程的内容和数据流程分析,设计入下所述的数据项和数据结构:l 读者类别信息,包括的数据项有:类别编号、类别名称、借书数量、借书期限、有效期限、备注等。l 读者信息,包括的数据项有:读者编号、读者姓名、读者类别、读者性别、工作单位、家庭住址、电话号码、电子邮件地址、办证日期、备注等。l 书籍类别信

12、息,包括的数据项有:类别编号、类别名称、关键词、备注信息等。l 书籍信息,包括的数据项有:书籍编号、书记名称、书籍类别、作者姓名、出版社名称、出版日期、书籍页数、关键词、登记日期、备注信息等。l 借阅信息,包括的数据项有:借阅信息编号、读者编号、读者姓名、书籍编号、书籍名称、借书日期、还书日期、备注信息等。有了上面的数据结构、数据项和数据流程,我们就能进行下面的数据库设计。3.4 概念设计 得到上面的数据项和数据结构以后,就可以设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。 本实例根据上面的设计规划出的实体有:读者类别信息实体、读者信息实体、书籍类别信息实

13、体、书籍信息实体、借阅信息实体。 1 读者类别信息实体E-R图,如图(1)所示,读者信息实体E-R图,如图(2)所示。 读者类别信息实体种类编号借书期限种类名称借书数量 图(1)读者类别信息实体E-R图书籍类别信息实体读者编号读者类别读者名称办证日期 图(2)读者信息实体E-R图2书籍类别信息实体E-R图,如图(3)所示,书籍信息实体E-R图,如图(4)所示。书籍类别信息实体类别编号关键词类别名称出版社 图(3)书籍类别信息实体E-R图书籍类别信息实体书脊编号书籍类别书脊名称出版社 图(4)书籍信息实体E-R图3借阅信息实体E-R图,如图(5)所示。读者类别信息实体借阅信息编号 借书日期读者信

14、息书籍信息 图(5)借阅信息实体E-R图4实体之间相互关系的E-R图,如图(6)所示书籍信息管理书籍信息登记书籍类别信息借阅信息管理借阅书籍读者信息管理读者信息登记读者类别信息图(6)实体之间关系的E-R图3.5逻辑设计图书馆管理系统数据库中各个表的设计结果如下面各表所示。每个表格表示在数据库中的一个表。表1-1为书籍基本信息表。表1-1 booklnfo 图书类别信息表列名数据类型可否为空宽度说明BookidNumericNot null8图书编号IsbnCharnull30书号TitleCharnull40名称PublishdateDateNull出版日期AuthorcharNull30作

15、者wordsintegernull字数(千字)publisheridNumericNull4出版社IDnumberIntegerNull印刷册数priceMoneyNull定价KeywordsCharNull30关键字abstractvarcharnull400摘要表1-2为分类信息表。表1-2 bookclass分类信息表列名数据类型可否为空宽度说明classidnumric null8类别编号classnamecharNot null30类别名称表1-3为出版社信息表。表1-3 publishlnfo 出版社信息表列名数据类型可否为空宽度说明PublisheridNumericNot nu

16、ll4出版社IDPublishercharnull30出版社名称Addresscharnull50出版社地址TelcharNull16电话FaxcharNull16传真PostcodeNumericNull6邮政编码httpcharnull16网址表1-4为借阅信息表。表1-4 loam 借阅信息表列名数据类型可否为空宽度说明BookidNumericNot null8图书编号Stud_idNumericNot null6学生IDLoandateDate null借书日期ReturnDate Null还书日期FineMoneyNull罚金delflagtinyintNull删除标志第三章 数据

17、库系统设计3.1数据库设计概述 计算机信息系统以数据库为核心,在数据库管理系统的支持下,进行信息的收集、整理、存储、检索、更新、加工、统计和传播等操作。 对于数据库应用开发人员来说,为使现实世界的信息流计算机话,并对计算机话的信息进行各种操作,就是如何利用数据库管理系统、系统软件和相关硬件系统,将用户的要求转化成有效的数据结构,并使数据库结构易于实现用户新的要求的过程。 确切的说,数据库设计是指对于一个给定的应用环境,提供一个确定最优数据模型与处理模式的逻辑设计,以及一个确定数据库存储结构与存取方法的物理设计,建立起既能反映现实世界信息和信息联系,满足用户数据要求和加工要求,有能被某个数据库管

18、理系统所接受,同时能实现系统目标,并有效存取数据的数据库。 3.2数据库设计周期 根据软件工程的思想,数据库设计的周期可以划分为六个阶段:(1) 规划阶段确定开发的总目标,给出计划开发的软件系统的功能、性能、可靠性以及接等方面的设想。 (2) 需求分析阶段认真细致地了解用户对数据的加工要求,确定系统的功能与边界。本阶段的最终结果,提供一个可作为设计基础的系统说明书,包括对软硬件环境的要求和一整套完善的数据流程图。(3) 设计阶段l 把需求分析阶段所确定的功能细化,主要工作是概念设计阶段、逻辑设计阶段、物理设计阶段,然后,对每个阶段内部设计详细的流程。 (4) 程序编制阶段以一种或几种特定的程序

19、设计语言表达上一阶段确定的各模块控制流程。程序编制时应遵循结构化程序设计方法。(5) 调试阶段对已编好的程序进行单元调试(分调),整体调试(联调)和系统测试(验收)。(6) 运行和维护阶段这是整个设计周期最长的阶段,其工作重点是收集和记录系统实际运行的数据。在运行中,必须保持数据库的完整性,必须有效的处理数据故障和进行数据库恢复。同时解决开发过程的遗留问题,改正错误进行功能完善。第四章、数据库实现4.1数据库的建立4.1.1工作空间和应用的创建首先创建一个新的工作空间和应用:(1) 单击NEW图标按钮,打开“NEW”对话框;(2) 选择“WORKSPACE”页;(3) 单击“OK”按钮,弹出保

20、存文件对话框,选择路径和输入文件名,系统以PBW后缀名保存工作空间文件。建立新的“应用”的方法:单击工具栏上NEW图标,弹出“新创建”NEW对话框,选择“目标文件”TARGET页,选择“应用”或“应用模板”,单击“OK”按钮,弹出对话框,设置“应用”和“库文件”名。4.1.2数据库的创建创建Adaptive Server AnyWhere 数据库:(1) 单击工具栏上DATEBASE图标按钮。(2) 在弹出的DATEBASE画板中,打开OBJECTS,展开“ODB ODBC”项下的UTILITIES目录。(3) 双击UTILITIES目录下的“CREATE ASA DATABASE”项,弹出“

21、CREATE Adaptive Server AnyWhere”对话框。(4) 单击“BROSWE”按钮,弹出“CREATE DATABASE”对话框,在对话框中选择 mypbex目录,在文件名一栏中输入数据库名称“mydatabase.db”,单击“保存”按钮,返回“CREATE Adaptive Server AnyWhere”对话框。(5) 使用默认的用户USERID项“dba”和默认的口令password项“sql”,单击“OK”按钮,powerbuilder在03b80137孙* 目录下创建一个SAS数据库mydatabase.db,同时,自动为数据库配置了ODBC和DB PROFI

22、LE,并且已经连接到新建的数据库。4.2数据库应用程序的实现4.2.1登录窗口的创建启动画面是为了给用户一个良好的印像,加深软件的亲和力,没有实际的功能,在WINDOW窗体中加入了 静态文本控件和按钮控件。(1) 首先编写一个连接数据库的函数,在脚本区的控件与对象下拉列表框中选择functions,在脚本区的事件下拉列表框中选择new function,这时要求对函数入口参数和出口参数进行定义,定义函数名为wf_connect,类型public,返回integet值。入口参数有两个,都是pass by为value,数据类型argument type为string,名称为argument nam

23、e分别为 userid和password。在脚本编辑区中,输入以下代码:string ls_databaseuserid=trim(userid)password=trim(password)if password=then return 1ls_database=connectstring=dsn=mydb;sqlca.dbparm=ls_database+uid=+”userid+”;pwd=”+password”connect using sqlca;return sqlca.sqlcode(2) 单击取消按钮,然后单击子选单中的script选单项,进入取消按钮的脚本区,选择cliked

24、事件,编写cliked事件的响应脚本如下:halt(3) 为确定按钮编写cliked事件响应脚本:setpointer (hourglass!)if parent.wf_connect (sle_userid.text,sle_password.text)=-1 thenmessagebox(“连接数据库错误!”,连接失败sqlca.sqlerrtext)halt else close (parent)w_main.visible=true end if(4) 单击工具栏上open对话框,在object type下拉列表框中选择applications,在object列表框中选择应用book,

25、单击ok按钮,弹出应用的script子窗口,选择open事件,在脚本区中输入如下代码:sqlca.DBMS=ODBC”open (w_main)l 在应用的close事件中编写断开与数据库连接的脚本:disconnect using SQLCAl 为窗口w_main编写脚本:在窗口中单击右键,选择弹出选单中script选单项,进入窗口的脚本区,选择open事件,并编写如下脚本:open(w_login)l 选择图片按钮的clicked事件,输入脚本:close(parent)4.2.2数据窗口对象的创建数据窗口对象是powerbuilder编程的精华所在,建立数据窗口对象是程序设计中极为重要的

26、一个部分针对不同的情况选择不同类型的数据窗口对象,会使程序的实用性和直观性大为增强在本应用程序中,完全采用数据窗口来实现度曲数据库中的数据、修改数据库中的数据、排序等功能。下面详细讲述本系统中典型的两个数据窗口对象,其他的数据窗口对象以后于方法类似,在这里不详细介绍。(1) d_readertype_gird数据窗体的创建单击新建图标,打开“NEW”对话框,然后在data window标签页选择数据窗口对象的显示风格,在这里选择GIRD(网络)显示方式。单击”ok”按钮启动数据窗口对象向导。选择quick select数据源。这是定义数据源的追简单的方法,然后单击“next”按钮,出现quic

27、k select窗口。在左上方的表格列表中双击要连接的表格readertype。选中该表格后,在列表框中列出了选中表readertype的各个列。单击要选中的多个列,在该窗口下放显示选中的列。单击“ok”按钮,出现“select color and border settings”对话框。在其中选择数据窗口的饿背景颜色、文字颜色和边框外观。单击“next”按钮,出现“ready to create gird datawindow”对话框。在其中显示当前数据窗口对象的对象。单击其上的“finish”按钮,显示数据窗口对象画笔。在其中设置页眉区和细节区的属性。在数据库表中各个列的列名是用英文表示的

28、,在列标题显示的时候我们将他们设置为中文。另外,为了能够在该数据窗口对象中修改所显示的记录,需要设置allow updates属性。单击“rows”菜单下的“update porperties”菜单,出现设置窗口。将左上访的allow updates属性选种,选择table to update为表readtype。在窗口左下放的update properties/delete中选择key and updateable coloumns。单击“ok”按纽确认所作的修改。单击“保存”图标,在出现的保存对话框中输入数据窗口对象的名称,进行保存。通过上面的操作步骤,一个完整gird风格的数据窗口对象就

29、创建完毕。应用程序窗口上的数据窗口控件可以连接和使用这个创建好的数据窗口对象。(2) d_readers数据窗体的创建该数据窗口对象的创建和上面d_readertype_gird数据窗口对象的方法类似,只不过在这里需要选择数据窗口对象的风格为freeform。单击“ok”按钮启动数据窗口对象向导。选择quick select数据源,这是定义数据源的最简单的方法,然后单击“next”按钮,出现quick select窗口。选中该表格后,在列表框中列出了选中表readertype的各个列。单击要选中的多个列,在该窗口下放显示选中的列。单击“ok”按钮,出现“select color and bor

30、der settings”对话框。在其中选择数据窗口的饿背景颜色、文字颜色和边框外观。单击“next”按钮,出现“ready to create gird datawindow”对话框。在其中显示当前数据窗口对象的对象。单击其上的“finish”按钮,显示数据窗口对象画笔。在其中设置页眉区和细节区的属性。在数据库表中各个列的列名是用英文表示的,在列标题显示的时候我们将他们设置为中文。4.2.3图书管理模块的创建图书馆需要管理不同类别的读者,并且不同读者享受的服务不同,图书管理模块主要实现如下功能:l 新书入库l 旧书销毁l 出版社l 退出1 添加新书类别窗体的创建在窗口最上放置一个静态文本框控

31、件,显示窗口的用途“天家读者类别信息”。在窗口的中间防止一个数据窗口控件dw_1,该控件连接的数据窗口对象是d_readertype。在窗口的最下面放置5个按钮控件,在其click 事件中分别用来实现当前显示记录的前一条、后一条、记录的插入、保存以及窗口的退出功能。在窗口的open事件中输入如下的程序代码:dw_1.settransobject(sqlca)dw_1.retrieve()“前一条”按钮控件的click事件用于记录向前移动一条,也就是显示前一条记录,其程序代码如下:integer row_currentrow_current=dw_1.scrollpriorrow()if row

32、_current=1 then messagebox(“警告”,“已经是最前一条记录”)end if“后一条”按钮控件的click事件用于显示当前所显示记录的后一条记录,程序代码如下:integer row_countinteger row_currentrow_current=dw_1.scrollnextrow()row_count=dw_1.rowcount()if row_current=row_count then messagebox(“警告”,“已经是最后一条记录”)end if“添加”按钮控件的click事件用于用户输入新的记录,其程序代码如下:g_rownumber=dw_1

33、.insertrow(0)dw_1.setfocus()dw_1.scrolltorow(g_rownumber)dw_1.setcolumn(1)“确定”按钮控件的click事件用于提交和确认对该数据库表格中记录所做的修改,包括插入和删除,如果提交失败,则取消失败,则取消修改。程序代码如下:if update(dw_1.true,false)=1 thendw_1.resetupdate()commit;else rollback; messagebox(“错误!”,“数据保存失败”)end if“退出”按钮控件的click事件用于关闭该输入窗口。在关闭窗口之前,首先判断用户是否对数据窗口中

34、的记录作了修改而没有保存到数据库中,如果有这样的记录,则出现对话恐询问用户是否保存所做的修改,程序代码如下:int Mcountint updateornotMcount=w_readertype.dw_1.modifiedcount()If Mcount=0 then close(w_readertype)elseif Mcount0 then updateornot=messagebox(“保存修改”,“您修改了数据窗口中的数据,现在是否保存?”,question!,yesnocancel!)if update(w_readertype.dw_1,true,false)=1 then w_

35、readertype.dw_1.resetupdate() commit;else rollback; messagebox(“错误!”,“数据保存失败”)end ifclose(w_readertype)elseif updateornot=2 then rollback; close(w_readertype)end ifend if 函数执行成功时返回用户选择的按钮编号(例如1、2、3等),发生错误是返回-1。这种在应用程序运行过程中需要一段简短信息(比如出错、警告等)时,没有必要自己从头创建窗口和安排控件,使用函数messagebox既简单有方便。用户只有响应该窗口后,程序才能句许往下

36、运行。2 新书入库窗体的创建创建一个新的窗体对象,作为新书入库窗口。该窗口的标题为“新书入库”,拖动窗口边框,调整窗口大小。保存窗口名为w_bookinfo。 向该窗体中添加两个按钮:确定和返回。代码分别如下:确定: long ll_id,ll_i,ll_publisheriddate ld_datestring ls_title,ls_isbn,ls_author,ls_key,ls_price,ls_words,ls_numif sle_id.text=or isnull (sle_id.text) thenmessagebox(缺少数据,请输入图书编号)sle_id.setfocus()

37、returnend ifif sle_isbn.text=or isnull (sle_isbn.text) then messagebox(缺少数据,请输入ISDN书号) sle_isbn.setfocus()returnend ifif sle_author.text=or isnull (sle_author.text) thenmessagebox(缺少数据,请输入书名)sle_author.setfocus()returnend ifif sle_title.text=or isnull (sle_title.text) thenmessagebox(缺少数据,请输入作者)sle_t

38、itle.setfocus()returnend ifif sle_words.text=or isnull (sle_words.text) thenmessagebox(缺少数据,请输字数)sle_words.setfocus()returnend ifif sle_publisherid.text=or isnull (sle_publisherid.text) thenmessagebox(缺少数据,请输出版设ID)sle_publisherid.setfocus()returnend ifif sle_price.text=or isnull ( sle_price.text) th

39、enmessagebox(缺少数据,请输定价) sle_price.setfocus()returnend ifif sle_date.textand not isnull(sle_date) thenif isdate(sle_date.text) thenld_date=date (sle_date.text) elsemessagebox(输入数据错误,请使用“年-月-日”的日期格式)sle_date.setfocus()returnend ifend ifll_id=long(sle_id.text)select bookinfo.bookid into:ll_i from booki

40、nfo where bookinfo.bookid=:ll_id;if ll_i0 thenmessagebox(错误信息,图书编号+string(ll_i)+号重号!请更正。)sle_id.setfocus()returnend ifls_title=trim(sle_title.text)ls_isbn=trim(sle_isbn.text)ls_author=trim(sle_author.text)ls_key=trim(sle_keywords.text)ls_price=trim(sle_price.text)ls_words=trim(sle_words.text)ls_num=

41、trim(sle_number.text)insert into bookinfo (bookid, isbn, title, publishdate, author, words, publisherid, number, price, keywords,abstract ) values (:ll_id, :ls_isbn, :ls_title, :ld_date, :ls_author, :ls_words, :ll_publisherid, :ls_num, :ls_price, :ls_key, :mle_abstract.text ); sle_id.text=sle_isbn.t

42、ext= sle_title.text=sle_date.text=sle_author.text=sle_words.text=sle_publisherid.text=sle_number.text=sle_price.text=sle_keywords.text=mle_abstract.text=sle_id.setfocus()取消: close(parent)w_firstmain.visible=true 3 旧书销毁窗体的创建创建一个新的窗体,添加窗口对象(创建数据对象的方法,前面已经交代,不再重复)。4 出版社窗体的创建与“旧书销毁窗体”类似,不同的是该数据对象在创建时,需加

43、如按钮,具体方法如下: 单击工具栏控件下拉列表图标按钮图,选择“button”控件,然后在数据窗口的design子窗口中单击,出现一个命令按钮控件,拖动边线调整为方形,将其中text属性栏中的“none”删除。在action下拉列表框中选择“cancel(3)”,选种“action default picture”复选框。这是,新建按钮中出现一个红色的手形图案;类似的,一共创建8个图形按钮,分别是action下拉列表框中的“cancel(3)”(取消)、“pagenext(4)”(下一条记录)、“pageprior”(上一条记录)、“pagefirst”(第一条记录)、“pagelast”(最

44、后一条记录)、“deleterow”(删除当前记录)、“insertrow”(插入一条空记录)、“update”(刷新数据库表)。如果不选中“action default picture”复选框,可以在“picture file”栏中使用定位按钮上的图片文件。当然也可以不使用图片,直接在text栏中使用文字表述,实现一般按钮的命令。4.2.4图书检索模块的创建图书检索模块主要实现如下功能:l 按作者名称l 按出版社日期/某个阶段l 按出版社日期/某个日期l 按出版社日期/某个日期之前l 按出版社日期/某个日期之后l 按出版社名称l 按书名l 按关键字以上除按日期查询外,均实现模糊查询法。1 设

45、计“按作者”查询选项的步骤:(1) 单击new图表按钮,弹出“new”对话框。(2) 选择datawindow选项页,双击freeform图标,弹出“choose data source for freeform datawindow”对话框。(3) 选择“SQL select”数据源方式,单击“new”按钮,弹出“select table”对话框。(4) 在table列表框中选择student表,单击“open”按钮,这时弹出select画板。(5) 单击选单design/retrieval arguments, 弹出“specify retrieval qrguments”对话框,在nam

46、e栏中输入ls_name,在type下拉列表框中选择string,单击“ok”,对话框关闭。(6) 在select画板将字段全部选中。(7) 在select画板的where子窗口中单击column栏,右边出现一个“”符号,单击“”按钮,弹出该表的所有字段,选择该表的“author”,在右边的value栏中,按右键,选择弹出选单中的“arguments.”,弹出“paste”按钮,“:ls_name”就出现在value栏中。(8) 单击“return”图标按钮,弹出“select color and border settings”对话框,单击“next”按钮,弹出“ready to creat

47、e freeform datawindow”对话框,要求对检索变量进行赋植,以便对数据库进行数据检索,并将检索结果放到preview子窗口中。编写脚本。“查询”按钮的clicked事件脚本为:string ls_authordw_author.settransobject(sqlca)ls_author=trim(sle_author.text)if not ls_author= thenls_author=%+ls_author+%dw_author.retrieve (ls_author)elsemessagebox(数据不全!,请输入待查询作者!)end ifsle_author.set

48、focus()2 设计“按出版社日期/某个阶段”查询选项的步骤:按“出版社日期/某个阶段”查询的数据窗口对象采用的是限定日期范围的双条件查询的数据窗口,它将在指定日期范围之内的所有记录都检索出来。(1)设计数据窗口对象。数据窗口对象的设计过程与前面“按姓名”查询的数据窗口对象的设计十分相似,增加2个日类型的检索参数retrieval arguments分别为ld_startdate和ld_enddate,在select画板的where子窗口中设计的条件为: “student”.“birthday”=:ld_startdate and “student”.“birthday”=:ld_endda

49、te保存数据窗口对象名称为d_querydate(2)在窗体中布置控件略。(3)编写脚本。“查询”按钮的clicked事件脚本为: string ls_start,ls_enddate ld_startdate,ld_enddatedw_querydate-date.settransobject(sqlca)if isdate (sle_startdate.text) thenif isdate (sle_enddate.text) then ld_startdate=date(sle_startdate.text)ld_enddate=date(sle_enddate.text)dw_que

50、rydate-date.retrieve(ld_startdate,ld_enddate)elsemessagebox(数据错误,请重新输入结束日期!)end ifelsemessagebox(数据错误,请重新输入开始日期!)end ifsle_startdate.setfocus()3 设计“按出版社日期/某个日期”查询选项的脚本: string ls_datedate ld_datedw_publishdate.settransobject(sqlca)if isdate(sle_date.text) thenld_date=date(sle_date.text)dw_publishdat

51、e.retrieve(ld_date)elsemessagebox(数据不全!,请重新输入日期。)end ifsle_date.setfocus()4 设计“按出版社日期/某个日期之前”查询选项的脚本:string ls_datedate ld_datedw_querybeforedate.settransobject(sqlca)if isdate(sle_date.text) thenld_date=date(sle_date.text)dw_querybeforedate.retrieve(ld_date)elsemessagebox(数据不全!,请重新输入日期。)end ifsle_date.setfocus()5 设计“按出版社日期/某个日期之后”查询选项的脚本:string ls_datedate ld_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论