图书管理系统数据库设计MYSQL实现
- 格式:docx
- 大小:23.04 KB
- 文档页数:21
图书管理系统数据库设计说明书图书管理系统数据库设计说明书1、引言本文档旨在对图书管理系统的数据库设计进行详细说明,包括数据库架构、表结构设计、数据流图等内容,以便于系统开发人员进行系统开发和维护。
2、数据库架构设计2.1 数据库类型本系统将采用关系型数据库,具体使用的数据库管理系统为MySQL。
2.2 数据库服务器架构本系统将采用分布式数据库架构,包括一个主数据库服务器和多个副本数据库服务器。
2.3 数据库服务器部署主数据库服务器和副本数据库服务器将部署在不同的物理机器上,以实现数据的冗余备份和负载均衡。
3、数据库表设计3.1 用户表(User)字段:用户ID、用户名、密码、姓名、年龄、性别、联系方式、电子邮箱、注册时间3.2 图书表(Book)字段:图书ID、图书名称、作者、出版社、出版日期、图书类别、价格、库存数量3.3 图书借阅表(Borrow)字段:借阅ID、用户ID、图书ID、借阅日期、归还日期、借阅状态3.4 图书类别表(Category)字段:类别ID、类别名称、类别描述3.5 出版社表(Publisher)字段:出版社ID、出版社名称、联系方式、地质4、数据流图设计4.1 用户注册流程图描述用户注册过程,包括用户输入信息、系统验证信息、保存用户信息等流程。
4.2 用户借阅图书流程图描述用户借阅图书的过程,包括用户查找图书、用户借阅图书、系统更新库存数量等流程。
4.3 用户归还图书流程图描述用户归还图书的过程,包括用户查找借阅记录、用户归还图书、系统更新借阅状态等流程。
5、附件本文档附带的相关附件包括:- 数据库表结构设计文档- 数据流图设计文档- ER图设计文档6、法律名词及注释本文档涉及的法律名词及其注释如下:- 数据库管理系统(Database Management System,简称DBMS):是一种管理和整理数据库的软件系统。
- 关系型数据库(Relational Database):是一种基于关系模型的数据库,采用表格来组织和管理数据。
图书管理系统数据库设计一、系统概述1、系统简介图书管理是每个图书馆都需要进行的工作。
一个设计良好的图书管理系统数据库能够给图书管理带来很大的便利。
2、需求分析图书管理系统的需求定义为:1.学生可以直接通过借阅终端来查阅书籍信息,同时也可以查阅自己的借阅信息。
2.当学生需要借阅书籍时,通过账号密码登陆借阅系统,借阅系统处理学生的借阅,同时修改图书馆保存的图书信息,修改被借阅的书籍是否还有剩余,同时更新学生个人的借阅信息。
3.学生借阅图书之前需要将自己的个人信息注册,登陆时对照学生信息。
4.学生直接归还图书,根据图书编码修改借阅信息5.管理员登陆管理系统后,可以修改图书信息,增加或者删除图书信息6.管理员可以注销学生信息。
通过需求定义,画出图书管理系统的数据流图:数据流图二、系统功能设计三、数据库设计方案图表1、系统E-R模型总体E-R图:管理员E-R图:给出设计的表名、结构以及表上设计的完整性约束。
student:book:book_sort:borrow:存储学生的借书信息return_table:存储学生的归还信息ticket:存储学生的罚单信息manager:3、设计索引给出在各表上建立的索引以及使用的语句。
student:1.为stu_id创建索引,升序排序sql:create index index_id on student(stu_id asc);2.为stu_name创建索引,并且降序排序sql:alter table student add index index_name(stu_name, desc);插入索引操作和结果如下所示:mysql> create index index_id on student(stu_id asc);Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 0mysql> alter table student add index index_name(stu_name desc);Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 0mysql>book:1.为book_id创建索引,升序排列sql:create index index_bid on book(book_id);2.为book_record创建索引,以便方便查询图书的登记日期信息,升序:sql:create index index_brecord on book(book_record);插入索引的操作和结果如下所示:mysql> create index index_bid on book(book_id);Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 0mysql> create index index_brecord on book(book_record);Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 0borrow:1.为stu_id和book_id创建多列索引:sql:create index index_sid_bid on borrow(stu_id asc, book_id asc);插入索引的操作和结果如下所示:mysql> create index index_sid_bid on borrow(stu_id asc, book_id asc);Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 0return_table:1.为stu_id和book_id创建多列索引:sql:create index index_sid_bid on return_table(stu_id asc, book_id asc);插入索引的操作和结果如下所示:mysql> create index index_sid_bid_r onreturn_table(stu_id asc, book_id asc);Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 0ticket:1. 为stu_id和book_id创建多列索引:sql:create index index_sid_bid on ticket(stu_id asc, book_id asc);插入索引的操作和结果如下所示:mysql> create index index_sid_bid on ticket(stu_id asc, book_id asc);Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 0manager:1.为manager_id创建索引:sql:create index index_mid on manager(manager_id);插入索引的操作和结果如下所示:mysql> create index index_mid on manager(manager_id);Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 04、设计视图给出在各表上建立的视图以及使用的语句。
图书管理系统数据库设计1. 引言图书管理系统是一个用于管理图书馆馆藏图书的软件系统。
它提供了图书的借阅、归还、查询等功能,方便读者进行图书借阅和图书馆管理员进行图书管理。
本文档将介绍图书管理系统的数据库设计。
通过组织图书、读者、借阅记录等相关数据,实现图书管理系统的各项功能。
2. 数据库设计2.1 数据库结构图书管理系统的数据库主要包含以下几个表:•图书表(books):存储图书的基本信息,如图书编号、名称、作者、出版社等。
•读者表(readers):存储读者的基本信息,如读者编号、姓名、性别、年龄等。
•借阅记录表(borrow_records):存储图书的借阅记录,包括借阅编号、借阅日期、归还日期、读者编号等。
2.2 数据库字段2.2.1 图书表(books)•book_id:图书编号,主键•book_name:图书名称•author:作者•publisher:出版社•publication_date:出版日期•price:价格2.2.2 读者表(readers)•reader_id:读者编号,主键•reader_name:读者姓名•gender:性别•age:年龄•phone:联系电话2.2.3 借阅记录表(borrow_records)•record_id:借阅记录编号,主键•book_id:借阅图书编号,外键•reader_id:借阅读者编号,外键•borrow_date:借阅日期•return_date:归还日期2.3 数据库关系•图书表与读者表之间是多对多的关系,通过借阅记录表进行关联。
•图书表与借阅记录表是一对多的关系,一个图书可以对应多条借阅记录。
•读者表与借阅记录表也是一对多的关系,一个读者可以借阅多本图书。
2.4 数据库约束•图书编号(book_id)在图书表中是唯一的,不能重复。
•读者编号(reader_id)在读者表中是唯一的,不能重复。
•借阅记录编号(record_id)在借阅记录表中是唯一的,不能重复。
数据库课程设计报告专业:微电子技术系班级:2940710820姓名:指导教师:成绩:2011年12月12日一、课程设计概述1.课程设计背景某大学图书馆开发一个图书管理系统,要求在读者登记处可以将读者的信息添加,信息系统中保存,当读者信息发生变化,对计算机内容进行修改,当读者办理退卡手续要删除此读者信息,图书管理负责图书和出版社的管理,读书借还处进行借书管理,还书管理,罚款处理,库存查询,图书排行榜,生成超期未还书的读者,进行通知.给不同用户设置不同权限,供用户访问数据库.2.编写目的让学生熟练掌握mysql中的创建数据库、创建表、显示、查询、select语句、视图、存储过程、创建检索、对表的添加、删除、修改和用户权限的设置等基本运用,并通过编写这个图书管理系统,来实际演练,达到融会贯通的效果。
3.软件定义Mysql是目前最流行的开源的中小型关系数据管理系统,目前被广泛的应用于internet 上得中小型网站中,它由mysql AB公司开发、发布并支持。
本实验用的是mysql 5.1版本4.开发环境本实验用的是mysql 5.1版本,windows2007二、需求分析1.问题的提出1:怎么通过mysql和信息之间的关系来创建图书管理系统的数据库及表?2:怎样来实现对插入读者信息并保存、修改及删除?3:怎么来实现对图书的管理?4:怎样实现对借书后在读书借还处添加读者借书信息和还书后删除读者借还处中的借书信息且更新图书管理处的图书数量?5:怎么实现对超期读者进行罚款操作和生成这些读者的名单,以方便通知?6:怎样实现图书的借书排行榜和查看库存书量?7:怎么样来根据不同用户对数据库的等级的不同来设置这些用户的权限?2.需要完成的功能及各部分功能概述1:读者登记建卡处的功能是对读者基本信息进行登记,读者信息发生变化对读者基本信息进行修改,读者要求退还借书卡时对读者信息进行删除等操作2:图书管理处的功能是对图书和出版社、作者、书价,数量,剩余书量进行管理更新。
数字化图书馆管理系统设计与实现随着科技的快速发展,传统的图书馆管理方式已经无法满足现代社会对图书馆的需求。
为了提高图书馆的管理效率和用户体验,数字化图书馆管理系统应运而生。
本文将介绍数字化图书馆管理系统的设计与实现,并探讨其对图书馆管理的重要意义。
一、设计目标与需求分析数字化图书馆管理系统的设计目标是提供一套完整的解决方案,实现图书馆的各项管理工作。
首先,系统需要支持图书馆的图书管理,包括图书的入库、借阅、归还等功能。
同时,系统还应该提供搜索和查询功能,方便读者快速找到所需的图书信息。
此外,系统还需要支持读者管理、借阅管理、预约管理等功能,以及统计和报告等辅助管理功能。
在需求分析阶段,需要与图书馆管理人员和读者进行充分的沟通和交流,了解他们的需求和期望。
同时,要考虑系统的安全性和稳定性,包括防止数据泄露和系统故障等方面的设计。
二、系统架构设计数字化图书馆管理系统的架构设计是整个系统的基础。
系统应该采用分层的架构,分为用户界面层、应用层和数据存储层。
用户界面层是系统与用户之间的接口,应该设计简洁、易用的用户界面,方便读者和管理人员使用系统。
应用层是系统的核心部分,负责实现各项功能模块,包括图书管理、读者管理、借阅管理等。
数据存储层是系统的数据仓库,用于存储图书馆的各项数据,包括图书信息、读者信息、借阅记录等。
同时,系统应该采用模块化设计,将各个功能模块进行拆分,提高系统的可维护性和可扩展性。
通过模块化设计,可以方便后续对系统的功能进行升级和扩展。
三、核心功能实现1. 图书管理功能:该功能包括图书入库、图书分类、图书查询、图书借阅与归还等子功能。
图书管理员可以通过系统添加、修改和删除图书信息。
读者可以通过系统查询图书信息、预约图书并借阅。
2. 读者管理功能:该功能用于管理读者的信息和权限。
读者可以通过系统注册账号、修改个人信息、查询借阅记录等。
3. 借阅管理功能:该功能用于管理图书的借阅过程。
系统记录借阅信息和归还信息,并提供超期提醒和欠费管理等功能。
设计一个简单的MySQL数据库表,以存储用户的图书收藏信息为例:
表名: user_book_collection
字段:
1.id:主键,自增,用于唯一标识每条记录。
er_id:用户ID,外键,关联用户表。
3.book_title:图书标题,字符串类型,用于存储图书的名称。
4.author:作者,字符串类型,用于存储图书的作者姓名。
5.publication_date:出版日期,日期类型,用于存储图书的出版日期。
6.isbn:国际标准书号,字符串类型,用于存储图书的唯一标识码。
7.added_date:添加日期,日期时间类型,用于记录用户将图书添加到收藏的
时间。
索引:
1.主键索引:id字段。
2.外键索引:user_id字段,关联用户表。
3.联合索引:user_id和book_title字段,用于优化根据用户ID和图书标题
的查询性能。
示例SQL语句创建表:
这个表可以存储用户的图书收藏信息,包括每本图书的标题、作者、出版日期、ISBN号以及用户添加该图书到收藏的时间。
通过外键关联用户表,可以实现查询
某个用户的全部图书收藏。
同时,使用联合索引可以提高根据用户ID和图书标题查询的效率。
mysql数据库实操题MySQL数据库实操题通常涉及到数据库的创建、表的设计、数据的插入、查询和更新等方面。
以下是一个MySQL数据库实操题的示例:题目:假设你是一个图书馆管理员,需要创建一个数据库来管理图书馆的图书信息。
请按照以下要求完成数据库的设计和操作:1. 创建一个名为"library"的数据库。
2. 在该数据库中创建一个名为"books"的表,包含以下字段:book_id,图书编号,为整数类型,主键。
title,图书标题,为字符串类型。
author,图书作者,为字符串类型。
publication_year,图书出版年份,为整数类型。
quantity,图书数量,为整数类型。
3. 向"books"表中插入以下数据:book_id: 1, title: "Harry Potter and the Philosopher's Stone", author: "J.K. Rowling",publication_year: 1997, quantity: 5。
book_id: 2, title: "To Kill a Mockingbird", author: "Harper Lee", publication_year: 1960, quantity: 3。
book_id: 3, title: "1984", author: "George Orwell", publication_year: 1949, quantity: 2。
4. 查询"books"表中所有图书的信息。
5. 查询"books"表中所有作者为"J.K. Rowling"的图书信息。
基于PHP+MySQL图书管理系统设计与实现一、引言随着信息技术的快速发展,图书管理系统在图书馆及各类图书机构中发挥着重要的作用。
采用计算机技术构建图书馆管理系统能够提高管理效率,减轻工作负担,并且便于读者查找所需图书资源。
本文将介绍一种基于PHP+MySQL的图书管理系统的设计与实现。
二、系统需求分析1. 功能需求本图书管理系统需要包含以下基本功能:(1) 图书信息管理:包括图书的录入、修改、删除和查询等操作。
(2) 读者信息管理:包括读者的注册、登录、修改个人信息等操作。
(3) 图书借阅管理:包括图书借阅、归还、续借等操作,并能记录借阅历史。
(4) 图书馆管理员管理:包括管理员的注册、登录、权限管理等操作。
(5) 报表统计功能:能够统计图书借阅情况、读者借阅排行等数据。
2. 性能需求系统应具备以下性能要求:(1) 快速响应:系统具备快速响应读者和管理员的请求,保证系统流畅运行。
(2) 数据安全性:系统需要采用安全机制,保护图书和读者的信息。
(3) 扩展性:系统应具备良好的扩展性,以便后续对功能进行拓展。
三、系统设计与实现1. 开发环境本系统采用PHP语言作为开发语言,结合MySQL数据库进行数据存储。
开发环境采用Apache服务器,支持HTTP协议。
2. 数据库设计(1) 图书表(Book):包含图书的编号、名称、作者、出版社等属性。
(2) 读者表(Reader):包含读者的编号、姓名、性别、年龄等属性。
(3) 借阅表(Borrow):包含借阅记录的编号、图书编号、读者编号、借阅日期、归还日期等属性。
(4) 管理员表(Admin):包含管理员的编号、用户名、密码等属性。
3. 页面设计(1) 登录页面:读者和管理员可以分别通过用户名和密码登录系统。
(2) 图书查询页面:包含图书名称、作者等查询条件,可以根据条件查询所需图书。
(3) 借阅页面:读者可以查询和借阅图书,并记录借阅信息。
(4) 归还页面:读者可以查询自己借阅的图书,并进行归还操作。
课程设计精品图书If理系统书生系统说明:本系统釆用eclipse开发,IDEA, eclipse, myedipse均可运行界面采用swing实现数据库:mysql.附sql代码,其余数据库可复制sql代码运行数据库连接文件mysql-connector-java-8.0.16.jar本系统的背景图片可根据自己的需求替换项目分为管理员和普通用户两种角色管理员有图书査询、图书借还、账户管理(修改密码、账户信息、借书记录)、图书管理(増加、修改、删除)的权限普通用户有图书査询、图书借还、账户管理(修改密码、借书记录)的权限项目结朴-温图书系饨>,JRE 基绽库(JavaSE-12]IS src y .[« Dao>dZl AdminDao.java>® BookDao.java><2)BorrowDao.java>I/) DB.java>El LandDao.javav SB Test>JZ) LandTest.java击View>ABorrowBookFace.java 通AccountMsgFacejava>i£\ AddBookFace.java>(2 AdminFace.java>Lfi BookAdminFace.java>® BookReturnFace.java>Si BookSearc h Fac e.java>DeleteBookFace.java>JZ) LogonFace.java>Si MainFace.java>JZl UBorrowBookFace.java><2)UpdateBookFace.java>UpdatePswFace.java>E) UserFace.java> i引用的阵y 4 datebase圍tsglsys.sql〜〜img。
mysql数据库设计案例MySQL数据库设计案例。
一、背景介绍。
MySQL是一种开源的关系型数据库管理系统,广泛应用于Web应用程序的开发中。
在实际的项目开发中,数据库设计是至关重要的环节,良好的数据库设计可以提高系统的性能和可维护性。
本文将通过一个实际的案例,介绍MySQL数据库设计的一般步骤和注意事项。
二、案例描述。
假设我们要设计一个图书管理系统的数据库,该系统需要记录图书的基本信息、借阅情况以及读者信息。
在这个案例中,我们将介绍如何设计图书管理系统的数据库结构。
三、数据库设计步骤。
1.需求分析。
首先,我们需要对系统的需求进行分析,包括需要存储哪些数据、数据之间的关系以及系统的功能需求。
在图书管理系统中,我们需要存储图书信息、读者信息以及借阅记录,这些数据之间存在着明确的关系。
2.概念设计。
在概念设计阶段,我们需要将需求转化为数据库模型。
在图书管理系统中,我们可以将图书信息、读者信息和借阅记录分别抽象为图书、读者和借阅三个实体,它们之间存在着一定的关联关系。
3.逻辑设计。
在逻辑设计阶段,我们需要将概念模型转化为数据库表结构。
对于图书管理系统,我们可以设计图书表、读者表和借阅记录表,其中图书表和读者表之间可能存在着一对多的关系,而借阅记录表则需要记录借阅的时间、归还的时间等信息。
4.物理设计。
在物理设计阶段,我们需要考虑具体的数据库实现,包括数据类型的选择、索引的设计以及性能优化等方面。
对于MySQL数据库,我们需要选择合适的数据类型来存储不同的数据,同时考虑如何优化查询性能。
四、数据库设计注意事项。
1.合理选择数据类型。
在设计数据库表结构时,需要根据实际情况选择合适的数据类型,避免浪费存储空间或者造成数据溢出的问题。
2.建立索引。
对于经常需要进行查询的字段,可以考虑建立索引来提高查询性能,但需要注意不要过度索引,以免影响写入性能。
3.遵循范式。
在设计数据库表结构时,需要遵循范式规范,避免数据冗余和更新异常。
基于MySQL的图书馆信息管理系统设计一、本文概述明确本文的研究目标,即设计一个基于MySQL的图书馆信息管理系统,并介绍研究的主要内容。
1、1随着信息技术的飞速发展,图书馆作为知识的宝库,其管理效率和服务质量的高低直接影响着读者的阅读体验。
传统的图书馆管理模式已经难以满足现代图书馆高效、精准、便捷的管理需求。
因此,开发一套基于MySQL的图书馆信息管理系统显得尤为重要。
本文旨在探讨基于MySQL的图书馆信息管理系统的设计,包括系统架构、功能模块、数据库设计等,以期提高图书馆的管理效率和服务水平,为读者提供更加优质的阅读服务。
MySQL作为一种广泛使用的开源关系型数据库管理系统,具有性能稳定、可靠性高、易用性强等特点,非常适合用于构建图书馆信息管理系统。
通过MySQL,我们可以实现图书信息的存储、查询、更新、删除等操作,从而实现对图书馆资源的有效管理和利用。
本文首先对图书馆信息管理系统的需求进行分析,明确系统的功能模块和数据库设计;详细介绍系统的架构设计和数据库设计,包括数据库表的创建、索引优化、数据备份与恢复等;对系统的实现进行阐述,并给出相应的结论和展望。
通过本文的研究,我们可以为图书馆信息管理系统的设计提供有益的参考和借鉴,推动图书馆管理向数字化、智能化方向发展,为广大读者提供更加便捷、高效的服务。
2、2在设计基于MySQL的图书馆信息管理系统之前,对系统需求进行深入分析是至关重要的。
通过需求分析,我们可以明确系统的功能要求、性能要求以及用户界面的需求,从而确保最终设计出的系统能够满足图书馆的实际工作需求。
我们需要明确图书馆信息管理系统的核心功能。
这包括但不限于图书的借阅与归还、图书信息的查询与更新、读者的信息管理、图书的采购与入库等。
系统还应支持对图书借阅情况的统计与分析,以便图书馆能够及时了解图书的流通情况,为图书采购和管理提供数据支持。
性能需求方面,系统需要保证高可用性、稳定性和安全性。
图书管理系统实验报告图书管理系统实验报告一、引言图书管理系统是一种利用计算机技术对图书馆的图书进行管理的系统。
随着信息技术的快速发展,图书管理系统在图书馆中的应用越来越普遍。
本实验旨在通过设计和实现一个图书管理系统,探索其在图书馆管理中的作用和优势。
二、系统设计与功能1. 系统设计本图书管理系统采用了客户端-服务器架构,客户端通过与服务器进行通信来实现对图书馆的图书进行管理。
系统使用了数据库来存储图书信息和用户信息,通过数据库管理系统来实现对数据的增删改查操作。
2. 系统功能(1)图书管理:管理员可以通过系统添加、删除、修改和查询图书信息。
同时,系统还提供了图书分类、图书借阅和归还等功能,方便图书馆管理人员进行图书管理。
(2)用户管理:系统支持用户注册和登录功能,用户可以通过登录系统查询图书信息、借阅图书和归还图书。
系统还提供了用户权限管理功能,管理员可以对用户进行权限设置和管理。
(3)借阅管理:系统记录了用户的借阅信息,包括借阅时间、归还时间和逾期情况。
系统还提供了借阅提醒功能,及时通知用户归还图书。
三、系统实现与结果1. 系统实现本实验使用Java编程语言和MySQL数据库来实现图书管理系统。
通过使用Java的GUI库和数据库连接库,实现了系统的界面设计和数据库操作功能。
2. 系统结果经过实验测试,系统能够正常运行,并且实现了预期的功能。
管理员可以通过系统添加、删除、修改和查询图书信息,用户可以通过登录系统查询图书信息、借阅图书和归还图书。
系统能够准确记录用户的借阅信息,并及时提醒用户归还图书。
四、系统优势与应用前景1. 系统优势(1)提高工作效率:图书管理系统能够自动化完成图书的管理和借阅流程,减少了繁琐的人工操作,提高了工作效率。
(2)减少错误率:系统能够准确记录图书的借阅信息,并自动提醒用户归还图书,减少了因人为疏忽而导致的错误。
(3)方便用户:用户可以通过系统查询图书信息、借阅图书和归还图书,不再需要亲自到图书馆进行操作,提供了更加便利的服务。
Java+Mysql课程设计图书管理系统实验报告需求报告说明书软件工程自查报告。
课程名称,Java+Mysql课程设计。
课程性质,软件工程。
课程内容,图书管理系统。
一、需求报告说明书。
在本次课程设计中,我负责设计和实现图书管理系统的需求报告说明书。
在编
写需求报告说明书的过程中,我首先对图书管理系统的功能进行了分析和整理,明确了系统需要实现的基本功能和扩展功能。
其次,我根据用户的需求和系统的特点,设计了系统的用例图和用例描述,明确了系统各个功能模块的具体功能和交互流程。
最后,我对系统的非功能性需求进行了详细的描述,包括性能、安全性、可靠性等方面的要求。
通过编写需求报告说明书,我深入理解了图书管理系统的需求和设计思路,为后续的系统设计和实现奠定了基础。
二、实验报告。
在课程设计的实验阶段,我负责实现图书管理系统的后端功能,包括数据库设计、数据表的创建和管理、后台接口的设计和实现等工作。
在实验过程中,我充分运用了Java和Mysql的知识,熟练掌握了数据库的设计和管理技术,实现了系统
的数据存储和管理功能。
同时,我还结合软件工程的理论知识,采用了模块化和面向对象的设计思想,使系统的代码结构清晰、易于维护和扩展。
通过实验报告的编写,我总结了系统的设计思路、实现过程和遇到的问题,对系统的优化和改进提出了建设性的意见和建议。
通过本次课程设计,我不仅深入学习了Java和Mysql的知识,还加深了对软件工程理论的理解和应用。
我相信这次课程设计的经历将对我的未来学习和工作产生积极的影响。
图书管理系统数据库设计一、系统概述1、系统简介图书管理是每个图书馆都需要进行的工作;一个设计良好的图书管理系统数据库能够给图书管理带来很大的便利;2、需求分析图书管理系统的需求定义为:1.学生可以直接通过借阅终端来查阅书籍信息,同时也可以查阅自己的借阅信息;2.当学生需要借阅书籍时,通过账号密码登陆借阅系统,借阅系统处理学生的借阅,同时修改图书馆保存的图书信息,修改被借阅的书籍是否还有剩余,同时更新学生个人的借阅信息;3.学生借阅图书之前需要将自己的个人信息注册,登陆时对照学生信息;4.学生直接归还图书,根据图书编码修改借阅信息5.管理员登陆管理系统后,可以修改图书信息,增加或者删除图书信息6.管理员可以注销学生信息;通过需求定义,画出图书管理系统的数据流图:数据流图二、系统功能设计画出系统功能模块图并用文字对各功能模块进行详细介绍; 系统功能模块图:三、数据库设计方案图表1、系统E-R模型总体E-R图:精细化的局部E-R图:学生借阅-归还E-R图:管理员E-R图:2、设计表给出设计的表名、结构以及表上设计的完整性约束; student:book:book_sort:borrow:存储学生的借书信息return_table:存储学生的归还信息ticket:存储学生的罚单信息manager:3、设计索引给出在各表上建立的索引以及使用的语句;student:1.为stu_id创建索引,升序排序sql:create index index_id on studentstu_id asc;2.为stu_name创建索引,并且降序排序sql:alter table student add index index_namestu_name, desc;插入索引操作和结果如下所示:mysql> create index index_id on studentstu_id asc;Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 0mysql> alter table student add index index_namestu_name desc; Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 0mysql>book:1.为book_id创建索引,升序排列sql:create index index_bid on bookbook_id;2.为book_record创建索引,以便方便查询图书的登记日期信息,升序:sql:create index index_brecord on bookbook_record;插入索引的操作和结果如下所示:mysql> create index index_bid on bookbook_id;Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 0mysql> create index index_brecord on bookbook_record;Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 0borrow:1.为stu_id和book_id创建多列索引:sql:create index index_sid_bid on borrowstu_id asc, book_id asc;插入索引的操作和结果如下所示:mysql> create index index_sid_bid on borrowstu_id asc, book_id asc;Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 0return_table:1.为stu_id和book_id创建多列索引:sql:create index index_sid_bid on return_tablestu_id asc, book_id asc; 插入索引的操作和结果如下所示:mysql> create index index_sid_bid_r on return_tablestu_id asc, book_id asc;Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 0ticket:1. 为stu_id和book_id创建多列索引:sql:create index index_sid_bid on ticketstu_id asc, book_id asc;插入索引的操作和结果如下所示:mysql> create index index_sid_bid on ticketstu_id asc, book_id asc;Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 0manager:1.为manager_id创建索引:sql:create index index_mid on managermanager_id;插入索引的操作和结果如下所示:mysql> create index index_mid on managermanager_id;Query OK, 0 rows affectedRecords: 0 Duplicates: 0 Warnings: 04、设计视图给出在各表上建立的视图以及使用的语句;1.在表student上创建计算机专业cs学生的视图stu_cs:sql: create view stu_cs asselectfrom studentwhere pro = ‘cs’;操作和结果:mysql> create view stu_cs asfrom studentwhere stu_pro = 'cs';Query OK, 0 rows affected2. 在表student, borrow和book上创建借书者的全面信息视图stu_borrow:sql: create view stu_borrow asselect student.stu_id, book.book_id, student.stu_name, book.book_name, borrow_date,adddateborrow_date,30 expect_return_date from student, book, borrowwhere student.stu_id = borrow.stu_id and book.book_id = borrow.book_id;操作和结果:mysql> create view stu_borrow asselect student.stu_id, book.book_id, student.stu_name, book.book_name, borrow_date,adddateborrow_date,30 expect_return_datefrom student, book, borrowwhere student.stu_id = borrow.stu_id and book.book_id = borrow.book_id;Query OK, 0 rows affected3.创建类别1的所有图书的视图cs_book:sql: create view cs_book asfrom bookwhere book.book_sort infrom book_sortwhere sort_id = 1;操作和结果显示:mysql> create view cs_book asselectfrom bookwhere book.book_sort inselect book_sort.sort_namefrom book_sortwhere sort_id = 1;Query OK, 0 rows affected4.创建个人所有借书归还纪录视图stu_borrow_return:sql:create view stu_borrow_return asselect student.stu_id, student.stu_name, book.book_id, book.book_name,return_table.borrow_date,return_table.return_date from student, book, return_tablewhere student.stu_id = return_table.stu_id and book.book_id = return_table.book_id;5、设计触发器给出在各表上建立的触发器以及使用的语句;1.设计触发器borrow, 当某学生借书成功后,图书表相应的图书不在架上,变为0:sql:create trigger borrowafter insert on borrowfor each rowbeginupdate book set book_num = book_num – 1where book_id = new.book_id;end操作与结果显示:mysql> delimiter $$mysql> create trigger trigger_borrow-> after insert on borrow-> for each row-> begin-> update book set book_num = book_num - 1-> where book_id = new.book_id;-> end-> $$Query OK, 0 rows affected在插入表borrow之前,book_id = 1 的图书还在架上,为1:学生1借了这本书后,在borrow中插入了一条记录:在borrow中插入这条记录后,book_id =1的图书,不在架上,为0:2.设计触发器trigger_return,还书成功后,对应的书籍book_num变为1:sql:create trigger trigger_returnafter insert on return_tablefor each rowbeginupdate book set book_num = book_num + 1where book_id = new.book_id;end还书时在return_table插入表项:此时图书归还架上:3.定义定时器事件eventJob,每天自动触发一次,扫描视图stu_borrow,若发现当前有预期归还时间小于当前时间,则判断为超期,生成处罚记录,这个定时器将每天定时触发存储过程proc_gen_ticket:sql:create event if not exists eventJobon schedule every 1 DAY /每天触发/on completion PRESERVEdo call proc_gen_ticketgetdate; /调用存储过程/set global event_scheduler = 1;alter event eventJob on completion preserve enable; /开启定时器/ 操作和结果显示:1. 学生1借了图书1,生成借书记录stu_borrow视图,如下:2. 当他在1月27日前还书时,没有生成罚单:3. 当他在1月27日后还书时,生成罚单:4.设计触发器trigger_credit,若处罚记录超过30条,则将这个学生的诚信级设置为0,下次不允许借书:sql:create trigger trigger_creditafter insert on ticketfor each rowbeginif select count from ticket where stu_id=new.stu_id>30 then update student set stu_integrity = 0 where stu_id = new.stu_id;end if;end操作和结果显示,测试时选择插入ticket项大于3,因为30太大了,不容易测试:学生1超过3次超期归还图书后,产生了4条罚单:此时触动触发器trigger_credit,将学生1的诚信级设置为0:四、应用程序设计与编码实现1、系统实现中存储函数和存储过程的设计要求给出功能描述和代码;1. 设计存储过程,产生罚单proc_gen_ticket:当日期超过预定归还日期时,产生罚单,并将记录写入表ticket中,这个存储过程在定时器eventJob中调用:sql:create procedure proc_gen_ticketin currentdate datetimeBEGINdeclare cur_date datetime;set cur_date = currentdate;replace into ticketstu_id, book_id, over_date, ticket_feeselect stu_id, book_id, datediffcur_date,stu_borrow.expect_return_date,0.1datediffcur_date ,stu_borrow.expect_return_datefrom stu_borrowwhere cur_date>stu_borrow.expect_return_date;end操作和结果显示:1. 学生1借了图书1,生成借书记录stu_borrow视图,如下:2. 当他在1月27日前还书时,没有生成罚单:3. 当他在1月27日后还书时,生成罚单:2.设计学生注册信息存储过程:学生注册信息stu_registersql:create procedure stu_registerin stu_id int, in stu_name varchar20, in stu_sex varchar20, in stu_age int, in stu_pro varchar20, in stu_grade varchar20begininsert into studentstu_id, stu_name, stu_sex, stu_age, stu_pro, stu_gradevaluesstu_id, stu_name, stu_sex, stu_age, stu_pro, stu_grade;end3. 设计管理员注册信息存储过程:ma_registersql:create procedure ma_registerin ma_id int, in ma_name varchar20, in ma_age int, in ma_phone intBEGINinsert into managervaluesma_id, ma_name, ma_age, ma_phone;END4. 借书过程的实现:1)设计存储函数,func_get_credit,返回学生的诚信级:create function func_get_creditstu_id int returns intreturnselect stu_integrity from student where student.stu_id = stu_id;end2)设计存储函数,func_get_booknum,返回书籍是否在架上:create function func_get_booknumbook_id int returns intbeginreturnselect book_num from book where book.book_id = book_id;end3)设计存储过程proc_borrow,调用func_get_credit和func_get_booknum,判断这个学生诚信度和书籍是否在架上,若为真,则借书成功,在borrrow 表中插入纪录;否则提示失败:create procedure proc_borrowin stu_id int, in book_id int, in borrow_date datetimebeginif func_get_creditstu_id = 1 and func_get_booknumbook_id =1 theninsert into borrowvaluesstu_id, book_id, borrow_date;elseselect 'failed to borrow';end if;实验操作与结果显示:borrow纪录为空:执行函数,学生1借图书2:call proc_borrow1,2,now;学生1的诚信级为0:借书失败:修改学生1诚信级为1:此时借书成功:5. 还书存储过程proc_return:当还书时,查看是否书是否超期,即查询ticket表项,当发现超期,提示交罚单后再次还书,如没有超期,则纪录归还项目到return_table中,并且删除借书纪录以免还书后定时器仍然扫描这个纪录:sql:create procedure proc_returnin stu_id int, in book_id int, in return_date datetimebeginDECLARE borrowdate datetime;if select payoff from ticket where ticket.stu_id = stu_id and ticket.book_id=book_id = 1 then /判断是否交了罚单,1表示没有交/ select 'please pay off the ticket';else /纪录归还项目到return_table中,并且删除借书纪录/set borrowdate = select borrow_date from borrow where borrow.stu_id = stu_id and borrow.book_id = book_id;insert into return_tablevaluesstu_id, book_id, borrowdate, return_date;delete from borrowwhere borrow.stu_id = stu_id and borrow.book_id = book_id;end if;end实验操作与结果显示:学生1借了图书2:超期产生了罚单,没有交罚单,payoff=1:此时调用还书过程:call proc_return1, 2, now;提示交罚单:交罚单,调用proc_payoff:call proc_payoff1, 2;交罚单成功,payoff = 0;此时再次调用还书过程:call proc_return1, 2, now;还书成功,在return_table生成了还书纪录:6. 交罚单存储过程:修改罚单中payoff段为0,表明罚单已交:create procedure proc_payoffin stuid int, in bookid intbeginupdate ticketset payoff = 0where ticket.stu_id = stuid and ticket.book_id = bookid;select ‘succeed’;end交罚单,调用proc_payoff:call proc_payoff1, 2;交罚单成功,payoff = 0;2、功能实现按各功能模块进行描述;要求:画出流程图并给出实现代码;创建学生统一账户,账户名:student_account,并且授予权限:sql:create user 'student_account''localhost';grant insert,select on student to 'student_account''localhost';grant select on book to 'student_account''localhost';grant insert,select on borrow to 'student_account''localhost';grant insert,select on return_table to 'student_account''localhost';grant select on ticket to 'student_account''localhost';创建管理员统一账户,账户名:manager_account, 并且授予全部权限:sql:create user 'manager_account''localhost' identified by '123'; grant all on library_management to 'manager_account''localhost'; 查询图书信息按书名查找:select from book where book_name = ‘sql’;按作者查找:select from book where book_author = ‘author’;借书功能:proc_borrowin stu_id int, in book_id int, in borrow_date datetime如果要接的书还在架上,并且学生的诚信级为1,那么可以借书call proc_borrow1, 1, now;命令行操作:表borrow:视图stu_borrow:表book:还书功能:proc_returnin stu_id int, in book_id int, in return_date datetimecall proc_return1, 1, now;命令行操作:表return_table:表borrow:表book:交罚单功能:proc_payoffin stuid int, in bookid int call proc_payoff1,1;实验操作和结果见上节:“6. 交罚单存储过程“管理员添加图书:insert into bookvalues…;操作与结果:管理员删除图书:delete from bookwhere condition;管理员注销学生信息:delete from studentwhere condition;管理员恢复学生的诚信级:update studentset stu_integrity=1where condition;学生借书-归还流程图:管理员管理流程图:数据库设计结果:五、实习体会自己写。