数据库原理与应用课程设计------实验室装备管理系统sql ...

打印 上一主题 下一主题

主题 575|帖子 575|积分 1725

想要文档(包含E-R图,源文件、备份文件等实验截图)的同学可以私聊我

一、设计题目

1、背景资料:
为了实实际验室装备的集中和主动化管理,需要一套网络版的装备运营和管理系统,
如许可以通过网络对各个实验室、办公室的装备集中和主动化管理。
2、内容:学生根据所学的数据库系统原理与程序设计的知识,针对实验室装备管理系
统,进行系统的需求分析,系统设计,数据库设计,编码,测试等,完成题目要求的功能
从而达到把握开发-一个小型数据库的目标。
3、操纵过程:
1)通过社会调查,选择一个实际应用数据库系统的课题。
2)进行系统需求分析和系统设计,写出系统分析和系统设计报告。
3)设计数据库模型并进行优化,确定数据库布局、功能布局和系统安全性和完整性要
求。
4)完成数据库定义工作,实现系统数据的数据处理和数据录入。
5)实现应用程序的设计、编程、优化功能,实现数据安全性、数据完整性和并发控制技
术等功能,并针对具体课题题目提出解决方法。
4、基本要求:
能实现以下紧张功能:
基本装备管理
用户管理
故障装备管理
维修过程管理
二、设计目标

本次课程设计的紧张目标是综合运用所学的数据库相关知识解决一个比力实际题目,侧重对数据库进行设计等相关内容的综合应用,使同学们能进一步熟悉把握数据库的基础知识,进一步提拔自己的解决题目和编程调试本领,为后续专业课程的学习打下精良的基础。
三、设计要求

1.自己独立完成,终极提交课程设计报告和实验结果。
2.课程设计报告格式(附后) :封面、题目、时间地点、目标及要求、内容、详细的步调。
和代码编写过程(绘制出E-R图)、总结。
3. 按照实验课表安排进行,不得无端缺课。
4.实验设计内容必须以老师指定的题目为准,老师指定的题目为终极查抄的依据。
四、需求分析

1、实验室装备管理:系统应具备实验室装备的基本信息管理、装备借出与归还管理、装备维修与调养等功能。
2、实验器材管理:系統应实实际验器材的采购、库存管理、使用与归还等环节的信息化管理。
3、实验人员管理:系统应对实验人员的信息进行记录和管理,包括个人资料、职务、所属单位等,方便实验室管理人员对实验人员环境进行把握。
五、外部设计

本数据库紧张采用微软公司的成熟数据库系统SQLServer2020,提供了较为灵活操纵简朴的功能,可以为数据库管理员和系统开发人员提供很好的支持。
SQL Server数据库
SQL是英文Structured Query Language的缩写,意思为布局化查询语言。SQL语言的紧张功能就是同各种数据库建立接洽,进行沟通。按照ANSI (美国国家标准协会)的规定,SQL 被作为关系型数据库管理系统的标准语言。SQL 语可以用来执行各种各样的操纵,例如更新数据库中的数据,从数据库中提取数据等。
现在,绝大多数流行的关系型数据库管理系统,如Oracle、Sybase、 Microsoft SQL Server. Access 等都采用了SQL 语言标准[13]。虽然很多数据库都对SQL语句进行了再开发和扩展,但是包括Select、Insert, 、Update、 Delete. Create以及Drop在内的标准的SQL下令仍然可以被用来完成险些全部的数据库操纵。
六、数据库布局设计

6.1数据库逻辑布局

6.1.1系统涉及关系实体和对应关系


  • 用户与购买装备信息:用户负责装备的购买,因此用户与购买记录之间存在一对多的关系。
  • 实验室与购买装备信息:实验室是装备购买的单位,因此实验室与购买记录之间存在一对多的关系。
  • 装备信息与装备状态:每台装备都有其当前的状态,因此装备信息与装备状态之间存在一对一的关系。
  • 装备信息与报修:当装备出现故障需要报修时,需要关联到装备的原始信息,因此装备信息与报修记录之间存在一对一的关系。
  • 装备信息与报废:当装备报废时,需要关联到装备的原始信息,因此装备信息与报废记录之间存在一对一的关系。
  • 报修与报废:这两者都是对装备的处理方式,且可以多次进行,因此它们之间存在多对多的关系。
七、实验代码

  1. create database 实验室设备管理系统
  2. on
  3. primary
  4. (
  5.         name = '实验室设备管理_data',
  6.         filename = 'D:\实验室设备管理_data.mdf',
  7.         size = 5MB,
  8.         maxsize = 100MB,
  9.         filegrowth = 5%
  10. )
  11. log on
  12. (
  13.         name = '实验室设备管理_log',
  14.         filename = 'D:\实验室设备管理_log.ldf',
  15.         size = 5MB,
  16.         maxsize = 100MB,
  17.         filegrowth = 5%
  18. )
  19. use 实验室设备管理系统
  20. drop table if exists 用户
  21. create table 用户
  22. (
  23.         用户ID char(8) primary key,
  24.         用户名 nvarchar(10) not null,
  25.         用户性别 nchar(1) default '男' check(用户性别='男'or 用户性别='女'),
  26.         电话 char(11) unique not null,
  27.         用户权限 int not null check (用户权限 <=3 and 用户权限 >= 0)
  28. )
  29. insert into 用户 values('3','小红','男','17865452652',3)
  30. drop table if exists 实验室
  31. create table 实验室
  32. (
  33.         实验室编号 char(8) primary key,
  34.         实验室名称 nvarchar(10) unique not null,
  35.         实验室地址 nvarchar(10) unique not null
  36. )
  37. insert into 实验室 values ('1','计算机研究中心','北京路')
  38. insert into 实验室 values ('2','生物实验室','上海路')
  39. insert into 实验室 values ('5','物理实验室','上海路13号')
  40. drop table if exists 设备信息
  41. create table 设备信息
  42. (
  43.         设备编号 char(8) primary key,
  44.         设备名称 nvarchar(20) unique not null,
  45.         型号 nvarchar(10),
  46.         类别 nvarchar(5) default '计算机' check(类别 in('计算机','生物','电器','工具')),
  47.         规格 nvarchar(10),
  48.         总数量 int check(总数量>=0),
  49.         当前剩余数量 int check(当前剩余数量 >=0 ),
  50.         生产厂家 nvarchar(10) not null
  51. )
  52. drop table if exists 购买设备信息
  53. create table 购买设备信息
  54. (
  55.         购买ID int primary key identity(1,1),
  56.         设备编号 char(8) unique ,
  57.         实验室编号 char(8),
  58.         设备名称 nvarchar(20)not null,
  59.         型号 nvarchar(10),
  60.         类别 nvarchar(5) default '计算机' check(类别 in('计算机','电器','工具','生物')),
  61.         购买日期 datetime default(getdate()) not null,
  62.         规格 nvarchar(10),
  63.         数量 int check(数量>=0),
  64.         单价 money not null,
  65.         购买人ID char(8) not null,
  66.         生产厂家 nvarchar(10) not null,
  67.         foreign key(实验室编号) references 实验室(实验室编号),
  68.         foreign key(购买人ID) references 用户(用户ID)
  69. )
  70. insert into 购买设备信息 values ('2','5','黑笔','1','工具','2023.6.2','5',6,3,'1','中国')
  71. insert into 购买设备信息 values ('3','2','鼠标','2','计算机','2023.12.23','20',10,100,'5','中国')
  72. drop table if exists 设备状态
  73. create table 设备状态
  74. (
  75.         设备编号 char(8) ,
  76.         --设备ID   char(8) ,
  77.         实验室编号 char(8),
  78.         设备情况 nvarchar(5) default '正常' check(设备情况 in('正常','维修','报废'))
  79.         primary key (设备编号,实验室编号),
  80.         foreign key (设备编号) references 设备信息(设备编号),
  81.         foreign key (实验室编号) references 实验室(实验室编号),
  82. )
  83. drop table if exists 报修
  84. create table 报修
  85. (
  86.         报修ID int primary key identity(1,1),
  87.         设备编号 char(8) ,
  88.         实验室编号 char(8),
  89.         报修原因 nvarchar(50),
  90.         报修日期 datetime default(getdate()) not null,
  91.         维修日期 date,
  92.         维修人员 nvarchar(10),
  93.         维修费用 money,
  94.         是否修复 nvarchar(1) check(是否修复 in ('是','否',null)),
  95.        
  96.         foreign key(设备编号,实验室编号) references 设备状态(设备编号,实验室编号),
  97. )
  98. insert into 报修 values('2','5','没墨水了','2023.12.26',null,null,null,null)
  99. insert into 报修 values('3','2','鼠标不会滑动','2023.12.26',null,null,null,null)
  100. drop table if exists 报废
  101. create table 报废
  102. (
  103.         报废ID int primary key identity(1,1),
  104.         设备编号 char(8) ,
  105.         实验室编号 char(8),
  106.         报废原因 nvarchar(30),
  107.         报废日期 datetime default(getdate()) not null,
  108.         报废人员ID char(8)       
  109.         foreign key (报废人员ID) references 用户(用户ID)
  110. )
  111. alter table 报废
  112. add constraint FK_ID1 foreign key(设备编号,实验室编号) references 设备状态(设备编号,实验室编号)
  113. insert into 报废 values('3','2','自然抛锚','','1')
  114. insert into 报废 values('2','5','自然抛锚','','2')
  115. /*
  116. *
  117. *触发器的创建
  118. *
  119. */
  120. drop trigger if exists 购买设备
  121. Go
  122. create trigger 购买设备
  123. on 购买设备信息
  124. instead of insert
  125. as
  126. begin
  127. --设备信息表的插入变量
  128.         declare @EquipmentID as char(8)
  129.         declare @LaboratoryID as char(8)
  130.         declare @EquipmentName as nvarchar(20)
  131.         declare @Model as nvarchar(10)
  132.         declare @type as nvarchar(10)
  133.         declare @guige as nvarchar(10)
  134.         declare @count as int
  135.         declare @maker as nvarchar(20)
  136.         declare @buyerID char(8)
  137.        
  138. --设备大小号插入变量
  139.         declare @pre_count as int
  140.         declare @now_count as int
  141.         select @EquipmentID=inserted.设备编号,@LaboratoryID=inserted.实验室编号,@EquipmentName=inserted.设备名称,@Model=inserted.型号,@type=inserted.类别,@guige=inserted.规格,@count=inserted.数量,@buyerID=inserted.购买人ID,@maker=inserted.生产厂家 from inserted
  142.         if not exists(select * from 用户 where @buyerID=用户ID )
  143.         begin
  144.         print('实验室查无此人')
  145.         rollback
  146.         end
  147.         else
  148.         begin
  149.         if not exists(select * from 设备信息 where @EquipmentID=设备编号)
  150.         begin
  151.                 insert into 设备信息(设备编号,设备名称,型号,类别,规格,总数量,当前剩余数量,生产厂家) values(@EquipmentID,@EquipmentName,@Model,@type,@guige,@count,@count,@maker)
  152.                 insert into 设备状态 values(@EquipmentID,@LaboratoryID,'正常')
  153.         end
  154.         else
  155.         begin
  156.                 update 设备信息 set 总数量=总数量+@count,当前剩余数量=当前剩余数量+@count where @EquipmentID=设备编号
  157.         end
  158.         end
  159. /*        select @pre_count=count(*) from 设备状态 where @EquipmentID=设备状态.设备编号
  160.         set @now_count=@pre_count+@count
  161.         set @pre_count=@pre_count+1
  162.         while @pre_count<=@now_count
  163.         begin
  164.                 insert into 设备状态(设备编号,实验室编号) values(@EquipmentID,@LaboratoryID)
  165.                 set @pre_count = @pre_count+1
  166.         end
  167. */
  168.         insert into 购买设备信息(设备编号,实验室编号,设备名称,型号,类别,购买日期,规格,数量,单价,购买人ID,生产厂家) select 设备编号,实验室编号,设备名称,型号,类别,购买日期,规格,数量,单价,购买人ID,生产厂家 from inserted
  169.        
  170.         select distinct 购买ID,购买设备信息.设备编号,购买设备信息.实验室编号,购买设备信息.设备名称,购买设备信息.型号,购买设备信息.类别,购买日期,购买设备信息.规格,数量,单价,购买人ID,用户名, 购买设备信息.生产厂家,总数量,当前剩余数量,设备情况 from 购买设备信息,设备信息,设备状态,用户 where 用户ID=@buyerID
  171. end
  172. Go
  173. drop trigger if exists 报修操作
  174. Go
  175. create trigger 报修操作
  176. on 报修
  177. after insert
  178. as
  179. begin
  180.         declare @EquipmentID as char(8)
  181.         declare @EquipmentID2 as char(8)
  182.         select @EquipmentID=inserted.设备编号,@EquipmentID2=inserted.实验室编号 from inserted
  183.         update 设备状态 set 设备情况='维修' where @EquipmentID=设备编号 and @EquipmentID2=实验室编号
  184.         update 设备信息 set 当前剩余数量=当前剩余数量-1 where @EquipmentID=设备编号
  185.        
  186.         select * from 报修
  187. end
  188. Go
  189. --select * from 报修
  190. --select * from 报废
  191. --select * from 设备信息
  192. --select * from 设备详细编号
  193. drop trigger if exists 报废操作
  194. Go
  195. create trigger 报废操作
  196. on 报废
  197. after insert
  198. as
  199. begin
  200.        
  201.         declare @EquipmentID as char(8)
  202.         declare @EquipmentID2 as char(8)
  203.         declare @DesoryeerID as char(8)
  204.         select @EquipmentID=inserted.设备编号,@EquipmentID2=inserted.实验室编号,@DesoryeerID=inserted.报废ID from inserted
  205.         if not exists(select * from 用户 where @DesoryeerID=用户ID )
  206.         begin
  207.         print('实验室查无此人')
  208.         rollback
  209.         end
  210.         if '正常'=(select 设备情况 from 设备状态 where @EquipmentID=设备编号 and @EquipmentID2=实验室编号)
  211.         begin
  212.                 update 设备信息 set 当前剩余数量=当前剩余数量-1 where @EquipmentID=设备编号
  213.         end
  214.         update 设备状态 set 设备情况='报废' where @EquipmentID=设备编号 and @EquipmentID2=实验室编号
  215.         select * from 设备信息 where @EquipmentID=设备编号
  216. end
  217. Go
  218. /*
  219. create trigger 设备借用
  220. on 设备状态
  221. after update
  222. as
  223. begin
  224.         declare @EquipmentID as char(8)
  225.         declare @EquipmentState as nvarchar(5)
  226.        
  227.         select @EquipmentID=inserted.设备编号,@EquipmentState=inserted.设备情况 from inserted
  228.         if @EquipmentState='使用中'
  229.         begin
  230.         update 设备信息 set 当前剩余数量=当前剩余数量-1 where @EquipmentID=设备编号
  231.         end
  232.         if @EquipmentState='正常'
  233.         begin
  234.         update 设备信息 set 当前剩余数量=当前剩余数量+1 where @EquipmentID=设备编号
  235.         end
  236. end
  237. Go
  238. */
  239. drop trigger if exists 修理完成
  240. Go
  241. create trigger 修理完成
  242. on 报修
  243. after update
  244. as
  245. begin
  246.         declare @EquipmentID as char(8)--大号
  247.         declare @EquipemntNo as char(8)--小号
  248.        
  249.         select @EquipmentID=inserted.设备编号,@EquipemntNo=inserted.实验室编号 from inserted
  250.         update 设备信息 set 当前剩余数量=当前剩余数量+1 where @EquipmentID=设备编号
  251.         update 设备状态 set 设备情况='正常' where @EquipmentID=设备编号 and @EquipemntNo=实验室编号
  252.         select * from 报修 where @EquipmentID=设备编号 and @EquipemntNo=实验室编号
  253.         select * from 设备状态 where @EquipmentID=设备编号 and @EquipemntNo=实验室编号
  254. end
  255. Go
  256. drop trigger if exists insert_用户
  257. Go
  258. create trigger insert_用户 on 用户 after insert as
  259. select * from 用户
  260. Go
  261. drop trigger if exists insert_实验室
  262. Go
  263. create trigger insert_实验室 on 实验室 after insert as
  264. select * from 实验室
  265. Go
  266. drop trigger if exists insert_设备信息
  267. Go
  268. create trigger insert_设备信息 on 设备信息 after insert as
  269. select * from 设备信息
  270. Go
  271. drop trigger if exists insert_设备信息1
  272. Go
  273. create trigger insert_设备信息1 on 购买设备信息 after insert as
  274. select * from 设备信息
  275. Go
  276. select * from 设备状态  where 设备情况='正常'
  277. update 报修 set 维修日期=GETDATE(),维修人员='Lucy',维修费用='30',是否修复='是' where 设备编号='2' and 实验室编号='5'
  278. update 报修 set 维修日期=GETDATE(),维修人员='Tom',维修费用='100',是否修复='是' where 设备编号='3' and 实验室编号='2'
  279. select * from 用户 where 用户权限='1'
  280. drop table 报修
  281. drop table 报废
  282. drop table 购买设备信息
  283. drop table 设备状态
  284. drop table 设备信息
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

道家人

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表