资源描述
(完整word版)碟片出租后台数据库设计
综合性、设计性实验报告
实验课程名称 碟片出租系统的后台数据库设计
专业 计算机科学与技术 班级 03
学号 541412010315 姓名 马普原
指导教师及职称_ 王华 _
开课学期 2015 至 2016 学年 第二 学期
设计时间 6月12日-6月24日
设计题目
碟片出租系统的后台数据库设计
1. 实验目的:
本课程设计的目的是为了让学生能够全面了解数据库应用系统的整个开发过程,逐步掌握系统开发的以下相关技术:
(1)巩固数据库理论知识,熟悉一种具体的数据库管理系统(例如:SQL Server)的使用方法。
(2)掌握针对特定应用环境数据库的设计。
(3)综合使用SQL Server中数据库、表、视图、索引、触发器、存储过程的创建使用方法。
(4)体会运用软件工程的设计思想进行软件系统开发的过程与方法。
2. 软硬件环境:
软件环境:
Visual studio 2010,SQL Server Management 2005
系统环境:Windows7及以上版本操作系统
硬件环境:硬盘:50G,内存:2G CPU:2.5GHZ;
3. 实验设计简述:
3.1 研究内容
碟片出租管理系统将碟片的整个采购、租借、归还的全过程记录在数据库中,根据真实音像店的具体应用情况来进行该系统的设计。
1.提供对音像店业务和光盘信息管理的支持,包括:采购光盘、光盘租借及归还、光盘信息统计管理等等。
2.为租借者和员工全面、准确得介绍音像店相关信息、光盘剩余信息、光盘归还信息及各类光盘更新情况。
3.2 研究目的
1.实现 光盘 的借还管理。入库登记时自动修改现货和库存,借、还时自动修改现货数量;
2.实现 光盘 类型及信息的管理,实现 光盘 的入库管理;
3.建立音像店员工外借数据库,方便员工对租借者的有效管理;
4.实现音像店对新光盘入库,不可使用光盘注销的简单处理。
4. 系统需求分析与功能设计
4.1 需求分析
根据不同租借者音响店 光盘 租借管理系统的使用情况及需求不同,分别从租借者、音像店管理员、采购员、系统维护员和店长的角度对该数据库进行需求分析,具体内容如下:
(1)租借者
租借者在音像店使用到音响店 光盘 租借管理系统的情况大致分四种,第一,查询所需要的光盘资料,以方便找到光盘存放位置;第二,查询自己的租借记录,以知道自己当前所借光盘,及光盘的租借情况,如是否在租借期内或已逾期须及时归还;第三,租借光盘,输入光盘编号及副本编号后可进行光盘租借;第四,归还或续借已借光盘,归还光盘时,系统相应消除该租借者的当前租借信息中的该条记录,若逾期返还,应做出相应处理,如扣除逾期罚款,满足续借要求的光盘可以续借,根据租借者类别光盘应还日期做相应延期处理。
对于第一需求,租借者登录后进入光盘查询界面查询光盘信息,当租借者输入所需查询光盘的名称或编号后,系统显示出符合查询条件的所有的光盘的信息,包括光盘名称、光盘编号、导演、光盘类别、可借数量、购入日期等。
对于第二需求,租借者登录租借查询界面后可查询自己的租借情况,系统显示出该租借者当前租借数量,逾期租借数量,并逐条列出每个租借光盘的名称、租借时间及应归还时间,及光盘当前租借状态,如正常租借、续期租借、逾期租借。
对于第三需求,租借者登录后进入光盘租借界面,输入光盘的编号及副本编号,在系统确定该光盘可租借后方可租借,租借日期为当日日期,应还日期根据租借者类别不同在租借日期上加上可租借天数方可得到,须注意,只有系统标明“可借”的光盘才可租借;租借成功后,相应租借明细添加到当前租借信息中,相应副本的光盘状态根据光盘租借情况做相应变化,光盘的可借数量减1,相应租借者的当前租借数量和历史租借数量分别加1。
对于第四需求,租借者登陆后可归还光盘,输入光盘编号及副本编号后对光盘的归还进行处理,处理完毕后,系统显示光盘编号、光盘名称、光盘租借日期、光盘归还如期及光盘归还结果,光盘归还结果主要有正常归还及逾期归还两种,当逾期归还时,系统根据逾期期限对租借者扣除相应罚款并记录至逾期归还次数中。光盘归还后,系统自动将该个光盘的租借信息从该租借者的当前租借信息中删除,并加入系统的历史租借信息中。
对于第五需求,租借者登录后进入租借者个人信息界面,可查询到自己的租借者编号、租借者姓名、联系电话及租借数量相关信息,进入修改密码界面后,在输入旧密码及新密码,且重复输入新密码确认无误后可修改密码。
(2)音像店管理员
音像店管理员主要对音像店的光盘进行光盘副本状况查询、光盘信息修改、清点、下架、销毁等工作。因而音像店管理员在租借者权限的基础上还可通过系统查询全馆光盘每个副本的情况,包括光盘所有基个信息及每个外借副本的租借者及该租借者的相关信息;当有光盘信息例如库存数量和可借数量与实际情况不符的时候,可对系统中的光盘信息进行相应修改;当有光盘不可使用不再接受租借时,可将光盘下架,下架后虽然可以查找到光盘信息但不可租借浏览;当仓库中已下架光盘无须再保留时,可对光盘进行销毁操作,销毁后在光盘查询系统中无法再查到该光盘的信息,但可在已销毁表中查找到该光盘的基个信息和销毁数量、销毁时间、销毁人员。
(3)采购人员
采购人员主要负责光盘的采购和新光盘上架工作,当采购员购买到指定数量某光盘后,该光盘的采购工作完成,采购员可对该光盘进行上架操作,采购员负责将光盘基个信息录入系统,系统根据录入信息对光盘副本进行编号,并根据上架时可租借数量对光盘的光盘状况进行可借和不可借标注。
(4)系统维护人员
系统维护人员主要负责光盘租借系统的租借者维护工作,即负责租借者的增删及信息修改,进行密码初始化操作。
(5)店长
店长拥有整个系统的最大权限,可对所有信息进行查询,并可修改采购员的采购单,增删查改管理员信息,增删查改租借者类别信息。
4.2 系统功能结构分析
系统功能结构图如下图4-1所示:
图4-1 系统功能结构图
5. 概念模型设计 (按数据库设计方法和规范化理论,从实践概括抽象出ER模型)
5.1 实体与属性分析
根据上述光盘租借系统需求分析,我认为该数据库主要涉及的实体有租借者、光盘、副本、管理员,各实体具体属性如下:
租借者:租借者编号、租借者姓名、性别、联系电话、客户类型、居住地址;
光盘类别:类别编号,类别名称,类别描述;
光盘:光盘编号、光盘名称、导演、语种、光盘价格、光盘类别、可借数量,内容简介;
管理人员:姓名、员工编号、登录密码、联系电话、管理类别。
光盘租借系统数据库各实体间联系如下:
一个租借者可以租借多个光盘,一个光盘可以被多个租借者借阅,一个采购员可以采购多个光盘,一个光盘也可以被多个采购员采购。
管理员与租借者及光盘间并无具体联系,为方便系统操作因而单设一个实体记录管理员信息。
5.2 系统总体E-R图设计
系统总体E-R图如下图5-1所示:
图5-1 系统功能结构图
6.逻辑模型设计(按数据库设计方法和规范化理论得出符合3NF的逻辑模型, ER图设计,ER图转化为相应的关系模式,设计数据库的逻辑模型)
关系模式设计如下:(其中下划线是主码,粗体是外键)
员工(职工号,姓名,性别,操作密码,职务,婚姻状况,入职日期)
光盘类别(类别编号,类别名称,类别描述)
光盘(编号,名称,导演,语种,单价,类别,可借数量,剧情简介)
采购(员工号,光盘编号,采购数量,采购日期,供应商)
租借(客户号,光盘编号,租借数量,租借日期,押金)
归还(客户号,光盘编号,归还日期,总费用)
优化后的关系模式如下:
员工(职工号,姓名,性别,操作密码,职务,婚姻状况,入职日期)
光盘类别(类别编号,类别名称,类别描述)
光盘(编号,名称,导演,语种,单价,类别,可借数量,剧情简介)
采购(序号,员工号,光盘编号,采购数量,采购日期,供应商)
租借(借阅号,客户号,光盘编号,租借数量,租借日期,押金)
归还(借阅号,归还日期,总费用,备注信息)
6. 物理模型设计(存储记录结构设计,物理文件的安排和建立索引)
1) 员工表结构
2) 光盘类别表结构
3) 光盘表结构
4) 客户表结构
、
5) 采购表
6) 借阅表
7. 实现(数据库结构设计的程序代码,基本操作的程序代码)
7.1数据库表设计
if exists (select * from sysobjects where name='光盘租借管理系统')
drop DataBase 光盘租借管理系统
GO
Create DataBase 光盘租借管理系统
go
Use 光盘租借管理系统
go
if exists (select * from sysobjects where name='类别表')
drop table 类别表
GO
Create table 类别表(
类别编号 varchar(10) not null,
类别名称 nvarchar(20) not null,
类别描述 nvarchar(100) ,
primary key(类别编号)
)
if exists (select * from sysobjects where name='光盘表')
drop table 光盘表
GO
Create table 光盘表(
编号varchar(20) not null,
名称varchar(50) not null,
导演varchar(20),
语种varchar(50),
单价float check(单价>0),
类别varchar(10) not null,
可借数量smallint check(可借数量>=0),
剧情描述nvarchar(200),
primary key(编号),
Foreign key(类别) references 类别表(类别编号)
)
if exists (select * from sysobjects where name='员工表')
drop table 员工表
go
Create table 员工表(
职工号varchar(15) not null,
姓名varchar(20) not null,
性别char(2) check(性别in('男','女')),
职务varchar(15),
操作密码varchar(30) not null,
婚姻状况char(4) check(婚姻状况in('未婚','已婚','离异')) ,
入职时间smalldatetime,
primary key(职工号)
)
if exists (select * from sysobjects where name='客户表')
drop table 客户表
go
Create table 客户表(
客户号varchar(18) not null,
客户姓名varchar(20) not null,
性别char(2) not null check(性别in ('男','女')),
电话varchar(15),--联系电话
类型varchar(20),--客户类型
居住地址nvarchar(100),
Primary key(客户号)
)
if exists (select * from sysobjects where name='采购记录')
drop table 采购记录
go
Create table 采购记录(
序号 int identity not null,
光盘编号varchar(20) not null,
员工号varchar(15) not null,
采购数量int not null,
采购日期smallDatetime,
供应商nvarchar(50),
primary key(序号),
Foreign key(光盘编号) references 光盘表(编号) on delete cascade,
Foreign key(员工号) references 员工表(职工号) on delete cascade
)
if exists (select * from sysobjects where name='借阅表')
drop table 借阅表
go
Create table 借阅表(
借阅号int identity(150001,1) not null,
光盘编号varchar(20) not null,
客户号varchar(18) not null,
借阅数量int not null,
借阅日期datetime default getDate(),
押金数float,
归还char(2) check(归还in ('是','否')) default '否',
备注信息nvarchar(50)
primary key(借阅号),
Foreign key(光盘编号) references 光盘表(编号) on delete cascade,
Foreign key(客户号) references 客户表(客户号) on delete cascade
)
Create table 归还表(
借阅号int not null,
归还日期datetime default getDate(),
总费用float,
备注信息nvarchar(50)
primary key(借阅号),
Foreign key(借阅号) references 借阅表(借阅号) on delete cascade
)
7.2视图设计
--创建采购信息视图
if exists (select * from sysobjects where name='采购记录信息')
drop View 采购记录信息
go
Create view 采购记录信息
as
Select 序号,光盘编号,名称,员工号,采购数量,采购日期,供应商
from 光盘表,采购记录
Where 光盘表.编号= 采购记录.光盘编号
--创建交易记录视图
if exists (select * from sysobjects where name='交易记录')
drop view 交易记录
go
Create View 交易记录
as
Select 归还表.借阅号,光盘编号,客户号,借阅数量,总费用,借阅日期,归还日期from 归还表,借阅表
where 归还表.借阅号= 借阅表.借阅号
--创建光盘信息视图
Create view 光盘信息
as
Select 编号,名称,导演,语种,单价,类别名称,可借数量,剧情简介
from 类别表,光盘表
Where 类别= 类别编号
7.2触发器设计
--当采购成购后,自动修改光盘库存数量
if exists (select * from sysobjects where name='Tri1')
drop trigger Tri1
go
Create trigger Tri1
on 采购记录
After Insert
as
declare @ID varchar(20);
declare @count int;
Select @ID = 光盘编号,@count =采购数量from inserted;
Update 光盘表Set 可借数量=可借数量+@count Where 编号= @ID
7.3存储过程设计
if exists (select * from sysobjects where name='BorrowRecord')
drop proc BorrowRecord
go
Create proc BorrowRecord(
@cid varchar(18)
)
as
Select 借阅号,名称as 光盘名称,客户姓名,借阅数量,借阅日期,押金数,备注信息
from 借阅表,光盘表,客户表
Where 归还= '否' and 借阅表.客户号= @Cid
and 借阅表.光盘编号= 光盘表.编号and 借阅表.客户号= 客户表.客户号
9.实验总结
(主要对本实验开发过程进行归纳和总结,还应包括在设计过程中所遇到的技术难点及解决方法,尚存在的问题以及进一步开发的见解与建议。)
(1)完成情况:除数据库不完整外,其他基本完美的做好了,不足之处就是数据库不够完善,功能不够强大,比如说用户权限表,用户角色表。同时这个设计也是参照了一部分图书馆借阅系统的实现,图书馆借阅没有入库和出库,我们自己完善了这部分的设计。
(2)心得体会:数据库真是一门有用的学问,通过这次大作业,我学习到了很多东西,仿佛触碰到了高级企业的门槛。初步了解了很多平时生活中看似简单的操作,其实背后蕴藏着多么大的艰辛。这也不是我们随便想学就能学好的功课,需要付出大量的时间与汗水。但我会慢慢坚持我相信我能够做的好的。经过这次课程设计,引发了我的很多思考和兴趣,首先是做课程设计要勤,手勤、口勤、眼勤、心勤、脑勤:其次要有韧性,不怕麻烦,不怕失败,反复修改,反复动手,越挫越勇,这样才能打开思路,找到最佳的系统规划和设计。
数据库的课程设计让我学会了把课本上的科学理论知识转化为实践的过程,学会了如何利用所学知识自己创建一个现实生活中可用的数据库管理信息系统,学生成绩数据库设计的流程通过背景分析、需求分析、数据库概念模型设计、数据逻辑结构设计、物理结构设计和数据库实施等流程设计而成,规范的设计流程从而让我们对以后的设计有重要的参考。
(3)技术难点:在关系表的设计上,不知道如何对应,而且在设计触发器的时候,设计了几次才真正实现,按照课本上的脚本来实现总是容易出错的,原来课本上的也只是理论部分而已,需要我们自己不断去实践和发现,才能真正解决。
10.参考文献
1.《数据库技术与联机分析处理》 王珊主编 北京科学出版社 1998
2.《SQL server 2000数据仓库与Analysis Services》 Bain T著 中国电力出版社 2003
3.《数据库原理与应用教程》 何玉洁等编著 机械工业出版社 2015, 7 第三版
指导老师评语及得分:
签名: 年 月 日
展开阅读全文