大数据库图书借阅管理系统
《图书管理系统》需求规格说明书

《图书管理系统》需求规格说明书《图书管理系统》需求规格说明书一、引言随着图书馆藏书数量的增加,读者数量的增多,图书管理成为一项重要的任务。
为了提高图书管理的效率和便利性,开发一款全新的图书管理系统变得十分必要。
本文将详细阐述《图书管理系统》的需求规格,包括系统的功能和特性,以及每个功能的详细需求。
二、需求列表1、系统设计1、界面设计:提供直观、易用的用户界面,以便读者进行图书查询、借阅、归还等操作。
2、功能模块:将系统分为多个功能模块,如用户管理、借阅管理、库存管理、数据统计等。
3、数据库设计:设计适合系统需求的数据库结构,包括读者信息、图书信息、借阅记录等。
2、用户管理1、注册:提供用户注册功能,收集用户基本信息。
2、登录:提供用户登录功能,验证用户身份。
3、信息修改:允许用户修改个人信息。
4、密码修改:允许用户修改密码。
3、借阅管理1、图书查询:提供多种查询方式,如按书名、作者、出版社等查询。
2、借书:允许用户借阅图书。
3、还书:允许用户归还图书。
4、续借:允许用户续借图书。
4、库存管理1、图书入库:将新图书入库,更新库存。
2、图书出库:将图书借出,更新库存。
3、库存查询:查询当前库存状态。
5、数据统计1、借阅统计:统计借阅记录,生成报表。
2、库存统计:统计库存记录,生成报表。
3、其他统计:根据需求进行其他相关统计。
三、需求分析1、系统设计1、界面设计:要求界面简洁、美观,易于使用,提供良好的用户体验。
2、功能模块:要求各模块之间耦合度低,高内聚,便于系统维护和扩展。
3、数据库设计:要求数据库结构合理,能够满足系统的查询、更新等操作需求。
2、用户管理1、注册:要求用户信息存储安全,不可泄露。
2、登录:要求登录过程简单、快捷,避免长时间等待。
3、信息修改:要求信息修改过程简单易用,保障信息安全。
4、密码修改:要求密码修改过程安全可靠,防止密码泄露。
3、借阅管理1、图书查询:要求查询速度快,结果准确,支持多种查询方式。
学校图书借阅管理系统数据库设计

学校图书借阅管理系统数据库设计概述学校图书借阅管理系统是为帮助学生和教职员工更方便地借阅图书而设计的系统。
该系统需要一个数据库来存储和管理相关信息,本文将详细介绍学校图书借阅管理系统的数据库设计方案。
数据库概述数据库设计目标学校图书借阅管理系统的数据库设计目标是实现对图书、借阅者和借阅记录等信息的有效管理和查询,保证系统的高效性和稳定性。
数据库结构以下是学校图书借阅管理系统的数据库结构设计:1.图书表(Books)–book_id: 图书ID(主键)–title: 图书标题–author: 作者–publisher: 出版社–publish_date: 出版日期–price: 价格–total_copies: 总藏书量–available_copies: 可借数量2.借阅者表(Borrowers)–borrower_id: 借阅者ID(主键)–name: 姓名–grade: 年级–department: 院系–max_books: 最大可借数量3.借阅记录表(BorrowRecords)–record_id: 记录ID(主键)–book_id: 图书ID–borrower_id: 借阅者ID–borrow_date: 借阅日期–return_date: 归还日期数据库设计细节数据库关系•图书表和借阅者表之间是一对多的关系,一个借阅者可以借阅多本图书。
•图书表和借阅记录表之间也是一对多的关系,一本图书可以被多个借阅者借阅。
•借阅者表和借阅记录表之间是一对多的关系,一个借阅者可以有多条借阅记录。
数据库约束•图书表中的total_copies和available_copies不能小于0。
•借阅者表中的max_books不能小于0。
•借阅记录表中的borrow_date不能晚于return_date。
数据库索引在图书表和借阅者表的主键上创建索引,可以提高查询效率。
数据库操作添加图书INSERT INTO Books (book_id, title, author, publisher, publish_date, price, total_copies, available_copies)VALUES ('1', 'Database Systems', 'Abraham Silberschatz', 'McGraw-Hill', '2011-11-01', 50.00, 5, 5);借阅图书INSERT INTO BorrowRecords (record_id, book_id, borrower_id, borrow_d ate, return_date)VALUES ('1', '1', '101', '2022-01-01', '2022-01-15');UPDATE Books SET available_copies = available_copies -1WHERE book_id ='1';归还图书UPDATE BorrowRecords SET return_date ='2022-01-15'WHERE record_id ='1';UPDATE Books SET available_copies = available_copies +1WHERE book_id ='1';总结本文介绍了学校图书借阅管理系统的数据库设计,包括数据库结构、数据库设计细节、数据库操作等内容。
图书管理系统主要功能简介

主要功能简介一、适用范围:本软件广泛适用于各大、中、小学校、企事业单位等图书馆使用,促进图书馆信息化建设。
二、功能介绍:为了推动企业、单位、学校等图书馆的信息化建设我们开发了本套软件。
此软件界面友好,容易使用而且功能强大。
囊括了图书馆管理的所有功能。
该系统主要有几个大的模块:图书信息录入、图书借阅管理、读者信息管理、图书信息查询,其中每个模块的主要功能如下:图书信息录入:图书信息的录入采用联网查询方式,通过条码枪扫描图书的ISBN码,系统会自动搜索图书信息,然后把图书信息录入到系统。
通过实验,录入1本书的时间大概是20—40秒,这比原来的繁琐的手工录入效率提高90%,极大的减轻了图书管理人员的劳动强度,使广大中小学图书管理信息化突破了录入的瓶颈。
图书借阅管理:根据读者提供的借书证号或借书卡号进行图书的借阅、图书归还操作。
读者信息管理:对读者进行注册登记、注销读者、查阅借阅记录等操作。
图书信息查询:包括导入导出图书信息,根据图书的书名、分类、出版社、价格范围、出版日期来查询图书,进行分类统计,形成上级报表等。
三、模块介绍:1.系统设置:管理员设置,系统参数设置,初始化系统。
2.图书管理:导出图书或期刊模板,导入图书或期刊信息,导入图书marc码,图书或期刊信息录入,注销图书期刊,图书类型设置,出版社设置,书架设置。
3.借阅管理:图书借阅,图书归还,期刊借阅,期刊归还,图书挂失。
4.读者管理:添加读者信息,注销读者信息,批量办证,读者类型设置,读者部门设置。
5.系统查询:图书信息查询,图书借阅查询,图书归还查询,期刊资料查询,期刊借阅查询,期刊归还查询,读者资料查询,超期未还查询,读者档案查询。
6.系统维护:系统备份,系统恢复7.条码打印:打印书籍资料条形码,打印读者资料条形码,用户自定义打印条码,借书证打印。
8.软件首次登录用户名:超级用户密码:admin四、系统特点:1.录入图书信息时,支持扫描条形码或ISBN号自动弹出出版社名,出版地等。
图书借阅管理系统需求分析

系统调研与可行性分析1.1.1 现状调查一直以来人们使用传统的人工方式管理图书馆的日常工作,对于图书馆的借书和还书过程,想必大家都已很熟悉.在计算机尚未在图书馆广泛使用之前,借书和还书过程主要依靠手工.一个最典型的手工处理还书过程就是:读者将要借的书和借阅证交给工作人员,工作人员将每本书上附带的描述书的信息的卡片和读者的借阅证放在一个小格栏里,并在借阅证和每本书贴的借阅条上填写借阅信息。
这样借书过程就完成了。
还书时,读者将要还的书交给工作人员,工作人员根据图书信息找到相应的书卡和借阅证,并填好相应的还书信息,这样还书过程就完成了。
以上所描述的手工过程的不足之处显而易见,首先处理借书、还书业务流程的效率很低,其次处理能力比较低,一段时间内,所能服务的读者人数是有限的.利用计算机来处理这些流程无疑会极大程度地提高效率和处理能力。
我们将会看到排队等候借书、还书的队伍不再那么长,工作人员出错的概率也小了,读者可以花更多的时间在选择书和看书上.为方便对图书馆书籍、读者资料、借还书等进行高效的管理,特编写该程序以提高图书馆的管理效率。
使用该程序之后,工作人员可以查询某位读者、某种图书的借阅情况,还可以对当前图书借阅情况进行一些统计,给出统计表格,以便全面掌握图书的流通情况。
1。
1.2 可行性分析本次毕业设计题目:“图书借阅管理系统"主要目的是利用数据库软件编制一个管理软件,用以实现图书、读者以及日常工作等多项管理.同时对整个系统的分析、设计过程给出一个完整论证。
图书管理系统是一种基于集中统一规划的数据库数据管理新模式。
在对图书、读者的管理,其实是对图书、读者数据的管理.本系统的建成无疑会为管理者对图书管理系统提供极大的帮助.本系统的设计主要从以下几方面做起:系统业务流程分析、系统的功能设计、系统的数据库结构设计、系统输入/输出设计等.作这些工作需对数据库知识有足够认识,并深入的了解vb。
net的使用和管理系统的相关知识。
数据库课程设计--图书馆管理系统

目录1 前言 (1)2 需求分析 (1)2.1 课程设计目的 (1)2.2 课程设计任务 (1)2.3 设计环境 (2)2.4 开发语言 (2)3 分析和设计 (2)3.1 系统E-R模型 (5)3.2 表空间及表的设计 (6)3.3 视图设计 (14)3.4 存储过程、函数、包的设计 (15)3.5 触发器设计 (22)3.6 角色、用户、权限设计 (24)3.7 备份方案设计 (25)4 课程设计总结 (27)参考文献 (28)致谢 (28)1 前言一个简单的图书管理系统包括图书馆内书籍的信息、学校在校师生的信息以及师生的借阅信息。
此系统功能面向图书馆管理员,可以完成书籍和读者的增加、删除和修改,制定借阅规则,以及对读者借阅、续借、归还、预约的确认。
2 需求分析2.1 课程设计目的通过专业课程设计Ⅱ,即大型数据库系统课程设计,有助于培养学生综合运用数据库相关知识解决实际问题的能力。
本设计要求对实际问题进行需求分析,提炼实际问题中的数据,建立关系模型,并在大型数据库中得以实现。
同时要求对数据库的运营、管理及使用上进行必要的规划和实现。
2.2 课程设计任务(1)图书信息:包括图书编号、图书名称、所属类别等;(2)读者信息:包括读者编码、姓名、性别、专业等;(3)借还书信息:包括图书当前状态、被借还次数、借阅时间等。
基本要求:(1)根据需求,补充必要的数据库实体,建立ER模型,通过ER图表示。
(2)在Oracle中创建该系统的数据库,并在数据库中实现各表,写入一定的数据。
(3)从实际查询应用出发,为一些主要的应用模块设计至少3个参数化视图。
(4)从数据检验的角度出发,为相关的表建立至少1个触发器。
(5)从数据更新或修改的角度出发,设计至少1个存储过程。
(6)从安全的角度出发,规划系统的角色、用户、权限,并通过相关的SQL实现。
(7)预计每个表的大致容量和增长速度,指定备份的方案,写出相关的备份命令。
数据库系统原理课程设计——图书借阅管理系统

数据库系统原理课程设计——图书借阅管理系统数据库系统原理课程设计报告图书借阅管理系统第1章设计背景与需求分析1.1设计背景1.1.1 图书管理的现状图书馆作为⼀种资源的集散地,图书和⽤户在借阅资料繁多,包含很多的信息管理,现在有很多的图书馆都是初步的开始使⽤,甚⾄尚未使⽤计算机进⾏资源管理,没有建⽴相对应的图书管理数据系统,⽽是使⽤⼈⼯计算,抄写进⾏,数据处理⼯作量⼤,容易出错和数据丢失。
1.2.2 选题的⽬的、意义图书管理系统数据库有着⼿⼯管理⽆法⽐拟的优点,如检索迅速、查找⽅便、可靠性⾼、存储量⼤、保密性好,成本低等等。
这些优点能极⼤提⾼图书管理的效率,因此,开发⼀套能够为⽤户提供充⾜的信息和快捷的查询⼿段的图书管理系统是⼗分必要的。
1.2功能需求1.2.1读者信息的增加、修改、删除等基本操作1.读者类别信息的输⼊,包括图书类型、图书册数等2.读者档案信息的输⼊,包括读者编号、读者类型等1.2.2图书信息的增加、修改、删除等基本操作。
1.图书类别信息的输⼊,包括类别编号,类别名称等。
2.图书类别信息的查询,修改,包括类别编号,类别名称等。
3.图书档案信息的输⼊,包括图书编号,图书名称,图书类别,作者名称,出版社名称,出版⽇期,图书页数,关键词,登记⽇期,备注信息等。
1.2.3图书流通管理1.图书征订管理2.图书借阅管理3.图书归还管理4.图书罚款管理1.3系统开发环境1、系统:Windows XP,7,8,102、开发平台:SQL SERVER 2070, VISUAL BASIC6.01.4S Q L S E R V E R2017概述SQL SERVER2017是⼀个关系数据管理系统,是微软公司推出的新版本,该版本增加了许多先进的功能,具有⽅便使⽤,可伸缩性好与软件集成度⾼等的优点,可以运⾏在个⼈电脑到⼤型多处理器的服务器等多种平台使⽤。
第2章数据库概念结构设计2.1实体型结构2.2实体间的联系1.⼀个出版社对应多个图书,⼀个图书对应⼀个出版社,出版社和图书是⼀对多联系。
数据库—图书管理系统

课程设计说明书题目:图书管理系统学院:计算机科学与工程学院专业班级:学号:学生姓名:指导老师:年月日课程设计执行计划书安徽理工大学课程设计成绩评定表目录1 绪论 (1)2 系统需求分析与设计 (2)2.1 用户需求分析 (2)2.1.1 用户需求 (2)2.1.2 系统功能需求 (2)2.1.3开发工具 (2)2.2 功能模块图及分模块功能描述 (3)2.3 数据库设计 (3)2.3.1 概念结构设计 (3)2.3.2 逻辑结构设计 (5)3数据库实施 (6)3.1建立数据库 (6)3.2录入数据 (7)4数据库的基本操作和运行结果 (9)5总结 (12)6参考文献 (13)1 绪论随着社会信息量的与日俱增,职场竞争的日趋激烈,越来越多的人更关注知识的积累、能力的培养。
作为信息存储的主要媒体之一图书,数量、规模比以往任何时候都大的多,不论个人还是图书管理部门都需要使用方便而有效的方式来管理自己的书籍。
在计算机日益普及的今天,对个人而言若采用一套行之有效的图书管理系统来管理自己的书籍,会方便许多。
对图书管理部门而言,以前单一的手工检索已不能满足人们的要求,为了便于图书资料的管理需要有效的图书管理软件,对于日益扩大的图书馆,查找特定的书目总是借阅者或工作人员劳神费力,有时还没有结果。
因此往往是投入了大量的人力和财力却得不到高效的管理效率,为了缩短借阅者的等待时间,减轻工作人员的工作量,方便工作人员对它的操作,提高管理的质量和水平,做到高效、智能化管理,从而达到提高图书借阅信息管理效率的目的,采用数据库技术生成的图书馆借阅管理系统将会极大地方便借阅者并简化图书馆管理人员和工作人员的劳动,使工作人员从繁忙、复杂的工作进入到一个简单、高效的工作中。
本文以高校图书馆管理系统管理系统开发过程为背景,全文分为目录、系统需求分析与设计、数据库实施,以及数据库的基本操作和运行结果等全过程。
在程序设计与调试上采用了自上而下,逐步细化,逐步完善的原则。
图书馆管理系统(数据库)

借阅管理模块
借阅请求处理
借阅状态查询
借阅提醒
处理读者的借阅请求, 包括图书检索、预约、
续借等操作。
查询图书的借阅状态, 包括是否可借、借阅中、
已归还等信息。
根据借阅状态,向读者 发送提醒信息,如到期
提醒、预约提醒等。
借阅统计与分析
对借阅数据进行统计和 分析,为图书馆的管理
和决策提供支持。
04 图书馆管理系统数据库优 化
建立实体关系图
根据实体之间的关系,使用实体关 系图(ER图)表示数据的概念模型。
数据库逻辑设计
01
选择合适的数据模 型
根据概念设计阶段的ER图,选择 合适的数据模型(如关系模型) 来表示数据之间的关系。
02
设计数据库表结构
03
建立表之间的关系
根据逻辑设计的要求,设计数据 库表的结构,包括表名、列名、 数据类型、约束等。
根据数据模型的要求,建立表之 间的关系,如主键、外键、索引 等。
数据库物理设计
选择合适的数据库管理系统
01
根据系统的需求和规模,选择合适的数据库管理系统(如
MySQL、Oracle等)。
设计数据库存储结构
02
根据逻辑设计的结果,设计数据库的物理存储结构,包括文件
组织、存储空间分配等。
优化数据库性能
03
根据系统的性能要求,对数据库进行优化,如建立索引、调整
查询语句等。
数据库安全设计
1 2
确定安全需求
通过与图书馆管理人员和用户沟通,明确系统的 安全需求,如数据保密、完整性、可用性等。
设计安全策略
根据安全需求,设计合适的安全策略,包括用户 认证、访问控制、数据备份与恢复等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
大型数据库课程设计设计报告题目:图书借阅管理系统学号:学生姓名:指导教师:提交时间: 2014-11-22目录1.需求分析 (2)1.1需求调查 (2)1.2系统功能分析 (2)2.概念结构设计 (3)2.1概念设计 (3)2.2E-R图建立 (3)3.逻辑结构设计 (8)3.1E-R图向关系模式转换 (8)3.2建立关系模式 (8)3.3关系模式规范化处理 (8)3.4用户子模式建立 (8)3.5关系模式逻辑结构定义 (10)4.物理结构设计 (11)5.数据库实施与测试 (12)5.1数据库实施 (12)5.1.1数据库及数据库对象建立 (12)5.1.2数据存入数据库 (13)5.1.3函数设计 (13)5.2数据库测试 (14)6.数据库完整型设计 (16)6.1主键及唯一性索引 (16)6.2参照完整型 (16)6.3Check约束 (16)6.4触发器设计 (17)6.5规则 (17)7.数据库视图设计 (18)8.数据库存储过程设计 (19)9.总结 (27)10.参考文献 (27)某书店图书借阅管理系统第1章需求分析1.1 需求调查通过对各个书店的市场调查,该图书借阅管理系统的需求如下:1)系统管理:实现系统管理人员对系统的管理,包括添加删除用户,数据备份,数据还原,注销等功能。
2)读者信息管理:添加读者信息,根据借书证编号查看读者信息,根据读者ID删除读者,借阅证到期的读者更改借阅证办证时间。
3)书籍信息管理:添加一条书籍信息,删除一条书籍信息,查看一条图书信息,根据图书名查看图书信息,根据图书类别查看图书信息,根据作者查看图书信息,根据出版社产看图书信息,根据ISBN查看图书库存,根据书籍名查看库存。
4)借阅管理:借书管理,还书管理,续借管理,查看所有借阅信息,根据读者ID查看借阅信息,根据读者ID查看借书记录,根据读者ID查看借书记录,根据读者ID查看罚款信息。
图1-2 系统功能分析图第2章概念结构设计2.1 概念设计概念结构设计阶段的目标是通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型。
即通过对数据流程图的分析归纳和总结,建立E-R图。
概念结构的设计方法有两种:(1)集中式模式设计法:这种方法是根据需求由一个统一机构或人员设计一个综合的全局模式。
这种方法简单方便,适用于小型或不复杂的系统设计,由于该方法很难描述复杂的语义关联,而不适于大型的或复杂的系统设计。
(2)视图集成设计法:这种方法是将一个系统分解成若干个子系统,首先对每一个子系统进行模式设计,建立各个局部视图,然后将这些局部视图进行集成,最终形成整个系统的全局模式。
2.2 E-R图建立局部E-R图1.对‘读者’建立E-R图,其中‘读者ID’为主键图2-1 读者E-R图2.对‘书籍’建立E-R图,其中‘图书ID’为主键图2-2 书籍E-R图3.对‘读者类别’建立E-R图,其中‘读者类别编号’为主键图2-3 读者类别E-R图图2-4 借阅E-R图5、对‘还书’建立E-R图图2-5还书E-R图图2-6罚款E-R图7、对‘罚款类别’建立E-R图图2-7罚款类别E-R图全局E-R图第3章逻辑结构设计3.1 E-R图向关系模式转换数据库的逻辑结构设计就是把概念结构设计阶段设计好的基本 E 一R 图转换为与选用的DBMS产品所支持的数据模型相符合的逻辑结构。
逻辑结构是独立于任何一种数据模型的,在实际应用中,一般所用的数据库环境已经给定(如SQL Server或Oracel或MySql)。
由于目前使用的数据库基本上都是关系数据库,因此首先需要将E-R图转换为关系模型,然后根据具体DBMS的特点和限制转换为特定的DBMS支持下的数据模型,最后进行优化。
3.2 建立关系模式读者信息:读者ID,密码,读者姓名,读者性别,读者类别,读者单位,办证时间,联系方式;读者类别信息:读者类别编号,读者类别名,允许借阅图书最大数,持有图书最长期限,借阅证期限;书籍信息:图书ID,ISBN,书籍名称,书籍类别,书籍作者,出版社,定价,出版日期,登记日期,状态;借书信息:借书证编号,读者姓名,书籍编号,ISBN,书籍名,读者借书时间;还书信息:借书证编号,书籍编号,ISBN,图书名,读者姓名,还书时间;罚款信息:借书证编号,读者姓名,书籍编号,ISBN,书籍名,借阅日期,归还日期,应还日期,罚款类别编号,处理状态;罚款类别:罚款类别编号,类别名,罚款原因,罚款金额3.3 关系模式规范化处理根据F,分析每一个关系模式是否满足3NF,对不满足3NF的关系模式要进行规范化处理。
优化处理,消除不必要的数据冗余3.4 用户子模式建立根据需求分析,研究建立满足不同需求的用户子模式,子模式表示形式为:子模式名(属性列表)3.5 关系模式逻辑结构定义1.读者详细信息字段名数据类型长度约束读者ID Char 10 主键,Not null密码char 20 Not null姓名char 15 Not null性别char 2 男/女,not null 类别编号char 2 外键,not null单位char 30 null办证日期date Not null联系方式char 20 Null表3-12、读者类别详细信息字段名数据类型长度约束读者类别编号char 2 主键,'01'/'02'读者类别名char 15 '普通读者'/'高级读者' 可借阅最大数目smallint 3/6持有最长期限smallint 30/60借阅证期限smallint 1表3-23、书籍详细信息图书ID char 10 主键ISBN char 20 Not null 书籍名char 30 Not null 书籍类别Char 10 Not null 作者char 15 Not null 出版社char 30 Not null 定价money Not null 出版日期date Not null 登记日期date Not null 状态bit Not null表3-34、罚款类别详细信息字段名数据类型长度约束罚款类别编号char 5 主键罚款类别名char 15 Not null 罚款原因char 30 Not null 罚款金额money null表3-45、借阅详细信息字段名数据类型长度约束ID int 主键,自增图书ID char 10 Not null 读者ID char 10 Not null ISBN char 20 Not null 借走日期date Not null 归还日期date null应还日期date Not null 罚款类别编号char 5 null处理状态bit null表3-5第4章数据库物理结构设计数据库物理设计:设计数据库的物理结构,根据数据库的逻辑结构来选定RDBMS(如Oracle、Sybase等),并设计和实施数据库的存储结构、存取方式等。
数据库物理设计是后半段。
将一个给定逻辑结构实施到具体的环境中时,逻辑数据模型要选取一个具体的工作环境,这个工作环境提供了数据存储结构与存取方法,这个过程就是数据库的物理设计。
物理结构依赖于给定的DBMS和和硬件系统,因此设计人员必须充分了解所用RDBMS 的内部特征、存储结构、存取方法。
数据库的物理设计通常分为两步,第一,确定数据库的物理结构,第二,评价实施空间效率和时间效率确定数据库的物理结构包含下面四方面的内容:1、确定数据的存储结构2、设计数据的存取路径3、确定数据的存放位置4、确定系统配置数据库物理设计过程中需要对时间效率、空间效率、维护代价和各种用户要求进行权衡,选择一个优化方案作为数据库物理结构。
在数据库物理设计中,最有效的方式是集中地存储和检索对象。
第5章数据库实施与测试5.1 数据库实施5.1.1数据库及数据库对象建立(1)--建立读者类别表create table读者类别(读者类别编号char(2)primary key not null check(读者类别编号in('01','02')),读者类别名char(15)not null check(读者类别名in('普通读者','高级读者')),可借阅最大数目smallint not null check(可借阅最大数目in(3,6)),持有最长期限smallint not null check(持有最长期限in(30,60)),借阅证期限smallint not null check(借阅证期限in(1)))(2)--建立读者表create table读者(读者ID char(10)not null primary key,密码char(20)not null,姓名char(15)not null,性别char(2)not null check(性别in('男','女')),类别编号char(2)not null foreign key(类别编号)references读者类别(读者类别编号), 单位char(30)null,办证日期date not null,联系方式char(20)null)(3)--建立书籍表create table书籍(图书ID char(10)not null primary key,ISBN char(20)not null,书籍名char(30)not null,书籍类别char(10)not null,作者char(15)not null,出版社char(30)not null,定价money not null,出版日期date not null,登记日期date not null,状态bit not null)(4)--建立罚款类别表create table罚款类别(罚款类别编号char(5)not null primary key,罚款类别名char(15)not null,罚款原因char(30)not null,罚款金额money null)(5)--建立借阅信息表create table借阅信息(id int primary key identity(1,1),--id 自增图书ID char(10)not null,读者ID char(10)not null,ISBN char(20)not null,借走日期date not null,归还日期date null,应还日期date not null,罚款类别编号char(5)null,处理状态bit nullforeign key(图书ID)references书籍(图书ID),foreign key(读者ID)references读者(读者ID),foreign key(罚款类别编号)references罚款类别(罚款类别编号))5.1.2数据存入数据库读者信息由存储过程随机产生100条数据,代码略书籍信息由存储过程随机产生100条数据,代码略5.1.3自定义函数--根据读者ID判断读者证是否过期,判断依据:将读者办证日期加上一年,再和当前系统时间比较alter function check_reader_date(@reader_id char(10))returns bitasbegindeclare@reader_register_date date,@result bitset@reader_register_date=(select办证日期from读者where读者ID=@reader_id)if(Dateadd(year,1,@reader_register_date)<CAST(GETDATE()as date))--如果过期,返回bit=0set@result=0elseset@result=1return@resultend--测试check_reader_date()set@result=dbo.check_reader_date('1000002')if(@result=1)print'没过期'elseprint'过期'--判断读者已借的书籍数量是否超出限制create function check_reader_books(@reader_id char(10))returns bitasbegindeclare@result bit--记录返回值declare@up_book_num smallint--记录读者最高可借的书籍数量declare@borrow_num smallint--记录读者已借的书籍数量set@up_book_num=(select可借阅最大数目from dbo.读者类别where读者类别编号=(select类别编号from dbo.读者where读者ID=@reader_id))set@borrow_num=(select count(*)from dbo.借阅信息where读者ID=@reader_id and处理状态=0)if(@borrow_num<@up_book_num)--可以再借set@result=1else--所借数目达到上限set@result=0return@resultend--判断读者是否有罚款没有交alter function check_ticket(@reader_id char(10))returns bitasbegindeclare@result bitif((select count(*)from dbo.借阅信息where读者ID=@reader_id and罚款类别编号!=null)=0)--如果借阅信息里读者的罚款记录为空,返回set@result=1elsereturn@resultend--select dbo.check_ticket('1000043')--根据读者ID获得图书应该归还的日期create function lend_date(@reader_id char(10))returns dateasbegindeclare@date datedeclare@up_borrow_date smallintset@up_borrow_date=(select持有最长期限from dbo.读者类别where读者类别编号=(select类别编号from dbo.读者where读者ID=@reader_id)) set@date=Dateadd(day,@up_borrow_date,cast(getdate()as date))return@dateend第6章数据库完整性设计6.1 主键及唯一性索引表6-16.2 参照完整性设计1、读者表中将属性类别编号设为外键类别编号char(2)not null foreign key(类别编号)references读者类别(读者类别编号), 2、借阅信息表中的图书ID属性、读者ID属性、罚款类别编号属性设为外键foreign key(图书ID)references书籍(图书ID)foreign key(读者ID)references读者(读者ID)foreign key(罚款类别编号)references罚款类别(罚款类别编号)6.3 Check约束1、读者类别表的读者类别编号进行check约束:check(读者类别编号in('01','02'))2、读者类别表的读者类别名进行check约束:check(读者类别名in('普通读者','高级读者'))3、读者类别表的可借阅最大数目进行check约束:check(可借阅最大数目in(3,6))4、读者类别表的持有最长期限进行check约束:check(持有最长期限in(30,60))5、读者类别表的借阅证期限进行check约束:check(借阅证期限in(1))6、读者表的性别属性进行check约束:check(性别in('男','女'))6.4 触发器设计--创建触发器,当删除借阅信息表中一条数据时,根据书籍ID将书籍表中对应的书籍的状态改为turecreate trigger jieyue_delete on借阅信息after deleteasbegindeclare@book_id char(10)select@book_id=图书ID from deletedupdate书籍set状态=1 where图书ID=@book_idend6.5 规则--创建规则,读者手机号必须为数字create rule phonenum_ruleas@phonenum like'[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'goexec sp_bindrule'phonenum_rule','dbo.读者.联系方式'第7章数据库视图设计--创建书籍库存视图create view book_countasselect ISBN,COUNT(ISBN)as库存from书籍group by ISBN--创建书籍库存create view book_stockasselect书籍.ISBN,书籍名,书籍类别,作者,出版社,定价,出版日期,库存from dbo.book_count,书籍where书籍.ISBN=dbo.book_count.ISBN--创建借书视图create view book_borrowasselect dbo.借阅信息.图书ID,读者ID,dbo.借阅信息.ISBN,dbo.书籍.书籍名,借走日期from dbo.借阅信息,dbo.书籍where借阅信息.图书ID=书籍.图书ID--创建还书视图create view book_lendasselect借阅信息.图书ID,借阅信息.读者ID,借阅信息.ISBN,书籍.书籍名,归还日期from dbo.借阅信息,dbo.书籍where处理状态=1 and借阅信息.图书ID=书籍.图书ID--创建罚款视图alter view ticketasselect借阅信息.读者ID,读者.姓名,罚款类别.罚款原因,罚款类别.罚款金额from借阅信息,罚款类别,读者where借阅信息.罚款类别编号!='00'and借阅信息.罚款类别编号=罚款类别.罚款类别编号and借阅信息.读者ID=读者.读者ID第8章数据库存储过程设计--创建存储过程添加读者信息create procedure add_reader@reader_password char(20),@reader_name char(15),@reader_sex char(2),@reader_kinds char(2),@reader_company char(30),@reader_phone char(20)asbegin--产生编号declare@n intset@n=(select count(*)from读者)set@n=@n+1000000--获得当前日期作为办证日期declare@reader_date dateset@reader_date=Getdate()insert into读者values(@n,@reader_password,@reader_name,@reader_sex,@reader_kinds,@reader_company,@reade r_date,@reader_phone)if@@ERROR>0 --如果上面一条语句出错,则回滚事物,并返回beginrollback tranprint'执行过程中遇到错误'return 0endselect*from读者where读者ID=@n--print '增加成功'end--管理员根据借书证编号查看读者信息的存储过程create procedure reader_info@reader_no char(10)asbeginif((select COUNT(*)from读者where读者ID=@reader_no)=1)select*from读者where读者ID=@reader_noelseprint'没有该读者'end--根据读者ID删除读者的存储过程create procedure delete_reader@reader_no char(10)asbeginif((select COUNT(*)from读者where读者ID=@reader_no)=1)begindelete from读者where读者ID=@reader_noprint'删除成功'endelseprint'没有该读者'end--管理员删除读者证到期的读者的信息create procedure delet_reader_by_dateasbegindeclare@now_date dateset@now_date=GETDATE()delete from读者where Dateadd(year,1,办证日期)<CAST(GETDATE()as date)end--管理员借阅证到期的读者延长借阅证时间create procedure alter_reader_register_date@reader_id char(10)asbeginupdate读者set办证日期=cast(GETDATE()as DATE)where读者ID=@reader_id print'修改成功'end--书籍信息管理--存储过程添加一条书籍信息alter procedure add_book@ISBN char(20),@book_name char(30),@book_kinds char(10),@book_author char(15),@book_publish char(30),@book_price smallint,@book_publish_date dateasbegin--产生编号declare@book_id char(10),@m int,@n intset@m=(select count(*)from书籍)set@n=100000000+@mset@book_id=cast(@n as char(10))--产生登记日期declare@book_rigste_date dateset@book_rigste_date=GETDATE()--产生书籍状态declare@book_state bitset@book_state=1insert into书籍values(@book_id,@ISBN,@book_name,@book_kinds,@book_author,@book_publish,@book_price, @book_publish_date,@book_rigste_date,@book_state)select*from书籍where图书ID=@book_idprint'插入成功'end--根据图示ID删除一条书籍信息create procedure delete_book@book_id char(10)asbegindelete from书籍where图书ID=@book_idend--根据图书ISBN查看一条图书信息create procedure find_book_by_id@book_id char(10)asbeginselect*from书籍where图书ID=@book_idend--根据图书名查看图书信息create procedure find_book_by_name@book_name char(30)asbeginselect*from书籍where书籍名=@book_nameend--根据图书类别查看图书信息create procedure find_book_by_kinds@book_kinds char(10)asbeginselect*from书籍where书籍类别=@book_kindsend--根据作者查看图书信息create procedure find_book_by_author@book_author char(15)asbeginselect*from书籍where作者=@book_authorend--根据出版社产看图书信息create procedure find_book_by_publishment@book_publishment char(30)asbeginselect*from书籍where出版社=@book_publishmentend--根据ISBN查看图书库存create procedure find_book_stock_by_ISBN@ISBN char(20)asbeginselect*from dbo.book_stock where ISBN=@ISBNend--根据书籍名查看库存create procedure find_book_stock_by_name@book_name char(30)asbeginselect*from dbo.book_stock where书籍名=@book_nameEnd--书籍借阅管理--借书管理alter procedure reader_borrow_book@reader_id char(10),@book_id char(10)asbegindeclare@state bitset@state=dbo.check_reader_date(@reader_id)if((select COUNT(*)from dbo.读者where读者ID=@reader_id)=1)--读者存在--判断读者证是否过期if(@state=1)--没有过期--判断读者已借的书籍数量是否超出限制if(dbo.check_reader_books(@reader_id)=1)--已借的书籍数量没有超出限制--判断读者是否有付款没有交if(dbo.check_ticket(@reader_id)=1)--没有罚款未交if((select状态from dbo.书籍where图书ID=@book_id)=1)--图书状态为可借begin--插入借阅信息declare@ISBN char(20),@reader_borrow_date date,@up_date dateset@ISBN=(select ISBN from dbo.书籍where图书ID=@book_id)set@reader_borrow_date=GETDATE()set@up_date=dbo.lend_date(@reader_id)insert into借阅信息(图书ID,读者ID,ISBN,借走日期,应还日期,处理状态)values(@book_id,@reader_id,@ISBN,@reader_borrow_date,@up_date,0)update dbo.书籍set状态=0 where图书ID=@book_idselect*from dbo.借阅信息where图书ID=@book_id and读者ID=@reader_idendelseprint'图书不可借'elseprint'有罚款未交,不能借书,请交罚款'elseprint'已借的书籍数量达到限制,不能再借'else--过期print'借阅证过期'elseprint'读者不存在'end--还书管理alter procedure reader_lend_book@reader_id char(10),@book_id char(10),@tickte_kinds char(5)asbegindeclare@reader_lend_date date,@state bitset@state=1set@reader_lend_date=cast(GETDATE()as date)if((select COUNT(*)from dbo.借阅信息where图书ID=@book_id and读者ID=@reader_id)=0)print'没有该读者或该书籍的借阅信息'elseif((select COUNT(*)from dbo.借阅信息where图书ID=@book_id and处理状态=0)=0) print'该图书已经归还'else--判断是否丢失书籍if(@tickte_kinds='02')--丢失书籍,更新借阅信息beginupdate dbo.借阅信息set归还日期=@reader_lend_date,罚款类别编号=@tickte_kinds,处理状态=@state where图书ID=@book_id and处理状态=0select*from dbo.借阅信息where图书ID=@book_id--delete from 书籍where 图书ID=@book_idendelse--判断是否损坏书籍if(@tickte_kinds='01')beginupdate dbo.借阅信息set归还日期=@reader_lend_date,罚款类别编号=@tickte_kinds,处理状态=@state where图书ID=@book_id and处理状态=0select*from dbo.借阅信息where图书ID=@book_idupdate dbo.书籍set状态=1 where图书ID=@book_idendelse--判断是否超期if(@tickte_kinds='03')beginupdate dbo.借阅信息set归还日期=@reader_lend_date,罚款类别编号=@tickte_kinds,处理状态=@state where图书ID=@book_id and处理状态=0select*from dbo.借阅信息where图书ID=@book_idupdate dbo.书籍set状态=1 where图书ID=@book_idendelse--判断是否超期并损坏if(@tickte_kinds='04')beginupdate dbo.借阅信息set归还日期=@reader_lend_date,罚款类别编号=@tickte_kinds,处理状态=@state where图书ID=@book_id and处理状态=0select*from dbo.借阅信息where图书ID=@book_idupdate dbo.书籍set状态=1 where图书ID=@book_idendelsebeginupdate dbo.借阅信息set归还日期=@reader_lend_date,罚款类别编号=@tickte_kinds,处理状态=@state where图书ID=@book_id and处理状态=0select*from dbo.借阅信息where图书ID=@book_idupdate dbo.书籍set状态=1 where图书ID=@book_idendend--续借管理create procedure renew_book@reader_id char(10),@book_id char(10)asbegindeclare@should_lend_date date--判断是否有该读者借阅该图书的借阅信息if((select COUNT(*)from借阅信息where图书ID=@book_id and读者ID=@reader_id and处理状态=0)=0)print'该读者没有借阅该书籍或图书已经归还'else--判断是否超期set@should_lend_date=(select应还日期from借阅信息where图书ID=@book_id and读者ID=@reader_id and处理状态=0)if(CAST(GETDATE()as date)>@should_lend_date)print'已超期借阅,不能续借,请归还书籍'else--符合续借条件,可以续借begindeclare@up_date datedeclare@up_borrow_date smallintset@up_borrow_date=(select持有最长期限from dbo.读者类别where读者类别编号=(select类别编号from dbo.读者where读者ID=@reader_id)) set@up_date=(select应还日期from借阅信息where图书ID=@book_id and读者ID=@reader_id and处理状态=0)set@up_date=Dateadd(day,@up_borrow_date,cast(getdate()as date))update借阅信息set应还日期=@up_date where图书ID=@book_id and读者ID=@reader_id and处理状态=0select*from借阅信息where图书ID=@book_id and读者ID=@reader_id and处理状态=0endend--查看所有借阅信息alter procedure find_lb_infoasbeginselect*from dbo.借阅信息end--根据读者ID查看借阅信息create procedure find_lb_info_by_readerID@reader_id char(10)asbeginselect*from dbo.借阅信息where读者ID=@reader_idend--根据读者ID查看罚款信息create procedure find_ticket_by_readerID@reader_id char(10)asbeginselect*from ticket where读者ID=@reader_idend--查看借书记录create procedure find_book_borrowasbeginselect*from dbo.book_borrowend--根据读者ID查看借书记录create procedure find_book_borrow_by_readerID@reader_id char(10) asbeginselect*from book_borrow where读者ID=@reader_idend--根据读者ID查看还书记录create procedure find_book_lend_by_readerID@reader_id char(10) asbeginselect*from book_lend where读者ID=@reader_idEnd总结理论联系实际才能做好一件事,学习一门课程同样是这样。