中南大学数据库课程设计
中南大学数据库课程设计源代码
Form1Public intjobid As IntegerPublic intuserjd As IntegerPrivate Sub cmdOK_Click()Dim sql As StringDim rs As ADODB.RecordsetDim strusername As StringDim intuserkey As IntegerOn Error GoTo errhandler:If Trim(txtusername.Text = "") ThenMsgBox "请输入用户名称!", vbExclamationtxtusername.SetFocusElsesql = "select * from member_21001 where 登录名='" & txtusername.Text & "'" Set rs = ExeSQL(sql)If rs.EOF = True ThenMsgBox "没有此用户,请重新输入用户名!", vbExclamation txtusername.SetFocusElseIf Trim(rs!密码) = Trim(txtuserkey.Text) ThenMsgBox "登陆成功!", vbExclamationrs.CloseMe.HidefrmTip.ShowUnload MeElseMsgBox "密码不正确,请重新输入", vbExclamationtxtuserkey.SetFocustxtuserkey.Text = ""End IfEnd IfEnd IfExit Suberrhandler:MsgBox "错误号" & Err.Number & "错误描述" & Err.DescriptionEnd SubPrivate Sub cmdCancel_Click()Dim cnn As New ADODB.ConnectionDim adors As New ADODB.Recordsetcnn.ConnectionString = "Provider=SQLOLEDB.1;Password=sa;User ID=sa;Initial Catalog=白志恒_21001;Data Source=WIN-20120304XBO"cnn.OpenIf cnn.State = adStateOpen ThenSet adors.ActiveConnection = cnn '设置cmd的ActiveConnection属性,指定与其关联的数据库连接Set adors = cnn.Execute("delete from lingshi_21001")cnn.Close '关闭与数据库的连接End IfUnload MeEnd SubPrivate Sub Command1_Click()Form2.ShowUnload MeEnd SubPrivate Sub guanli_Click()Dim sql As StringDim rs As ADODB.RecordsetDim strusername As StringDim intuserkey As IntegerOn Error GoTo errhandler:If Trim(txtusername.Text = "") ThenMsgBox "请输入管理员账户!", vbExclamationtxtusername.SetFocusElsesql = "select * from admin_21001 where name='" & txtusername.Text & "'"Set rs = ExeSQL(sql)If rs.EOF = True ThenMsgBox "对不起,该账户不是管理员账户!", vbExclamationtxtusername.SetFocusElseIf Trim(rs!Password) = Trim(txtuserkey.Text) ThenMsgBox "登陆成功!", vbExclamationrs.CloseMe.HideForm7.ShowUnload MeElseMsgBox "密码不正确,请重新输入", vbExclamationtxtuserkey.SetFocustxtuserkey.Text = ""End IfEnd IfEnd IfExit Suberrhandler:MsgBox "错误号" & Err.Number & "错误描述" & Err.DescriptionEnd SubPrivate Sub Form_Unload(Cancel As Integer)Dim cnn As New ADODB.ConnectionDim adors As New ADODB.Recordsetcnn.ConnectionString = "Provider=SQLOLEDB.1;Password=sa;User ID=sa;Initial Catalog=白志恒_21001;Data Source=WIN-20120304XBO"cnn.OpenIf cnn.State = adStateOpen ThenSet adors.ActiveConnection = cnn '设置cmd的ActiveConnection属性,指定与其关联的数据库连接Adodc1.RecordSource = "select * from member_21001"Set adors = cnn.Execute("insert into lingshi_21001 select 昵称, 等级, 积分from member_21001 where 登录名= '" + txtusername + "'")cnn.Close '关闭与数据库的连接End IfDim str As StringEnd SubForm2Private Sub Command1_Click()Dim cnn As New ADODB.ConnectionDim adors As New ADODB.Recordsetcnn.ConnectionString = "Provider=SQLOLEDB.1;Password=sa;User ID=sa;Initial Catalog=白志恒_21001;Data Source=WIN-20120304XBO"cnn.OpenIf cnn.State = adStateOpen ThenSet adors.ActiveConnection = cnn '设置cmd的ActiveConnection属性,指定与其关联的数据库连接If Text1.Text = "" Or Text2.Text = "" Or Text3.Text = "" Or Text4.Text = "" ThenMsgBox "输入的用户注册信息不完全!!", , "提示信息"ElseAdodc1.RecordSource = "select * from member_21001 where 登录名= '" + Text1 + "'" '判断注册的用户名是否存在Adodc1.RefreshIf Adodc1.Recordset.RecordCount > 0 ThenMsgBox "该账号已经存在,请您更换其他账号!", 48, "提示信息"Text1.SetFocusElseIf Text2.Text = Text3.Text Then '判断两次输入的密码是否一致Adodc1.RecordSource = "select * from member_21001"Adodc1.Refresh'保存注册信息Set adors = cnn.Execute("insert into member_21001 values('" & Text1.Text & "','" & Text5.Text & "','" & Text2.Text & "','0','0','" & Text4.Text & "')")MsgBox "注册成功!!", 48, "用户注册信息提示"cnn.Close '关闭与数据库的连接Text1.Text = ""Text2.Text = ""Text3.Text = ""Text4.Text = ""Text5.Text = ""Unload MeForm1.ShowElseMsgBox "两次输入的密码不一致,请您确认后重新输入", 48, "用户注册信息提示"Text3.Text = ""Text4.Text = ""Text3.SetFocusEnd IfEnd IfEnd IfElseEnd IfEnd SubPrivate Sub Command2_Click()Unload MeForm1.ShowEnd SubPrivate Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)If KeyCode = 13 ThenText2.SetFocusElseEnd IfEnd SubPrivate Sub Text2_KeyDown(KeyCode As Integer, Shift As Integer)If KeyCode = 13 Then '如果按下的是回车键,则光标落到文本框当中Text3.SetFocusElseEnd IfEnd SubPrivate Sub Text3_KeyDown(KeyCode As Integer, Shift As Integer)If KeyCode = 13 Then '如果按下的是回车键,则光标落到文本框当中Text4.SetFocusElseEnd IfEnd SubPrivate Sub Text4_KeyDown(KeyCode As Integer, Shift As Integer)If KeyCode = 13 ThenCall Command1_ClickElseEnd IfEnd SubForm3Private Sub Command1_Click()Unload MeForm4.ShowEnd SubPrivate Sub Command2_Click()Unload MeForm6.ShowEnd SubPrivate Sub Command3_Click()Unload MeForm9.ShowEnd SubPrivate Sub Command4_Click()Dim cnn As New ADODB.ConnectionDim adors As New ADODB.Recordsetcnn.ConnectionString = "Provider=SQLOLEDB.1;Password=sa;User ID=sa;Initial Catalog=白志恒_21001;Data Source=WIN-20120304XBO"cnn.OpenIf cnn.State = adStateOpen ThenSet adors.ActiveConnection = cnn '设置cmd的ActiveConnection属性,指定与其关联的数据库连接Set adors = cnn.Execute("delete from lingshi_21001")cnn.Close '关闭与数据库的连接End IfUnload MeEnd SubPrivate Sub Command5_Click()Dim cnn As New ADODB.ConnectionDim adors As New ADODB.Recordsetcnn.ConnectionString = "Provider=SQLOLEDB.1;Password=sa;User ID=sa;Initial Catalog=白志恒_21001;Data Source=WIN-20120304XBO"cnn.OpenIf cnn.State = adStateOpen ThenSet adors.ActiveConnection = cnn '设置cmd的ActiveConnection属性,指定与其关联的数据库连接Set adors = cnn.Execute("delete from lingshi_21001")cnn.Close '关闭与数据库的连接End IfUnload MeForm1.ShowEnd SubPrivate Sub Form_Load()Dim str As Stringstr = "select * from lingshi_21001"Adodc4.RecordSource = strAdodc4.RefreshEnd SubForm4Private Sub Command1_Click()Dim str As Stringstr = "select * from product_21001 where " & Combo1.Text & " like '%" & Text1.Text & "%'" Adodc1.RecordSource = strAdodc1.RefreshEnd SubPrivate Sub Command2_Click()Form3.ShowUnload MeEnd SubPrivate Sub Command3_Click()Dim str As Stringstr = "select * from product_21001 where " & Combo1.Text & " like '%" & Text1.Text & "%' order by 价格asc"Adodc1.RecordSource = strAdodc1.RefreshEnd SubPrivate Sub Command4_Click()Dim str As Stringstr = "select * from product_21001 where " & Combo1.Text & " like '%" & Text1.Text & "%' order by 价格desc"Adodc1.RecordSource = strAdodc1.RefreshEnd SubPrivate Sub Command5_Click()Dim cnn As New ADODB.ConnectionDim adors As New ADODB.Recordsetcnn.ConnectionString = "Provider=SQLOLEDB.1;Password=sa;User ID=sa;Initial Catalog=白志恒_21001;Data Source=WIN-20120304XBO"cnn.OpenIf cnn.State = adStateOpen ThenSet adors.ActiveConnection = cnn '设置cmd的ActiveConnection属性,指定与其关联的数据库连接Set adors = cnn.Execute("insert into buy_history_21001 select '" & Label3.Caption & "', 编号, 品牌, 型号, 颜色, 类别, 容量, 能耗, 价格, '0', 卖家from product_21001 where 编号= '" + Text2 + "'")MsgBox "购买成功!", 48, "用户注册信息提示"Set adors = cnn.Execute("update buy_history_21001 set 实际价格= 价格/10*(10-(select 等级from lingshi_21001)) where 编号= '" + Text2 + "'")Text2.Text = ""cnn.Close '关闭与数据库的连接End IfDim str As StringEnd SubPrivate Sub Command6_Click()Dim cnn As New ADODB.ConnectionDim adors As New ADODB.Recordsetcnn.ConnectionString = "Provider=SQLOLEDB.1;Password=sa;User ID=sa;Initial Catalog=白志恒_21001;Data Source=WIN-20120304XBO"cnn.OpenIf cnn.State = adStateOpen ThenSet adors.ActiveConnection = cnn '设置cmd的ActiveConnection属性,指定与其关联的数据库连接Adodc1.RecordSource = "select * from product_21001"Set adors = cnn.Execute("insert into tuijian_21001 select '" & Label3.Caption & "', 编号, 品牌, 型号, 颜色, 类别, 容量, 能耗, 价格, 卖家from product_21001 where 编号= '" + Text3 + "'")MsgBox "谢谢您的推荐!", 48, "用户注册信息提示"Text3.Text = ""cnn.Close '关闭与数据库的连接End IfDim str As StringEnd SubPrivate Sub Form_Load()Combo1.AddItem "品牌"Combo1.AddItem "型号"Combo1.AddItem "颜色"Combo1.AddItem "类别"Combo1.AddItem "价格"Combo1.Text = "品牌"End SubPrivate Sub Picture1_Click()Form5.ShowUnload MeEnd SubForm5Private Sub Command1_Click()Unload MeForm4.ShowEnd SubForm6Private Sub Command1_Click()Dim cnn As New ADODB.ConnectionDim adors As New ADODB.Recordsetcnn.ConnectionString = "Provider=SQLOLEDB.1;Password=sa;User ID=sa;Initial Catalog=白志恒_21001;Data Source=WIN-20120304XBO"cnn.OpenIf cnn.State = adStateOpen ThenSet adors.ActiveConnection = cnn '设置cmd的ActiveConnection属性,指定与其关联的数据库连接Adodc1.RecordSource = "select * from tuijian2_21001"Adodc1.RefreshSet adors = cnn.Execute("insert into tuijian2_21001 values('" & Text5.Text & "','" & Text1.Text & "','" & Text2.Text & "','" & Text3.Text & "','" & Text4.Text & "')") MsgBox "感谢您的推荐,我们会尽快进货!", 48, "用户注册信息提示"cnn.Close '关闭与数据库的连接Text1.Text = ""Text2.Text = ""Text3.Text = ""Text4.Text = ""Text5.Text = ""End IfEnd SubPrivate Sub Command2_Click()Form3.ShowUnload MeEnd SubForm7Private Sub Command1_Click()Unload MeForm8.ShowEnd SubPrivate Sub Command2_Click()Dim cnn As New ADODB.ConnectionDim adors As New ADODB.Recordsetcnn.ConnectionString = "Provider=SQLOLEDB.1;Password=sa;User ID=sa;Initial Catalog=白志恒_21001;Data Source=WIN-20120304XBO"cnn.OpenIf cnn.State = adStateOpen ThenSet adors.ActiveConnection = cnn '设置cmd的ActiveConnection属性,指定与其关联的数据库连接Adodc1.RecordSource = "select * from product_21001"Adodc1.RefreshSet adors = cnn.Execute("delete from product_21001 where 编号= '" + Text1 + "'")MsgBox "删除完毕!", 48, "用户注册信息提示"cnn.Close '关闭与数据库的连接End IfDim str As Stringstr = "select * from product_21001"Adodc1.RecordSource = strAdodc1.RefreshEnd SubPrivate Sub Command3_Click()Dim str1 As StringIf Text2.Text = "" Thenstr1 = "select 登录名, 昵称, 等级, 积分, qq from member_21001"Elsestr1 = "select 登录名, 昵称, 等级, 积分, qq from member_21001 where 昵称= '" + Text2 + "'"End IfAdodc2.RecordSource = str1Adodc2.RefreshEnd SubPrivate Sub Command4_Click()Dim cnn As New ADODB.ConnectionDim adors As New ADODB.Recordsetcnn.ConnectionString = "Provider=SQLOLEDB.1;Password=sa;User ID=sa;Initial Catalog=白志恒_21001;Data Source=WIN-20120304XBO"cnn.OpenIf cnn.State = adStateOpen ThenSet adors.ActiveConnection = cnn '设置cmd的ActiveConnection属性,指定与其关联的数据库连接Set adors = cnn.Execute("delete from lingshi_21001")cnn.Close '关闭与数据库的连接End IfUnload MeForm1.ShowEnd SubPrivate Sub Command5_Click()Dim cnn As New ADODB.ConnectionDim adors As New ADODB.Recordsetcnn.ConnectionString = "Provider=SQLOLEDB.1;Password=sa;User ID=sa;Initial Catalog=白志恒_21001;Data Source=WIN-20120304XBO"cnn.OpenIf cnn.State = adStateOpen ThenSet adors.ActiveConnection = cnn '设置cmd的ActiveConnection属性,指定与其关联的数据库连接Set adors = cnn.Execute("delete from lingshi_21001")cnn.Close '关闭与数据库的连接End IfUnload MeEnd SubPrivate Sub Command6_Click()Dim cnn As New ADODB.ConnectionDim adors As New ADODB.Recordsetcnn.ConnectionString = "Provider=SQLOLEDB.1;Password=sa;User ID=sa;Initial Catalog=白志恒_21001;Data Source=WIN-20120304XBO"cnn.OpenIf cnn.State = adStateOpen ThenSet adors.ActiveConnection = cnn '设置cmd的ActiveConnection属性,指定与其关联的数据库连接Set adors = cnn.Execute("update member_21001 set 积分= 积分+3 where 昵称= '" + Text3 + "'")Set adors = cnn.Execute("update lingshi_21001 set 积分= 积分+3 where 昵称= '" + Text3 + "'")Set adors = cnn.Execute("update member_21001 set 等级= 积分/10 where 昵称= '" + Text3 + "'")Set adors = cnn.Execute("update lingshi_21001 set 等级= 积分/10 where 昵称= '" + Text3 + "'")MsgBox "增加成功!", 48, "用户注册信息提示"cnn.Close '关闭与数据库的连接Text3.Text = ""End IfEnd SubPrivate Sub Label3_Click()End SubPrivate Sub Command7_Click()Adodc1.RefreshAdodc2.RefreshAdodc3.RefreshAdodc4.RefreshEnd SubForm8Private Sub Command1_Click()Dim cnn As New ADODB.ConnectionDim adors As New ADODB.Recordsetcnn.ConnectionString = "Provider=SQLOLEDB.1;Password=sa;User ID=sa;Initial Catalog=白志恒_21001;Data Source=WIN-20120304XBO"cnn.OpenAdodc1.RecordSource = "select * from product_21001 where 编号= '" + Text1 + "'" '判断编号名是否存在Adodc1.RefreshIf Adodc1.Recordset.RecordCount > 0 ThenMsgBox "编号已存在!", 48, "提示信息"Text1.SetFocusElseIf cnn.State = adStateOpen ThenSet adors.ActiveConnection = cnn '设置cmd的ActiveConnection属性,指定与其关联的数据库连接Adodc1.RecordSource = "select * from product_21001"Adodc1.RefreshSet adors = cnn.Execute("insert into product_21001 values('" & Text1.Text & "','" & Text2.Text & "','" & Text4.Text & "','" & Text4.Text & "','" & Text5.Text & "','" & Text6.Text & "','" & Text7.Text & "','" & Text8.Text & "','" & Text9.Text & "')")MsgBox "添加成功", 48, "用户注册信息提示"cnn.Close '关闭与数据库的连接Text1.Text = ""Text2.Text = ""Text3.Text = ""Text4.Text = ""Text5.Text = ""Text6.Text = ""Text7.Text = ""Text8.Text = ""Text9.Text = ""End IfEnd IfEnd SubPrivate Sub Command2_Click()Unload MeForm7.ShowEnd SubForm9Private Sub Command1_Click()Unload MeForm3.ShowEnd SubPrivate Sub Form_Load()Dim str As Stringstr = "select 编号, 品牌, 型号, 颜色, 类别, 容量, 能耗, 价格,实际价格, 卖家from buy_history_21001 where 购买人= '" + Label2 + "' "Adodc1.RecordSource = strAdodc1.RefreshEnd Sub。
中南大学数据库原理与技术实验任务书
数据库原理与技术实验任务书一、实验报告要求1.列出所有的SQL语句和源代码;2.程序要求有适当的注释;3.对数据完整性约束实施要求给出相应的测试用例。
4.实验报告提交电子档。
二、实验内容实验1:创建表和实施数据完整性1.运行给定的SQL Script,建立数据库GlobalToyz。
2.了解表的结构。
3.利用系统预定义的存储过程sp_helpdb查看数据库的相关信息,例如所有者、大小、创建日期等。
4.利用系统预定义的存储过程sp_helpconstraint查看所有表中出现的约束(包括Primary key, Foreign key, check constraint, default, unique)5.对表Toys实施下面数据完整性规则:(1)玩具的现有数量应在0到200之间;(2)玩具适宜的最低年龄缺省为1。
查询、更新数据库1.显示属于California和Illinoi州的顾客的名、姓和emailID。
2.显示定单号码、顾客ID,定单的总价值,并以定单的总价值的升序排列。
3.显示在orderDetail表中vMessage为空值的行。
4.显示玩具名字中有“Racer”字样的所有玩具的基本资料。
5.列出表PickofMonth中的所有记录,并显示中文列标题。
6.根据2000年的玩具销售总数,显示“Pick of the Month”玩具的前五名玩具的ID。
7.根据OrderDetail表,显示玩具总价值大于¥50的定单的号码和玩具总价值。
8.显示一份包含所有装运信息的报表,包括:Order Number, Shipment Date, Actual DeliveryDate, Days in Transit. (提示:Days in Transit = Actual Delivery Date – Shipment Date)9.显示所有玩具的名称、商标和种类(Toy Name, Brand, Category)。
中南大学数据库课程设计
中南大学数据库课程设计课程设计题目香水推荐系统设计指导老师周扬专业班级电子信息1303姓名蒋冰玉学号 0903130313实验日期 2015年9月目录一.前言 (3)1.面向对象 (3)2.课程设计目的 (3)3.课程设计总体要求 (3)4.课程设计要求 (3)5.开发工具 (3)6.开发任务概述 (3)二.后台程序设计 (5)1.系统E-R表构建 (5)2.SQL表格部分截图 (6)三.前台程序设计 (7)1.实验设计总体框架 (7)2.功能模块分析 (8)3.业务流程 (8)4.实验设计截图 (9)四.实验心得 (19)前言一.面向对象中南大学2015级信息科学与工程学院电子信息工程专业1301-1303班学生二.课程设计目的培养学生熟练掌握一种大型数据库系统的开发环境如ORACLE9i/10g/11g(或更高版本)或SQL SERVER2005/2008/2010(或更高版本),对其底层的数据库触发器与程序过程有深入的了解,了解并基本掌握面向数据库的C/S模式的通用开发工具如VB、PB或DELPHI或直接用语言C#或Java开发C/S模式的系统;或者采用ASP、JSP、PHP等开发技术来开发B/S模式的系统,熟悉开发一个小型应用系统的过程及主要技术。
其中基于.Net平台与J2EE平台工具套件中同时支持B/S模式与C/S模式的开发。
三.课程设计总体要求1.完成设计、程序编制、调试与检查验收2.书写完整的课程设计报告(至少20页),需求分析(要做什么事情如功能需求、信息需求、做到什么程度如性能需求、有哪些难点或关键技术),系统设计(功能模型、信息模型、数据库设计、典型处理流程或算法、典型的后台处理如触发器或过程所涉及到的逻辑等)、系统实现及关键技术、总结与展望等章节。
3.数据库与大型程序的对象命名规则一定为XXX_班号(+)学号尾4位例如car_master_10104即表示车辆主要信息表,为1班,学号尾数是0104设计的表结构,cloth_Detail_42309即表示衣服信息明细表,为4班,学号尾数是2309设计的表结构,对象(包括大的程序对象及程序名等)如果不能体现班级及学号等信息,则视为程序不合要求,程序部分成绩可能不合格。
中南大学数据结构课程设计-排课问题、表达式
中南大学《数据结构》课程设计报告学生姓名学号指导教师学院专业班级完成时间目录目录............................................................................................................................................. - 2 -题目一:利用线性表进行算式计算 ................................................................................................. - 1 -一、实验名称: (1)二、需求分析: (1)三、概要设计 (1)四、详细设计 (3)五、调试分析 (5)六、测试结果 (5)七、课程设计总结 (7)八、参考文献 (8)九、附录 (9)题目三:排课问题........................................................................................................................... - 21 -一、实验名称: (21)二、需求分析: (21)三、概要设计 (21)四、详细设计 (24)五、调试分析 (33)六、测试结果 (33)七、课程设计总结 (34)八、参考文献 (35)九、附录 (35)题目一:利用线性表进行算式计算一、实验名称:利用线性表进行算式计算二、需求分析:设计任务:界面上出现一个文本框,输入一个算式,点击按钮,显示结果。
该算式内只含有数字、括号、+、-、*、/、%这几种字符,优先级为:括号--%--*,/--+,-。
如输入:2+3*5,结果为17,输入(2+3)*5结果为25。
输入格式有误,需要给予提示。
在算法中,必须实现对输入的算式字符串的分析,而不仅仅是得到结果。
中南大学 数据库系统安全课程设计报告
CENTRAL SOUTH UNIVERSITY数据库系统安全课程设计报告题目大学学生成绩管理系统学生姓名专业班级学号学院信息科学与工程学院指导教师李祖德实验时间 2015年01月目录第一章问题描述及设计目标 (2)第二章系统需求分析 (3)2.1 需求描述 (3)2.2 系统功能结构 (3)2.3 数据流图 (4)第三章数据库设计 (5)3.1 全局E-R图 (5)3.2 数据字典 (5)3.3 数据库内关系表定义 (7)第四章数据库实现 (8)4.1 数据库创建SQL代码 (8)4.2 关系表(及相关视图)创建SQL代码 (8)4.3 存储过程、触发器等的创建SQL代码 (14)第五章 RBAC应用场境描述 (18)5.1 场境1描述 (18)5.2 场境2描述 (20)5.3 场境3描述 (22)5.4 场境4描述 (23)第六章心得体验 (26)第七章总结 (26)第一章问题描述及设计目标1.1 问题描述随着学校规模的不断扩大,专业、班级、学生的数量急剧增加,有关学生选课的各种信息量也成倍增长,而目前许多高校的学生成绩管理仍停留在复杂的人工操作上,重复工作较多,工作量大,效率低。
除此之外,虽然大量数据库实现了基于角色的访问控制功能,却没有对其特征集达成一致。
缺乏广为接受的模型,导致了对基于角色的访问控制作用和含义理解的不规范性和不确定性。
基于以上情况,为了解决学生成绩查询和管理上遇到的实际困难,设计了一套基于RBAC模型的大学学生成绩管理系统,使学生成绩的录入和管理更加信息化、智能化,使成绩的查询更加高效,系统价值有了更高的体现。
1.2 设计总目标(1)掌握如何在真实数据库系统中实现基于角色访问控制(RBAC)模型。
(1)掌握如何在特定软件系统中基于RBAC模型访问和操控数据库。
1.3 设计总要求•在真实数据库系统中实现RBAC模型•开发应用演示界面,演示如何基于RBAC访问某数据库o演示界面最好是可实际操作的可视化界面,要能演示。
级数据库课程设计安排
(2) COURSE
课程号NUMBER(6),
课程名称VARCHAR2(20),
学时INTEGER,
学分INTEGER
(3) GRADE
学号NUMBER(6),
课程号NUMBER(6),
成绩NUMBER(2)
2、向上面的三个表中分别插入5条纪录。示例:
(1)(1)INSERT INTO STUDENT (学号,姓名,入学时间,专业,性别,年龄)
VALUES (100001,’HUANGWEI’,TO_DATE(‘1999-09-10’,’YYYY-MM-DD’),’COMPUTER’,’男’,23);
(2)(2)INSERT INTO COURSE (课程号,课程名称,学时,学分)
VALUES (000001,’多媒体’,32,4);
(3)(3)INSERT INTO GRADE (学号,课程号,成绩)
三、课程的基本内容以及重点难点
1. 课程的基本内容:对数据库原理与技术的教学内容、Oracle数据库编程,前后台数据库的连接。
2. 难点:数据库的关联、对具体问题的编程和开发技术。
四、课程设计的安排和选题
原则上要求每个学生基础题和综合题各选一题,具体任务由指导老师布置,提出设计内容、设计要求及实施计划。
WORLEY LF 157 49 15 5 8 3 3 16
DAVID OF 187 70 24 48 4 0 17 42
HAMHOCKER 3B 50 12 10 10 2 0 0 13
CASEY DH 1 0 0 0 0 0 0 1
在TEAMSTATS表上做如下操作:
(1)查看WALKS小于20的球员的个数。
二、实验程序设计及结构
中南大学 数据库 银行管理系统
中南大学《数据库系统安全与管理》课程设计报告题目银行管理系统学生姓名学号指导教师学院专业班级完成时间目录第一章绪论 (3)1.1 课题研究背景 (3)1.2 课题研究目的 (3)1.3 课题要求 (3)第二章系统需求分析 (1)2.1 系统流程分析 (1)2.2 系统功能需求分析 (1)2.3 系统功能图 (2)第三章系统总体设计 (4)3.1系统功能模块设计 (4)3.2 系统开发技术 (5)第四章数据库设计 (6)4.1 数据库概念结构设计 (6)4.2数据库逻辑结构设计与实现 (7)第五章功能模块的设计与实现 (10)5.1 银行服务模块 (10)5.2系统管理模块 (24)5.2.1业务描述 (24)5.2.3操作界面 (27)5.3网上服务模块 (29)5.4 安全性控制需求 (29)参考文献 (32)第一章绪论1.1 课题研究背景在计算机技术和网络技术没有得到全面普及以前,各企业和行政单位,在办工时,都要记录大量的数据,这些数据还要保存到文档里,不仅消耗大量的脑力,还要占据大量的空间。
特别是银行工作人员在办理各项业务时,不仅要需要大量的计算和统计,而且需要数据准确、精密。
所以,工作人员在处理业务时,容易出现不可避免的错误。
随着计算机技术和网络技术的快速发展,电脑和INTERNET进入了个行政企业,甚至平常家庭。
因此,编写一个处理银行定期管理的应用系统是很有必要的。
进行计算机计算和管理储户信息,银行存款等各项数据。
避免人类因疲惫或者其他原因造成的错误工作。
1.2 课题研究目的通过模拟银行账户的管理,开发一个银行个人账户管理系统银行账户管理系统。
设计的指导思想是一切为使用者着想,界面要美观大方,操作尽量简单明了,而且作为一个实用的管理系统要有良好的容错性,在出现误操作时能尽量及时地给出警告,以便用户及时地改正。
计算机的资源是受到限制的,设计出功能强大的软件,同时要尽可能地减少对系统资源的占用。
数据库课程设计——教学管理系统论文
数据库技术教学管理系统论文学院:信息科学与工程学院专业:电气工程及其自动化班级:×××姓名:学号:×××日期:2010年12月30日摘要中南大学教学管理系统的工作主要是对学生,教师,课程,基本情况和用户进行管理的现代化的信息管理系统。
每个管理模块都包括数据查询、修改、删除、添加等功能,中南大学教学管理系统能高效、准确地完成这些功能,并达到界面美观友好、使用方便。
其开发主要包括前端应用程序的开发以及后台数据库的建立和维护两个方面。
对于前者要求应用程序功能完备,易使用等特点。
而对于后者则要求建立起数据一致性和完整性强、数据安全性好的库。
实现的方法主要用Borland Delphi 7和Microsoft公司的SQL Server 2000 开发工具来完成界面与数据库的开发工作。
关键词:管理,一致性,完整性,安全性目录摘要----------------------------------------------------------------------------------------------------------2 1.引言 (5)1.1项目开发背景 (5)1.2.项目开发的目标 (5)2.系统分析 (6)2.1.可行性研究 (6)2.1.1经济可行性研究 (6)2.1.2.技术可行性研究 (6)2.2. 业务流程图 (7)2.3. 系统功能分解图 (8)2.4.系统分析邀请 (8)2.4.1功能需求 (8)2.4.2.性能需求 (8)2.4.3.运行需求 (8)3.系统设计 (9)3.1.概要设计 (9)3.1.1模块结构 (9)3.1.2.系统的总体布局方案 (10)3.2.系统详细设计 (11)3.2.1.功能模块设计 (11)3.2.2.数据库设计 (11)3.2.3.对话设计 (14)3.2.4.学生信息算法说明 (14)3.3.管理系统的实现 (16)3.3.1.系统开发平台 (16)3.3.2.菜单的实现 (16)3.3.3.用户管理员登录菜的实现 (17)3.3.4.学生基本信息表单添加的实现 (18)3.3.5.学生基本信息修改和删除菜单的实现 (19)3.3.6.学生成绩查询表单的实现 (20)4.总结 (21)41.系统在的问题 (20)4.2.心得体会 (21)参考文献 (21)附录 (22)1.引言1.1项目开发背景本系统作为大三第一学期《数据库技术》课程的作业。
中南大学数据库实践报告
中南大学本科生课程设计(实践)报告(SQL数据库程序设计)题目汽修店管理系统学生姓名指导教师学院湘雅医学院专业班级临床(五)1112班学生学号计算机基础教学实验中心2012年 6 月 26 日汽修店管理信息系统摘要:处在当今数字信息时代,各行各业都离不开电子信息管理系统的协助管理,在商业中作用的尤为重要。
汽修店要想管理庞大的汽车配件信息,要迅速查询配件的信息就必须得依靠管理系统来进行。
该系统将实现对汽修店配件信息的管理(包括添加、删除等),还包括对相关信息的查询等功能。
由完整的SQL数据库,窗体有完整的数据录入检查机制,登录窗口等构成统一整体,实现系统的运行与增强实用性。
关键词:SQL server数据库组件;SQL Translate 语言;汽修店管理系统;窗体;Visual Basic 6.0中文版;控件联接。
1.企业系统开发设计思想此次课程设计,设计的是一个汽修店管理系统。
该系统是立足于SQL sever数据库,利用VB程序开发工具,设计的一个运用于汽修店管理的程序。
(1)通过对汽修店管理工作过程的内容和数据流图分析,设计如下面的数据项。
①配件信息包括的数据项有:配件编号、制造商、质量规格、适用车型等。
②制造商信息包括的数据项有:制造商编号、制造商、国籍、配件、简介。
(2)数据库概念结构设计根据以上的设计方案,我做出了对各个数据结构的E-R分析图。
(3)系统概念结构设计2.汽修店管理系统功能及系统设计介绍汽修店管理系统要实现的主要功能是能对汽修店中的配件以及制造商信息进行查询和编辑管理,从而更好地进行汽车维修服务。
能通过查询特定的配件或制造商而得到相应制造商或配件的基本信息。
与此同时能够及时的添加或者删除相应的配件和制造商信息,实现管理系统的信息更新。
根据设计思想分析及数据关系图的建立,首先建立了相关联的数据库,其次设计出有如下功能的汽修店管理系统。
(1)窗体的制作○1登陆窗口这个窗口为进入整个系统的通道,用户只有在此窗口中输入正确的用户名和密码,才可进入此系统。
中南大学数据库课程设计报告
数据库课程设计报告学院:信息科学与工程学院专业班级:物联网工程1201班指导老师:***学号:***********名:**日期:2015年1月10日目录课程设计要求 (3)概要设计:(数据库) (5)概要设计:(程序) (7)详细设计(数据库) (8)详细设计(程序) (11)系统展示 (12)安全性控制 (19)关键技术 (20)心得体会 (20)《数据库课程设计》任务书1 任务概述某医院拟开发一个挂号系统,以方便患者就医,提高医疗服务水平。
患者在医院就诊前需要提供姓名、身份证号码、联系电话等个人信息并办理一张诊疗卡,该诊疗卡在每次挂号时需要出示给挂号的工作人员。
患者在挂号时,需说明科室名称以及医生的职称。
挂号以半个工作日为一个班次,系统中保存各科室门诊医生的排班表,每位医生每个班次能够接诊的病人人数可设置一个上限。
本次课程设计要求设计并实现一个虚拟的医院挂号系统。
系统中包含两个子系统,即由医院内部工作人员使用的挂号系统,以及患者使用的网上预约挂号系统。
其中网上预约挂号系统的前端要求是浏览器,即采用B/S模式开发。
医院工作人员使用的挂号系统采用C/S 模式开发,前端开发工具不限,可采用PowerBuilder, Delphi, VB,VC,Java等。
后台数据库要求采用SQL SERVER2005或Oracle 11g及以上版本。
2 功能描述2.1 医院工作人员使用的挂号系统该系统仅供医院内部工作人员使用,主要分为挂号人员和系统管理人员两类角色,需提供以下功能:1)办理诊疗卡。
患者提供姓名、身份证号码、联系电话等个人信息,挂号人员为其办理一张长期有效的诊疗卡。
2)挂号。
挂号人员根据患者要求的科室、医生职称分配一个候诊号,并收取相应的诊疗费用,诊疗费用根据医生的职称分为不同的档次。
医生当班次接诊患者人数不能超过预先设定的上限。
3)修改挂号。
患者可更改就诊的科室,挂号人员根据更改后的科室和医生职称,重新计算诊疗费用的差值,多退少补。
中南大学数据库技术与应用
5
图 1.4 员工首页
第二章 数据库结构设计
2.1 概念结构设计的方法与步骤
2.1.1 概念结构设计的方法
本系统采用自底向上的概念结构设计方法。即首先定义各局部应用的概念结 构,然后将它们集成起来得到全局概念模式。
2.1.2 概念结构设计的步骤
概念结构设计可分为两个步骤:
1、抽象数据并设计局部视图。就是对需求分析阶段收集到的数据按照 E-R 模型的要求进行分类、组织,形成实体的属性,标识实体的键,确定实体之间的 联系类型,设计分 E-R 图。
身份证号
性别
结算日期 联系方式
身份证号
登陆账号
员工信息
员工姓名
密码
性别
7
2.2 逻辑结构设计步骤
2.2.1 E-R 图向系统关系模式的转换
有了基本 E-R 图后,就可以进行逻辑结构设计了,也就是设计基本的关系模 型。设计基本关系模式主要是从 E-R 图出发,将其直接转换为关系模式。根据转 换规则,这个 E-R 图转换的关系模式为: 1)客房类型(类型编号、类型名称、床位数量、空调有无、电视有无、卫生间 有无、价格),主码为类型编号; 2)客房(客房编号、客房类型、客房空闲与否、价格、备注),主码为客房编号; 3)订房(订房编号、客房编号、顾客姓名、备注、结算金额),主码为订房编号; 4)顾客(姓名、性别、身份证号、入住日期、结算日期、联系方式),主码为身 份证号; 5)员工(姓名、性别、身份证号、登陆账号、密码)
第四章 总结与展望…………………………………………19 附:Delphi 源代码…………………………………………20
2
第一章 需求说明
1.1 宾馆信息管理系统简介
中南大学数据库实验报告实验二基本数据查询
中南大学数据库实验报告实验二基本数据查询1. 实验目的本次实验旨在让学生掌握基本的数据查询操作,包括使用SELECT语句查询表中的数据,并运用WHERE子句进行条件查询。
2. 实验环境•数据库管理系统:MySQL•开发工具:Navicat Premium•操作系统:Windows 103. 实验步骤3.1 数据库及表的创建首先,为本实验创建一个名为university的数据库,并在其中创建一个名为students的表。
markdown sql CREATE DATABASE university;USE university;CREATE TABLE students ( id INT PRIMARY KEY, name VARCHAR(50), age INT, gender VARCHAR(10), major VARCHAR(50) );3.2 插入测试数据在students表中插入一些测试数据,以便进行查询操作。
markdown sql INSERT INTO students (id, name, age, gender, major) VALUES (1, ‘张三’, 20, ‘男’, ‘计算机科学与技术’);INSERT INTO students (id, name, age, gender, major) VALUES (2, ‘李四’, 22, ‘女’, ‘软件工程’);INSERT INTO students (id, name, age, gender, major) VALUES (3, ‘王五’, 21, ‘男’, ‘电子信息工程’);INSERT INTO students (id, name, age, gender, major) VALUES (4, ‘赵六’, 23, ‘女’, ‘通信工程’);3.3 使用SELECT语句查询数据按照实验要求,我们需要运用SELECT语句查询学生姓名为’张三’的信息。
数据库课程设计可修改.doc
this.dgv0.ColumnHeadersBorderStyle =DataGridViewHeaderBorderStyle.Single;
this.dgv0.ColumnHeadersDefaultCellStyle.Alignment =DataGridViewContentAlignment.MiddleCenter;
this.dgv0.DefaultCellStyle.Font =newFont("宋体", 9,FontStyle.Regular,GraphicsUnit.Point);
中南大学
数据库课程设计报告
题目:工资管理系统
专业班级:计科0613班
学号:0902061309
姓名:邹雪梅
指导老师:刘嫔老师
时间:2010-1-17
中南大学·信息科学与工程学
一概述……………………………………………………………………………………………………..3
1.1项目背景…………………………………………………………………………………………..3
三 数据库设计
1
2
加班信息:
部门信息:
员工信息:
工种信息:
考勤信息:
3
等等。。。
4
四
1
基本工种、基本工资的管理:实现基本工种、基本工资的增删改查;
公司部门、部门津贴:实现公司部门、部门津贴的增删改查;
员工管理:实现员工信息的增删改查;
加班类型、加班津贴的管理:实现加班类型、加班津贴增删改查;
中南大学大型数据库实验报告
实验2 自动编号问题实验学时: 2每组人数: 1实验类型: 3 (1:基础性2:综合性3:设计性4:研究性)实验要求: 1 (1:必修2:选修3:其它)实验类别: 3 (1:基础2:专业基础3:专业4:其它)一、实验目的1. 学习Oracle数据库的基本操作;2. 学习Oracle数据库的简历及创建;3. 学习使用Oracle的sequence;4. 学习使用存储过程;5. 学习使用删除操作。
二、实验内容1、医院门诊挂号,要求号连续,并且退的号要能重用。
每次挂号向号表中插入一条记录,退号从号表中删除一条记录,请设计一个方案来实现2、可以考虑sequence三、实验要求1. 熟练使用Oracle的基本操作;2. 熟练使用Oracle sequence;3. 使用存储过程来实现挂号、退号;四、实验步骤1. 打开Oracle数据库;2. 创建表;3. 创建序列;4. 创建过程;5. 调用过程五、实验结果创建代码:运行结果:六、实验小结在本次试验中我们学会了Oracle的基本操作和表的创建过程,序列的创建,过程的创建和触发器的创建过程。
在使用存储过程实现挂号、退号,存储过程的结构的使用过程中,出现一些错误,后来在网上找到了解决的办法。
实验3 考生分类问题实验学时: 2每组人数: 1实验类型: 3 (1:基础性2:综合性3:设计性4:研究性)实验要求: 1 (1:必修2:选修3:其它)实验类别: 3 (1:基础2:专业基础3:专业4:其它)一、实验目的1. 学习Oracle数据库的基本操作;2. 学习Oracle数据库的简历及创建;3. 学习使用Oracle的sequence;4. 学习使用存储过程;5. 学习自动归类。
二、实验内容某高校的研究生招生系统,要求对考生的成绩进行处理,根据每门专业课的最低分数线和总分的最低分数线自动将考生归类为录取考生或落选考生。
三、实验要求1. 熟练使用Oracle的基本操作;四、实验步骤1. 打开Oracle数据库;2. 创建表;3. 插入数据;4. 创建序列5. 创建存储过程;5. 执行过程五、实验结果创建代码:运行结果:六、实验小结在本次试验中我们学会了Oracle的基本操作和表的创建过程,序列的创建,过程的创建和插入数据与执行过程过程。
中南大学数据库实践报告
超市形式在我国于 20 世纪 90 年代初期起步,现已成为我国零售业的一种重 要形态。随着超市的高速发展,其经营管理也变得愈加复杂,早期的售货员站柜 台的形式已不能满足现有的发展这样就迫切地需要引进新的思想技术和管理技 术进入到超市管理中。20 世纪 90 年代后期特别是近几年,我国的超市产业飞速 发展,其经营模式更为复杂,旧的管理体制已经无法适应超市的发展,这就迫切 的需要引进新的管理技术。超市的数据和业务越来越庞大,而计算机就是一种高 效的管理系统,这就需要我们把超市的管理与计算机结合起来,从而超市管理系 统应运而生。依靠现代化的计算机信息处理技术来管理超市,节省了大量的人力、 物力,改善了员工的并且能够快速反映出商品的进、销、存等状况和各种反馈信 息分析,使管理人员快速对市场的变化做出相应的决策,加快超市经营管理效率。
商 品 信 息 管 理
↓
信
信
信
息
息
息
添
修
删
加
ห้องสมุดไป่ตู้
改
除
小型超市管理系统
↓
进
员
货
工 信
统
息
计
管
管
理
理
↓
↓
员
进
进
中南大学数据库实验
中南大学电子技术课程设计题目:数据库实验报告学院:信息科学与工程学院专业班级:电子信息1002班学号:学生姓名:指导老师:张祖平实验一、熟悉ORALCE环境并练习SQL的定义一、目的与要求本实验主要是熟悉ORACLE的运行环境,在CLIENT端进行联接设置与服务器联通,进入ORACLE的SQL*PLUS的操作环境,进一步建立表格,并考虑主键,外部键,值约束。
二、操作环境硬件:主频2GHz以上服务器(内存2GB以上、硬件空闲2.2GB以上),主频1GHz以上微机,内存1GB以上。
软件:WINDOWS XP/2000/2003 SERVER 可安装ORACLE/9i/10g/11g/13i FOR NT/WINDOWS(注意在32位与64位的区别,可选企业版) 如果windows非server如XP等,安装时请选择个人版(PERSONAL)三、实验内容1.上机步骤单机版:(1)先启动PERSONAL ORACLE(START DATABASE)(2)用sql*plus登录(开始--程序-ORACLE FOR WIN-SQLP*PLUS(与网络版相同)进入SQL*PLUS用户名:SYSTEM/manager (其中manager为缺省口令,安装需要设定,根据设定的密码进行相应变化;不要数据库联接串,其中SYSTEM为DBA用户)还有一般用户scott/tiger(3)进入SQL>状态,可以执行SQL中的任何命令(建表,插入、删除、修改、查询等),还可建立用户、数据库等操作。
(4)退出,在SQL>状态,EXIT回车网络版:在实验室上机时,一般安装时管理员已设置好.先找到windows中的oracle服务(一般为oracleserviceORCL),启动此服务,再找到sql*plus所在的位置(一般桌面上有),运行即可进行登录界面.实验室现有环境操作步骤:(1)打开控制面板,――>管理工具――>服务――>启动Oracle ServiceORCL或者如图通过界面或资源管理器右键找到管理:再找服务:启动的服务如下或有OracleService****的服务:(2)从桌面执行SQL*PLUS或在程序中(3)输入:system/manager(4)在SQL>状态输入建立用户命令:create user username identified by password;其中username与password不要数字开头,用户名username中按规则加班级学号后缀如:U_31521表示3班学号尾数为1521号的用户。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中南大学信息科学与工程学院《数据库课程设计》题目:基于RBAC模型的贵重仪器管理系统姓名: 董嘉伟班级: 物联网工程1002班学号: 0909103303时间: 2013年7月5日目录●问题描述●系统需求分析⏹需求描述⏹系统功能结构⏹数据流图●数据库设计⏹全局ER⏹数据字典⏹数据库内关系表定义●数据库实现⏹数据库创建SQL代码⏹关系表及相关视图创建SQL代码⏹存储过程、触发器等创建SQL代码●RBAC应用场景描述⏹场景1-场景5描述●心得体验●总结一、问题描述每个贵重仪器对于各个高校都是一笔巨大的财产,除了本身的物品价值之外,还在于其巨大的使用价值。
由于部分科学实验或人文实验需要更加精确的实验结果和实验推算,大型精密的珍贵仪器成为每个研究者的最有力的帮助。
但是目前在仪器的管理和共享方面要做到规范、有序、高效方面还存在一定困难,例如用户使用权限、借出维护等。
除此之外,虽然大量数据库实现基于角色的访问控制功能,然而却没有对其特征集达成一致。
缺乏广为接受的模型,导致了对基于角色的访问控制效用和含义理解的不规范性和不确定性。
基于以上情况,为了解决仪器管理和共享上遇到的实际困难,设计了一套基于RBAC模型的贵重仪器管理系统,使贵重实验仪器的管理和共享更加信息化、智能化,使仪器的使用更加高效,价值得到了更高的体现。
二、系统需求分析a)需求描述i.贵重仪器管理负责对贵重仪器的进入仓库、借出、归还、保修以及其他功能的管理。
1.仓库管理员负责贵重仪器的进入仓库、保修的信息的维护,并且可修改贵重仪器的可借出状态。
2.老师、学生可以对贵重仪器借出、并在规定时间内归还。
3.仓库管理员针对老师、学生对于贵重仪器的请求可以做出拒绝、接收的回应。
ii.用户和权限管理实现对系统用户以及不同角色的权限的管理1.具有特定权限的管理员可以创建、删除系统用户2.用户可以在登录系统后修改自己的相应资料3.每个用户在创建时须赋于相应角色4.每个角色在被创建时可以赋于相应权限,其所具有的权限可以修改5.角色创建后可以修改、删除6.默认的系统角色:系统管理员仓库管理员学生教师b)系统功能结构系统结构图应用界面模块主要面向用户完成相应操作,并收集操作相关信息,向上提交给逻辑处理模块。
逻辑处理模块收集应用界面模块返还的信息,并判断数据的真实性和合法性,将合法数据封装好后提交给传输模块。
本地管理模块和网络管理模块针对系统使用的两种不同环境,通过与数据库连接池获取数据库连接后,将相关信息传输到数据库进行操作。
数据库系统结构图C) 数据流图三、数据库设计a)ER图设计b) 数据字典表名:UsersAssign字段名数据类型允许空说明Staff_RoleASID Nchar(10) X 用户分配角色标示StaffID Nchar(10) X 用户IDRoleID Nchar(10) X 角色ID IsActive Bit X 标示该用户已分配角色表名:Staff_USERS字段名数据类型允许空说明StaffID Nchar(10) X 用户IDName Nchar(10) X 用户姓名Sex Nchar(6) V 用户性别Birthday Nchar(10) V 用户出生日期College Nchar(10) V 用户所在学院Password Nchar(10) X 用户登录密码IsLocked bit X 用户限制登录标示表名:ROLES字段名数据类型允许空说明RoleID Nchar(10) X 角色ID RoleDesc Nchar(25) V 角色描述RoleName Nchar(10) V 角色名称表名:PermissionAssign字段名数据类型允许空说明RoleID Nchar(10) X 角色ID PRDesc Nchar(20) V 权限分配说明PermissionID Nchar(10) X 权限ID表名:Permission字段名数据类型允许空说明PermissionID Nchar(10) X 权限ID PermissionDesc Nchar(10) V 权限说明OPSID Nchar(10) X 操作ID OBJSID Nchar(10) X 对象ID表名:Operation_OPS字段名数据类型允许空说明OperationID Nchar(10) X 操作ID OperationDesc Nchar(10) V 操作说明Operation Nchar(10) V 相关的数据库操作表名:Equipments_OBJS字段名数据类型允许空说明EquipID Nchar(10) X 仪器IDArea Nchar(10) V 仪器应用领域Birthdate Nchar(10) V 仪器生产日期BirthAddress Nchar(10) V 生产地址EquipDesc Nchar(10) V 仪器描述Islocked Bit X 仪器可否借出表名:EquipManage字段名数据类型允许空说明EquipID Nchar(10) X 仪器ID StaffID Nchar(10) X 仪器借出用户LastOut date X 仪器借出时间LastIn date V 仪器归还时间C)数据库内关系图定义四、数据库实现a)数据库创建代码USE [master]CREATE DATABASE [ExpensiveEquipment]CONTAINMENT = NONEON PRIMARY( NAME = N'ExpensiveEquipment', FILENAME =N'G:\sqlsever\MSSQL11.MSSQLSERVER\MSSQL\DATA\ExpensiveEquipment.mdf' , SIZE = 5120KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )LOG ON( NAME = N'ExpensiveEquipment_log', FILENAME =N'G:\sqlsever\MSSQL11.MSSQLSERVER\MSSQL\DATA\ExpensiveEquipment_log.l df' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)GOALTER DATABASE [ExpensiveEquipment] SET COMPATIBILITY_LEVEL = 110GOIF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))beginEXEC [ExpensiveEquipment].[dbo].[sp_fulltext_database] @action = 'enable'endGOALTER DATABASE [ExpensiveEquipment] SET ANSI_NULL_DEFAULT OFFGOALTER DATABASE [ExpensiveEquipment] SET ANSI_NULLS OFFGOALTER DATABASE [ExpensiveEquipment] SET ANSI_PADDING OFFGOALTER DATABASE [ExpensiveEquipment] SET ANSI_WARNINGS OFFGOALTER DATABASE [ExpensiveEquipment] SET ARITHABORT OFFGOALTER DATABASE [ExpensiveEquipment] SET AUTO_CLOSE OFFGOALTER DATABASE [ExpensiveEquipment] SET AUTO_CREATE_STATISTICS ON GOALTER DATABASE [ExpensiveEquipment] SET AUTO_SHRINK OFFGOALTER DATABASE [ExpensiveEquipment] SET AUTO_UPDATE_STATISTICS ON GOALTER DATABASE [ExpensiveEquipment] SET CURSOR_CLOSE_ON_COMMIT OFF GOALTER DATABASE [ExpensiveEquipment] SET CURSOR_DEFAULT GLOBALALTER DATABASE [ExpensiveEquipment] SET CONCAT_NULL_YIELDS_NULL OFF GOALTER DATABASE [ExpensiveEquipment] SET NUMERIC_ROUNDABORT OFF GOALTER DATABASE [ExpensiveEquipment] SET QUOTED_IDENTIFIER OFFGOALTER DATABASE [ExpensiveEquipment] SET RECURSIVE_TRIGGERS OFFGOALTER DATABASE [ExpensiveEquipment] SET DISABLE_BROKERGOALTER DATABASE [ExpensiveEquipment] SETAUTO_UPDATE_STATISTICS_ASYNC OFFGOALTER DATABASE [ExpensiveEquipment] SETDATE_CORRELATION_OPTIMIZATION OFFGOALTER DATABASE [ExpensiveEquipment] SET TRUSTWORTHY OFFGOALTER DATABASE [ExpensiveEquipment] SET ALLOW_SNAPSHOT_ISOLATION OFFGOALTER DATABASE [ExpensiveEquipment] SET PARAMETERIZATION SIMPLEGOALTER DATABASE [ExpensiveEquipment] SET READ_COMMITTED_SNAPSHOT OFFGOALTER DATABASE [ExpensiveEquipment] SET HONOR_BROKER_PRIORITY OFF GOALTER DATABASE [ExpensiveEquipment] SET RECOVERY FULLGOALTER DATABASE [ExpensiveEquipment] SET MULTI_USERGOALTER DATABASE [ExpensiveEquipment] SET PAGE_VERIFY CHECKSUMGOALTER DATABASE [ExpensiveEquipment] SET DB_CHAINING OFFGOALTER DATABASE [ExpensiveEquipment] SETFILESTREAM( NON_TRANSACTED_ACCESS = OFF )GOALTER DATABASE [ExpensiveEquipment] SET TARGET_RECOVERY_TIME = 0 SECONDSGOEXEC sys.sp_db_vardecimal_storage_format N'ExpensiveEquipment', N'ON'b)数据表创建代码USE [ExpensiveEquipment]GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TABLE [dbo].[EquipManage]( [EquipID] [nchar](10) NULL,[StaffID] [nchar](10) NULL,[LastOut] [datetime] NULL,[LastIn] [datetime] NULL) ON [PRIMARY]GOUSE [ExpensiveEquipment]GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TABLE [dbo].[Equipments_OBJS]( [EquipID] [nchar](10) NOT NULL,[Area] [nchar](10) NULL,[BirthDate] [nchar](10) NULL,[Cost] [nchar](10) NULL,[BirthAddress] [nchar](10) NULL,[EquipDesc] [nchar](10) NULL,[Locked] [bit] NULL) ON [PRIMARY]GOUSE [ExpensiveEquipment]GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TABLE [dbo].[Operation_OPS]( [OperationID] [nchar](10) NOT NULL,[OperationDesc] [nchar](10) NOT NULL,[Operation] [nchar](10) NOT NULL) ON [PRIMARY]GOUSE [ExpensiveEquipment]GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TABLE [dbo].[Permission]([PermissionID] [nchar](10) NULL,[PermissionDesc] [nchar](10) NULL,[OPSID] [nchar](10) NULL,[OBJSID] [nchar](10) NULL) ON [PRIMARY]GOUSE [ExpensiveEquipment]GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TABLE [dbo].[PermissionsAssign]( [RoleID] [nchar](10) NOT NULL,[PRDesc] [nchar](20) NOT NULL,[PermissionID] [nchar](10) NOT NULL ) ON [PRIMARY]GOUSE [ExpensiveEquipment]GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TABLE [dbo].[ROLES]([RoleID] [nchar](10) NOT NULL,[RolesDesc] [nchar](10) NULL,[RoleName] [nchar](10) NULL,CONSTRAINT [PK_ROLES] PRIMARY KEY CLUSTERED([RoleID] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]GOUSE [ExpensiveEquipment]GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TABLE [dbo].[Staff_USERS]([StaffID] [nchar](10) NOT NULL,[Name] [nchar](10) NOT NULL,[Sex] [nchar](10) NULL,[Birthday] [nchar](10) NULL,[Password] [nchar](10) NULL,[College] [nchar](10) NULL,[IsLocked] [bit] NOT NULL,CONSTRAINT [PK_Staff_USERS] PRIMARY KEY CLUSTERED([StaffID] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]GOUSE [ExpensiveEquipment]GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TABLE [dbo].[UsersAssign]([Staff_RoleAsID] [nchar](10) NULL,[StaffID] [nchar](10) NULL,[RoleID] [nchar](10) NULL,[IsActive] [bit] NULL) ON [PRIMARY]GOC)存储过程以及触发器创建代码SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE [dbo].[AddPermission]@StaffID nchar(10),@Role nchar(10),@OPSID nchar(10),@newPerID nchar(10),@newPerDesc n char(10),@newOPSID nchar(10),@newOBJSID nchar(10)ASDeclare @count int,@exits intBEGINexecute dbo.InitUse @StaffID,@Role,@OPSID,@count outputif @count>0beginselect @exits=(select count(*) from Permission where @newPerID=PermissionID and @newPerDesc =PermissionDesc)if @exits<1begininsert into Permission values(@newPerID,@newPerDesc,@newOPSID,@newOBJSID)return 1endelse return 0endelse return 0ENDGOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONCREATE PROCEDURE [dbo].[AddRole]@StaffID nchar(10),@Role nchar(10),@OPSID nchar(10),@newRoleID nchar(10),@newRoleDesc nchar(10),@newRoleName nchar(10)ASDECLARE @count int,@exits intBEGINexecute dbo.InitUse @StaffID,@Role,@OPSID,@count outputif @count>0beginselect @EXITS=(select count(*) from ROLES where @newRoleID=RoleID and @newRoleName=RoleName and @newRoleDesc=RolesDesc )if @EXITS<1begininsert into ROLES values(@newRoleID,@newRoleDesc,@newRoleName)return 1endelse return 0endelse return 0ENDGOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE [dbo].[AddUser]@StaffID nchar(10),@Role nchar(10),@OPSID nchar(10),@newID nchar(010),@newName nchar(10),@newSex nchar(10),@newBirthday nchar(10),@newPassword nchar(10),@newCollege nchar(10),@newIsLocked bitASDECLARE @count int,@exits intBEGINexecute dbo.InitUse @StaffID,@Role,@OPSID,@count outputif @count>0beginselect @exits=(select count(*) from Staff_USERS where @newID=StaffID)if @exits<1begininsert into Staff_USERS values(@newID,@newName,@newSex,@newBirthday,@newPassword,@newCollege,@newIsL ocked)return 1endelse return 0endelse return 0ENDGOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE [dbo].[AssignUser]@StaffID nchar(10),@Role nchar(10),@OPSID nchar(10),@newUAID nchar(10),@newstaffid nchar(10),@newroleid nchar(10)ASDECLARE @COUNT INT,@EXITS INTBEGINexecute dbo.InitUse @StaffID,@Role,@OPSID,@count outputif @count>0beginselect @EXITS=(select count(*) from UsersAssign where @newstaffid=StaffID and @newroleid=RoleID )if @EXITS<1begininsert into UsersAssign values(@newUAID,@newstaffid,@newroleid,0)return 1endelsereturn 0endelse return 0ENDGOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE [dbo].[CancleUserAssign]@StaffID nchar(10),@Role nchar(10),@OPSID nchar(10),@cstaffid nchar(10),@croleid nchar(10)ASDECLARE @count int,@exits intBEGINexecute dbo.InitUse @StaffID,@Role,@OPSID,@count outputif @count>0beginselect @exits =(select count(*) from UsersAssign where @cstaffid=StaffID and @croleid=RoleID)if @exits>0begindelete from UsersAssign where @cstaffid=StaffID and @croleid=RoleIDreturn 1endelse return 0endelse return 0ENDGOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE [dbo].[CreateSession]@StaffID nchar(10),@ROLE nchar(10),@uaid nchar(10) outputASDECLARE@value as int set @value=0BEGINselect @value =(select count(*) from UsersAssign where @StaffID =StaffID and @ROLE =RoleID )IF@value>=1BEGINupdate UsersAssign set IsActive = 1 where @StaffID=StaffID and @ROLE=RoleIDselect @uaid=(Select Staff_RoleAsID from UsersAssign where @StaffID=StaffID and @ROLE=RoleID)return 1ENDELSERETURN 0ENDGOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE [dbo].[DeleteEquip]@StaffID nchar(10),@Role nchar(10),@OPSID nchar(10),@EquipID nchar(10)ASDECLARE @count intBEGINexecute dbo.InitUse @StaffID,@Role,@OPSID,@count outputif @count>0begindelete from Equipments_OBJS where @EquipID=EquipIDreturn 1endelse return 0ENDGOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE [dbo].[DeletePermission]@StaffID nchar(10),@Role nchar(10),@OPSID nchar(10),@PermissionID nchar(10)ASDECLARE @count int,@exits intBEGINexecute dbo.InitUse @StaffID,@Role,@OPSID,@count outputif @count>0beginselect @exits =(select count(*) from Permission where @PermissionID=PermissionID) if @exits>0begindelete from Permission where PermissionID=@PermissionIDreturn 1endelse return 0endelse return 0ENDGOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE [dbo].[DeleteRole]@StaffID nchar(10),@Role nchar(10),@OPSID nchar(10),@RoleID nchar(10)ASDECLARE @count intBEGINexecute dbo.InitUse @StaffID,@Role,@OPSID,@count outputif @count>0begindelete from ROLES where @RoleID=RoleIDreturn 1endelse return 0ENDGOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE [dbo].[DeleteSession]@StaffID nchar(10),@Role nchar(10)ASBEGINIF (select count(*) from UsersAssign where @StaffID=StaffID and @Role =RoleID)>=1 Beginif (select IsActive from UsersAssign where @StaffID=StaffID and @Role =RoleID)='1' Beginupdate UsersAssign set IsActive='0' where @StaffID=StaffID and @Role =RoleIDreturn 1endelsereturn 0endelsereturn 0ENDGOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE [dbo].[DeleteUser]@StaffID nchar(10),@Role nchar(10),@OPSID nchar(10),@deleteStaffID nchar(10)ASDECLARE @count intBEGINexecute dbo.InitUse @StaffID,@Role,@OPSID,@count outputif @count>0begindelete from Staff_USERS where @deleteStaffID=StaffIDreturn 1endelse return 0ENDGOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE [dbo].[EquipInBound]@StaffID nchar(10),@Role nchar(10),@OPSID nchar(10),@EquipID nchar(10),@Area nchar(10),@BirthDate nchar(10),@cost nchar(10),@BirthAddress nchar(10),@EquipDesc nchar(10),@Locked bitASDECLARE @count intBEGINexecute dbo.InitUse @StaffID,@Role,@OPSID,@count outputif @count>0begininsert into Equipments_OBJS values (@EquipID,@Area,@BirthDate,@cost,@BirthAddress,@EquipDesc,@Locked) return 1endelse return 0ENDGOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE [dbo].[HavePermission]@UAID nchar(10),@OPSID nchar(10),@Count int outputASDeclare@RoleID as nchar(10)BEGINselect @RoleID=(select RoleID from UsersAssign where Staff_RoleAsID=@UAID)select @Count =(select count(*) from Permission where PermissionID in ((select PermissionID from Permission where OPSID=@OPSID) Intersect( select PermissionsAssign.PermissionID from PermissionsAssign where @RoleID=RoleID)))IF @Count > 0Return 1ELSE return 0ENDSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE [dbo].[InitUse]@StaffID nchar(10),@Role nchar(10),@OPSID nchar(10),@count int outputASDeclare @uaid nchar(10)BEGINexecute dbo.CreateSession @StaffID,@Role,@uaid outputexecute dbo.HavePermission @uaid, @OPSID, @count outputif @count >0print '初始化完毕,即将执行操作'elseprint '权限不足,无法完成操作'ENDGOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE [dbo].[LoanEquipHigh]@StaffID nchar(10),@Role nchar(10),@OPSID nchar(10),@EquipID nchar(10)ASDeclare @uaid nchar(10) ,@count int,@IsLocked bit,@date datetimeBEGINexecute dbo.InitUse @StaffID,@Role,@OPSID,@count outputselect @IsLocked =(select Locked from Equipments_OBJS where EquipID=@EquipID) select @date=GETDA TE()if @count >0 and @IsLocked <1begininsert into EquipManage values(@EquipID,@StaffID,@date,null)return 1endelse return 0ENDSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE [dbo].[LoanEquipLOW]@StaffID nchar(10),@Role nchar(10),@OPSID nchar(10),@EquipID nchar(10)ASDeclare @uaid nchar(10) ,@count int,@IsLocked bit,@date datetimeBEGINexecute dbo.InitUse @StaffID,@Role,@OPSID,@count outputselect @IsLocked =(select Locked from Equipments_OBJS where EquipID=@EquipID)select @date=GETDA TE()if @count >0 and @IsLocked <1begininsert into EquipManage values(@EquipID,@StaffID,@date,null)return 1endelse return 0ENDGO/****** Object: StoredProcedure [dbo].[Login] Script Date: 2013/7/6 15:02:08 ******/ SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE [dbo].[Login]@StaffID nchar(10),@Password nchar(10)ASDECLARE@IsLocked as bit set @IsLocked=(select IsLocked from Staff_USERS where @StaffID=StaffID ) BEGINIF @IsLocked < 1RETURN -1ELSERETURN (Select Count(*) from Staff_USERS where @StaffID=StaffID and @Password=Password)ENDGOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE [dbo].[QueryAssignedUser]@StaffID nchar(10),@Role nchar(10),@OPSID nchar(10)ASdeclare @count intBEGINexecute dbo.InitUse @StaffID,@Role,@OPSID,@count output if @count>0beginselect * from UsersAssignreturn 1endelse return 0ENDGOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE [dbo].[QueryEqupMannage]@StaffID nchar(10),@Role nchar(10),@OPSID nchar(10)ASdeclare @count intBEGINexecute dbo.InitUse @StaffID,@Role,@OPSID,@count output if @count>0beginselect * from EquipManagereturn 1endelse return 0ENDGOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE [dbo].[QueryUserPermission]@StaffID nchar(10),@Role nchar(10),@OPSID nchar(10),@qroleid nchar(10)ASdeclare @count intBEGINexecute dbo.InitUse @StaffID,@Role,@OPSID,@count outputif @count>0beginselect * from Permission where PermissionID in (select PermissionID from PermissionsAssign where @qroleid=RoleID)return 1endelse return 0ENDGOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE [dbo].[ReturnEquip]@StaffID nchar(10),@Role nchar(10),@OPSID nchar(10),@EquipID nchar(10)ASDECLARE @uaid nchar(10) ,@count int,@IsLocked bit,@date datetime,@IsLoaned nchar(19) BEGINexecute dbo.InitUse @StaffID,@Role,@OPSID,@count outputselect @date=GETDA TE()select @IsLoaned =(select Count(*) from EquipManage where @StaffID=StaffID and LastIn is null)if @count >0 and @IsLoaned >0beginupdate EquipManage set LastIn=@datereturn 1endelsereturn 0ENDGOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE [dbo].[UpdateEquipState]@StaffID nchar(10),@Role nchar(10),@OPSID nchar(10),@upequipid nchar(10),@state bitASDECLARE @count int,@exits intBEGINexecute dbo.InitUse @StaffID,@Role,@OPSID,@count outputif @count>0beginselect @exits =(select count(*) from Equipments_OBJS where @upequipid=EquipID) if @exits>0beginupdate Equipments_OBJS set Locked=@statereturn 1endelse return 0endelse return 0endGOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE [dbo].[UpdateUserState]@StaffID nchar(10),@Role nchar(10),@OPSID nchar(10),@upstaffid nchar(10),@state bitASDECLARE @count int,@exits intBEGINexecute dbo.InitUse @StaffID,@Role,@OPSID,@count outputif @count>0beginselect @exits =(select count(*) from Staff_USERS where @upstaffid=StaffID) if @exits>0beginupdate Staff_USERS set IsLocked=@statereturn 1endelse return 0endelse return 0endGOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TABLE [dbo].[EquipManage]([EquipID] [nchar](10) NULL,[StaffID] [nchar](10) NULL,[LastOut] [datetime] NULL,[LastIn] [datetime] NULL) ON [PRIMARY]GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TABLE [dbo].[Equipments_OBJS]([EquipID] [nchar](10) NOT NULL,[Area] [nchar](10) NULL,[BirthDate] [nchar](10) NULL,[Cost] [nchar](10) NULL,[BirthAddress] [nchar](10) NULL,[EquipDesc] [nchar](10) NULL,[Locked] [bit] NULL) ON [PRIMARY]GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TABLE [dbo].[Operation_OPS]([OperationID] [nchar](10) NOT NULL,[OperationDesc] [nchar](10) NOT NULL,[Operation] [nchar](10) NOT NULL) ON [PRIMARY]GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TABLE [dbo].[Permission]([PermissionID] [nchar](10) NULL,[PermissionDesc] [nchar](10) NULL,[OPSID] [nchar](10) NULL,[OBJSID] [nchar](10) NULL) ON [PRIMARY]GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TABLE [dbo].[PermissionsAssign]( [RoleID] [nchar](10) NOT NULL,[PRDesc] [nchar](20) NOT NULL,[PermissionID] [nchar](10) NOT NULL ) ON [PRIMARY]GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TABLE [dbo].[ROLES]([RoleID] [nchar](10) NULL,[RolesDesc] [nchar](10) NULL,[RoleName] [nchar](10) NULL) ON [PRIMARY]GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TABLE [dbo].[Staff_USERS]([StaffID] [nchar](10) NOT NULL,[Name] [nchar](10) NULL,[Sex] [nchar](10) NULL,[Birthday] [nchar](10) NULL,[Password] [nchar](10) NULL,[College] [nchar](10) NULL,[IsLocked] [bit] NOT NULL) ON [PRIMARY]GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TABLE [dbo].[UsersAssign]([Staff_RoleAsID] [nchar](10) NULL,[StaffID] [nchar](10) NULL,[RoleID] [nchar](10) NULL,[IsActive] [bit] NULL) ON [PRIMARY]GOUSE [master]GOALTER DATABASE [ExpensiveEquipment] SET READ_WRITEGO五、RBAC应用场景描述a)场景一系统管理员对违规操作的用户进行限制登录操作调用存储过程UpdateUserState后,传入参数依次为00001,role1,20,0909103303,1此存储过程使用了用户ID为00001的系统管理员权限role1,执行的操作为操作ID20的修改用户状态,经验证获得权限后,将用户ID为0909103303限制登录。