《数据库系统原理》课程大作业

课题名称:音响店VCD零售/出租管理系统

温馨提示:本文主要为了应付结课检查,仍有很多尚未完善的内容,不规范的画图之类的,忘读者谨慎食用😜

1 绪论

1.1 目的和意义

随着经济的发展,社会的进步,万事万物都在变化,就像进化论那般,很多东西都在经历着“用进废退”的过程。八九十年代以及二十一世纪初流行的VCD,在科技这么发达的现今,它也渐渐淡出了人们的视野。但也不乏喜欢用VCD以及有VCD收藏爱好的人群,他们一般都是在VCD零售/出租商铺中寻找他们想要的VCD。然而,现如今销售或是出租VCD本就利润不大,再加上商家还要时时依靠手工筛选和销售VCD,费时费力不说,收入也不高,这就导致很多VCD零售/出租商铺的关门。而开发VCD零售/出租管理系统能够在一定程度上提高商家的销售率,降低经营成本,优化资源配置,从而实现商品的最大利益化。

1.2 功能概述

本系统主要用Microsoft SQLServer 2008工具实现,开发实现的模块有VCD信息管理模块、VCD入库管理模块、VCD借还管理模块、VCD零售管理模块、客户信息管理模块。本系统主要考虑以下几点:
1.VCD信息管理:存放及查看VCD的类型及其他基本信息,数量;
2.VCD入库管理:记录VCD的入库情况及其数量;
3.VCD借还管理:记录VCD的借出,归还情况;
4.VCD零售管理:记录VCD的零售情况及其数量;
5.客户信息管理:存放客户基本信息及其租赁情况。

2 应用系统功能设计

2.1 系统功能设计

音响店VCD零售/出租管理系统主要包括以下四个方面的功能:
1)VCD信息查询功能:以便于按信息查找VCD的客户,通过VCD名称、类型等寻找到自己想要的VCD;
2)VCD销售功能:记录售出的VCD情况,及时更新VCD的库存数量,同时通过售出的情况决定今后的VCD入库量;
3)VCD借还功能:记录VCD的借还情况,租赁价格,制定归还日期,便于商家管理VCD,过期增加费用。同时记录VCD的在库数量以及借出数量,结合归还日期,避免进货供过于求。
4)VCD入库功能:VCD入库后更新VCD的库存量,增加新增的VCD信息等。

2.2 业务操作流程

在这里插入图片描述

3 数据库设计

3.1需求分析

3.1.1 功能需求

音响店VCD零售/出租管理系统具备如下功能:
1.查询
对VCD信息的查询。要求:
1)对VCD的库存剩余数量的查询,可以按照入库、售出、租出、归还进行查询;
2)VCD信息包括:VCD编号、类型、价格、名称、借还状态,库存数。
2.借还
通过VCD零售/出租系统,客户可以寻找到自己喜欢的VCD,商家系统记录客户的租赁情况。要求:
借还记录应包括:VCD编号、借出日期、借出数量、归还日期、押金。
3.销售
商家在售出VCD之后通过系统记录VCD的售出情况,系统更新VCD在库情况。要求:
销售记录应包括:VCD编号,VCD名称,售出日期,售出数量。

3.1.2 数据字典

数据文件:客户信息              
文件组成:电话号码,编号        
数 据 项:电话号码              
数据类型:字符型                
数据长度:18                   
数 据 项:编号                  
数据类型:字符类型              
数据长度:10     

数据文件:VCD信息
文件组成:编号,类型,名称,价格,库存数
数 据 项:编号
数据类型:字符型
数据长度:10
数 据 项:类型
数据类型:字符型
数据长度:10
数 据 项:名称
数据类型:字符型
数据长度:10
数 据 项:主演/作者
数据类型:字符型
数据长度:10
数 据 项:价格
数据类型:decimal
数据长度:(10,2)
数 据 项:库存数
数据类型:整型
数据长度:(10,2)

数据文件:零售信息                                   
文件组成:客户编号,VCD编号,销售日期,销售数量      
数 据 项:客户编号                           
数据类型:字符型                             
数据长度:10 
数 据 项:VCD编号                           
数据类型:字符型                             
数据长度:10                                
数 据 项:销售日期                          
数据类型:字符类型                           
数据长度:10                                 
数 据 项:销售数量
数据类型:整型
数据长度:

数据文件:借还信息
文件组成:VCD编号,客户编号,押金,借出数量,借出日期,归还日期,状态
数 据 项:VCD编号
数据类型:字符型
数据长度:10
数 据 项:客户编号
数据类型:字符型
数据长度:10
数 据 项:押金
数据类型:decimal
数据长度:(10,2)
数 据 项:借出数量
数据类型:整型
数据长度:
数 据 项:借出日期
数据类型:字符类型
数据长度:10
数 据 项:借出日期
数据类型:字符类型
数据长度:10
数 据 项:归还日期
数据类型:字符类型
数据长度:10
数 据 项:状态
数据类型:字符型
数据长度:10

3.1.3 数据流图

在这里插入图片描述

3.1.4 功能模块描述

1.VCD信息管理:存放及查看VCD的类型及其他基本信息,数量;
2.VCD入库管理:记录VCD的入库情况及其数量;
3.VCD借还管理:记录VCD的借出,归还情况;
4.VCD零售管理:记录VCD的零售情况及其数量;
5.客户信息管理:存放客户基本信息及其租赁情况。

3.1.5 功能划分

在这里插入图片描述

3.2 E-R图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.3数据库逻辑结构设计

3.3.1 VCD信息表

字段名字段类型字段大小备注
Vnochar10primary key
Vnamechar10not null
Actorchar10null
Pricedecimal(10,2)not null
Vtypechar10not null
Amountintnot null

3.3.2 客户信息表

字段名字段类型字段大小备注
Cnochar10primary key
Cnumchar11null

3.3.3 借还信息表

字段名字段类型字段大小备注
Vnochar10primary key
Cnochar10not null
Hpricedatenull
Hamountintnull
Htimechar10null
Rtimechar10null
tatechar10not null

3.3.4 零售信息表

字段名字段类型字段大小备注
Vnochar10primary key
Stimechar10not null
Samountintprimary key

3.3.5 VCD入库信息表

字段名字段类型字段大小备注
Vnochar10primary key
In_timechar10not null
In_amountchar10primary key

3.4 关系模式

VCD信息(VCD编号,VCD名称,作者/主演,VCD类型,VCD库存量,VCD借还状态,VCD租赁价格)
客户信息 (客户编号,电话号码)
借还信息(VCD编号,客户编号,借出日期,归还日期,押金,借出数量,状态)
零售信息(VCD编号,客户编号,销售日期,销售数量)
入库信息(VCD编号,入库数量,入库日期)

4 数据库创建

4.1创建数据库:

create database VCD_info

4.2创建表:

create table VCD
(
Vno char(10)not null primary key,
Vname char(10) not null,
Actor char(10) null,
Price decimal(10,2) not null,
Vtype char(10)not null,
amount int not null check(amount>=0)
)

create table Client
(
Cno char(10)not null primary key,
Cnum char(11) null
)

create table Hire
(
Vno char(10) not null ,
Cno char(10)not null ,
Hprice decimal  null,
Hamount int null,
Htime char(10) null,
Rtime char(10) null,
Vstate char(10)not null,
primary key(Vno,Cno),
foreign key (Vno)references VCD(Vno),
foreign key (Cno)references Client(Cno)
)

create table Sell
(
Vno char(10)not null,
Stime char(10) not null,
Samount int not null,
primary key(Vno,Samount),
foreign key (Vno)references VCD(Vno)
)

create table Stock
(
Vno char(10)not null,
In_time char(10)not null,
In_amount int not null,
 primary key(Vno,In_amount),
 foreign key (Vno)references VCD(Vno)
)

在这里插入图片描述

4.3插入数据:

insert into VCD values(
'0001','平凡的一天','毛不易',48,'歌曲',45
)
insert into VCD values(
'0002','秋故事','苏打绿',51,'歌曲',25
)
insert into VCD values(
'0003','江南','林俊杰',64,'歌曲',63
)
insert into VCD values(
'0004','光辉岁月','黄家驹',26,'歌曲',44
)
insert into VCD values(
'0005','喜剧之王','周星驰',30,'电影',31
)
insert into VCD values(
'0006','倩女幽魂','王祖贤',23,'电影',15
)
insert into VCD values(
'0007','咏春','甄子丹',27,'电影',29
)
insert into VCD values(
'0008','双生','刘浩然',25,'歌曲',33
)

在这里插入图片描述
在这里插入图片描述

insert into Client values (
'a','18245622786'
)
insert into Client values(
'b','15475622786'
)
insert into Client values(
'e','15465151877'
)
insert into Client values(
'c','18655736428'
)
insert into Client values(
'd','11354454910'
)

在这里插入图片描述
在这里插入图片描述

insert into Hire values(
'0001','b',5.5,1,'2019-5-3','2019-5-8','在库'
)
insert into Hire values(
'0001','a',5.5,1,'2019-5-3','2019-5-8','在库'
)
insert into Hire values(
'0002','b',6.5,1,'2019-5-7','2019-5-13','在库'
)
insert into Hire values(
'0001','c',7,1,'2019-6-19','2019-6-25','借出'
)
insert into Hire values(
'0004','b',20,1,'2019-6-3','2019-6-23','借出'
)
insert into Hire values(
'0005','b',7.5,1,'2019-6-3','2019-6-10','在库'
)
insert into Hire values(
'0008','e',1,1,'2019-6-6','2019-6-7','在库'
)
insert into Hire values(
'0008','a',16,1,'2019-6-10','2019-6-25','借出'
)
insert into Hire values(
'0007','d',8,1,'2019-5-14','2019-5-21','在库'
)
insert into Hire values(
'0003','b',9,3,'2019-6-15','2019-6-23','在库'
)
insert into Hire values(
'0007','b',3,2,'2019-5-28','2019-5-30','在库'
)
insert into Hire values(
'0001','e',9.5,1,'2019-6-14','2019-6-23','借出'
)

在这里插入图片描述

insert into Sell values(
'0001','2019-6-19',2
)
insert into Sell values(
'0002','2019-4-10',1
)
insert into Sell values(
'0003','2019-4-19',2
)
insert into Sell values(
'0008','2019-6-11',5
)
insert into Sell values(
'0007','2019-3-19',1
)
insert into Sell values(
'0004','2019-6-18',6
)

在这里插入图片描述

insert into Stock values(
'0004','2019-6-19',10
)
insert into Stock values(
'0008','2019-6-19',5
)
insert into Stock values(
'0002','2019-4-22',8
)
insert into Stock values(
'0006','2019-5-19',15
)

在这里插入图片描述

4.4创建触发器:

4.4.1入库触发器

create trigger _Stock on Stock
for insert
as
update VCD set VCD.amount =VCD.amount+inserted.In_amount
from VCD,inserted
where VCD.Vno=inserted.Vno

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.4.2零售触发器

create trigger _Sell on Sell
for insert
as
update VCD set amount=amount-inserted.Samount
from VCD,inserted
where VCD.Vno=inserted.Vno

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.4.3借还触发器

create trigger _Hire on Hire
for insert
as
if exists( select * from inserted where inserted.Vstate like '借出')
begin
update VCD set amount=amount-inserted.Hamount
from VCD,inserted
where VCD.Vno=inserted.Vno
end
else 
begin
update VCD set amount=amount+Hamount
from VCD,inserted
where VCD.Vno=inserted.Vno
End

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.5创建存储过程:

create procedure tongji @begintime date,@endtime date,@type char(6)
as 
declare @tongji_type char(6)
set @tongji_type=@type
begin
if @tongji_type='零售'
select @begintime as 起始日期,@endtime as 截止日期,Vno,SUM(Samount)as 销售量
from Sell
where Stime>=@begintime and Stime <=@endtime
group by Vno
else if @tongji_type='借出'
select @begintime as 起始日期,@endtime as 截止日期,Vno,sum(Hamount)as 借出量
from Hire
where Htime>=@begintime and Htime<=@endtime and Vstate='借出'
group by Vno
else if @tongji_type='归还'
select @begintime as 起始日期,@endtime as 截止日期,Vno,SUM(Hamount)as 归还量
from Hire
where Rtime>=@begintime and Rtime<=@endtime and Vstate='在库'
group by Vno
else print '请输入正确的查询类型'
End

在这里插入图片描述
在这里插入图片描述

4.6创建视图:

create view type_num
as 
select Vtype 类型,SUM(amount)库存
From VCD
group by Vtype

在这里插入图片描述

4.7参照完整性约束:

在这里插入图片描述
为Stock中的Vno添加外键约束:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5 结束语

5.1 收获和体会

通过写音响店VCD零售/出租管理系统的数据库设计,我对数据库原理在实际应用上的具体实现有了进一步的了解和熟悉,并且对本学期的数据库知识有了一个系统的回顾和应用,知识更加牢固。在以往的数据库实验中,我们对每一个内容都有了一定的练习,但也只是在课本实验要求的前提下,在课本已设计好的数据库基础上实现的其他功能设计。而本次实习通过自己设计一个数据库来实现相关功能,很大程度上提高了我们的动手能力,思考能力。数据库系统设计在如今这个信息时代起到了很大的作用,它在很多行业都有实施,很大程度上替代了纯人工记录的工作。在学习了数据库之后,相信它会对我今后的工作起到很大的帮助。

5.2 总结与展望

VCD在二十一世纪初期以及八九十年代是人们非常喜欢的一项娱乐工具,人们不仅可以通过VCD观看影片,还可以听到自己喜欢的歌手的专辑音乐。特别是当时手机的功能不多,手机多是人们用来联系的工具,VCD在当时人们的生活中可是备受人们追捧的。尽管如今VCD零售/出租行业发展不甚良好,但人们的喜好总是没有定数的,指不定在如今复古风盛行的年代,VCD也会随着这股风再度盛行起来,毕竟相较于手机电脑上观看影像或是播放音乐,单纯的使用VCD播放也是别有一番趣味。VCD也是老一辈怀念旧时光的一种途径,同时也是年轻一辈体验经典的方式。随着这方面管理系统的不断优化,以及VCD新形势的促销策略引入,相信VCD也会获得更好的发展。

链接:https://pan.baidu.com/s/1gsQhEWirTc5dHUKx7UA1mQ
提取码:5dmx
复制这段内容后打开百度网盘手机App,操作更方便哦

Logo

快速构建 Web 应用程序

更多推荐