SCI论文(www.lunwensci.com):
摘 要: 以四川民族学院教务管理系统为例,针对此系统存在运行效率不高的问题,提出了利用存储过程提高在查询、修 改、插入、用户登录等操作中系统运行效率的解决的方案,实践表明存储过程在此教务管理系统的应用中能有效的提高系统的 运行效率。
关键词:存储过程 ;SQL Server 数据库 ;教务管理 ;系统效率
Research on the Application of Storage in Educational Administration System
SHEN Li, ZHANG Benwen, LEI Shenhong
(Institute of Technology, Sichuan Minzu College, Kangding Sichuan 626001)
【Abstract】:Taking the educational administration management system of Sichuan University for Nationalities as an example, aiming at the problem of low operation efficiency of this system, this paper puts forward a solution to improve the operation efficiency of the system in query, modification, insertion, user login and other operations by using stored procedures. The practice shows that the storage process can effectively improve the operation efficiency of the system in the application of this educational administration management system.
【Key words】:stored procedure;SQL Server database;educational administration;system efficiency
0 引言
随着计算机技术的飞跃发展及各行各业对信息管理 的需求,数据库技术成为了现代信息科学与技术的重要 部分,其应用也扩展到了各个领域,为各行各业的信息 管理带来了方便,同时随着时代的发展,对信息管理也 提出了更高的要求 [1]。四川民族学院使用了教务管理系 统来对学生的成绩、课程等信息进行管理,其采用的 是 SQL Server 数据库管理系统。该系统能够实现学生 的成绩、课程信息管理,基本能满足教师和学生的新 需求,但其系统的运行效率不高,比如 :要插入一批选 课学生信息时,管理员会使用常规的 insert into…… values……来实现,每使用一次这样的 T-SQL 语句,都 要经过编译,耗费了时间、降低了工作效率,另外,当 T-SQL 程序段比较长,就需要在网络中传输大量代码, 这样也降低了服务器的运行效率。在此,提出采用存储 过程解决这些不足,从而提高系统运行效率势在必行。
1 SQL Server 存储过程
SQL Server 存储过程是为了完成一定特定功能, 使用 T-SQL 语言编程中,可以将某些需要多次调用的 实现某个特定任务的代码段编写成一个过程,将其保存 在数据库中,并由 SQL Server 服务器通过过程名或给 出相应的参数来调用它们,这样的过程就叫存储过程 [2]。
存储过程是一种独立的存储在数据库内的对象,其作 用分为以下几种 :(1)可以接受输入参数、输出参数,返 回单个或多个结果集以及返回值, 由应用程序通过调用执 行 [3]。使用 SQL Server 中的存储过程而不使用存储在客 户计算机本地 ;(2)可以减少网络流量,一个需要数百 行 T-SQL 代码的操作可以通过一条执行存储过程的语 句来执行,而不需要在网络中发送数百行代码 ;(3)可 以提高数据库的安全性,用户可以通过得到权限来调用 存储过程实现对表中数据的有限操作,但不赋予他们直 接访问数据表的权限 ;(4)存储过程还可以加密,使得用户无法看到存储过程中的 T-SQL 语句,这样就提高 了表中数据的安全性 [4]。
创建存储过程根据需要确定存储过程名,带参数的 存储过程需要设置参数,是否对源代码加密,存储过程 的功能等,其语法格式如下 [5] :
create procedure [schema_name][.]procedure_ name [;number]
[{ @parameter [type_schema_name.] data_ type}
[ null | not null ][varying] [ = default ] [ out| output ] [readonly] ] [,......n]
with [encryption][,][recompile][,][execute as clause]
for replication
as
sql_statement
在执行存储过程时,需要通过给出存储过程名称来 调用,带参数的还需要给出参数值,其语法格式如下 [6] :
[exec[ute]] {[@return_status=]{procedure_ name|@procedure_name_var}
[[@parameter=] {value|@variable[output]| [default]}[,...n]
[with recompile]]}]
2 存储过程的解决方案设计与实现
2.1 存储过程的设计
为了实现某一特定业务需求,在用户数据库中编写 的 T_SQL 语句集合,自定义存储过程可以接受输入参 数、向客户端返回结果和信息,返回输出参数等。其技 术框图如图 1 所示。
2.2 存储过程的实现
下面以四川民族学院教务管理系统为例,说明存储过程的实现。四川民族学院教务管理系统主要包括了学 生表、课程表、选课表、教师表等四个表。其关系模式 如下 :
学生(学号,学生姓名,性别,出生日期,年级, 班级,专业,学生密码) ;
教师(教师号,教师姓名,性别,院系,教师密码) ; 课程(课程号,课程名,学分,学时,教师号) ; 选课(学号,课程号,成绩)。
(1) 管理员经常会在学生表中添加学生信息,之前 的做法是直接通过在服务器端输入 insert into…values 语句实现,这样做降低了服务器的运行效率,为了提高 工作效率,可以设置一个带参数的存储过程 addStudent 来实现,其中设置了 7 个参数分别代表了学生表中每一 个字段下面的值,具体的 T-SQL 代码如下 :
Create procedure addstudent
@sno char(10),@sname varchar(10),@ssex char(2),@birthday date,
@grade char(4),@class char(10),@specialty char(20)
as
Insert into 学生
values(@sno,@sname,@ssex,@birthday,@ grade,@class,@specialty)
执行存储过程 :
addstudent ‘2018230401’,‘张华’,‘男’, ‘2000/ 12/03’,‘2018 级’,‘1843 班’,‘计算机科学与技术’
(2)在每学期期末都要进行下一学期的选课工作, 学生选了课之后,管理员都要查看每门课程学生的选课 情况,针对于不同的课程都要设置一个查询操作来实 现,显然会降低系统的运行效率,可以设置一个参数 @ cno 来代替任意的课程号,使用存储过程来实现,具体的 T-SQL 代码如下 :
Create procedure stuselectcourse
@cno char(10)
as
If(select count(*) from 学生,选课
where 学生 .学号 = 选课 . 学号and课程号 =@cno)>0 select学生 . 学号,姓名,年级,专业 from学生,选课 where 学生 . 学号 = 选课 . 学号 and 课程号 =@cno order by 专业,年级
else select 0 as 选课人数
执行存储过程 :stuselectcourse ‘ZYK10002’
(3)在学生毕业时,需要计算每一个同学所修课程 学分的总和,判断其是否允许毕业,靠人工统计费时费 力,此时可以设置一个存储过程来完成,其中设置 @ sno 代替任意一个学生学号,@sum_credit 代替修得 总学分, @sno1 作为学号的输出参数值,当输入学号 不存在时,给出提示信息,具体的 T-SQL 代码如下 :
Create procedure sum_coursecredit
@sno char(10),@sum_credit int, @sno1 char(10)
output
As
If @sno not in(select 学号 from 学生表 ) begin
raiserror(‘该学生不存在 , 无法求学分总和’,16,1)
return
end
else
begin
select @sum_credit=sum( 学分 ) from 课程
where 课程号 in (select 课程号 from 选课 where 学号 =@sno)
select @sno1=@sno
end
执行该存储过程 :declare @n int,@stu char(10) Sum_coursecredit ‘2018230401’,@n out,@stu
out
Print ‘学号为 :’+@stu+‘学生选修总学分 :’+convert (char(4),@n)
(4)对于每一个教师都有自己的教师号和密码,可 以通过存储过程对教师的登录和密码进行登录管理,提 高系统的运行效率,分别设置 @tno 和 @password 两 个参数分别代替任意的教师号和对应的密码。具体的T-SQL 代码如下 :
Crete procedure logintea
@tno char(10),@password varchar(20)
As
If(select convert(varchar(20),decryptbykey( 教 师密码 ))
From 教师 where 教师号 =@tno)=@password Select 教师姓名 from 教师 where 教师号 =@tno 执行该存储过程 :logintea ‘4000715’,‘sh1234567’
有时教师根据需要可以修改个人密码,也可通过存储过程来实现,同样设置 @tno 和 @password 两个参 数分别代替任意的教师号和对应设置后的新密码。具体 的 T-SQL 代码如下 :
Crete procedure moditeapwd
@tno char(10),@password varchar(20)
As
Update 教师
Set 教师密码 =encryptbykey(key_guid(‘pwdkey’), @password)
Where 教师号 =@tno
执行该存储过程 :moditeapwd ‘4000715’,‘abc123456’
3 结语
本文针对四川民族学院教务管理系统运行效率不高 的问题,提出了利用存储过程的解决方案,并在该系统 上得以实现,经过实践,在很大程度上提高了该系统的 运行效率,优化了其性能,同时减少了网络流量,解决 了该系统存在的不足。此方案不仅适用于该教务管理系 统,同样可以推广到其他的数据库管理系统应用中去。
参考文献
[1] 高明.计算机数据库的管理应用技术研究[J].中国管理信息 化,2017(23):130-131.
[2] 贾昆霖.信息管理中计算机数据库技术的应用[J].电子技术 与软件工程,2021(21):156-158.
[3] 李思怡.基于ASP.NET的网上考试系统的开发与实现[J].黄 河科技学院学报,2019,21(5):73-80.
[4] 李华.基于Spring Boot的高职院校实践教学管理系统的实 现[J].绵阳师范学院学报,2016,35(11):70-74.
[5] 陈施,刘杰.基于VCT-EIS开发模式的教务管理系统的设计 [J].沈阳师范大学学报(自然科学版),2015,33(1):91-95.
[6] 宋卫华,项芳莉.基于C#和SQL Server的图像特征库设计与 实现[J].佳木斯大学学报(自然科学版),2019,37(1):39-42.
关注SCI论文创作发表,寻求SCI论文修改润色、SCI论文代发表等服务支撑,请锁定SCI论文网!
文章出自SCI论文网转载请注明出处:https://www.lunwensci.com/jisuanjilunwen/45129.html