《数据库系统原理》课程大作业——音响店VCD零售/出租管理系统(SQL Server)
《数据库系统原理》课程大作业
课题名称:音响店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信息表
字段名 | 字段类型 | 字段大小 | 备注 |
---|---|---|---|
Vno | char | 10 | 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 |
3.3.2 客户信息表
字段名 | 字段类型 | 字段大小 | 备注 |
---|---|---|---|
Cno | char | 10 | primary key |
Cnum | char | 11 | null |
3.3.3 借还信息表
字段名 | 字段类型 | 字段大小 | 备注 |
---|---|---|---|
Vno | char | 10 | primary key |
Cno | char | 10 | not null |
Hprice | date | null | |
Hamount | int | null | |
Htime | char | 10 | null |
Rtime | char | 10 | null |
tate | char | 10 | not null |
3.3.4 零售信息表
字段名 | 字段类型 | 字段大小 | 备注 |
---|---|---|---|
Vno | char | 10 | primary key |
Stime | char | 10 | not null |
Samount | int | primary key |
3.3.5 VCD入库信息表
字段名 | 字段类型 | 字段大小 | 备注 |
---|---|---|---|
Vno | char | 10 | primary key |
In_time | char | 10 | not null |
In_amount | char | 10 | primary 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也会获得更好的发展。
下一篇: 博客系统 - 数据库设计(一)