实验室设备管理系统SQL代码
实验室设备管理系统SQL代码
课程设计时的SQL代码,不是很完整,仅供参考。
完整的实验室设备管理系统设计代码包括界面设计(使用的是C#)上传到了我的资源中点此跳转修改数据源xml配置点击跳转
以 C#+VS2019 作为开发环境, 采用 SqlServer 作为后台数据库管理系统, 开发了一款基于 C / S 结构的实验室设备管理系统。该系统分为管理员功能模块、 普通用户功能模块和设备维护员三个部分。
管理员模块实现用户信息管理、设备类别、信息、 购买、维修、报废管理等功能;普通用户模块实现借用申请、申请结果查看、借用历史查询等功能。
***界面截图 ***
create database 实验室设备管理系统
on
primary
(name = '实验室设备管理_data',filename = 'E:\SqlServerData\实验室设备管理系统\实验室设备管理_data.mdf',size = 5MB,maxsize = 100MB,filegrowth = 5%
)
log on
(name = '实验室设备管理_log',filename = 'E:\SqlServerData\实验室设备管理系统\实验室设备管理_log.ldf',size = 5MB,maxsize = 100MB,filegrowth = 5%
)use 实验室设备管理系统create table 用户
(用户ID char(8) primary key,用户名 nvarchar(10) not null,用户密码 varchar(16) not null,用户权限 int not null check (用户权限 <=3 and 用户权限 >= 1)
)alter table 用户 drop 用户权限
alter table 用户 add 用户权限 int not null check (用户权限 <=3 and 用户权限 >= 0)
alter table 用户 add 电话 char(11) unique not nullcreate table 设备信息
(设备编号 char(8) primary key,设备名称 nvarchar(20) unique not null,型号 nvarchar(10),类别 nvarchar(5) default '计算机' check(类别 in('计算机','生物','物理','化学')), 规格 nvarchar(10),总数量 int check(总数量>=0),当前剩余数量 int check(当前剩余数量 >=0 ),生产厂家 nvarchar(10) not null
)
drop table 购买设备信息
create table 购买设备信息
(购买ID int primary key identity(1,1),设备编号 char(8) ,实验室编号 char(8),设备名称 nvarchar(20) unique not null,型号 nvarchar(10),类别 nvarchar(5) default '计算机' check(类别 in('计算机','生物','物理','化学')), 购买日期 datetime default(getdate()) not null,规格 nvarchar(10),数量 int check(数量>=0),单价 money not null,购买人 nvarchar(10) not null,生产厂家 nvarchar(10) not null,foreign key(设备编号) references 设备信息(设备编号),foreign key(实验室编号) references 实验室(实验室编号),
)create table 实验室
(实验室编号 char(8) primary key,实验室名称 nvarchar(10) unique not null,实验室地址 nvarchar(10) unique not null)create table 设备详细编号
(设备编号 char(8) ,设备ID char(8) ,实验室编号 char(8),设备情况 nvarchar(5) default '正常' check(设备情况 in('正常','维修','报废'))primary key (设备编号,设备ID),foreign key (设备编号) references 设备信息(设备编号),foreign key (实验室编号) references 实验室(实验室编号),
)alter table 设备详细编号 add 设备情况 nvarchar(5) default '正常' check(设备情况 in('正常','维修','报废'))
update 设备详细编号 set 设备情况='正常'drop table 报修
create table 报修
(报修ID int primary key identity(1,1),设备编号 char(8) ,设备ID char(8) ,报修原因 nvarchar(30),报修日期 datetime default(getdate()) not null,维修日期 datetime ,维修人员 nvarchar(10),维修费用 money,是否修复 bit default 0,foreign key(设备编号,设备ID) references 设备详细编号(设备编号,设备ID),
)create table 报废
(报废ID int primary key identity(1,1),设备编号 char(8) ,设备ID char(8) ,报废原因 nvarchar(30),报废日期 datetime default(getdate()) not null,报废人员 nvarchar(10) not null,foreign key(设备编号,设备ID) references 设备详细编号(设备编号,设备ID),
)create trigger 购买设备
on 购买设备信息
instead of insert
as
begin
--设备信息表的插入变量declare @EquipmentID as char(8)declare @LaboratoryID as char(8)declare @EquipmentName as nvarchar(20)declare @Model as nvarchar(10)declare @type as nvarchar(10)declare @guige as nvarchar(10)declare @count as intdeclare @maker as nvarchar(20)
--设备大小号插入变量declare @pre_count as intdeclare @now_count as intselect @EquipmentID=inserted.设备编号,@LaboratoryID=inserted.实验室编号,@EquipmentName=inserted.设备名称,@Model=inserted.型号,@type=inserted.类别,@guige=inserted.规格,@count=inserted.数量,@maker=inserted.生产厂家 from insertedif not exists(select * from 设备信息 where @EquipmentID=设备编号)begininsert into 设备信息(设备编号,设备名称,型号,类别,规格,总数量,当前剩余数量,生产厂家) values(@EquipmentID,@EquipmentName,@Model,@type,@guige,@count,@count,@maker)endelsebeginupdate 设备信息 set 总数量=总数量+@count,当前剩余数量=当前剩余数量+@count where @EquipmentID=设备编号endselect @pre_count=count(*) from 设备详细编号 where @EquipmentID=设备详细编号.设备编号set @now_count=@pre_count+@countset @pre_count=@pre_count+1while @pre_count<=@now_countbegininsert into 设备详细编号(设备编号,设备ID,实验室编号) values(@EquipmentID,@pre_count,@LaboratoryID)set @pre_count = @pre_count+1endinsert into 购买设备信息(设备编号,实验室编号,设备名称,型号,类别,购买日期,规格,数量,单价,购买人,生产厂家) select 设备编号,实验室编号,设备名称,型号,类别,购买日期,规格,数量,单价,购买人,生产厂家 from insertedendalter trigger 报修操作
on 报修
after insert
as
begindeclare @EquipmentID as char(8)declare @EquipmentID2 as char(8)select @EquipmentID=inserted.设备编号,@EquipmentID2=inserted.设备ID from insertedupdate 设备详细编号 set 设备情况='维修' where @EquipmentID=设备编号 and @EquipmentID2=设备IDupdate 设备信息 set 当前剩余数量=当前剩余数量-1 where @EquipmentID=设备编号end--select * from 报修
--select * from 报废
--select * from 设备信息
--select * from 设备详细编号
drop trigger 报废操作
create trigger 报废操作
on 报废
after insert
as
begindeclare @EquipmentID as char(8)declare @EquipmentID2 as char(8)select @EquipmentID=inserted.设备编号,@EquipmentID2=inserted.设备ID from insertedif '正常'=(select 设备情况 from 设备详细编号 where @EquipmentID=设备编号 and @EquipmentID2=设备ID)beginupdate 设备信息 set 当前剩余数量=当前剩余数量-1 where @EquipmentID=设备编号endupdate 设备详细编号 set 设备情况='报废' where @EquipmentID=设备编号 and @EquipmentID2=设备IDendalter trigger 设备借用
on 设备详细编号
after update
as
begindeclare @EquipmentID as char(8)declare @EquipmentState as nvarchar(5)select @EquipmentID=inserted.设备编号,@EquipmentState=inserted.设备情况 from insertedif @EquipmentState='使用中'beginupdate 设备信息 set 当前剩余数量=当前剩余数量-1 where @EquipmentID=设备编号endif @EquipmentState='正常'beginupdate 设备信息 set 当前剩余数量=当前剩余数量+1 where @EquipmentID=设备编号end
endselect * from 设备详细编号 and 设备情况='正常'select s1.设备编号,s1.设备ID,s1.实验室编号,s2.设备名称 from 设备详细编号 as s1 join 设备信息 as s2 on s1.设备编号=s2.设备编号 where s1.用户ID = '20180002'select s1.设备编号,s1.设备ID,s2.设备名称,s2.类别,s2.生产厂家,s1.报修原因,s1.报修日期 from 报修 as s1 join 设备信息 as s2 on s1.设备编号=s2.设备编号
where s1.是否修复=0alter trigger 修理完成
on 报修
after update
as
begindeclare @EquipmentID as char(8)--大号declare @EquipemntNo as char(8)--小号select @EquipmentID=inserted.设备编号,@EquipemntNo=inserted.设备ID from insertedupdate 设备信息 set 当前剩余数量=当前剩余数量+1 where @EquipmentID=设备编号update 设备详细编号 set 设备情况='正常' where @EquipmentID=设备编号 and @EquipemntNo=设备IDendupdate 报修 set 维修日期=GETDATE(),维修人员='',维修费用='',是否修复=1 where 设备编号='' and 设备ID=''select s1.报修ID,s1.设备编号,s1.设备ID,s2.设备名称,s1.报修日期,s1.维修日期,s1.维修费用,s1.报修原因 from 报修 as s1 join 设备信息 as s2 on s1.设备编号=s2.设备编号 where s1.是否修复=1 and 维修人员='赵一'select * from 用户 where 用户权限<>'1'delete 报修
delete 报废
delete 购买设备信息
delete 设备详细编号
delete 设备信息