·出库表:
num—标识号(系别+专业+年级+班级),由8位数字表示(char[8]),它的组成部分为:前两位为系别号,其次两位为专业号,接着两位为年级号,最后两位为班级号;
booknumber—教材编码(char[10]);
quantity—出库数量(int);
datetime—出库时间(datetime)。
·库存表:
booknumber—教材编码(char[10]);
quantity—库存量(int)。
·教材信息表:
booknumber—教材编码(char[10]);
ISBN—ISBN号(char[20]);
bookname—教材名称(char[40]);
price—单价(money);
bookauthor—编作者(char[30]);
bookpublish—出版社(char[30]);
publishdate--出版日期(包含版次)(char[20])。
·系别表:
departmentID—系别号(char[2]);
department—系别名称(char[30])。
·专业表:
professionID—专业号(char[2]);
profession—专业名称(char[30])。
·年级表:
gradeID—年级号(char[2]);
grade—年级名称(char[10])。
·班级表:
classID—班级号(char[2]);
class—班级名称(char[10])。
·教材类别表:
typeID—类别号(char[3]);
type—类别名称(char[20])。
·登录表:
customer—用户帐号(char[10]);由数字、字母及特殊符号组成;
password—登录密码(char[16]),由数字、字母及特殊符号组成。
type—用户类型(char[10]),由汉字组成。
4.3.2 基本信息表的关系图
图4-2 五大信息表关系图
4.3.3 数据库触发器的实现
①入库表与预定计划表
教材入库时,可以通过触发程序利用教材编码相同来检索预订记录,并且核对教材数量,即:入库数量是否等于预订数量,或者因为订购时教材数量不足,而出现的入库数量小于预订数量;如果入库数量大于预订数量,则系统提示错误信息,并重新输入,触发器程序代码如下:
CREATE TRIGGER rukubiao_yudingbiao ON dbo.rukubiao
FOR INSERT
AS
declare @bh char(10),@shl int /*定义变量及变量的数据类型*/
select @bh=booknumber,@shl=quantity from inserted
/*在插入表中查询变量教材编码,入库数量*/
if exists(select quantity from yudingjihuabiao where booknumber=@bh
and quantity>=@shl )
/*在预订计划表中查询预订数量条件是:教材编码=插入表中的教材编码,
并且预订数量〉=插入的入库数量*/
commit /*提交*/
else
begin
raiserror('入库信息输入有误,请重新输入',12,12)
/*输入错误提示信息,并制定错误严重级别*/
rollback transaction /*回滚*/
end
②入库表与库存表
教材入库时,可以通过触发程序利用教材编码相同来检索库存里是否有该书的库存记录,如果存在该书的记录,则在原有的记录上增加;如果库存里没有该书的库存记录,则新增加该书的库存记录。完成对库存表的更新,减少了重复输入的麻烦,程序如下:
CREATE TRIGGER [updata_kucun] ON [dbo].[rukubiao]
FOR INSERT
AS
declare @shl int,@bh char(10)
select @bh=booknumber,@shl=quantity from inserted
if exists (select * from kucunbiao where booknumber=@bh)
update kucunbiao set quantity =quantity+@shl where booknumber=@bh
/*更新库存表中的内容,当教材编码=插入表中的教材编码时,
令库存数量=原库存数量+插入表中的入库数量*/
else
if exists(select *from kucunbiao where booknumber<>@bh)
/*查询库存表中的所有项,条件是教材编码不等于插入表中的教材编码*/
begin
insert into kucunbiao(booknumber,quantity) values (@bh,@shl) /*在库存表中插入教材编码、库存数量,数据为插入表中的教材编码、
入库数量的数据*/
end
③出库表与库存表
管理人员将教材出库时,通过触发程序利用教材编码相同来检索该教材是否存在于库存中,如果存在且出库数量不大于库存数量,则在库存数量上减少相应的数量,如果不存在,则说明,输入的教材编码有误,系统提示错误信息,同时,如果该教材存在,但出库的数量大于库存的数量,则系统提示错误信息,并重新输入。代码如下:
CREATE TRIGGER update_kucun ON [dbo].[chukubiao]
FOR INSERT
AS
declare @shl int,@bh char(10),@shj datetime
select @bh=booknumber,@shl=quantity from inserted
if exists (select * from kucunbiao where booknumber=@bh
and @shl<=quantity)
update kucunbiao set kucunbiao .quantity = kucunbiao .quantity –
@shl where booknumber=@bh
else
begin
raiserror('出库量大于库存,出库不成功',16,2)
rollback transaction
首页 上一页 3 4 5 6 7 8 9 下一页 尾页 6/9/9
高校教材管理系统的设计与实现(六)由毕业论文网(www.huoyuandh.com)会员上传。