1、图书管理系统摘要在图书管理系统用计算机管理图书是一种计算机应用技术的创新,在计算机还未普及之前图书管理都是由图书管理人员手工记帐的方式来操作的.现在一般的图书馆都是采用计算机作为工具的实用的计算机图书管理程序来帮助图书馆管理员进行更有效的图书管理。图书管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。 关键字:图书,面向对象,软件工程Abstract In the library management system with com
2、puter management books is a computer application technology innovation, not on the computer before the popularity of management books are books of account management manual approach to the operation. Libraries are now generally used as a tool for computer The practical procedures for the management
3、of computer books to help librarians more effective management of the book. Book Management System is a typical management information system (MIS), including the development of its background of the establishment and maintenance of the database front-end applications, as well as the development of
4、both. The former set up the requirements for data integrity and consistency of strong data security a good library. For the latter applications require full-featured and easy to use and so on. Keywords: books, Object-Oriented Software Engineering目 录第一章 概述11.1开发背景11.2管理信息系统产生的背景11.3系统功能要求的分析2第二章 开发环境
5、及实现技术介绍32.1开发环境32.2开发工具简介3第三章 图书管理系统的设计和实现53.1系统的设计53.1.1概要设计53.1.2详细设计73.2系统的实现93.2.1主界面的设计与实现123.2.2图书管理模块的设计与实现153.2.3读者管理模块的设计与实现193.2.4图书借阅管理模块的实现223.2.5系统管理模块的设计与实现25第四章 图书管理系统的运行说明404.1运行环境40致 谢42参考文献43第一章 概述1.1开发背景在图书管理系统用计算机管理图书是一种计算机应用技术的创新,在计算机还未普及之前图书管理都是由图书管理人员手工记帐的方式来操作的.现在一般的图书馆都是采用计算
6、机作为工具的实用的计算机图书管理程序来帮助图书馆管理员进行更有效的图书管理。1.2图书管理系统产生的背景图书管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。 经过分析,我们使用 MICROSOFT公司的 VISUAL BASIC开发工具,利用其提供的各种面向对象的开发工具,尤其是数据窗口这一能方便而简洁操纵数据库的智能化对象,首先在短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成用户满意的可行系
7、统。 1.3 系统功能要求的分析图书管理系统主要服务与图书管理人员,包含的功能模块主要有:一. 图书管理:图书类别管理,图书信息管理二. 读者管理:读者管理,读者信息管理.三. 图书借阅管理:借书管理,还书管理.四. 系统管理:添加管理员,修改密码,退出系统第二章 开发环境及实现技术介绍2.1开发环境硬件平台CPUIntel P4 1.5G主板Intel 850芯片组的GA-8TX-C内存2128M的三星Rambus内存硬盘Seagate Barracuda 7200.7 80G显卡Unika 小妖G9800显示器美格770PF,17寸纯平显示器软件环境操作系统Microsoft Window
8、sXP简体中文专业版SP1办公软件Microsoft Office 2003显卡驱动nVIDIA ForceWare驱动56.72版For Win2000/XP2.2 开发软件介绍本系统所采用的编程语言为visual basic 6.0与 微软的 access作为操作数据库.现分别对其简单介绍:Visual Basic 6.0是Micrsoft公司出品的开发工具,Visual Basic是一种可视化的,面向对象的Windows开发语言,它具有易用,通用和开发效率高的特点。随着微软对它不断地改进以及计算机本身性能的提高,使得Visual Basic越来越适合一般的应用程序开发。正如Bill Ga
9、te所说,世界上绝大多数的Windows应用程序是用Visual Basic编写的。在众多的开发工具中,我们为什么要选择Visual Basic6.0呢?因为VB具有众多其它开发工具所没有的优点!具体介绍如下:u 开发的高效u 语言的高效u 编译的高效u 执行的高效u 维护的高效基于以上理由,我们毫不忧郁的选择了VB6.0做为我们的开发工具!主要的控件及其基本属性,事件简介u 命令按钮类的控件:1) Caption属性:用来显示在控件上的标题。2) Enable属性:控制控件的激活状态灰色或可用。3) Appearance属性:值为1时,则以3D效果显示该控件,0则不然。4) Backcolo
10、r属性:用来改变在按钮上显示图像的背景色。5) Cancel属性:该属性决定按钮是否为一个”取消”按钮。6) Default属性:决定哪一个命令按钮控件是窗体的缺省命令按钮.7) Font属性:控制各种文字字体类型.8) Left,top,height,width属性:设定控件的位置与大小.9) Style,picture属性:决定按钮的显示方式是否为图像形式出现.10) Visible属性:确定控件运行时是否为可见.11) Index属性:当控件为一控件数组时,此属性值为该控件在数组的下标值.12) DownPicture属性:设置/返回一个对图片的引用,该图片在按钮被单击处于压下状态时显示
11、。13) DisabledPicture属性:设置/返回一个对图片的引用,该图片在控件无效时显示在控件中。14) MaskColor属性:设置/返回一个在按钮的图片中作为“掩码“的的颜色15) Picture属性:设置返回commandButton控件中要显示的图片。u 命令按钮类的事件:1) 单击事件Click事件(1) 触发与适用此事件是在一个命令按钮对象上按下然后释放一个鼠标按钮时发生。命令按钮的Click事件仅对当单击鼠标时发生。(2) 事件处理过程按钮单击事件的处理过程为: Private Sub object-Click(Index As Integer)其中Object为引发该事
12、件的对象名称。如果是命令按钮的控件是数组,则需要使用Index参数标识该控件。2) 获得焦点GotFocus事件(1) 触发与适用 当命令按钮获得焦点产生该事件,获得焦点可以通过诸如Tab切换或单击对象之类的用户动作,或在代码中用SetFocus方法改变焦点来实现。(2) 事件处理过程命令按钮GotFoucs事件处理过程为:Private Sub Object-GotFocus(Index As Integer)3) LostFocus事件:当一个对象失去焦点时发生4) KeyDown事件:当命令按钮具有焦点时按下一个键时发生5) KeyUp事件:当命令按钮具有焦点时释放一个键时发生。6) K
13、eyPress事件:当用户按下或松开一个ANSI键时发生。7) MouseDown事件:当在命令按钮上按下鼠标按钮时发生。8) MouseMove事件:当命令按钮上移动鼠标时发生。9) MouseUp事件:当在命令按钮上释放鼠标按钮时发生。 u 标签框类的控件类的控件:1) Caption属性:在应用程序界面上加入说明。2) Autosize属性:决定控件是否自动改变大小以显示其全部内容。3) Backstyle属性:用以指示标签是否透明.4) Bordstyle属性:用以设定控件是否有边框。u 文本框类的控件:1) Text属性:通过像text属性赋值的方法来改变该属性的值。2) Maxle
14、ngth属性:该属性设定在文本框控件中能够输入的最大字符数。3) Multline属性:该属性设定text字符串中是否接受换行符。4) Scrollbars属性:该属性决定是否为文本框加滚动条。5) Passwordchar属性:该属性设定输入文本的特殊显示字符,在设计密码程序时非常有用。6) Change事件属性:文本框的内容发生改变时,相应的控件之间发生相应的改变,具有即时性。7) Keypress:事件由用户在文本框控件中按任意键触发。8) Alignment属性:设定控件中的文本对其方式9) Appearance属性:设定一个对象在运行时是否可以3D效果显示。10) BackColor
15、属性:设置返回背景色11) BorderStyle属性:设置对象的边框样式12) DataField属性:设定数据使用者将被绑定到的字段名13) DataFormat属性:设定DataFormat对象,用于数据绑定14) DataMember属性:从数据供应程序提供的几个数据成员中返回/设定一个特定的数据成员15) DataSource属性:设定控件绑定的一个数据源16) DragIcon属性:设定图标,它将在拖放操作中作为指针显示17) DragMode模式:设定一个值,确定在拖放操作中所用方式18) Enabled属性:设置/返回运行时TextBox是否相应用户事件19) Font属性:设
16、置/返回字体属性20) ForeColor属性:设置/返回文本的前景色21) Height属性:设置/返回TextBox的高度22) IMEMode属性:设置/返回数值用来确定输入方法编辑器的状态23) Index属性:设置/返回唯一的标识控件数组中该控件的编号24) Left属性:设置/返回TextBox控件的水平位置25) Locked属性:设置/返回TextBox中文本是否可编辑26) LinkItem属性:设置/返回DDE与另一个应用程序会话时,传给接受端的数据27) MaxLength属性:设置/返回一个值,指定在TextBox控件中能够输入的字符最大值28) MouseIcon属性
17、:设置/返回自定义鼠标的图标29) Top属性:设置/返回TextBox控件的垂直位置30) Tag属性:存储过程所需的附加数据u 文本框类的事件:1) Change事件:当改变文本框内容时发生2) Click事件:鼠标单击控件时发生3) DblClick事件:用鼠标左键双击控件时发生4) DragDrop事件:在一个完整的拖放动作完成或使用Drag方法,并将其Action参数设置为2时发生5) DragOver事件:在拖放操作正在进行时发生6) GotFocus事件:当一个命令按钮获得焦点时发生7) LinkClose事件:当一个DDE对话结束时发生8) LinkError事件:当一个DDE
18、对话框过程中出现错误时,该事件发生9) KeyDown事件:当命令按钮具有焦点时按下一个键时发生10) Validate事件:在焦点转换到另一个控件之前发生,此时该控件的Causes Validation 属性值设置为True u 单选按钮类的控件:1) Caption属性:显示在控件上的文本,是单选按钮的标题。2) Alignment属性:决定单选按钮的标题在控件上的位置。3) Enable属性:该控件为灰色时为false,表示运行时不可用。4) Index属性:属性值表示为单选按钮组成的控件中某个按钮的索引值。5) Tabindex属性:建立控件时,vb自动为其分配一个tabindex值,
19、利用tab键可以在控件之间切换焦点。6) Value属性:反映控件状态的属性,返回true表示已选择了该按钮。7) Appearance 属性:设置/返回一个对象在运行时是否以3D效果显示。8) BackColor 属性:设置/返回背景色。9) Container 属性:设置/返回Form上的控件属性。10) DataField 属性:设置/返回数据使用者将被绑定到的字段名。11) DataFormat 属性:设置/返回DataFormat对象,一个绑定对象将附加到它。12) DisabledPicture 属性:设置/返回一个对图像的引用,该图片在控件无效时显示在控件中。13) DownPi
20、cture 属性:设置/返回一个对图片的引用,该图片在控件单击下处于压下状态时显示。14) DragMode 属性:设置/返回一个值,确定在拖放操作中所用的方式。15) Font 属性:设置/返回字体属性。16) FontBold 属性:设置/返回字体粗体样式。17) FontItalic 属性:设置/返回字体斜体样式。 18) FontStrikethru 属性:设置/返回字体删除线样式。19) FontUnderLine 属性:设置/返回字体下划线样式。20) FontName 属性:设置/返回控件中显示文本所用的字体大小。21) FontSize 属性:设置/返回控件中显示文本所用的字体
21、大小22) Height 属性:设置/返回控件的高度。23) MaskColor 属性:设置/返回一个在控件的图片中作为掩码的颜色。24) MousePointer 属性:设置/返回一个值,该值指示在运行时当鼠标移动到对象上时显示的指针类型。u 单选按钮类的常用事件:1) Click 事件:鼠标单击控件时发生。2) DbClick事件: 当在一个对象上按下和释放鼠标按钮并再次按下和释放按钮时,该事件发生。3) DragDrop事件:在一个完整的拖放动作或使用Drag方法,并将其Action参数设置位2时,该事件发生。4) DragOver事件: 在拖放操作正在进行时发生。5) GotFocus
22、事件: 当获的对象焦点时发生。6) LostFocus事件:当对象失去焦点时发生。7) KeyDown事件:当控件具有焦点时按下一个键时发生。8) KeyUp事件: 当控件具有焦点时释放一个键时发生。9) KeyPress事件:当用户按下或释放ANSI一个键时发生。10) MouseDown事件:当在控件上按下鼠标键时发生。11) MouseMove事件:在控件上移动鼠标时发生。12) MouseUp事件:在控件上释放鼠标时发生。u 复选按钮类的控件:1) Caption属性:缺省为check1。2) Index属性:该属性值为复选框控件数组的下标.3) Value属性:value为0表空白,
23、为1表勾号,为2表示灰色勾号.4) Container属性:Form控件上的容器。5) DataChangeed属性:设置/返回一个值,指出被绑定的控件中的数据已经被某进程修改。6) DataField属性:设置或返回数据使用者将被绑定到的字段名。7) DataFormat 属性:设置或返回DataFormat对象,用于数据绑定。8) Datasource属性:设置或返回控件绑定的一个数据源。9) DisabledPicture属性:设置或返回一个对图片的引用,该图片在控件无效时显示在控件中。10) DownPicture 属性:设置或返回一个对图片的引用,该图片在控件被单击处于压下状态时显示
24、。11) DragIcon属性:设置或返回图标,它将在拖放操作中做为指针显示。12) DragMode属性:设置返回一个值,确定在拖放操作中所用方式。13) Font属性:设置或返回字体的属性。14) Name属性:设置或返回控件的标识名。15) Value属性:设置或返回控件的状态。u 复选按钮类的控件的基本事件:1) Click事件:鼠标单击控件时发生。2) DragDrop事件:在一个完整的拖放动作完成或使用Drag方法,并将其Action参数设置为2时发生。3) DragOver事件:在拖放操作正在进行时发生。4) GotFocus事件:在对象获的焦点时发生。,5) OLEComple
25、teDrag事件:当源部件被放到目标时发生,并通知源部件拖放操作被执行或取消。6) OLEDragDrag事件:当源部件决定放操作能发生,却源部件被放到目标部件时,此事件发生。u 框架类的控件:1) List属性:列表框控件的表项是使用数组的方式保存,数组的每一个元素存储列表控件的一个表项1) Listcount属性:控件列表部分项目的个数。2) Mutselect属性:可以设置列表框为单选或允许多选属性.3) Selectd属性:标示一个数组,数组各元素为:4) Selected(0),selected(1)u 滚动条类的控件:1) Value属性:滚动条上滑块所在位置由value值所决定。
26、2) Max和min属性:对value值的最大,最小进行限制。3) Largechange属性:用户点击滚动条与键头之间的区域时,value的改变量。4) OnClick事件:用来添加按钮的单击事件所执行的程序代码。u 定时器类类的控件:1) Interval属性:表示定时的时间间隔,以毫秒为单位。2) Enable属性:为true时(缺省值),激活定时器开始计时;为false时处于休眠状态.数据库连接方式选择Visual basic6.0连接数据库的主要方式以下几种方式:一是:用data控件进行数据库链接 ,二是利用adodc(ADO Data Control)进行数据库链接 。三是: 利用
27、DataEnvironment进行数据库链接.四是利用ADO(ActiveX Data Objects)进行编程:现在我们来大致对这几种技术应用介绍:一、 用data控件进行数据库链接.第一步:给窗体添加一个Data控件。第二步:用Access建立一个名为Pad的数据库,在库中建立一个表Myset,给表添加四个字段:backcolor(数据),forecolor(文本),fontname(文本),fontsize(文本)。注意:请将库文件存入程序所在目录。 如果你的机器没安装有Access,可通过VB建库。二、 利用adodc(ADO Data Control)进行数据库链接:使用adodat
28、a控件访问数据库可以完全不用编写代码,只需要通过简单的设置和操作其属性就可以实现与数据库的连接,通过绑定数据感知控件,就能提供一个访问数据库的界面,用来实现对数据库的浏览,贴加,删除,修改等操作.三、 利用DAO对数据库进行操纵:在visual basic 中提供了两种与jet数据引擎接口的方法:data控件与数据访问对象(DAO)DAO是database object的英文缩写,要访问数据库一方面数据库要提供访问接口,另一方面要在编程环境中有对数据库的支持.DAO模型是设计关系数据库系统结构的对象类的集合.他们提供了管理关系型数据库系统所需要的全部操作属性和方法,这其中包括建立数据库,定义表
29、,字段和建立表间关系,定位和查询数据库等.关系数据库介绍:关系数据库是目前各类数据库中最重要、最流行的数据库,他应用数学方法来处理数据库数据,是目前使用最广泛的数据库系统。20世纪70年代以后开发的数据库管理系统产品几乎都是基于关系的。在数据库发展的历史上,最重要的成就就是关系模型。 关系数据库系统与非关系数据库系统的区别是:关系系统只有“表“这一种数据结构;而非关系数据库系统还有其他数据结构,对这些数据结构有其他的操作。结构化查询语言SQL(Structured Query Language)是一种介于关系代数与关系演算之间的语言,其功能包括查询、操纵、定义和控制四个方面,是一个通用的、功能
30、极强的关系数据库语言。目前已成为关系数据库的标准语言MicrosoftAccess介绍:使用MicrosoftAccess,可以在单一的数据库文件中管理所有的信息。在这个文件中,用户可以将自己的数据分别保存在各自独立的存储空间中,这些空间称作表;可以使用联机窗体来查看、添加及更新表中的数据;使用查询来查找并检索所要的数据;也可以使用报表以特定的版面布置来分析及打印数据。 如果要保存数据,请为每一种类型的信息创建一个表。如果要从查询、窗体或报表中的多个表中将数据合并在一起,就要定义各个表之间的关系。 如果要搜索并检索符合指定条件的数据,包括来自多个表中的数据,就要创建查询。查询的同时也可以更新或
31、删除多条记录,并对数据执行内嵌或自定义的计算。 如果要简单地直接在某个表中查看、输入及更改数据,请创建一个窗体。在打开一个窗体时,MicrosoftAccess将从一个或多个表中检索数据,并使用用户在“窗体向导”选择的版面布局或所创建的版面布局,将窗体显示在屏幕上。 如果要分析数据或将数据以特定的方式打印出来,请创建一个报表。例如,可以打印一份将数据分组并计算数据总和的报表,也可以打印另一份带有各种数据格式的打印邮件标签的报表。第三章 图书管理系统的设计与实现3.1 系统的设计3.1.1系统的概要设计该系统考虑将整个系统分解成如下模块:主界面图书管理图书信息管理读者类别管理读者信息管理图书借阅
32、管理借书管理还书管理系统管理登录图书类别管理读者管理3.1.2 系统的详细设计1.读者类别表2.读者信息表:3. 借阅信息表:4. 书籍信息表:5.图书类别表:6.系统管理表:3.2 系统的设计与实现3.2.1 系统的主界面的设计与实现主界面代码:Private Sub add_admin_Click()frmadduser.ShowEnd SubPrivate Sub add_back_book_Click()frmbackbookinfo.ShowEnd SubPrivate Sub add_book_info_Click()frmaddbookinfo.ShowEnd SubPrivat
33、e Sub add_book_style_Click()frmaddbookstyle.ShowEnd SubPrivate Sub add_lend_book_Click()frmfindbook.ShowEnd SubPrivate Sub add_reader_info_Click()frmaddreaderinfo.ShowEnd SubPrivate Sub add_reader_style_Click()frmaddreaderstyle.ShowEnd SubPrivate Sub change_pwd_Click()frmchangepwd.ShowEnd SubPrivate
34、 Sub del_book_info_Click()frmmodifybookinfo.ShowEnd SubPrivate Sub del_book_style_Click()frmmodifybookstyle.ShowEnd SubPrivate Sub del_reader_info_Click()frmreaderinfo.ShowEnd SubPrivate Sub del_reader_style_Click()frmmodifyreaderstyle.ShowEnd SubPrivate Sub exit_sys_Click()EndEnd SubPrivate Sub fin
35、d_book_info_Click()frmfindbook.ShowEnd SubPrivate Sub find_lend_book_Click()frmfindborrowinfo.ShowEnd SubPrivate Sub find_reader_info_Click()frmfindreader.ShowEnd SubPrivate Sub modify_book_info_Click()frmmodifybookinfo.ShowEnd SubPrivate Sub modify_book_style_Click()frmmodifybookstyle.ShowEnd SubPr
36、ivate Sub modify_reader_info_Click()frmreaderinfo.ShowEnd SubPrivate Sub modify_reader_style_Click()frmmodifyreaderstyle.ShowEnd Sub3.2.2 图书管理模块的设计与实现图书管理模块主要由:图书类别管理,图书信息管理.图书类别管理又分别由以下几个界面构成:1. 添加图书类别添加图书类别代码:Private Sub Command1_Click()Dim rs_bookstyle As New ADODB.RecordsetDim sql As StringIf Tr
37、im(Text1.Text) = Then MsgBox 图书种类不能为空, vbOKOnly + vbExclamation, Text1.SetFocus Exit SubEnd IfIf Trim(Text2.Text) = Then MsgBox 种类编号不能为空, vbOKOnly + vbExclamation, Text2.SetFocus Exit SubEnd Ifsql = select * from 图书类别 where 类别名称= & Text1.Text & rs_bookstyle.Open sql, conn, adOpenKeyset, adLockPessim
38、isticIf rs_bookstyle.EOF Then rs_bookstyle.AddNew rs_bookstyle.Fields(0) = Trim(Text1.Text) rs_bookstyle.Fields(1) = Trim(Text2.Text) rs_bookstyle.Update MsgBox 添加图书类别成功!, vbOKOnly, rs_bookstyle.CloseElse MsgBox 读者类别重复!, vbOKOnly + vbExclamation, Text1.SetFocus Text1.Text = rs_bookstyle.Close Exit S
39、ubEnd IfEnd Sub2. 修改图书类别:修改图书类别代码:Private Sub Form_Load()Dim sql As StringOn Error GoTo loaderrorsql = select * from 图书类别rs_reader.CursorLocation = adUseClientrs_reader.Open sql, conn, adOpenKeyset, adLockPessimistic 打开数据库cmdupdate.Enabled = False设定datagrid控件属性DataGrid1.AllowAddNew = False 不可增加DataG
40、rid1.AllowDelete = False 不可删除DataGrid1.AllowUpdate = FalseIf userpow = guest Then 权限相关 Frame2.Enabled = FalseEnd IfSet DataGrid1.DataSource = rs_readerExit Subloaderror: MsgBox Err.DescriptionEnd Sub3.2.3 读者管理模块的设计与实现1.添加读者类别界面:Private Sub Command1_Click()Dim sql As StringIf Trim(Text1.Text) = Then
41、MsgBox 读者种类不能为空, vbOKOnly + vbExclamation, Text1.SetFocus Exit SubEnd IfIf Trim(Text2.Text) = Then MsgBox 借书数量不能为空, vbOKOnly + vbExclamation, Text2.SetFocus Exit SubEnd IfIf Trim(Text3.Text) = Then MsgBox 借书期限不能为空, vbOKOnly + vbExclamation, Text3.SetFocus Exit SubEnd IfIf Trim(Text4.Text) = Then Msg
42、Box 有限期限不能为空, vbOKOnly + vbExclamation, Text4.SetFocus Exit SubEnd Ifsql = select * from 读者类别 where 种类名称= & Text1.Text & rs_readerstyle.Open sql, conn, adOpenKeyset, adLockPessimisticIf rs_readerstyle.EOF Then rs_readerstyle.AddNew rs_readerstyle.Fields(0) = Trim(Text1.Text) rs_readerstyle.Fields(1)
43、 = CInt(Text2.Text) rs_readerstyle.Fields(2) = CInt(Text3.Text) rs_readerstyle.Fields(3) = CInt(Text4.Text) rs_readerstyle.Update MsgBox 添加读者类别成功!, vbOKOnly, rs_readerstyle.CloseElse MsgBox 读者类别重复!, vbOKOnly + vbExclamation, Text1.SetFocus Text1.Text = rs_readerstyle.Close Exit SubEnd IfEnd Sub3. 查询
44、读者信息代码分析:Private Sub Command1_Click()Dim rs_findreader As New ADODB.RecordsetDim sql As StringIf Check1.Value = vbChecked Then sql = 读者编号= & Trim(Text1.Text & ) & End IfIf Check2.Value = vbChecked Then If Trim(sql) = Then sql = 读者姓名= & Trim(Text2.Text & ) & Else sql = sql & and 读者姓名= & Trim(Text2.Text & ) & End IfEnd IfIf Check3.Value = vbChecked Then If Trim(sql) = Then sql = 读者类别= & Trim(Combo1.Text & ) & Else sql = sql & and 读者类别= & Trim(Combo1.Text & ) & End IfEnd Ifsql = select * from 读者信息 where