数据库实训项目之图书借阅系统

目录

一.需求分析

二.概念结构设计

三.逻辑结构设计 

四.物理结构设计


一.需求分析

图书(Book)信息包括图书编号(BookID)、图书名称(BookName)、图书类别(BookType)、作者姓名(Author)、出版社编号(PublishID)、单价(Price)、图书总量(BookSum)、在馆数量(Stock);读者(Reader)信息有:读者编号(ReaderID)、读者姓名(ReaderName)、性别(Sex)、专业(Subject)、在借书数(BorrowNum);出版社(Publisher)信息有:出版社编号(PublisherID)、出版社姓名(PublisherName)、电话(Phone)、地址(Address)。

任何读者可以借阅(Borrow)多本书,任何一种书可为多人借阅;借阅每本图书时,需要登记借书时间(BorrowTime),且该书的在馆数量减一;归还图书时,需要登记还书时间(ReturnTime),且该书的在馆数量加一;

一个出版社可以出版(Publish)多种图书,一种图书可由多个出版社出版,出版时登记每本书的出版数量(PublishNum)和出版时间(PublishTime)。

二.概念结构设计

三.逻辑结构设计 

Book(BookID,BookName,BookType,Author,PublishID,Price,BookSum,Stock)。

Reader(ReaderID,ReaderName,Sex,Subject,BorrowNum)。

Publisher(PublisherID,PublisherName,Phone,Address)。

Borrow(ReaderID ,BookID,BorrowTime,ReturnTime)。

Publish(PublisherID,BookIDPublishNum,PublishTime)。

四.物理结构设计

表1:图书信息表结构

  字段名

 数据类型

  长度

是否允许为空

备注

BookID

VARCHAR

20

   

主键

BookName

VARCHAR

100

非空

BookType

VARCHAR

100

非空

Author

VARCHAR

100

非空

PublishID

VARCHAR

20

非空

Price

DECIMAL

(7,2)

非空

BookSum

INT

Stock

INT

   表2:读者信息表结构

  字段名

   数据类型

  长度

是否允许为空

备注

ReaderID

VARCHAR

20

 

主键

ReaderName

VARCHAR

100

非空

Sex

VARCHAR

20

检查

Subject

VARCHAR

100

非空

BorrowNum

INT

表3:出版社信息表结构

  字段名

   数据类型

  长度

是否允许为空

备注

PublisherID

VARCHAR

20

 

主键

PublisherName

VARCHAR

200

非空

Phone

VARCHAR

20

非空

Address

VARCHAR

200

非空

表4:借阅信息表结构 

  字段名

   数据类型

  长度

是否允许为空

备注

ReaderID

VARCHAR

20

主键

外键

BookID

VARCHAR

20

主键

外键

BorrowTime

DATE

ReturnTime

DATE

表4中ReaderID与bookID作为联合主键

表5:出版信息表结构 

  字段名

   数据类型

  长度

是否允许为空

备注

PublisherID

VARCHAR

20

主键

BookID

VARCHAR

20

主键

PublishNum

INT

非空

PublishTime

DATE

非空

3、创建数据库与数据表

(1)创建名为“Library”的数据库;

(2)根据逻辑设计中的表结构,创建该数据库的所有数据表;

CREATE DATABASE Library;

USE Library;

-- 创建该数据库的所有数据表;

#图书信息表
CREATE TABLE Book
	(
	 BookID VARCHAR(20) PRIMARY KEY,-- 书编号
	 BookName VARCHAR(100) NOT NULL,-- 图书名称
	 BookType VARCHAR(100) NOT NULL,-- 图书类别
	 Author VARCHAR(100) NOT NULL,
	 PublishID VARCHAR(20) NOT NULL,
	 Price DECIMAL(7,2) NOT NULL,
	 BookSum INT,
	 Stock INT-- 在馆数量
	 );

#读者信息表
CREATE TABLE Reader
	(
	 ReaderID VARCHAR(20) PRIMARY KEY,
	 ReaderName VARCHAR(100) NOT NULL,
	 Sex VARCHAR(20)NOT NULL,
	 `Subject` VARCHAR(100) NOT NULL,-- 专业
	 BorrowNum VARCHAR(20),-- 在借书数
	 CHECK(Sex IN('男','女'))
	 );
	 
#出版社(Publisher)信息表
CREATE TABLE Publisher
	(
	 PublisherID VARCHAR(20) PRIMARY KEY,
	 PublisherName VARCHAR(200) NOT NULL,
	 Phone VARCHAR(20) NOT NULL,
	 Address VARCHAR(200) NOT NULL
	 );

#借阅信息表Borrow
CREATE TABLE Borrow	
	(
	 ReaderID VARCHAR(20),
	 BookID VARCHAR(20),
	 BorrowTime DATE,
	 ReturnTime DATE,
	 PRIMARY KEY(ReaderID,BookID),
	 FOREIGN KEY(ReaderID)
		REFERENCES Reader(ReaderID),
	 FOREIGN KEY(BookID)
		REFERENCES Book(BookID)
	 );

#出版信息表
CREATE TABLE Publish
	(
	 PublisherID VARCHAR(20),
	 BookID	VARCHAR(20),
	 PublishNum INT NOT NULL,
	 PublishTime DATE NOT NULL,
	 PRIMARY KEY(PublisherID,BookID),
	 FOREIGN KEY(PublisherID)
		REFERENCES Publisher(PublisherID),
	 FOREIGN KEY(BookID)
		REFERENCES Book(BookID)
	 );

SHOW TABLES;

实施结果:

4、表数据添加与处理

  1. 给数据表添加初始记录
INSERT INTO Book VALUES
	('b001', '《MySQL数据库技术及应用》', '计算机类', '苗雪兰', 'p003', 29.50, 10, 4),
	('b002', '《软件工程》', '计算机类', '李建中', 'p003', 48.00, 8, 2),
	('b003', '《MySQL数据库技术与应用》', '计算机类', '张素青,翟慧,黄静 ', 'p002', 42.00, 15, 8),
	('b004', '《WEB技术》', '计算机类', '汤惟', 'p004', 32.00, 12, 4),
	('b005', '《自动控制原理》', '自动化类', '胡寿松', 'p005', 52.00, 15, 8),
	('b006', '《线性控制理论》', '自动化类', '郑大钟', 'p005', 32.50, 10, 2),
	('b007', '《计算机导论》', '计算机类', '袁方', 'p003', 49.8, 15, 5),
	('b008', '《计算机导论》', '计算机类', '王玉龙', 'p004', 46.00, 10, 3),
	('b009', '《算法导论》', '计算机类', '科曼', 'p005', 128, 10, 2),
	('b010', '《数学之美》', '基础类', '吴军', 'p002', 35.00, 10, 0),
	('b011', '《计算机网络技术》', '网络技术类', '施晓秋', 'p001', 23.70, 10, 4);
	
	
SELECT * FROM Book; 

INSERT INTO Reader VALUES
	('r001','李芳芳','女','软件工程', 3),
	('r002','刘钦','男','自动化', 2),
	('r003','王琳','女','自动化', 3),
	('r004','张芬芳','女','网络工程', 4),
	('r005','陈丽丽','女','软件工程', 5);
	
SELECT * FROM Reader;

INSERT INTO Publisher VALUES
	('p001', '高等教育出版社', '028-83203676', '四川省成都市成华区建设北路'),
	('p002', '人民邮电出版社', '13504411556', '北京市大兴区育祥街2号'),
	('p003', '清华出版社', '13219096229', '北京市海淀区清华科技园学研大厦a'),
	('p004', '电子工业出版社', '010-88254338', '北京丰台区金家村288号'),
	('p005', '机械工业出版社', '010-88379033', '北京西城区百万庄大街22号院3');

SELECT * FROM Publisher;
	
INSERT INTO Borrow VALUES
('r001','b001',"2022-04-19 09:58:03","2022-05-19 08:38:23"),
('r001','b002',"2022-07-01 15:28:12","2022-07-18 09:14:02"),
('r001','b007',"2022-07-01 15:28:12","2022-07-18 09:14:02"),
('r001','b010',"2022-10-01 16:06:02",NULL),
('r002','b005',"2022-07-03 15:28:30","2022-07-17 19:10:32"),
('r002','b006',"2022-07-03 15:28:30",NULL),
('r002','b010',"2022-09-09 16:06:02",NULL),
('r003','b001',"2022-05-01 11:28:24",NULL),
('r003','b005',"2022-11-01 10:43:12","2022-12-01 14:09:56"),
('r003','b006',"2022-05-01 11:28:24",NULL),
('r004','b003',"2022-11-11 16:06:02",NULL),
('r004','b010',"2022-11-11 10:43:12","2022-12-01 14:09:56"),
('r004','b011',"2022-11-01 16:06:02",NULL),
('r005','b003',"2022-10-15 16:06:02","2022-12-01 14:09:56"),
('r005','b004',"2022-10-15 10:43:12","2022-12-01 14:09:56"),
('r005','b010',"2022-11-01 16:06:02",NULL);

SELECT * FROM Borrow;

INSERT INTO Publish VALUES
('p001','b011',50,'2021-09-02'),
('p002','b003',40,'2020-07-06'),
('p002','b010',100,'2021-09-25'),
('p003','b001',120,'2020-11-02'),
('p003','b002',50,'2021-07-03'),
('p003','b007',120,'2020-03-02'),
('p004','b004',100,'2022-01-12'),
('p004','b008',120,'2022-05-19'),
('p005','b005',120,'2020-03-02'),
('p005','b006',100,'2021-11-12'),
('p005','b009',120,'2022-07-16'),
('p005','b004',120,'2022-07-16');
	
SELECT * FROM Publish;

实施结果:

2. 编写SQL语句实现以下操作要求:

  • 图书馆新购买了5本“清华出版社”出版的“计算机类”的“严蔚敏”编写的图书《数据结构》,单价“35”元,现需要录入到系统中。
  • 增加一条读者借阅记录,借阅时间为当前时间(自动获取系统时间),归还时间为空,内容自定。
  • 修改一条图书信息,如,修改某本图书(图书编号)的单价,内容自定。
  • 删除“xx”作者编写的所有图书,作者姓名自行确定。

5、数据查询

  1. 编写SQL语句实现以下查询要求:
  • 查询图书名称以“论”结束的所有图书信息。
  • 查询所有“在馆数量”小于3的图书信息。
  • 查询“人民邮电出版社”出版的图书包括哪些类别。
  • 查询读者中男女生的人数和总人数。
  • 查询借阅图书次数最多的前三名学生的姓名。
  • 查询最受读者喜欢(借阅次数最多)的图书名称和被借阅的次数。
  • ​​​​​​​
  • 查询所有超过60天未归还的图书的读者姓名、图书名称、借阅时间。
  • 查询每种图书的所有出版社名称和单价,并按单价从低到高的顺序排序(图书名称相同表示同一种图书)。
  • 统计每个读者借阅图书的总数量,降序排序,并输出前5名
  • 查询借阅了“b005”这本图书的所有读者的姓名(使用exists)。

 

  • 查询借阅了图书编号“b001”和“b003”的读者的学号(图书编号可根据具体添加的图书信息进行修改)。

 

6、数据库对象的创建

  • 在出版社表上创建关于“出版社姓名”列的一个唯一索引
  • 创建一个包含“读者姓名”、借阅的“图书名称”、“借阅时间”和图书“单价”等信息的视图
  • 创建一个存储过程,实现查询指定出版社(出版社名称)出版某本图书(图书名称)的数量和单价。(其中,出版社名称和图书名称以存储过程的输入参数设定),并执行该存储过程检查其正确性。
  • 创建一个触发器,使得读者借阅某本图书时,图书表中该图书的在馆数量减一。
  • 创建一个触发器,使得读者归还某本图书时,图书表中该图书的在馆数量加一。

7、数据库安全管理与维护

(1)用户管理

  • 通过SQL语句添加数据库用户“sa”,密码为“sa”;
  • 修改用户“sa”的用户名为“admin1”,密码为“123456”;

 

(2)权限管理

  • 授予admin1用户对“借阅”数据表的insert、select、update和delete权限;
  • 收回admin1用户对“借阅”数据表的insert权限。

(3)数据备份与恢复

  • 使用mysqldump命令对Library数据库进行备份到文件“e:\library\library.sql”;
  • 使用mysql命令将备份文件library_bak.sql恢复到数据库。
  • 对library数据库中book表中的数据进行备份到文件“e:/library/book_bak.txt”中;
  • 将“e:/library/book_bak.txt”文件中的数据恢复到library数据库的book表中。

 

 本次实训就到这里结束啦!

有什么疑问可以在评论区提,文章中若有不当之处,也恳请各位帮忙指正

如果本文对铁子们有所帮助的话,可以一键三连哦

 

  • 49
    点赞
  • 238
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
习任务书 校内习地点: 校外习单位: 习岗位: 习时间:2010年12月20日——2011年1月7日共3周 校内习导师:刘永真 习内容: 选择对应的系统,按数据库原理进行数据库设计,利用软件工程与应用课程设计( visual basic)完成总框图及各模块功能总体设计;分模块完成各模块的程序设计工作,检查调 试系统功能完成情况;最后上交教师检查系统运行,验收软件及批准打印报告书。 习要求: 1. 完成本任务书确定的工作内容,做好习单位布置的其他工作任务。 2. 按照安全作业规程的要求进行指定项目习,严格遵守习单位的各项规章制度。 3. 认真做好每周习的记录。 4. 在习导师的指导下,收集与习报告相关的第一手资料,完成《习报告》的撰写任务 。 校内习导师(签字): 年 月 日 第 1周 2010年12月20日至2010年1月24日 "习内容及完成情况: " "习内容: " "1.选定题目,设计数据库基本结构 " "2.建立数据库表单和视图等对象 " "3.对系统框架进行设计,考虑详细模块功能 " "4.上机完成用户登录与管理程序设计 " "5.设计系统各级界面。初步完成各模块界面程序设计。、 " "完成情况: " "基本完成本周习内容,登录界面设计成功,进行调试。系统运行正常,出" "现大的问题。通过老师检查。 " "企业 " " "导师 " " "指导 " " "记录 "时间: " "校内 "该生态度 端正,在第一周 " "导师 "完成了系统的模块设计和数据库的结构设计。 " "指导 " " "记录 " " " " " " "时间: " 第 2周 2010年1月27日至2010年12月31日 "习内容及完成情况: " "习内容: " "1.针对各表的增,删,改,查功能,进行各子模块的程序设计工作 " "2.编写各模块程序。申请第二次检查。 " "3.编写各模块程序。调整、完善各模块的功能。 " "4.完善各模块界面程序设计。 " "5.进一步完善各模块界面程序设计。 " "完成情况: " "根据老师所给的要求,进行个模块的设计、完善。基本完成了系统的的一些" "基本功能。 " "企业 " " "导师 " " "指导 " " "记录 "时间: " "校内 "该生态度 端正,在第二周分模块 完成了系统的功 " "导师 "能设计,各模块功能 完善。 " "指导 " " "记录 " " " " " " "时间: " 第 3周 2011年1月3日至2011年1月7日 "习内容及完成情况: " "习内容 " "1.系统联调,加载试运行。书写课程设计报告书 " "2.完善程序设计,课程设计报告书打印成册。 " "3.演示系统,上交软件及报告书 " "完成情况: " "对系统进行了美化并对个模块进行完善。对习报告进行书写、打印。 " "提交软件和报告书。 " " " " " "企业 " " "导师 " " "指导 " " "记录 "时间: " "校内 "该生态度 端正,在第三周 " "导师 "提交了完整的系统及报告,报告撰写格式 规范,内容 " "指导 "翔系统功能 。 " "记录 " " " " " " "时间: " 设计题目: 图书借阅管理信息系统设计 设计主要内容: 一、开发平台:VB+ SQL SERVER 2000 二、功能要求: 1、设计内容 设计一个图书管理信息系统,该系统的用户由一般用户和管理员组成,然后不同的用 户拥有不同的权限,各自完成各自的管理功能,首先是欢迎界面,然后选择登录,登录 的时候首先要判断用户的身份,合法的用户然后进入到系统主界面中,不同的用户看到 不同的系统功能。用sql server2000创建后台数据库,然后利用程序设计语言(VB)编写程序现对数据库的操 作,按照要求完成所有的功能和模块。 2、图书管理信息系统主要功能 (1)登录界面、用户注册界面、用户密码修改界面 (2)借阅管理:信息查询界面(个人借阅查询、图书信息查询) (3)管理员管理:系统维护界面(图书维护、借阅人信息维护、管理员信息维护、默 认还书期限信息(增、删、改)、借阅图书登记界面、归还图书登记界面、信息查询界 面(个人借阅查询、图书信息查询、催还书目浏览)、用户信息管理界面。 3、图书管理信息系统数据库表单(可以按照需求增减) (1)用户密码表单:用户名、密码、用户身份(管理员和借阅用户) (2)图书信息表单:图书序号、书名、作者、关键字、出版社、价格、购买日期、数 量、图书类型、备注 (3)借书信息表单:序号、图书序号(外码)、借书人(外码)、借出日期、预还日 期、归还日期、图书类型、借书经手人、还书经手人、罚款金额、书籍归还质量、归还 状态 (4)借阅人信息表单:
2.2 主要功能说明: 一.欢迎界面:改界面主要是作为本系统的封面,程序运行后该界面会出 现在屏幕中间,操作者可以点击该界面即可计入下一个窗体。 二.入口:本系统中权限的设置主要是靠入口,选择不同的登录身份进入 系统后将会得到不一样的执行权限。若选择退出系统,则将会退出整个软件。 三. 读者登陆界面:该窗体主要是给一般读者登陆系统执行图书的查询和借阅功能的,当读者输入的编号和密码正确后即可进入系统,当用户输入用户名和密码出现错误后,系统会提示用户重新输入。当用户三次输入均出现错误时,系统会自动关闭。 四.管理员登陆界面:该窗体主要是提供给系统管理员进入系统进行操作的,其中用法和读者登陆界面一样,不同的是进入系统后具有的操作权限不同。管理员具有全部权限。 五.图书管理:(1)图书信息录入界面:此界面主要用于首次录入图书信 息,因此该界面应该具有输入图书所有信息的元素, 如图书编号,书名,书号,作者…. (2)图书信息修改界面:此界面主要是用于已经存在馆里的图书的信息的修改,因此该界面应该有查找和修改的功能,所以除了具有图书信息录入界面的元素外,还应该有上一条,下一条,查询等元素。 六.读者管理:(1)读者注册界面:此界面主要是用于录入新读者的信息, 因此此界面应该具有读者的所有信息,另外应该还具 有赋予读者一个进入系统的密码的元素。 (2)读者信息修改:此界面主要用于对已经注册过本系统 的读者的信息的修改,包括密码等等元素。 七.图书服务:(1)图书查询界面:此界面主要是用于查询,借阅,预 约图书,查询时可按图书的书名,作者,出版社来 查询,查询到的图书用表格显示,并且可以显示图书借阅情况。 (2)借书还书界面:该界面主要是用于读者的借书和还 书的情况,并且读者可以归还图书。 八.数据安全:(1)数据备份界面:该界面主要用于对本系统的重要数 据进行备份,以便不小心失去数据后可以恢复数据 提高系统的安全性。 (2)数据恢复界面:该界面是和数据备份界面配合使用的,当需要恢复已经备份的数据时,即可使用该窗体。 九.系统管理:(1)帮助和相关界面:该界面主要是向使用本系统的读者或者管理员提供相应的提示和帮助,同时显示一些关于本系统的相关信息。 (2)密码设置界面:该界面主要是用于管理员的注册和密码修改,注册界面可以注册新的管理员,密码修改界面可以对已经存在的管理员的信息的修改。 (3)退出本系统界面:该界面主要是用来安全退出整个软件,包括退出了vfp软件 (4)恢复vfp系统界面:该界面主要是用来退出当前运行的图书管理系统,恢复到vfp系统继续进行操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值