资源描述
课 程 设 计
课程名称 数据库系统概论
题目名称 图书借阅管理系统
学生学院 计算机学院
专业班级
学 号
学生姓名
指导教师 左亚尧
2013年 1 月 17日
一、需求分析
数据需求
图书借阅管理系统是管理图书与借书者的关系,需要有
图书的信息,如书的编号,书名,出版社,作者等;
借书者的信息,如学生的学号,姓名,性别,院系等;
借阅的信息,如学生的学号,书的编号,借出日期,归还日期等。
功能需求
该系统是为了方便管理员管理图书和借书者。所以应具有查询图书的功能,查询借出的图书的功能,查询借书者的功能,借书还书的功能以及查询借书过期的功能。
二、 E-R图
借书者
图书
借阅
学号
姓名
性别
院系
作者
还书日期
借书日期
出版社
书名
编号
m
n
三、逻辑结构设计
将数据库的概念模型转换为关系模型
借书者(学号,姓名,性别,院系)
图书(编号,书名,出版社,作者)
借阅(学号,编号,借书日期,还书日期)
(注:下划线是主键,波浪线是外键)
四、 数据库建立
1、 创建数据库
USE master
GO
CREATE DATABASE 图书借阅
ON
( NAME = '图书借阅_dat',
FILENAME = 'e:\数据库\图书借阅dat.mdf',
SIZE = 30MB,
FILEGROWTH = 20% )
LOG ON
( NAME = '图书借阅_log',
FILENAME = 'e:\数据库\图书借阅log.ldf',
SIZE = 3MB,
FILEGROWTH = 1MB )
GO
创建结果:
2、 创建基本表
create table "借书者"
(学号 char(10) primary key not null,
姓名 char(8),
性别 char(2),
院系 char(10),
)
create table "图书"
(编号 char(8) primary key not null,
书名 char(20),
出版社 char(20),
作者 char(8),
)
create table "借阅"
(学号 char(10),
编号 char(8),
借书日期 smalldatetime,
还书日期 smalldatetime,
foreign key(学号) references 借书者(学号),
foreign key(编号) references 图书(编号),
)
3、 数据库的关系图
4、 插入数据
插入借书者的数据:
插入图书的数据:
插入借阅的情况:
五、 测试
借书情况
查询借书的信息,包括借书者的学号,名字,书名
select 借阅.学号,姓名,书名
from 图书,借书者,借阅
where 借书者.学号=借阅.学号 AND
图书.编号=借阅.编号
借书过期
给出借书超期的信息,包括借书者的学号,姓名,书名,过期天数
select 借书者.学号,姓名,书名,DATEDIFF(DAY,还书日期,GETDATE())as 过期天数
from 图书,借书者,借阅
where 借书者.学号=借阅.学号 AND
图书.编号=借阅.编号 AND
GETDATE()-还书日期>0
借书
有学生借书,要在借书者、借阅的基本表中增加相应的数据
INSERT INTO 借书者 VALUES ('11111111','张三','男','计算机');
INSERT INTO 借阅 VALUES('11111111','KO69351','2013/1/17','2013/3/8');
修改前:
修改后:
还书
有学生还书,应先在借阅的基本表中根据学号和编号撤销相应数据,再判断该借书者是否有借其他书,若没有则在借书者的基本表中撤销该借书者的数据。
delete
from 借阅
where 学号='11111111' and
编号='KO69351'
delete
from 借书者
where not exists
(select *
from 借阅
where 学号=借书者.学号)
修改前:
修改后:
六、 心得
经过两天的时间,在自己的努力下,基本完成本次课程设计,通过这次课程设计,了解了设计一个数据库系统的复杂性和对综合知识要求较高。因此在设计阶段我们查阅了很多资料加深了对数据库知识的认识。
这次数据库课程设计是不同于平时的实验的,要严格作出这个设计的需求分析、逻辑结构、E-R图的构建等。但在创建数据库和基本表等操作在之前的实验中已经比较了解,所以在这方面并不麻烦。但是要注意主键的建立,外键的连接以及基本表的关系。在设计中也遇到过语法等错误,这说明就算做过实验,但对SQL Server也并不完全熟悉,而做完该设计后对SQL Server有更深入的了解了,这对我来说也是有很大的收获的。
本来想做一些图形界面的,但要重新学一门软件或者语言,比较费时间,就退而求次直接用SQL语句来操作,虽然不够直观但也能实现基本的操作了。
展开阅读全文