当前位置:文档之家› 光盘出租管理系统

光盘出租管理系统

光盘出租管理系统一.需求分析 (2)1.课题背景及意义 (2)2.业务需求 (2)3.数据流程图 (2)4. 数据需求 (3)二、概念结构设计 (3)1.光盘信息E-R图 (3)2.顾客信息 (4)3.管理员信息 (4)4.总的E-R图 (6)三、逻辑结构设计 (6)四.物理结构设计 (7)1.光盘信息 (7)2.顾客信息 (7)3.管理员信息 (7)4.租借信息 (8)5. 归还信息 (8)1. 数据库Cmanagementsystem(光盘出租管理系统)的建立 (8)2. 创建基本表 (9)3. 数据初始化 (12)4. 单表查询 (14)5.数据查询,更新及触发器,存储过程的创建 (17)6.创建存储过程 (21)7.超期处理 (23)六.课程设计小结 (24)一.需求分析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 CDmanagesystemon 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)go2.创建基本表(1)管理员employee信息(2)光盘CD信息(3)顾客customer信息alter table customeradd Ccount int not null添加语句:alter table customeradd Ccount int not null(4)租借rental信息(5)归还信息:3.数据初始化(1)将管理员信息加入表中:(2)将光盘信息加入表中:(3)将顾客信息添加到表中(4)将租借信息插入表中:insert into rentalvalues('2689574','387659','2013569',30,'2013/07/08',3.0); insert into rentalvalues('2689575','268495','2013578',45,'2013-06-25',4.5); insert into rentalvalues('2689576','387658','2013601',35,'2013/06/24',3.5); insert into rentalvalues('2689577','387657','2013602',40,'2013/06/29 ',4.0); insert into rentalvalues('2689578','387656','2013603',45,'2013/06/25',4.5); insert into rentalvalues('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 customerwhere finest>0(7)查询顾客一借光盘的天数:以2013/8/2为当前日期,则语句为:select c1.customerId,customername,datediff(day,rentaldate,'2013/8/2')as borrowdaysfrom customer c1,rental r1where c1.customerid=r1.customerid5.数据查询,更新及触发器,存储过程的创建(1)创建触发器在表中建立一个插入触发器(returnCD),功能:当还光盘操作时,要在rental记录中添加一条记录,同时删除相应光盘的租借记录。

(2)在Creturn表中再建立一个插入触发器(returnCD2),功能:当还光盘操作时,同时对相应表CD做相应的改动,inventory的属性:库存量加1,借出量减1,lending的属性:已借书数减1。

SQL语句为:create trigger returnCD2on Creturnafter insertasupdate CDset inventory=inventory+1,lending=lending-1where CD.CDId in(select CD.CDIdfrom CD,Creturnwhere CD.CDId=Creturn.CDId and CD.lending>0)update customerset Ccount=Ccount-1where customer.customerid in(select customer.customeridfrom customer,Creturnwhere customer.customerid=creturn.customeridand ount>0)假设归还光盘编号为‘2013578’和‘2013569’代码insert into Creturnvalues('2013569','387659','2013/8/7');insert into Creturnvalues('2013578','268495','2013-08-9');CD中的数据:Customer中的数据:Rental中的数据:(3)在rental表中建立一个插入触发器(rental1),当借光盘操作时,要改变customer表的部分属性,已借书数加 1,账户余额减去相应的租借费用。

create trigger rentalCDon rentalafter insertasupdate customerset Ccount=Ccount+1,accountbalance=accountbalance-1(select rental.rentalfeefrom rental,Creturnwhere Creturn.CDid=rental.CDid)假设光盘编号为‘2013569’代码执行前customer中的数据为执行后customer的数据为(4)在rental表中建立一个插入触发器(rentalCD2),当借光盘操作时,要改变CD表的部分属性,库存量减 1,借出量加 1。

create trigger rentalCD2on rentalafter insertasupdate CDset inventory=inventory-1,lending=lending+1where CD.CDid in(select CD.CDidfrom CD,rentalwhere CD.CDid=rental.CDid)6.创建存储过程(1)创建一个按照光盘类型查找该类型光盘的所有信息的存储过程create procedure sort@类别char(10)asselect*from CDwhere sort=@类别执行存储过程查询歌曲光盘信息(2)创建一个存储过程根据顾客编号,查询出顾客借光盘信息create procedure customerid@顾客编号char(10)asselect customer.customerid 顾客编号,customername 顾客姓名,Ccount 已借光盘, accountbalance 账户余额,CD.CDid 光盘编号,CDname 光盘名字,rentaldate 租借日期,rentaldays 租借天数,rentalfee 租借费用from rental,CD,customerwhere rental.CDid=CD.cdidand 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,rentalwhere rental.CDid=CD.CDid and rental.customerid=customer.customeridand 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)-rentaldaysfrom rental(2)where datediff(day,rentaldate,2013/9/1)>= rentaldays六.课程设计小结这次的课程设计真的做起来困难重重,深刻体会到做一个软件,里面需要的很多知识我们没有接触过,去图书馆找书的时候发现,我们学的仅仅是皮毛,还有很多东西需要我们去发掘,就算是借一本书看完它,我们还是会发现还有很多知识没有吃透,这需要我们不断的实践,不断地自学习,不断地发现问题去思考问题。

相关主题