数据库设计图书管理系统

  • 摘要

该课程设计题目为教学管理系统设计,具体要求如下:

  1. 设计教学管理系统,要求有基本资料管理,比如:读者、图书管理员、阅览室、书籍、书架、书籍分类、出版社、罚款单、系统管理员,书商等基础信息
  2. 基本功能:

角色1:读者

选课

查询图书

借书还书

角色2:图书管理员

角色3:采购员

角色4:系统管理员

数据备份

系统优化

死锁排除

  1. 借还书要求考虑到学期、时间、图书管理员、读者等信息
  • 前言

随着社会信息量的与日俱增,职场竞争的日趋激烈,越来越多的人更关注知识的积累、能力的培养。作为信息存储的主要媒体之一图书,数量、规模比以往任何时候都大的多,不论个人还是图书管理部门都需要使用方便而有效的方式来管理自己的书籍。

在计算机日益普及的今天,对个人而言若采用一套行之有效的图书管理系统来管理自己的书籍,会方便许多。对图书管理部门而言,以前单一的手工检索已不能满足人们的要求,为了便于图书资料的管理需要有效的图书管理软件。对于日益扩大的图书馆,查找特定的书目总是借阅者或工作人员劳神费力,有时还没有结果。因此往往是投入了大量的人力和财力却得不到高效的管理效率。为了缩短借阅者的等待时间,减轻工作人员的工作量,方便工作人员对它的操作,提高管理的质量和水平,做到高效、智能化管理.从而达到提高图书借阅信息管理效率的目的.采用数据库技术生成的图书馆借阅管理系统将会极大地方便借阅者并简化图书馆管理人员和工作人员的劳动,使工作人员从繁忙、复杂的工作进入到一个简单、高效的工作中。

其基本功能包括:

  1. 读者信息管理 2、图书管理员信息管理 3、借阅信息管理 4、图书信息管理

5、采购员信息管理 6、罚款信息管理 7、系统管理(图书管理系统管理员的功能)

三、主体

3.1需求分析

3.1.1 功能需求分析

图书馆管理系统开发。系统开发的总的设计目标是实现图书管理的系统化、规范化和自动化,实现对图书资料的集中统一的管理。用户是系统的最终使用者,开发系统的目的是让用户很方便使用系统,最终为用户带来各种便利。本系统主要实现对图书馆信息的管理,主要功能为管理有关读者、图书、借阅、查询、删除和管理员的信息等。本系统主要解决的问题是利用关键字对数据库进行查询。本系统的宗旨是提高图书管理工作的效率,减少相关人员的工作量,使学校的图书管理工作真正做到科学、合理的规划,系统、高效的实施。本系统应当包括读者、图书管理员、采购员、系统管理员四类用户,这四类用户对系统的需求简要概括如下。

  1. 读者用户需求描述:

(1)有关读者种类标准的制定、种类信息的输入、包括种类编号、种类名称、借书数量、借书期限等。

(2)读者有关信息的修改、查询等。

(3)读者基本信息的输入,包括读者编号、读者姓名、班级、院系等。

(4)读者基本信息的查询、修改

  1. 图书管理员需求描述:

(1)书籍信息的输入,包括书籍编号、书籍名称、书籍所属类别、作者、出版社、出版日期、在库数、价格

(2)借书信息包括借书证号、书籍编号、借出日期、拖欠日期、罚款种额

(3)图书管理书籍号、管理员编号、销书数量、销书日期。

  1. 采购员需求描述:

采购员对系统的主要功能需求是:了解图书的一些基本信息,例如:数量,价格。利用本系统完成采购图书和退换图书的功能。

  1. 系统管理员需求描述:

系统管理员有系统的最高权限,负责系统所需所有数据的动态同步更新以及管理维 护,根据系统针对各用户的设计,基本功能需求如下:

①数据备份需求:备份教学管理信息系统数据库 ②系统优化需求 ③死锁排除需求

3.1.2 数据需求分析

根据功能需求分析的结果,图书管理系统的数据需求分析如下。

(1)读者信息:包括读者号,密码,姓名,学院、专业,年级,电话号码,性别等。

(2)图书信息:包括图书号,ISBN号,书名,作者,价格等。

(3)管理员信息:包括帐号,密码,姓名,性别,职称,类型等。

(4)借阅信息:包括读者号,图书号,借阅时间,应归还时间,归还时间,借出图书

管理员编号,还出的图书管理员编号等。

(5)续借信息包括读者号,图书号,续借时间等。

(6)图书卡挂失信息:包括读者号,挂失时间,取消挂失时间等。

(7)图书挂失信息:包括读者号,图书号,挂失时间,取消挂失时间等。

(8)预约信息:包括读者号,图书号,预约时间等。

(9)罚款信息:包括图书管理员,读者号,图书号,罚款时间,罚款金额,罚款原因等。

(10)采购员信息:包括采购员编号,采购图书,图书数量,花费金额,退换图书名称,退换图书数量等。

3.2 概念设计

3.2.1 数据字典

(1)读者实体集

属性名

含义

类别

域及约束

ReaderID

读者号

主码

Int,不允许取空值

Password

密码

Int,不允许取空值

ReaderName

读者姓名

nvarchar(20),不允许取空值

Dept

学院

nvarchar(20)

Major

专业

nvarchar(20)

Grade

年级

Int

Telephone number

电话号码

Int,不允许取空值

Sex

性别

char(2),取值范围:{‘男’,’女’}

(2)图书实体集

属性名

含义

类别

域及约束

BookID

图书号

主码

Int,不允许取空值

BookName

书名

nvarchar(20),不允许取空值

ISBN

ISBN号

Int,不允许取空值

Author

作者

nvarchar(20),不允许取空值

Price

价格

Int,不允许取空值

Type

类型

nvarchar(20),不允许取空值

(3)管理员实体集

属性名

含义

类别

域及约束

MID

管理员号

主键

Int,不允许取空值

Password

密码

Int,不允许取空值

Mname

姓名

nvarchar(20),不允许取空值

Msex

性别

char(2),取值范围:{‘男’,’女’}

Type

类型

nvarchar(20),不允许取空值

(4)借阅实体集

属性名

含义

类别

域及约束

ReaderID

读者号

外键

Int,不允许取空值

BookID

图书号

外键

Int,不允许取空值

BorrowTime

借阅时间

Datatime,不允许取空值

ReturnTime

应归还时间

Datatime

(5)续借实体集

属性名

含义

类别

域及约束

ReaderID

读者号

外键

Int,不允许取空值

BookID

图书号

外键

Int,不允许取空值

Retime

续借时间

Datatime,不允许取空值

(6)图书卡挂失实体集

属性名

含义

类别

域及约束

ReaderID

读者号

外键

Int,不允许取空值

LossTime

挂失时间

Datatime,不允许取空值

CancelTime

取消挂失时间

Datatime

(7)图书挂失实体集

属性名

含义

类别

域及约束

BookID

图书号

外键

Int,不允许取空值

ReaderID

读者号

外键

Int,不允许取空值

LossTime

挂失时间

Datatime,不允许取空值

CancelTime

取消挂失时间

Datatime

(8)预约实体集

属性名

含义

类别

域及约束

ReaderID

读者号

外键

Int,不允许取空值

BookID

图书号

外键

Int,不允许取空值

PreTime

预约时间

Datatime,不允许取空值

(9)罚款实体集

属性名

含义

类别

域及约束

MID

图书管理员

外键

Int,不允许取空值

ReaderID

读者号

外键

Int,不允许取空值

BookID

图书号

外键

Int,不允许取空值

Penalty time

罚款时间

Datatime,不允许取空值

Cost

罚款金额

Int,不允许取空值

Cause

罚款原因

nvarchar(20)

(10)采购员实体集

属性名

含义

类别

域及约束

BuyerID

采购员编号

主键

Int,不允许取空值

BuyBook

采购图书名称

nvarchar(20),不允许取空值

BuyNum

图书数量

Int,不允许取空值

AllCost

花费金额

Int,不允许取空值

ReturnBook

退换图书名称

nvarchar(20),不允许取空值

ReturnNum

退换图书数量

Int,不允许取空值

3.2.2 ERD(实体关系图)

 

 

 

3.2.3 use case图

 

3.2.4 图书管理系统数据流程图(数据流图)

顶层数据流图:

 

第2层数据流图:(读者借阅,读者还书,读者查询,管理员查询,管理员修改)

 

第3层数据流图:(读者借阅)

 

第3层数据流图:(读者还书)

 

第3层数据流图:(查询图书信息,查询读者信息,查询借阅历史,查询罚款信息)

 

第3层数据流图:(管理员添加、删除、修改读者信息)

第3层数据流图:(管理员添加、删除、修改系统用户信息)

 

 

3.3 逻辑设计

3.3.1 E-R模型向关系模型的转换规则:

(1)实体类型的转换

将每个实体类型转换成一个关系模式,实体的属性即为关系的属性,实体标识符即为关系的键。

(2)联系类型的转换

①如实体间的联系是1:1

可以在两个实体类型转换成两个关系模式中的任意一个关系模式的属性中加入另一个关系模式的键和联系类型的属性。

②如实体间的联系是1:n

则在n端实体类型转换成的关系模式中加入1端实体类型转换成的关系模式的键和联系类型的属性。

③如实体间的联系是m:n

则将联系类型也转换成关系模式,其属性为两端实体类型的键加上联系类型的属性,而键为两端实体键的组合。

3.3.2 E-R图转换为如图所示的数据库关系表:

(1)读者表(reader)

(2)图书表(book)

(3)管理员表(administrator)

 (4)借阅表( borrow)

 

(5)续借表(renew)

 

(6)图书卡挂失表(cardloss)

 

(7)图书挂失表(bookloss)

 

(8)预约表(bespeakingbook)

 

(9)罚款表(penalty)

 

(10)采购员表(buyer)

 

3.4 物理设计

数据库物理设计的任务是为上一阶段得到的数据库逻辑模型,即数据库的逻辑结构选择合适的应用环境的物理结构,既确定有效地实现逻辑结构模式的数据库储存,确定在物理设备上所采用的存储结构和存取方法,然后对该存储式进行性能评价、修改设计、经过多次反复,最后得到一个性能较好的存储模式。数据库物理设计内容包括记录存储结构的设计和存储路径的设计。

3.4.1 DDL语言

 

①建数据库:

create database Librarymanagementsystem

②建表:

create table reader(

ReaderID int primary key NOT NULL,

Password int NOT NULL,

ReaderName nvarchar(20) NOT NULL,

Dept nvarchar(20),

major nvarchar(20),

Grade int,

TelephoneNumber int NOT NULL,

Sex char(2) check(sex='男' or sex='女') null

)

create table book(

BookID int primary key NOT NULL,

BookName nvarchar(20) NOT NULL,

ISBN int NOT NULL,

Author nvarchar(20) NOT NULL,

Price int NOT NULL,

Type nvarchar(20) NOT NULL

)

create table administrator(

MID int primary key NOT NULL,

password int NOT NULL,

Mname nvarchar(20) NOT NULL,

Msex char(2) check(Msex='男' or Msex='女') null,

Type nvarchar(20) NOT NULL

)

create table borrow(

ReaderID int NOT NULL,

BookID int NOT NULL,

BorrowTime datetime NOT NULL,

ReturnTime datetime NOT NULL,

foreign key (ReaderID) references reader(ReaderID),

foreign key (BookID) references book(BookID),

primary key(ReaderID,BookID)

)

create table cardloss(

ReaderID int NOT NULL,

LossTime datetime NOT NULL,

CancelTime datetime,

foreign key (ReaderID) references reader(ReaderID),

primary key(ReaderID)

)

create table bookloss(

ReaderID int NOT NULL,

BookID int NOT NULL,

LossTime datetime NOT NULL,

CancelTime datetime,

foreign key (ReaderID) references reader(ReaderID),

foreign key (BookID) references book(BookID),

primary key(ReaderID,BookID)

)

create table bespeakingbook(

ReaderID int NOT NULL,

BookID int NOT NULL,

PreTime datetime NOT NULL,

foreign key (ReaderID) references reader(ReaderID),

foreign key (BookID) references book(BookID),

primary key(ReaderID,BookID)

)

create table penalty(

MID int NOT NULL,

ReaderID int NOT NULL,

BookID int NOT NULL,

PenaltyTime datetime NOT NULL,

Cost int not null,

Cause nvarchar(100),

foreign key (ReaderID) references reader(ReaderID),

foreign key (BookID) references book(BookID),

foreign key (MID) references administrator(MID),

primary key(ReaderID,BookID,MID)

)

create table buyer(

BuyerID int NOT NULL primary key,

BuyBook nvarchar(20) NOT NULL,

BuyNum int NOT NULL,

Allcost int NOT NULL,

ReturnBook nvarchar(20) NOT NULL,

ReturnNum int NOT NUll

)

3.4.2 重要的存储过程

 

  1. 数据录入
  1. 录入读者信息

create proc spInsertreader

@RID int,@Rname nvarchar(20)

as

if NOT EXISTS(select * from reader where ReaderID=@RID)

begin

insert into reader(ReaderID,ReaderName)

values(@RID,@Rname)

End

insert into reader(ReaderID,Password,Dept,Grade,major,TelephoneNumber,ReaderName)

values(20006,129899,'计算机学院',1,'计算机',12333333,'周元')

(2)录入图书信息

create proc spInsertbook

@BID int,@Bname nvarchar(20)

as

if NOT EXISTS(select * from book where BookID=@BID)

begin

insert into book(BookID,BookName)

values(@BID,@Bname)

end

insert into book(BookID,BookName,ISBN,Author,Price,Type)

values(30009,'线性代数',1234322,'我在想',12,'课内')

(3)录入管理员信息

create proc spInsertadministrator

@adID int,@adName varchar(20)

as

if NOT EXISTS(select * from administrator where MID=@adID)

begin

insert into administrator(MID,Mname)

values(@adID,@adName)

End

insert into administrator(MID,password,Mname,Msex,Type)

values(10002,368488,'歌莉娅','女','系统')

  1. 录入借阅信息

create proc spInsertbrrow

@RID int,@BID int

as

if NOT EXISTS(select * from brrow where BookID=@BID)

begin

insert into brrow(BookID,ReaderID)

values(@BID,@RID)

end 

insert into borrow(ReaderID,BookID,BorrowTime,ReturnTime)

values(20001,30002,2022/1/4,2022/3/1)

  1. 录入续借信息

create proc spInsertrenew

@RID int,@BID int

as

if NOT EXISTS(select * from renew where ReaderID=@RID)

begin

insert into renew(BookID,ReaderID)

values(@BID,@RID)

End

insert into renew(ReaderID,BookID,RenewTime)

values(20001,30002,2023/1/6)

(6)录入图书卡挂失信息

create proc spInsertcardloss

@RID int

as

if NOT EXISTS(select * from cardloss where ReaderID=@RID)

begin

insert into cardloss(ReaderID)

values(@RID)

end

insert into cardloss(ReaderID,LossTime)

values(20002,2022/9/5)

(7)录入图书挂失信息

create proc spInsertbookloss

@RID int,@BID int

as

if NOT EXISTS(select * from bookloss where ReaderID=@RID)

begin

insert into bookloss(ReaderID,BookID)

values(@RID,@BID)

end

insert into bookloss(ReaderID,BookID,LossTime)

values(20003,30004,2022/1/8)

  1. 录入预约信息

create proc spInsertbespeakingbook

@RID int,@BID int

as

if NOT EXISTS(select * from bespeakingbook where ReaderID=@RID)

begin

insert  into bespeakingbook(ReaderID,BookID)

values(@RID,@BID)

End

insert  into bespeakingbook(ReaderID,BookID,PreTime)

values(20002,30004,2022/6/24)

  1. 录入罚款信息

create proc spInsertpenalty

@RID int,@BID int

as 

if NOT EXISTS(select * from penalty where ReaderID=@RID)

begin

insert into penalty(ReaderID,BookID)

values(@RID,@BID)

End

insert into penalty(MID,ReaderID,BookID,PenaltyTime,Cost,Cause)

values(10001,20003,30005,2022/9/16,10,'挂失')

(10)录入采购员信息

create proc spInsertbuyer

@BuID int,@Bname nvarchar(20)

as

if NOT EXISTS(select *from buyer where BuyerID=@BuID)

begin

insert into buyer(BuyerID,BuyBook)

values(@BuID,@Bname)

End

  1. 查询

(1)图书管理员查询读者信息

select *from reader

(2)读者查询信息

select *from reader

where ReaderID=20001;

(3)查询借阅信息

select *from borrow

(4)读者查询借阅信息

select *from borrow

where ReaderID=20001

(5)采购员查询信息

select * from buyer

(6)查询续借信息

select * from renew

(7)查询图书卡挂失信息

select *from cardloss

  1. 查询图书挂失信息

select *from bookloss

  1. 查询预约信息

select *from bespeakingbook

  1. 查询罚款信息

select *from penalty

四、结论及讨论

4.1结论

1.这次课程设计使我熟悉了系统设计的整体步骤。系统设计大体可分为需求分析、概念

设计、逻辑设计、物理设计、数据库的实施及调试测试六大步骤。其中,让我感触最深的是需求分析阶段,在这个阶段,必须对所要设计的系统有总体的构思和了解,知道自己要做什么,要实现什么,并且要实际的进行相关的调查,不能凭想象或自己的了解,这样会在后续的工作中遇到很多的问题。

2.这次课程设计加深了我对数据库系统概论相关知识和SQL SERVER相关功能的理解。例如对建立基本表、视图、索引、存储过程、触发器等,都比以前更加的熟练。并在解决遇到的各种问题的过程中,学到了很多新的知识。比如在导入\导出数据时,由于外键约束的存在,经常会出现错误,这就要注意各个表导入的顺序问题。一般是先导入主键表,后导入外键表,这样可以避免很多的错误。

3.我进一步掌握了相关的SQL语句方面的知识。不但纠正了以前的错误认识和理解,而且学会了建立存储过程和触发器。通过查阅资料,我还明白了存储过程是编译后放在服务器端的程序,它可以被别的模块调用,且不需要重新编译,这样就大大减轻了客户端的负担,且有效的提高了系统执行的效率。

4.2 讨论

  1. 问题1:同一本书,可不可以在同一个时间被借用使用?

答:不能。

  1. 问题2:同一个学生,可以在图书管理系统上借阅多本书么?

答:可以,但有数量限制,不能超过规定的数量。

  1. 问题3:学生如何查看自己的借阅信息?

答:登入图书管理系统,输入个人学号查看。

  1. 问题4:如何优化设计的表之间存在的数据冗余和数据冲突的问题?

    答:检验并使表设计符合第一范式(①表的字段都是单一属性的,不可再分;②每一行的记录都是没有重复的;③存在主属性,而且所有的属性都是依赖于主属性;④所有的主属性都已经定义),第二范式(不存在非主键间的部分依赖)以及第三范式(不存在非主键间的传递依赖)等。

  1. 问题5:管理员如何进行死锁优化?

ps:死锁的四个必要条件:请求和保持、互斥、不可剥夺、循环等待。

答:常用的办法是进行按序申请资源。但是条件苛刻的情况下,为了更快的整体运行速度,可以允许一部分进程预先使用序号大的资源。这时的处理方式是:不可剥夺变为可剥夺。因为不可剥夺变成可剥夺,允许死锁出现,更多的进程可以无等待推进,直到出现死锁才由系统来解决。所以需要死锁检测,找到造成死锁的进程,然后对造成死锁的进程进行死锁状态回滚并暂停其运行,等预判其运行不会造成死锁时再重新申请执行。

这里一共要做四件事:

  1. 死锁检测:①使用操作系统API对应提供的工具
  2. 进程状态回滚并暂停其运行
  3. 预判死锁
  4. 重新执行

死锁检测之后,释放关键资源,暂停进程。直接调用suspend有关的api即可。等待一段时间之后,再次执行申请关键资源之后,再执行死锁检测。直到不会死锁可以运行该进程为止。

  • 134
    点赞
  • 1294
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
数据库系统原理》课程设计—图书馆管理系统 一、课程设计的目的及意义 本课程设计是在学习《数据库原理》课程后,进行的一次全面的综合训练,其目的在于 加深对数据库原理的理解,掌握运用数据库应用系统开发软件的使用方法。通过此次课 程设计,将理论联系实际,可以增强自己的实践动手能力。 二、项目背景 随着现代科学技术的进步,人类社会正逐步走向信息化。图书馆拥有丰富的文献信息 资源,是社会信息系统的重要组成部分,在信息社会中的作用愈来愈重要。我国图书馆 计算机等信息技术的应用起步于20世纪70年代末期,随着改革开放的步伐得以迅速发展 ,特别是90年代以后,我国图书馆信息网络建设取得了较大发展,图书馆信息化建设迈 上了一个新台阶。 某高校图书馆的要求就是藏书全部开放,师生共享、开架借阅。这种借阅方式是发挥 图书馆应有作用的最佳方式,也是素质教育的最好体现。它充分发挥了图书馆的功效, 最大限度地为师生服务,这也是图书馆自动化管理的最终目标。实现这一目标,必须有 现代化的管理手段和体制,图书馆管理的信息化是一个必然趋势。图书馆的信息化管理 ,就是将传统图书馆业务的手工操作转变成由计算机管理,即将图书馆的图书期刊、音 像资料等各种载体文献的采编、典藏、流通、检索及常规业务管理工作,利用计算机技 术,进行高效、准确的信息化管理。 某高校图书馆管理系统总的实现目标是:建立以馆藏目录为基础的机读书目数据库, 实现馆内采购、编目、流通、文献检索等信息化管理;建立图书馆动态网站;接入校园 网为广大师生及时提供馆内的最新信息。长期的目标还要实现直接浏览电子图书以及馆 际间的图书互借等。 三、可行性研究及需求分析、概要设计 1、可行性研究 随着信息时代的到来,人们对知识的需要日益增长,图书馆的藏书、管理人员、读者 的数量也越来越多。图书馆管理涉及大量的数据处理,如果用手工来完成庞大的数据处 理,将费时费力,还容易出错,为了满足图书馆管理的需要,急需要一套图书馆管理系 统来完成这项工作。作为计算机应用的一部分,使用计算机对图书馆信息进行管理,有 着手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保 密性好、寿命长、成本低等。这些优点能够极大地提高图书馆管理的效率,也是企业的 科学化、正规化管理的重要条件。 2、需求分析和概要设计 一般通用的图书馆管理系统包括系统管理、读者管理、编目、图书流通、统计、查询 等功能。比较先进的图书馆管理系统能够在一个界面下实现图书、音像、期刊的管理、 设置假期、设置暂离锁(提高安全性)、暂停某些读者的借阅权、导入导出读者、升级 辅助编目等。此外随着Internet应用的发展,一个完善的系统还应提供无缝接入Intern et的功能,通过IE浏览器让读者使用借阅资料查询、修改密码、预约、资料检索等功能 。有些系统还提供读者自助服务,可以开放一些客户机让读者自行管理密码、查询自己 的借阅情况、预约资料、检索资料等。 下面介绍的是通用图书馆管理系统所必备的功能,如图1所示,包括基本信息维护、 读者管理、图书管理、期刊管理、图书流通管理、期刊流通管理、统计分析管理和系统 管理功能模块,其中每个功能都由若干相关联的子功能模块组成。除此之外系统还应包 括信息系统必须具备的通用功能,例如用户登陆、权限管理、权限设置、数据备份与恢 复等,由于有很多数据库应用方面的书籍对此均有介绍,这里就不再详细介绍了。 图1 图书馆管理系统应包括的基本功能 2.1、基本信息维护模块 "基本信息维护"用于对图书馆信息、书籍信息、常用词库等项目进行初始化设置,这 些设置一般不能轻易改动,包含的子功能模块如图2所示。 图2 "基础信息维护"功能模块 "图书馆信息"用于设置图书馆的基本信息,包括图书馆名称、管长、负责人、电话、说 明等。 "系统参数设置"用于设置系统运行所需的参数,包括办证费用、证件有效期、图书超期 罚款金额、期刊超期罚款金额等。 "书架设置"用于设置书架的基础信息,内容包括书架编号、书架名称等。 "管理员设置"用于设置使用的人员及权限。 "图书期刊词库设置"用于设置系统常用的词库,内容包括供应商、分级、附件、尺寸、 语系、印刷等信息的预先设定值。 2.2、读者管理模块 "读者管理"用于管理与读者有关的信息,包含的子功能模块如图3所示。 图3 "读者管理"功能模块 "读者类型设置"用于设置读者的类型及相关的信息,内容包括图书类型、图书册数、期 刊册数、续借次数、限制图书、限制期刊等。 "读者档案管理"用于设置读者相关的信息,内容包括编号、条形码、姓名、性别、类型 、出生日期、有效证件、证件号码、联系方式、登记日期、有效期至、操作员、备注、 图书借阅次数、期刊借阅次数、是否挂失等。 "借书证挂失与恢复"用于挂失和恢复读者的借书证,挂失
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值