影碟出租出售系统.docx
- 文档编号:26708913
- 上传时间:2023-06-21
- 格式:DOCX
- 页数:22
- 大小:561.63KB
影碟出租出售系统.docx
《影碟出租出售系统.docx》由会员分享,可在线阅读,更多相关《影碟出租出售系统.docx(22页珍藏版)》请在冰豆网上搜索。
影碟出租出售系统
影碟租售系统
——数据库设计
院系信息科学与技术学院信管
人员王聪2010508184
数据库设计说明书
一.引言
1.1编写目的
影碟出租管理系统是典型的信息管理系统。
本系统采用关系数据库系统,针对影碟的出租、零售及购进状况,设计了影碟信息、客户信息、租借信息、店员信息、供应商信息、订货单信息、账目信息关系一系列数据表。
这些数据表包括了影碟等实体的大量基本信息,对于出租及零售管理系统主要业务,与以往人工账单方式相比,大大减轻了工作人员的工作量,从而提高了影碟出租管理的效率、服务质量及减少了出错率避免了不必要的损失。
系统包括菜单、数据输入、查询、删除、修改、建立数据库相关表之间的参照完整性约束,从而使本系统在安全性,灵活性,系统性上可以满足要求。
具体实现了:
①实现VCD类型及信息的管理;
②实现VCD的入库管理;
③实现VCD的借还管理;
④实现VCD的零售管理;
⑤创建触发器,入库登记、零售时自动修改、现货和库存,借、还时自动修改现货数量;
⑥创建存储过程统计某段时间内各VCD的销售数量;
⑦创建视图查询各类VCD的库存情况,
1.2背景
a.待开发软件系统的名称:
影碟租售系统
b.本项目的任务提出者:
石河子大学
c.本项目开发者:
王聪
d.本项目用户:
影碟出租销售店
1.3参考资料
[1]王珊,萨师煊主编.数据库系统概论(第四版).北京:
高等教育出版社,2006.5
[2]SQLServer实验指导(第三版),清华大学出版社2009.9
二.外部设计
2.1支持软件
软件上,操作系统采用Windows系列操作系统,数据库管理系统采用SQLserver,这些软件在技术上都十分成熟,技术上可行。
三.结构设计
3.1概念结构设计
本数据库将反映的现实世界中的实体、属性和它们之间的关系等的原始数据形式,包括各数据项、记录、系、文卷的标识符、定义、类型、度量单位和值域,
3.2关系模式(主键带有下划线)
影碟信息(VCD编号,电影名称,导演,主演,语种,类别,上映日期,库存,租金)
客户(身份证号,姓名,电话)
租借(租借编号,身份证号,VCD编号,押金,租期,租借时间,到期时间,归还状态)
销售(销售编号,VCD编号,单价,数量,总价,销售日期)
3.3关系图:
3.4ER模型图
3.5数据字典
VideoInfo(影碟信息表,表1)
字段名称
数据类型
字段大小
允许空
备注
主键
VNO
float
N
vcd编号
Y
VN
nvarchar
255
N
电影名称
N
MACTOR
nvarchar
255
Y
主演
N
DIRECTOR
nvarchar
255
Y
导演
N
LANGUAGE
nvarchar
255
Y
语种
N
TYPE
nvarchar
255
Y
类别
N
SHOWTIME
datetime
Y
上映日期
N
STOCK
float
Y
库存
N
HIRE
float
Y
租金
N
Consumer(客户信息表,表2)
字段名称
数据类型
字段大小
允许空
备注
主键
CID
nvarchar
255
N
身份证
Y
CNAME
nvarchar
255
N
姓名
N
CTELE
nvarchar
255
Y
电话
N
RentOut(租借表,表3)
字段名称
数据类型
字段大小
允许空
备注
主键
VNO
float
N
vcd编号
Y
CID
nvarchar
255
N
客户身份证
Y
DEPOSIT
float
Y
押金
N
DAY
float
Y
租期
N
LOAN
datetime
Y
租借时间
N
CONDITION
char
4
N
归还状态
N
Sale(销售表,表4)
字段名称
数据类型
字段大小
允许空
备注
主键
SNO
float
N
账单号
Y
VNO
float
N
vcd编号
N
AMOUNT
float
N
数量
N
TP
float
Y
总价
N
STIME
datetime
Y
销售日期
N
PRISE
float
N
单价
N
3.6流程图
①租借申请
②归还
③销售
4.实现问题:
4.1创建表,视图,索引脚本
4.1.1创建表
--videoinfo
USEJIAOXUEDB
createtablevideoinfo(
VNOFLOATNOTNULL,
VNNVARCHAR(255)NOTNULL,
MACTORNVARCHAR(255),
DIRECTORNVARCHAR(255),
LANGUAGENVARCHAR(255),
TYPENVARCHAR(255),
SHOWTIMEDATETIME,
STOCKFLOAT,
HIREFLOAT
)
--consumer
createtableconsumer(
cidnvarchar(255)notnull,
cnamenvarchar(255)notnull,
ctelenvarchar(255)
)
--rentout
createtablerentout(
vnofloatnotnull,
cidnvarchar(255)notnull,
conditionchar(4)notnull,
depositfloat,
dayfloat,
loandatetime,
rreturdatetime
)
--sale
createtablesale(
snofloatnotnull,
vnofloatnotnull,
amountfloatnotnull,
tpfloat,
stimedatetime,
prisefloatnotnull
)
4.1.2视图
--影碟库存情况
createviewview_影碟库存情况
asselectvno,vn,stock
fromvideoinfo
go
--租借信息
createviewview_租借
asselectvideoinfo.vno,consumer.cid,condition
fromvideoinfo,rentout,consumer
whereCONSUMER.CID=RENTOUT.CIDandRENTOUT.VNO=VIDEOINFO.VNO
go
4.2创建触发器,入库登记、零售时自动修改、现货和库存,借、还时自动修改现货数量;
--影碟入库登记
createtriggerinput_trigger
onvideoinfoforinsert
as
declare@vnofloat
select@vno=vnofromvideoinfo
if
@vno=(selectvnofrominserted)
begin
updatebookssetstock=stock+1wherevn=(selectvideoinfo.vnfrominserted)
end
else
insertintovideoinfo(vno,vn)values('299','大旗英雄传')
--影碟零售
createtriggersale_trigger
onsaleforinsert
as
declare@vnofloat,@amountfloat
select@vno=vnofrominserted
select@amount=amountfrominserted
begin
updatevideoinfosetstock=stock-@amountwherevno=@vno
updatesalesetamount=0
end
--影碟租借
createtriggerrentout_trigger1
onrentoutforinsert
as
declare@vno_newfloat,@cid_newnvarchar(255)
select@vno_new=vnofrominserted
select@cid_new=cidfrominserted
updatevideoinfosetstock=stock-1wherevno=@vno_new
go
createtriggerrentout_trigger2
onrentoutforupdate
as
declare@vno_efloat,@i1char
(2),@i2char
(2)
select@i2=conditionfrominserted
select@i1=conditionfromdeleted
select@vno_e=vnofrominserted
if@i1='否'and@i2='是'
updatevideoinfosetstock=stock+1wherevno=@vno_e
4.3创建存储过程统计某段时间内各影碟销售数量;
--统计时间段内影碟销售数量
createprocedurevideo_xs
--@stock1_in当前库存数,@stock2_in 月初库存数,
@stock1_infloat,@stock2_infloat,
@gn_outfloatoutput
as
select@gn_out=@stock1_in-@stock2_in
fromvideoinfo$,sale$
where
videoinfo$.vno=sale$.vnoand
@stock1_in=(
selectstock
fromvideoinfo$,sale$
wherevideoinfo$.vno=sale$.vnoandstime=(
selectgetdate()asdte,dateadd(day,-1,getdate())asnowdat))
and
@stock2_in=(
selectstock
fromvideoinfo$,sale$
wherevideoinfo$.vno=sale$.vnoandstime=(
selectdateadd(dd,-day(getdate()),dateadd(m,1,getdate()))))
4.4数据库备份及恢复
backupdatabasevcd
todisk=''
withinit
go
--数据库的恢复
restoredatabasevcd
fromdisk='G:
\'
withrecovery
go
--数据库差异备份
backupdatabasevcd
todisk='G:
\'
withinit
go
--数据库的恢复
restoredatabasevcd
fromdisk='G:
\'
withnorecovery
go
restoredatabasevcd
fromdisk='G:
\'
withfile=2
go
4.5创建视图查询各类VCD的库存情况;
创建视图view_影碟库存情况
4.6建立数据库相关表之间的参照完整性约束。
Consumer
Rentout
Sale
Videoinfo
表之间参照完整性
主外键约束 videoinfo与sale
Videoinfo与rentout
Consumer与rentout
5.设计小结
通过本次课设,让我们受益匪浅,以下是几点心得及体会:
(1)加深对数据库系统概论相关知识和SQLServer相关功能的理解
以前只是记书本上关于数据库系统的相关功能,但这些大部分只是处在死记的基础上,没有切身实地的感触,这次课程设计又让我对SQLSERVER2005相关功能有了更深的理解,比如:
存储过程,触发器等。
(2)进一步掌握相关的SQL语句
影碟出租管理系统开发的过程中牵涉到相当多的基本表的建立和相关联系,以及存储过程的设计,通过这次系统开发让我对这些语句操作更加熟练了。
(3)熟悉对项目开发的大致过程
这次系统开发,从开始的系统需求分析、概念设计、逻辑设计、物理设计,再到数据库实施、系统的测试和调试,都时自立完成,虽然只是做出的系统的框架,还存在很多问题,但对于项目(系统)开发的大致流程有了一定的了解,为以后的学习和实验奠定了一定的基础。
(4)存在的问题
对知识的掌握程度不够,在系统开发的过程中遇到了这样那样的问题,比如画E-R图做得很粗糙,带输出变量的存储过程,具体的语句还不是很熟悉,语句使用很生涩,很多方面都考虑的不全,有些地方还有冲突等问题,这些问题还需要在未来的学习中不断的尝试和完善。
(5)关于此次实验
第一次做得时候因为上学期学习不够努力,所以技术方面的问题我并没有参与太多,我主要是提出设计方案和做一些打字制图等一些耗体力的任务。
这次实验设计时我也不认为我现在有短时间内独立的重新设计一个新系统的能力,所以此次实验还是采用了上次实验的系统设计文档,对我上次没参与的部分进行了学习和理解,虽然到现在还有一些的疑惑和不解,但我相信,在我不断的自我学习我所落下的课程的过程中,我最终可以完全理解课程设计的过程和方法。
有人建议我做些文档修改以表明一种认真对待这次补考的态度。
但我认为应该正确认识到自己的问题所在,所以相比于对文档做修改,我更应该尝试去理解和掌握里面的内容。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 影碟 出租 出售 系统