课程设计时的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 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 设备信息