实验室设备管理系统SQL代码

实验室设备管理系统SQL代码

课程设计时的SQL代码,不是很完整,仅供参考。
完整的实验室设备管理系统设计代码包括界面设计(使用的是C#)上传到了我的资源中点此跳转修改数据源xml配置点击跳转
以 C#+VS2019 作为开发环境, 采用 SqlServer 作为后台数据库管理系统, 开发了一款基于 C / S 结构的实验室设备管理系统。该系统分为管理员功能模块、 普通用户功能模块和设备维护员三个部分。
管理员模块实现用户信息管理、设备类别、信息、 购买、维修、报废管理等功能;普通用户模块实现借用申请、申请结果查看、借用历史查询等功能。
***界面截图 ***
实验室设备管理系统SQL代码_第1张图片
实验室设备管理系统SQL代码_第2张图片

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 null

create 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 int
	declare @maker as nvarchar(20)
--设备大小号插入变量
	declare @pre_count as int
	declare @now_count as int

	select @EquipmentID=inserted.设备编号,@LaboratoryID=inserted.实验室编号,@EquipmentName=inserted.设备名称,@Model=inserted.型号,@type=inserted.类别,@guige=inserted.规格,@count=inserted.数量,@maker=inserted.生产厂家 from inserted

	if not exists(select * from 设备信息 where @EquipmentID=设备编号)
	begin
		insert into 设备信息(设备编号,设备名称,型号,类别,规格,总数量,当前剩余数量,生产厂家) values(@EquipmentID,@EquipmentName,@Model,@type,@guige,@count,@count,@maker)
	end
	else
	begin
		update 设备信息 set 总数量=总数量+@count,当前剩余数量=当前剩余数量+@count where @EquipmentID=设备编号
	end

	select @pre_count=count(*) from 设备详细编号 where @EquipmentID=设备详细编号.设备编号
	set @now_count=@pre_count+@count
	set @pre_count=@pre_count+1
	while @pre_count<=@now_count
	begin
		insert into 设备详细编号(设备编号,设备ID,实验室编号) values(@EquipmentID,@pre_count,@LaboratoryID)
		set @pre_count = @pre_count+1
	end

	insert into 购买设备信息(设备编号,实验室编号,设备名称,型号,类别,购买日期,规格,数量,单价,购买人,生产厂家) select 设备编号,实验室编号,设备名称,型号,类别,购买日期,规格,数量,单价,购买人,生产厂家 from inserted

end


alter trigger 报修操作
on 报修
after insert
as
begin
	declare @EquipmentID as char(8)
	declare @EquipmentID2 as char(8)

	select @EquipmentID=inserted.设备编号,@EquipmentID2=inserted.设备ID from inserted

	update 设备详细编号 set 设备情况='维修' where @EquipmentID=设备编号 and @EquipmentID2=设备ID
	update 设备信息 set 当前剩余数量=当前剩余数量-1 where @EquipmentID=设备编号

end

--select * from 报修
--select * from 报废
--select * from 设备信息
--select * from 设备详细编号
drop trigger 报废操作
create trigger 报废操作
on 报废
after insert
as
begin
	
	declare @EquipmentID as char(8)
	declare @EquipmentID2 as char(8)

	select @EquipmentID=inserted.设备编号,@EquipmentID2=inserted.设备ID from inserted
	if '正常'=(select 设备情况 from 设备详细编号 where @EquipmentID=设备编号 and @EquipmentID2=设备ID)
	begin
		update 设备信息 set 当前剩余数量=当前剩余数量-1 where @EquipmentID=设备编号
	end
	update 设备详细编号 set 设备情况='报废' where @EquipmentID=设备编号 and @EquipmentID2=设备ID

end

alter trigger 设备借用
on 设备详细编号
after update
as
begin
	declare @EquipmentID as char(8)
	declare @EquipmentState as nvarchar(5)
	
	select @EquipmentID=inserted.设备编号,@EquipmentState=inserted.设备情况 from inserted
	if @EquipmentState='使用中'
	begin
	update 设备信息 set 当前剩余数量=当前剩余数量-1 where @EquipmentID=设备编号
	end
	if @EquipmentState='正常'
	begin
	update 设备信息 set 当前剩余数量=当前剩余数量+1 where @EquipmentID=设备编号
	end
end

select * 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.是否修复=0

alter trigger 修理完成
on 报修
after update
as
begin
	declare @EquipmentID as char(8)--大号
	declare @EquipemntNo as char(8)--小号
	
	select @EquipmentID=inserted.设备编号,@EquipemntNo=inserted.设备ID from inserted

	update 设备信息 set 当前剩余数量=当前剩余数量+1 where @EquipmentID=设备编号
	update 设备详细编号 set 设备情况='正常' where @EquipmentID=设备编号 and @EquipemntNo=设备ID


end

update 报修 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  设备信息

你可能感兴趣的:(sql,数据库,c#,windows,操作系统)