一直以来人们使用传统的人工方式管理图书馆的日常工作,对于图书馆的借书和还书过程,想必大家都已很熟悉。在计算机尚未在图书馆广泛使用之前,借书和还书过程主要依靠手工。一个最典型的手工处理还书过程就是:读者将要借的书和借阅证交给工作人员,工作人员将每本书上附带的描述书的信息的卡片和读者的借阅证放在一个小格栏里,并在借阅证和每本书贴的借阅条上填写借阅信息。这样借书过程就完成了。还书时,读者将要还的书交给工作人员,工作人员根据图书信息找到相应的书卡和借阅证,并填好相应的还书信息,这样还书过程就完成了。
以上所描述的手工过程的不足之处显而易见,首先处理借书、还书业务流程的效率很低,其次处理能力比较低,一段时间内,所能服务的读者人数是有限的。利用计算机来处理这些流程无疑会极大程度地提高效率和处理能力。我们将会看到排队等候借书、还书的队伍不再那么长,工作人员出错的概率也小了,读者可以花更多的时间在选择书和看书上。 2.项目意义:
为方便对图书馆书籍、读者资料、借还书等进行高效的管理,特编写该程序以提高图书馆的管理效率。使用该程序之后,工作人员可以查询某位读者、某种图书的借阅情况,还可以对当前图书借阅情况进行一些统计,给出统计表格,以便全面掌握图书的流通情况。 本次作业设计题目:“图书管理系统”
主要目的是利用数据库软件编制一个管理软件,用以实现图书、读者以及日常工作等多项管理。同时对整个系统的分析、设计过程给出一个完整论证。 图书管理系统是一种基于集中统一规划的数据库数据管理新模式。在对图书、读者的管理,其实是对图书、读者数据的管理。本系统的建成无疑会为管理者对图书管理系统提供极大的帮助。
3.文档目的:
通过此文档说明图书管理系统的组建模板及功能,与该系统的面向使用对象的权限功能说明。
二.任务概述 1.系统目标
根据前面所做的需求分析及用户的需求可以得出,学校图书馆管理系统实施后,应达到以下目标:
1.界面设计要求美观大方、功能全面,操作简单。 2.规范、完善的基础信息设置。
3.对操作员设置不同的操作权限,为管理员提供修改权限功能。 4.网站整体结构和操作流程合理顺畅,实现人性化设计。 5.对所有读者进行集中管理。 6.对图书信息进行集中管理。
7实现图书借阅排行,以便了解当前的畅销书。 8.提供快速的图书信息、图书借阅检索功能。 9.实现图书借阅、图书续借、图书归还功能。
10.实现综合条件查询,如按用户指定条件查询、按日期时间段查询、综合条件查询等。 11.实现图书借阅、续借、归还时记下每一笔记录的操作员。 12.支持图书到期提醒功能。
13.采用人机对话的操作方式,方便管理员的日常操作。 14.为操作员提供密码修改功能。 15.系统运行稳定、安全可靠。
2..1用户特点
本软件的最终用户是面向管理员(图书管理员和其它管理人员)、读者(老师和同学等),他们都具有一定的计算机应用基础,可以比较熟练操作计算机。管理员和读者都是经常性用户。
系统维护人员为计算机专业人员,熟悉数据库、操作系统、网络维护工作。维护人员为间隔性用户。
读者类型信息实体E-R图如下:
读者类型信类型编类型名可借数
管理员信息实体E-R图实体如下:
管理员信息 管理员编号 管理员名称 管理员密码
3.应用范围
用户登录
系统运行后首先
3.应用范围 用户登录
系统运行后首先进入用户登录界面,用户登录的界面 用户登录界面
用户进入系统时,首先要进行图书管理员身份的验证。用户输入管理员的密码和编码,输入正确后,系统确认了操作者的合法身份即进入主控程序。 借阅图书
在系统主窗口中选择“借阅图书”,进入“借阅图书”。 借阅图书窗口
使用时单击“借阅”按钮或直接按回车键,光标定位于“借阅人编码或姓名”项。 输入借阅人的编码或姓名后,系统自动判别。如果系统的借阅人库中没有该借阅人的记录,那么系统将给出提示;如果系统库中确有其人,那么系统从数据库中读出该借阅人姓名并填入借阅窗口。同时,系统还将图书管理员信息、借阅日期(从主机系统日期中读取)、预期还书日期写入该窗口。
输入借阅图书的编码,单击“确认”按钮后,系统自动判断。如果书库中仅剩典藏书,系统将给出提示;如果书库中尚有可借书则完成本次借阅操作。如果单击“放弃”按钮,则取消本次借阅操作。 归还图书
在系统主窗口中,选择“归还图书”,进入“归还图书”窗口。 归还图书窗口
单击“还书”选项或直接按回车键,光标定位于“借阅人编码或姓名”项。
输入借阅人的编码或姓名、借阅图书的编码后,系统自动判别。如果系统中无该人的借阅信息,那么系统将提示用户;如果系统库中确有该人借阅信息,那么系统从数据库中读出该条借阅信息并填入借阅窗口。同时,系统还将图书管理员信息、还书日期写入该窗口。 如果单击“确认”按钮,则完成本次还书操作;单击“放弃”按钮,则取消本次还书操
作。
4.假定和约束
项目三个约束条件: 时间日程(项目周期)。 性能规规(质量)
以及资金(成本费用)预算
在项目管理中,假设的目的就是为了控制风险,而约束在某些程度上降低项目管理风险的另一个措施。
假设,假设自己所建的图书管理系统在一个普通的环境下是怎样的情况,可以先实现猜想一下自己的系统所实现的功能是怎样的,以及各个功能之间是怎样联系起来的,在系统登录的主界面中,填上自己的用户名和密码,然后进入系统的主页,在主页上面有写什么样的功能,比如像借书、还书等功能,记录借书的天数以及借书限制的最大日期。 关键性技术
图书管理系统的关键性技术主要体现在查看,添加,修改,删除这几个方面: 查看
管理员登录后,选择“图书管理”/“图书档案管理”菜单项,进入到查看图书列表页面,在该页面中
将显示全部图书信息列表,同时提供添加图书信息、删除图书信息、修改图书信息的超链接。 2,添加
管理员登录系统后,在导航栏中单击“图书档案管理”超链接,进入到查看图书列表页面。在该页面
中单击“添加图书信息”超链接,进入到添加图书信息页面。添加图 3.修改
管理员登录系统后,在导航栏中单击“图书档案管理”超链接,进入到查看图书列表页面。单击想要
修改的图书信息后面的“修改”超链接,进入到“修改图书信息”页面。修改图书信息页面的运行结果如 3. 需求规定
在图书管理系统中,管理员要为每个读者建立借阅账户,并給读者发放不同类别的借阅卡(借阅卡可提供卡号、读者姓名),账户内存储读者的个人信息和借阅记录信息。持有借阅卡的读者可以通过管理员(作为读者的代理人与系统交互)借阅、归还图书,不同类别的读者可借阅图书的范围、数量和期限不同,可通过互联网或图书馆内查询终端查询图书信息和个人借阅情况,以及续借图书(系统审核符合续借条件)。
借阅图书时,先输入读者的借阅卡号,系统验证借阅卡的有效性和读者是否可继续借阅图书,无效则提示其原因,有效则显示读者的基本信息(包括照片),供管理员人工核对。然后输入要借阅的书号,系统查阅图书信息数据库,显示图书的基本信息,供管理员人工核对。最后提交借阅请求,若被系统接受则存储借阅纪录,并修改可借阅图书的数量。归还图书时,输入读者借阅卡号和图书号(或丢失标记号),系统验证是否有此借阅纪录以及是否超期借阅,无则提示,有则显示读者和图书的基本信息供管理员人工审核。如果有超期借阅或丢失情况,先转入过期罚款或图书丢失处理。然后提交还书请求,系统接受后删除借阅纪录,并登记并修改可借阅图书的数量。
图书管理员定期或不定期对图书信息进行入库、修改、删除等图书信息管理以及注销(不外借),包括图书类别和出版社管理。
为系统维护人员提供权限管理、数据备份等通用功能。
* 数据流图加工处理功能简单描述 (1)书籍管理
> 书籍类别管理:增、删除、改等管理。
> 书籍信息管理:新书入库,图书购入后由图书管理人员将书籍编码并将其具体信息录入书籍信息表。书籍信息修改,书籍信息由于工作人员的疏忽而出现错误时,可修改其信息。管理员按不同方式查询、统计,读者按不同方式查询。 > 出版社信息管理:增、删除、改等管理。
> 图书注销:某一部分图书会随着时间的增长及知识的更新而变得不再有使用的价值,或者图书被损坏,这些图书就要在图书籍信息表中的除去。即从书籍信息表中删去此书籍记录。 (3)读者管理
> 读者类别信息管理:增、删除、改等管理。
> 读者信息管理:办理、挂失、暂停借、注销阅卡,录入、修改、删除读者信息。 (4)借阅管理
> 续借管理:提供读者在符合规定的情况下网上续借。
> 还书管理:根据借阅卡编号、图书ID等,在借阅信息表中找到相应的记录,将借书记录删除,更新该记录的相应数据(图书信息表)。根据违反规定情况计算和登记罚款记录。 > 借书管理:根据借阅卡编号和图书编号,进行借书登记。在借阅信息表中插入一条借书记录,该记录包括读者ID、图书ID、借出日期、借阅编号、操作员等信息,更新该记录的相应数据(图书信息表)。把超期图书以列表的形式显示出来,并以电子邮件或打印成书面通知读者。提供读者网上查询自己的借阅情况(包括超期提示)
3.2数据描述
通过对图书管理系统需求及其数据流图的分析,可以得出该系统涉及读者、书籍、借阅和还书信息表等数据实体。 (1)E-R图
(2)数据实体结构描述
功能名称:图书信息表 存储位置:图书信息
存储组织:一本图书一条记录 主键:图书编号 数据元素 数据采集方式 说明 图书编号 人工采集
主键,必须输入
图书名称 人工采集 必须输入 图书类别编号 人工采集 必须输入 书架位置 人工采集 ISBN 人工采集 作者 人工采集 译者 人工采集 单价 人工采集
出版社编号 人工采集
出版时间 人工采集
总数量 人工采集
入库日期 自动采集
入库操作员 自动采集
现存量 自动采集
借阅次数 自动采集
是否注销 人工采集
内容简介 人工采集 备注 人工采集
相关提供数据主要功能模块:书籍管理、借阅管理、注销管理 数据输出接受主要功能模块:书籍管理、借阅管理、注销管理 修改记录:
功能名称:读者信息表 存储位置:读者信息
存储组织:一个读者一条记录 主键:读者编号 数据元素 数据采集方式 说明
读者编号(借书证号码和用户名与此同) 人工采集
主键,必须输入 读者姓名 人工采集 必须输入 读者类别编号 人工采集 必须输入 读者性别 人工采集
出生日期 人工采集
读者状态 人工采集
办证日期 自动采集
已借图书数量 自动采集
证件名称
人工采集
证件号码 人工采集
读者单位 人工采集
联系地址 人工采集
联系电话 人工采集
EMAIL 人工采集
用户密码 人工采集
办证操作员 自动采集 备注 人工采集
相关提供数据主要功能模块:读者管理、借阅管理 数据输出接受主要功能模块:读者管理、借阅管理 修改记录:
功能名称:借阅信息表 存储位置:借阅信息
存储组织:一本借阅一条记录 主键:图书编号 数据元素 数据采集方式 说明 图书编号 人工采集
主键,必须输入 图书名称
自动采集
读者编号 人工采集
主键,必须输入 读者姓名 自动采集
图书价格 自动采集
借阅日期 自动采集
应还日期 自动采集
续借次数 自动采集
借阅操作员 自动采集
相关提供数据主要功能模块:借阅管理、续借管理 数据输出接受主要功能模块:借阅管理、续借管理 修改记录:
功能名称:图书类别表 存储位置:图书类别
存储组织:一类图书一条记录 主键:图书类别编号 数据元素 数据采集方式 说明
图书类别编号 人工采集
主键,必须输入 图书类别名称 人工采集 必须输入 备注 人工采集
相关提供数据主要功能模块:书籍类别管理
数据输出接受主要功能模块:书籍类别管理、书籍管理 修改记录:
功能名称:出版社信息表 存储位置:出版社信息
存储组织:一个出版社一条记录 主键:出版社编号 数据元素 数据采集方式 说明
出版社编号 人工采集
主键,必须输入 出版社名称 人工采集 必须输入 出版社地址 人工采集
邮政编码 人工采集
联系人 人工采集
联系电话 人工采集
EMAIL 人工采集 备注 人工采集
相关提供数据主要功能模块:出版社管理
数据输出接受主要功能模块:出版社管理、书籍管理 修改记录:
功能名称:读者类别表 存储位置:读者类别
存储组织:一类读者一条记录 主键:读者类别编号
数据元素 数据采集方式 说明
读者类别编号 人工采集
主键,必须输入 读者类别名称 工人采集 必宿输入 可借书数量 人工采集
可借书天数 人工采集
可续借次数 人工采集
逾期缓冲天数 人工采集
逾期每天罚款金额 人工采集
丢失罚款倍数 人工采集
相关提供数据主要功能模块:读者类别管理
数据输出接受主要功能模块:读者管理、读者类别管理 修改记录:
功能名称:图书注销信息表 存储位置:图书注销信息 存储组织:一本用户一条记录 主键:图书编号 数据元素 数据采集方式 说明 图书编号 人工采集
主键,必须输入 注销数量 人工采集
必须输入 注销日期 人工采集
注销操作员 自动采集
相关提供数据主要功能模块:注销管理
数据输出接受主要功能模块:注销管理、书籍管理 修改记录:
3.3性能需求
由于此开发项目针对图书馆,使用频度较高,使用性要求比较高。为防止对信息资料和管理程序的恶意破坏,要求有较为可靠的安全性能。总之,要求稳定、安全、便捷,易于管理和操作。
* 查询速度:不超过10秒;
* 其它所有交互功能反应速度:不超过3秒; * 可靠性:平均故障间隔时间不低于200小时。 3.4 其他需求
能快速恢复系统和故障处理,方便系统升级和扩充,故障恢复时间不超过5小时.
2.2数据库结构设计
2.2.1 概念结构设计(E-R图)
(1) 概念结构设计是将分析得到的用户需求抽象为概念模型的过程,即在需求分析的基础
上,设计出能够满足用户需求的各种实体以及它们之间的相互关系的模型。这样才能更好地、更准确地用某一DBMS实现这些需求,它是整个数据库设计的关键。概念结构的主要特点是能真实、充分地反映现实世界,易于理解,易于更改,易于向关系、网状、层次等各种数据模型转换。描述概念模型的有力工具是E-R模型。 (1)基于数据库管理系统的简易图书借阅管理系统的E-R图如图2.1所示。
图书类型1n借阅信息N属于管理管理N读者n图书nn管理1111管理员1N管理属于1属于n1管理管理1书架11管理1N管理读者类型n系统权限信息图书馆信息 图2.1 简易图书馆管理系统总E-R图
(2) 系统的部分实体属性E-R图如图2.2、2.3、2.4所示。
读者读者条形码读者名称读者性别读者类型证件号证件类型备注E-mail联系电话
图2.2读者属性E-R图
管理员管理员名称管理员编号管理员密码
图2.3管理员属性E-R图
图书图书条形码图书名称图书类别书架
图2.4图书属性E-R图
备注借阅次数价格作者出版社
2.2.2 逻辑结构设计
逻辑结构设计的任务就是把概念结构设计阶段设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。设计逻辑结构时一般要分三步进行,首先是将概念结构转换为一般的关系、网状、层次模型,其次是将转换来的关系、网状、层次模型向特定DBMS支持下的数据模型转换,最后是对数据模型进行优化。
基于B/S的简易图书借阅管理系统采用的是将E-R图向关系数据模型转换。以下是由概念模型向逻辑模型转化的关系模式:
读者(读者条形码,读者姓名,读者性别,读这类型,证件类型,证件号,联系电话,E-mail,备注)
管理员(管理员编号,管理员名称,管理员密码)
图书(图书条形码,图书名称,图书类别,书架,出版社,作者,价格,借阅次数) 2.2.3物理结构设计
数据库的物理结构设计是对于给定的逻辑数据模型,选取一个最合适应用环境的物理
结构。数据库的物理结构指的是数据库在物理设备上的存储结构与存取方法,它依赖于给定的计算机系统。基于B/S的简易图书管理系统的数据库表结构如表2.1~2.3所示。
表2.1读者信息表(tb_readerInfo) 字段名 readerBarCode readerName 注释 读者条形码 读者姓名 类型 varchar varchar 长度 允许空 默认值 50 50 null sex readerType certificateType certificate tel email remark 读者性别 读者类型 证件类型 证件号 联系电话 E-mail 备注 Char Varchar Varchar Varchar Varchar Varchar Varchar 50 50 50 50 50 50 500 null null null null null null null 表2.2管理员信息表(tb_user) 字段名 注释 管理员编号 管理员名称 管理员密码 类型 int varchar varchar 长度 4 50 50 允许空 默认值 自动增长(1,1) userId userName userPwd 字段名 Null Null 表2.3图书信息表(tb_bookInfo)
注释 图书名称 图书类别 书架 出版社 作者 价格 借阅次数 类型 长度 varchar 4 int int 4 100 允许空 默认值 null null null null null null null bookBarCode 图书条形码 varchar 100 bookName bookType bookcase bookConcern author price borrowSum varchar 100 varchar 80 money int 8 4 2.3系统功能设计 2.3.1功能模块结构图
图书馆管理系统图书借阅排行查询系统设置读者管理图书管理图书借还系统查询密码修改退出系统设置图书馆信息管理员设置书架信息管理读者类型管理读者信息管理图书类型管理图书类型管理图书借阅图书续借图书归还图书信息查询图书借阅查询 图2.5功能模块结构图
2.3.2各模块功能描述 1) 首页模块功能
首页是各个登录页面的入口,链接了各个登录页面的超链接。 2) 系统设置模块功能
①图书管信息:此功能是图书馆的具体信息。
②管理员设置:此功能是对管理员的权限的添加、删除以及添加新的管理员的权限。 ③书架设置:对书架进行分类管理以及添加、修改、删除书架的功能。 3) 读者管理模块功能
①读者类型管理:是对读者类型的添加、删除、修改等功能。
②读者信息管理:管理员对读者信息的详细录入,修改读者信息和删除读者信息的功能。 4) 图书管理模块功能
① 图书类型管理:是对图书进行分类管理,对图书类型的添加、删除、修改等功能。 ② 图书信息管理:管理员对图书信息的详细录入,修改图书信息和删除图书信息等功
能。
5) 图书借阅模块功能
① 图书借阅:该功能首先根据读者条形码查出读者信息,如若存在,则执行借书功能,然后再依据读者所需的书,根据书的条形码查询书是否存在,若存在,则借阅成功,否则借阅失败。
② 图书续借:该功能是用于实现读者所需书的续借功能。 ③ 图书归还:就是实现对读者以前所借书的归还。 6) 系统查询模块功能
① 图书信息查询:根据书的条形码、名字、作者、类型、出版社等对图书的信息进行查询。
② 图书借阅查询:根据图书的条形码、书名、读者条形码等查询图书的借阅情况。 7) 修改密码模块功能
该功能为了系统的安全性,管理员乙方自己密码丢失,可以修改自己的密码。 8) 退出系统模块功能
该功能是为管理员退出系统所用,当管理员完成自己的工作后,要求退出系统则此功能就是为了实现管理员退出系统的。 3系统界面设计与实现 2.4.1系统登录界面
系统首页,同时也是登录界面,在此界面中,管理可以根据自身情况登录到系统中 ,管理员登录界面如图2.6所示。
图2.6 管理员登录界面
相关代码:
protected void btnEntry_Click(object sender, EventArgs e)
{
string userName = txtName.Text; string Pwd = txtPwd.Text;
string sql = \"select * from tb_user where userName='\" + userName + \"' and userPwd='\" + Pwd + \"'\";
if (dataOperate.seleSQL(sql) > 0) {
Session[\"userName\"] = txtName.Text; Response.Redirect(\"index.aspx\"); }
else {
RegisterStartupScript(\"\", \"\"); } }
2.4.2首页界面
相关代码:
protected void Page_Load(object sender, EventArgs e) {
if (Session[\"userName\"] != null) //判断用户是否登录 {
bindBookInfo(); //调用自定义方法用来绑定图书借阅排行 }
else
Response.Redirect(\"entry.aspx\"); //跳转到登录页面
}
protected void bindBookInfo() {
string sql = \"select top 10 * from tb_bookInfo order by borrowSum desc\"; //设置SQL语句
gvBookTaxis.DataSource = dataOperate.getDataset(sql, \"tb_bookInfo\"); //获取图书信息数据源
gvBookTaxis.DataBind(); //绑定GridView控件 }
2.4.3系统设置界面
系统设置的功能包括图书馆的详细信息设置、管理员权限设置、书架设置等。以管理员权限设置为例说明,此功能是对管理员的权限的添加、删除以及添加新的管理员的权限。管理员权限设置界面如图2.8所示。
图2.8管理员权限设置界面
相关代码:
public bool getSet() {
string userName = Session[\"userName\"].ToString(); //获取管理员登录名 string sql = \"select * from tb_admSet where userName='\" + userName + \"'\";
SqlDataReader sdr = dataOperate.getRow(sql);
sdr.Read(); //读取一条记录
return Convert.ToBoolean(sdr[\"systemSet\"]); //返回是否拥有权限 }
2.4.4读者管理界面
该界面是管理员对读者信息进行处理的页面,该界面如图2.9所示:
图2.9读者信息管理界面
相关代码如下:
public void bindReaderInfo() {
string sql = \"select * from tb_readerInfo as a inner join tb_readerType as b on a.readerType=b.[id]\";
gvReaderInfo.DataSource = dataOperate.getDataset(sql, \"tb_readerInfo\");
gvReaderInfo.DataKeyNames = new string[] { \"readerBarCode\" };
gvReaderInfo.DataBind(); }
2.4.5图书信息管理界面
该界面是管理员对图书的信息进行管理的页面,如图2.10所示:
图2.10图书信息管理界面
相关代码如下:
protected void gvBookManage_RowDataBound(object sender, GridViewRowEventArgs e) {
if (e.Row.RowType == DataControlRowType.DataRow) { //设置图书类型
string bookType = e.Row.Cells[2].Text.ToString(); //获取图书类型编号
string typeSql = \"select * from tb_bookType where TypeID=\" + bookType; SqlDataReader typeSdr = dataOperate.getRow(typeSql);
typeSdr.Read(); //读取一条记录
e.Row.Cells[2].Text = typeSdr[\"typeName\"].ToString(); //设置书架
string bookcase = e.Row.Cells[3].Text.ToString(); //获取书架编号
string caseSql = \"select * from tb_bookcase where bookcaseID=\" + bookcase; SqlDataReader caseSdr = dataOperate.getRow(caseSql);
caseSdr.Read(); //读取一条记录
e.Row.Cells[3].Text = caseSdr[\"bookcaseName\"].ToString();
e.Row.Attributes.Add(\"onMouseOver\
\"Color=this.style.backgroundColor;this.style.backgroundColor='lightBlue'\");
e.Row.Attributes.Add(\"onMouseOut\ }
}
2.4.6图书借阅界面
管理员进入该页面后,可以根据读者的条形码或图书的条形码为读者提供图书借阅服务。相关界面如下图2.11所示。 相关代码:
protected void gvBookBorrow_SelectedIndexChanging(object sender, GridViewSelectEventArgs e) {
//获取选中图书条形码
string bookBarCode = gvBookBorrow.DataKeys[e.NewSelectedIndex].Value.ToString(); //创建SQL语句使用内联接连接条件为图书类型编号,查询条件为符合图书条形码的记录
string sql = \"select * from tb_bookInfo as a inner join tb_bookType as b on a.bookType=typeID where a.bookBarCode='\" + bookBarCode + \"'\"; SqlDataReader //获取图书信息 sdr.Read();
//读取一条记录 int //获取借阅天数 string //获取图书名称 string //获取借阅日期 string //获取读者条形码 string string //获取读者姓名
//创建SQL语句将图书借阅信息添加到图书借阅信息表中
string addSql = \"insert tb_bookBorrow values('\" + bookBarCode + \"','\" + bookName + \"','\" + borrowTime + \"','\" + returnTime + \"','\" + readerBarCode + \"','\" + readerName + \"','')\"; if (dataOperate.execSQL(addSql)) //判断是否添加成功 {
//创建SQL更新图书信息表中符合图书条形码条件记录的借阅数
string updateSql = \"update tb_bookInfo set borrowSum=borrowSum+1 where
readerName
returnTime
=
=
txtReaderName.Text;
DateTime.Now.Date.AddDays(borrowDay).ToShortDateString(); //获取应还日期
readerBarCode
=
txtReaderBarCode.Text;
borrowTime
=
DateTime.Now.Date.ToShortDateString();
bookName
=
sdr[\"bookName\"].ToString();
borrowDay
=
Convert.ToInt32(sdr[\"borrowDay\"]);
sdr
=
dataOperate.getRow(sql);
bookBarCode='\" + bookBarCode + \"'\";
dataOperate.execSQL(updateSql);
bindReaderInfo(); //重新绑定读者信息 gvBookBorrow.DataSource = null; //将数据源设置为空 gvBookBorrow.DataBind();
txtBookBarCode.Text = \"\"; //将图书条形码文本框清空
RegisterStartupScript(\"\添加成功!')\"); } else {
RegisterStartupScript(\"\添加失败!')\"); } } }
2.4.7图书查询界面
管理员进入该页面后可以根据不同的关键字查询图书的基本信息,界面如图2.12所示:
图2.12图书系统查询界面
相关代码如下: //查找搜索的图书信息
protected void btnSearch_Click(object sender, EventArgs e) {
string Condition = ddlCondition.Text; string key = \"\";
if (ddlBookType.Visible) {
key = ddlBookType.SelectedValue; } else
key = txtKey.Text;
sql = \"select * from tb_bookInfo where \" + Condition + \" like '%\" + key + \"%'\";
bindBookInfo(sql); txtKey.Text = \"\"; } 2.4.8还书页面
该页面是管理员归还图书操作页面,如图2.13所示: 相关代码如下:
protected void btnReaderSearch_Click(object sender, EventArgs e) {
string readerBarCode = txtReaderBarCode.Text;
string readerSql = \"select * from tb_readerInfo where readerBarCode='\" + readerBarCode + \"'\";
SqlDataReader sdr = dataOperate.getRow(readerSql); if (sdr.Read()) {
txtReaderName.Text = sdr[\"readerName\"].ToString(); txtReaderSex.Text = sdr[\"Sex\"].ToString();
txtCertificateType.Text = sdr[\"certificateType\"].ToString(); txtCertificate.Text = sdr[\"certificate\"].ToString();
string readerTypeSql = \"select * from tb_readerType where id=\" + sdr[\"readerType\"].ToString();
SqlDataReader typeSdr = dataOperate.getRow(readerTypeSql); typeSdr.Read();
txtReaderType.Text = typeSdr[\"type\"].ToString(); int borrowNum = Convert.ToInt32(typeSdr[\"num\"]);
string selSql = \"select count(*) from tb_bookBorrow where readerBarCode='\" + readerBarCode + \"' and isReturn ='0'\";
int alreadyNum = dataOperate.seleSQL(selSql);
txtNum.Text = Convert.ToString(borrowNum - alreadyNum);
string sql = \"select * from tb_bookBorrow where readerBarCode='\" + txtReaderBarCode.Text + \"'and isReturn='0'\"; bindGridView(sql); } else
RegisterStartupScript(\"\图书条形码输入错误!')\");
}
2.4.9管理员修改密码界面
该界面是管理员对自己系统安全的一个维护,以防他人窃取信息,修改密码界面如图2.14所示:
图2.14管理员修改密码界面
相关代码如下:
protected void btnSave_Click(object sender, EventArgs e) { string
sql=\"select
*
from
tb_user
where
userName='\"+Session[\"userName\"].ToString()+\"'\"; SqlDataReader sdr=dataOperate.getRow(sql); sdr.Read();
if (txtOldPass.Text == sdr[\"userPwd\"].ToString()) {
string upSql = \"update tb_user set userPwd='\" + txtNewPass.Text + \"' where userName='\"+Session[\"userName\"].ToString()+\"'\"; if (dataOperate.execSQL(upSql)) {
RegisterStartupScript(\"\更新成功!')\"); } else
RegisterStartupScript(\"\更新失败!')\"); } else
RegisterStartupScript(\"\原始密码输入错误')\");
}
因篇幅问题不能全部显示,请点此查看更多更全内容