光盘出租管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
光盘出租管理系统
一.需求分析 (1)
1.课题背景及意义 (1)
2.业务需求 (1)
3.数据流程图 (2)
4. 数据需求 (2)
二、概念结构设计 (2)
1.光盘信息E-R图 (2)
2.顾客信息 (2)
3.管理员信息 (2)
4.总的E-R图 (2)
三、逻辑结构设计 (2)
四.物理结构设计 (3)
1.光盘信息 (3)
2.顾客信息 (3)
3.管理员信息 (3)
4.租借信息 (3)
5. 归还信息 (3)
1. 数据库Cmanagementsystem(光盘出租管理系统)的建立 (3)
2. 创建基本表 (3)
3. 数据初始化 (4)
4. 单表查询 (4)
5.数据查询,更新及触发器,存储过程的创建 (5)
6.创建存储过程 (6)
7.超期处理 (6)
六.课程设计小结 (7)
一.需求分析
1.课题背景及意义
光盘出租管理系统是一个光盘出租商管理不可缺少的部分,它对于光盘出租商是至关重要的。
光盘租赁系统提供充足的信息和快捷的查询手段。
一直以来人们使用传统人工方式管理光盘的基本档案,这种管理方式有很多缺点:效率低,保密性差。
另外时间一长,将产生大量的文件和数据,对于查找,更新和维护都带了不少的困难。
随着科学技术的不断提高,计算机科学的日渐成熟,其强大的功能已为人们深刻认识,它已进入社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对光盘租赁进行管理,具有手工管理所无法比拟的优点。
例如:检索迅速,可靠性高,存储量大,保密性好,寿命长,成本低等。
这些优点能极大地提到光碟档案管理的效率,也是光碟租赁管理科学化,正规化的重要条件
2.业务需求
业务流程图如下:
抽象出系统有哪些具体功能要求即功能模型。
(1)注册。
信用户通过填写新信息即可成为新用户。
(2)租赁。
账户余额足够的情况下可以租赁光盘。
(3)注册会员。
成为会员后有更多的查询和租赁的权限。
(4)充值。
用户通过充值可以更新自己的账户及借光盘。
(5)评价建议。
通过用户反馈来更新了解信息。
4. 数据需求
需要处理的主要数据对象:
1.顾客信息:登陆账号、登录密码、个人基本信息等
2.租借记录:起租日期、归还日期、租赁人编号、归还状态等
3.账户管理:账户余额、已缴押金等
数据流程图如下:
二、概念结构设计
1.光盘信息E-R图
2.
3.管理员信息
4.总的E-R图
三、逻辑结构设计
将E-R图转换成等价的关系模式为:
顾客(顾客编号,姓名,性别,年龄,电话,地址,注册日期,账户余额,罚款金额,超出天数,借光盘数)
光盘(光盘编号,光盘名字,作者,出版社,出版日期,类别,借出数量,库存量)
管理员(管理员编号,姓名,性别,年龄,电话,地址)
租借(租借编号,顾客编号,光盘编号,租借费用,租借天数,租借日期)
归还信息(光盘编号,归还日期,管理员编号)
四.物理结构设计
1.光盘信息
2.顾客信息
3.管理员信息
4.租借信息
5.归还信息
五.数据实施和维护
1.数据库CDmanagementsystem(光盘出租管理系统)的建立
create database CDmanagesystem
on primary
(name=CDmanagementsystem ,
filename='D:\CDmanagementsystem.mdf',
size=10MB,
maxsize=20MB,
filegrowth=2MB
)
log on
(
name='CDmanage',
filename='D:\CDsystem.ldf',
size=6MB,
maxsize=20MB,
filegrowth=20MB
)
go
2.创建基本表
(1)管理员employee信息
(2)光盘CD信息
(3)顾客customer信息
alter table customer
add Ccount int not null
添加语句:
alter table customer
add Ccount int not null
(4)租借rental信息
(5)归还信息:
3.数据初始化
(1)将管理员信息加入表中:
(2)将光盘信息加入表中:
(3)将顾客信息添加到表中
(4)将租借信息插入表中:
insert into rental
values('2689574','387659','2013569',30,'2013/07/08',3.0); insert into rental
values('2689575','268495','2013578',45,'2013-06-25',4.5); insert into rental
values('2689576','387658','2013601',35,'2013/06/24',3.5); insert into rental
values('2689577','387657','2013602',40,'2013/06/29 ',4.0); insert into rental
values('2689578','387656','2013603',45,'2013/06/25',4.5); insert into rental
values('2689579','387655','2013604',20,'2013/07/25',2.0);
4.单表查询
(1)在employee表中查询:
select*from employee
(2)在customer表中查询:
select*from customer
(3)在CD表中查询:
select*from CD
(4)在rental表中查询:
select*from rental
(5)在Creturn中查询:
select*from creturn
(6)查询罚款金额大于0的顾客信息:select*
from customer
where finest>0
(7)查询顾客一借光盘的天数:
以2013/8/2为当前日期,则语句为:
select c1.customerId,customername,
datediff(day,rentaldate,'2013/8/2')as borrowdays
from customer c1,rental r1
where c1.customerid=r1.customerid
5.数据查询,更新及触发器,存储过程的创建
(1)创建触发器
在表中建立一个插入触发器(returnCD),功能:当还光盘操作时,要在rental记录中添加一条记录,同时删除相应光盘的租借记录。
(2)在Creturn表中再建立一个插入触发器(returnCD2),功能:当还光盘操作时,同时对相应表CD做相应的改动,inventory的属性:库存量加1,借出量减1,lending 的属性:已借书数减1。
SQL语句为:
create trigger returnCD2
on Creturn
after insert
as
update CD
set inventory=inventory+1,lending=lending-1
where CD.CDId in
(select CD.CDId
from CD,Creturn
where CD.CDId=Creturn.CDId and CD.lending>0)
update customer
set Ccount=Ccount-1
where customer.customerid in
(select customer.customerid
from customer,Creturn
where customer.customerid=creturn.customerid
and ount>0)
假设归还光盘编号为‘2013578’和‘2013569’代码
insert into Creturn
values('2013569','387659','2013/8/7');
insert into Creturn
values('2013578','268495','2013-08-9');
CD中的数据:
Customer中的数据:
Rental中的数据:
(3)在rental表中建立一个插入触发器(rental1),当借光盘操作时,要改变customer表的部分属性,已借书数加 1,账户余额减去相应的租借费用。
create trigger rentalCD
on rental
after insert
as
update customer
set Ccount=Ccount+1,
accountbalance=accountbalance-1
(select rental.rentalfee
from rental,Creturn
where Creturn.CDid=rental.CDid)
假设光盘编号为‘2013569’代码
执行前customer中的数据为
执行后customer的数据为
(4)在rental表中建立一个插入触发器(rentalCD2),当借光盘操作时,要改变CD表的部分属性,库存量减 1,借出量加 1。
create trigger rentalCD2
on rental
after insert
as
update CD
set inventory=inventory-1,lending=lending+1
where CD.CDid in
(select CD.CDid
from CD,rental
where CD.CDid=rental.CDid)
6.创建存储过程
(1)创建一个按照光盘类型查找该类型光盘的所有信息的存储过程
create procedure sort
@类别char(10)
as
select*
from CD
where sort=@类别
执行存储过程查询歌曲光盘信息
(2)创建一个存储过程根据顾客编号,查询出顾客借光盘信息
create procedure customerid
@顾客编号char(10)
as
select customer.customerid 顾客编号,customername 顾客姓名,
Ccount 已借光盘, accountbalance 账户余额,CD.CDid 光盘编号,
CDname 光盘名字,rentaldate 租借日期,rentaldays 租借天数,rentalfee 租借费用
from rental,CD,customer
where rental.CDid=CD.cdid
and rental.customerid=customer.customerid and customer.customerid=@顾客编号
查找顾客编号为‘387655’代码
触发器:
7.超期处理
(1)对已借光盘的顾客进行查询借光盘是否超期(说明:当前的日期为2013年9月1日计算
select customer.customerid 顾客编号,customer.customername 顾客姓名,
CD.CDId 光盘编号,CDname 光盘名字,rentaldate 租借日期,
datediff(day,rentaldate,2013/9/1)-rentaldays 超出天数
from CD,customer,rental
where rental.CDid=CD.CDid and rental.customerid=customer.customerid
and datediff(day,rentaldate,2013/9/1)>=rentaldays
对照rental表:
(2)对超过天数的租借者进行罚款,将信息插入到customer表,按照一天0.2元的比例来罚款
select rental.customerid ,rental.CDid,rentaldate,
0.2*datediff(day,rentaldate,2013/9/1)-rentaldays
from rental
(2)where datediff(day,rentaldate,2013/9/1)>= rentaldays
六.课程设计小结
这次的课程设计真的做起来困难重重,深刻体会到做一个软件,里面需要的很多知识我们没有接触过,去图书馆找书的时候发现,我们学的仅仅是皮毛,还有很多东西需要我们去发掘,就算是借一本书看完它,我们还是会发现还有很多知识没有吃透,这需要我们不断的实践,不断地自学习,不断地发现问题去思考问题。
从需求分析阶段不断地搜索资料,想充分了解自己所做的课题在客户或者公司中的需求,由于画数据流图等等软件设计流程做起来很生疏,翻阅课本和网上查资料,总算整了一个像样点的需求分析,但是也不知道是不是正确,根据数据流图,不断修改需求。
根据设计的大概模式,展开一步步的模块构造。
经过不断地测试,不断地改进,其中还是发现了不少问题,第一次做这些工作,没有任何经验,甚至无从下手,还是很谢谢老师和同学的帮忙,从中也学到了一些代码的写法,为什么要这样写,通过和同学的讨论,找到一些书本上没有的方法,如何数据绑定等等,这些东西虽然小,但是可以体现整个数据库水平,其实并不需要建多少数据库的表,写多少复杂的存储过程,是不是用了数据库函数,触发器等等,但是至少要弄明白这些东西如果操作,清晰思路才能将功能分清晰。
经过一段时间的学习与实践,使该系统具备了:添加、修改、删除、浏览、查询、输出信息,实现了根据用户需求查看等功能。
作为一个光盘出租管理系统,本系统所提供的功能的确太少了一些,仅仅只实现了一些基本的功能,有很多地方还有待扩展和改良。
人如果没有自信,没有目标,没有信心就不可能把事情做好,当其他人都在迷茫的时候,自己一定要坚信目标,从学习这个专业,到以后做这方面的工作都需要不断地去学习去实践,这次实践可以给我们敲一个警钟,在困难面前要勇于尝试,这是这次课程设计给我的最大感想。
数据库系统原理课程设计
课题名称:光盘出租管理系统
姓名:刘欣茹
班级:信管1101
学号: 311109030106
指导老师:刘小燕
2013年12 月30 日。