数据库原理课程设计任务书班级:计算10—01班学号:1006010107姓名:贺晓阳成绩:电子与信息工程学院计算机科学系一、设计题目名称音响店VCD 零售\出租管理系统二、系统概述实现VCD 类型及信息的管理;实现VCD 的入库管理;实现VCD 的借还管理;实现VCD 的零售VCD 的零售管理;创建触发器,入库登记、零售时自动修改库存,借、还时自动修改库存数量创建存储过程统计某段时间内各VCD 的销售、借还数量;创建视图查询各类VCD 的库存情况;建立数据库相关表之间的参照完整性约束。
三、系统功能模块设计系统总体结构功能描述:光盘录入子系统要求能快速录入光盘,因此必须支持条形码扫描。
功能描述:收银业务子系统能计算交易总额,打印交易清单。
功能描述:进货管理子系统可以根据库存自动指定进货计划,进货时自动登记,以及提供查询和打印计划进货与入库记录的功能。
功能描述:出租管理子系统可以控制某光盘是否允许出租,查询每种光盘的出租情况并产生年、月、日报表,同时可以生成出租排行榜。
功能描述:零售管理子系统可以控制某光盘是否有库存,查询每种光盘的零售情况并产生年、月、日报表,同时可以生成出租排行榜。
功能描述:库存管理子系统提供查询库存明细记录的基本功能,并根据库存的状态报警,以及自动盘点计算。
四、数据库概念设计五、数据库逻辑结构设计a)光盘信息表(光盘编号,光盘名称,价格,条形码,库存数量,库存报警数量,计划进货数,允许出租,允许出售,供货商编号)b)用户表(用户编号,用户名称)c)出租表(出租编号,光盘编号,出租数量,出租金额,出租期限)d)零售表(零售编号,光盘编号,零售数量,零售金额)e)交易表(交易编号,用户名称,交易金额,交易日期)f)进货入库表(入库编号,入库光盘编号,入库数量,单额,总额,入库日期,计划进货日期,入库状态)g)供货商表(供货商编号,供货商名称,供货商地址,供货商电话)六、数据库物理设计(数据库中每个表结构以数据字典表形式给出,为哪个表建立了何种索引要加以说明,如果使用视图、存储过程、触发器等可用SQL脚本提供)光盘信息表(MerchInfo)用户表(User)出租表(Rent)零售表(Sale)交易表(Dealing)入库纪录表(Stock)供货商表(Provide)六、程序运行环境和开发环境运行环境:Microsoft Windows2000/Windows xp/Windows 7 开发环境:SQL Server数据库七、主要模块程序流程图7.8主要功能实现的程序段/*----------创建数据库----------*/create database SuperMarketdbon primary(name=SuperMarketdb,filename='C:\ProgramFiles\Microsoft SQL Server\MSSQL\Data\SuperMarketdb.mdf',size=100MB,maxsize=200MB,filegrowth=20MB)log on(name=SuperMarketlog,filename='C:\Program Files\Microsoft SQL Server\MSSQL\Data\SuperMarketdb.ldf',size=60MB,maxsize=200MB,filegrowth=20MB)go/*----------创建基本表----------*/use [SuperMarketdb]go/*创建交易表*/CREATE TABLE Dealing (DealingID int identity(1,1) Primary key ,DealingDate datetime NOT NULL ,DealingPrice money NOT NULL ,UserNameID varchar(25) NULL ,)GO/*创建光盘信息表*/CREATE TABLE MerchInfo (MerchID int identity(1,1) Primary key ,MerchName varchar(50) Unique NOT NULL ,MerchPrice money NOT NULL ,MerchNum int NOT NULL ,CautionNum int NOT NULL ,PlanNum int NOT NULL ,BarCode varchar(20) Unique NOT NULL ,AllowRent int NOT NULL ,AllowSale int NOT NULL ,FactoryID int NOT NULL ,ProvideID int NOT NULL)GO/*创建用户表*/CREATE TABLE User (UserID varchar(10) Primary key ,UserName varchar(25) NOT NULL ,)GO/*创建出租表*/CREATE TABLE Rent (RentID int identity(1,1) Primary key , MerChID int NOT NULL ,RentDate datetime NOT NULL ,RentNum int NOT NULL,RentPrice money NOT NULL/*创建零售表*/CREATE TABLE Sale (SaleID int identity(1,1) Primary key , MerChID int NOT NULL ,SaleNum int NOT NULL,SalePrice money NOT NULL/*创建供应商表*/CREATE TABLE Provide (ProvideID varchar(10) Primary key ,ProvideName varchar(50) NOT NULL ,ProvideAddress varchar(250) NULL ,ProvidePhone varchar(25) NULL)GO/*创建入库表*/CREATE TABLE Stock (StockID int identity(1,1) Primary key ,MerchID int NOT NULL ,BMerchNum int NOT NULL ,MerchPrice money NULL ,TotalPrice money NULL ,PlanDate datetime NULL ,StockDate datetime NULL,StockState int NOT NULL)GO/*----------创建表间约束----------*//*光盘信息表中供应商编号与供应商表之间的外键约束*/ ALTER TABLE MerchInfo ADDCONSTRAINT [FK_MerchInfo_Provide] FOREIGN KEY ([ProvideID]) REFERENCES Provide ([ProvideID])GO/*出租表中光盘编号与光盘信息表之间的外键约束*/ ALTER TABLE Rent ADDCONSTRAINT [FK_Rent_MerchInfo] FOREIGN KEY([MerChID]) REFERENCES MerchInfo ([MerchID]) ON DELETE CASCADEGO/*零售表中光盘编号与光盘信息表之间的外键约束*/ ALTER TABLE Sale ADDCONSTRAINT [FK_Sale_MerchInfo] FOREIGN KEY([MerChID]) REFERENCES MerchInfo ([MerchID]) ON DELETE CASCADEGO/*入库表中光盘编号与光盘信息表之间的外键约束*/ALTER TABLE Stock ADDCONSTRAINT [FK_Stock_MerchInfo] FOREIGN KEY([MerchID]) REFERENCES MerchInfo ([MerchID]) ON DELETE CASCADEGO/*----------创建索引----------*//*在交易表上建立一个以交易编号、交易日期为索引项的非聚集索引*/ CREATE nonclustered INDEX IX_Dealing ON Dealing(DealingID, DealingDate) GO/*在光盘信息表上建立一个以光盘编号为索引项的非聚集索引*/CREATE nonclustered INDEX IX_MerchInfo ON MerchInfo(MerchID)GO/*在出租表上建立一个以出租编号、出租日期为索引项的非聚集索引*/ CREATE nonclustered INDEX IX_Sale ON Sale(SaleID, SaleDate)GO/*在入库表上建立一个以入库编号、入库日期、光盘编号为索引项的非聚集索引*/CREATE nonclustered INDEX IX_Stock ON Stock(StockID, StockDate, MerchID) GO/*----------创建视图----------*//*创建用于查询交易情况的视图*/CREATE VIEW v_DealingASSELECT DealingDate as 交易日期,UserID as 客户编号,DealingPrice as 交易金额FROM DealingGO/*创建用于查询进货计划的视图*/CREATE VIEW v_PlanStockASSELECT Stock.StockID as SID,MerchInfo.MerchName as 光盘名称,MerchInfo.BarCode as 条形码,Provide.ProvideName as 供货商,Stock.BMerchNum as 计划进货数量,Stock.PlanDate as 计划进货日期FROM Stock,MerchInfo,Provide,Where Stock.MerchID = MerchInfo.MerchIDand Provide.ProvideID=MerchInfo.ProvideIDand Stock.StockState=0GO/*创建用于查询入库情况的视图*/CREATE VIEW v_StockASSELECT MerchInfo.MerchName as 光盘名称,MerchInfo.BarCode as 条形码,Provide.ProvideName as 供货商,Stock.MerchPrice as 入库价格,Stock.BMerchNum as 入库数量,Stock.TotalPrice as 入库总额,Stock.StockDate as 入库日期FROM Stock,MerchInfo,Provide,FactoryWhere Stock.MerchID = MerchInfo.MerchIDand Provide.ProvideID=MerchInfo.ProvideIDand Stock.StockState=1GO/*创建用于查询出租明细记录的视图*/CREATE VIEW v_RentASSELECT MerchInfo.MerchName as 光盘名称,MerchInfo.BarCode as 条形码,MerchInfo.MerchPrice as 光盘价格,Rent.RentPrice as 出租价格,Rent.RentNum as 出租数量,Rent.RentDate as 出租期限FROM Rent INNER JOINMerchInfo ON Rent.MerChID = MerchInfo.MerchID GO/*创建用于查询零售明细记录的视图*/CREATE VIEW v_SaleASSELECT MerchInfo.MerchName as 光盘名称,MerchInfo.BarCode as 条形码,Sale.SalePrice as 零售价格,Sale.SaleNum as 零售数量,FROM Sale INNER JOINMerchInfo ON Sale.MerChID = MerchInfo.MerchIDGO触发器脚本--实现入库、出库时相应类型光盘(VCD)的数量的增加或减少/*触发器——光盘购入*/create trigger VCD_Stockon Table Stock for INSERTas declare @MerchID int,@MerchNum intselect @MerchID=MerchID from INSERTEDselect @BMerchNum=BMerchNum from INSERTEDupdate Table MerchInfo set MerchNum=MerchNum+@BMerchNum where MerchID=@MerchIDgo/*触发器——光盘出售*/create trigger VCD_Sellon Table Sell for INSERTas declare @MerchID int,@SellNum intselect @MerchID=MerchID from INSERTEDselect @SellNum=SellNum from INSERTEDupdate Table MerchInfo set MerchNum=MerchNum-@SellNum where MerchID=@MerchIDgo/*触发器——光盘出租*/create trigger VCD_Rentouton Table Rent for INSERTas declare @MerchID int,@RentNum intselect @MerchID=MerchID from INSERTEDselect @RentNum=RentNum from INSERTEDupdate Table MerchInfo set MerchNum=MerchNum-@RentNum where MerchID=@MerchIDgo/*触发器——光盘回收*/create trigger VCD_Rentinon Table Rent for INSERTas declare @MerchID int,@RentNum intselect @MerchID=MerchID from INSERTEDselect @RentNum=RentNum from INSERTEDupdate Table MerchInfo set MerchNum=MerchNum+@RentNumwhere MerchID=@MerchIDgo附录成绩指导教师:任建华最新文件---------------- 仅供参考--------------------已改成word文本--------------------- 方便更改。