APP下载

存储过程在学生考勤系统中的应用

2014-06-26

武汉工程职业技术学院学报 2014年3期
关键词:旷课考勤语句

彭 莉

(武汉工程职业技术学院 湖北 武汉:430080)

随着计算机的普及,越来越多的企业和学校等部门开始使用信息管理系统来进行办公。学生考勤系统采用C/S(客户端/服务器)模式,以C#为前台应用程序,SQL Server作为后台数据库。在数据库中,使用存储过程不仅可以增强系统安全性,还可以提高系统的运行效率。

1 存储过程

1.1 存储过程的定义

存储过程是一组完成特定功能的T-SQL语句和流程控制语句的预编译集合。它可以接收参数、输出参数、返回值或者返回单个或多个结果集。存储过程是一种数据库对象,独立的存储在数据库中,一般通过存储过程名进行调用。

1.2 存储过程的优点

存储过程与存储在客户端的本地T-SQL语句相比,有以下四个优点:

(1)模块化程序设计。每个存储过程都是一个模块,用于完成某一特定功能。存储过程创建好后,以后可以通过存储过程名反复调用,类似于C语言中的函数。另外,设计人员可独立于应用程序而对存储过程单独进行修改,可移植性高。

(2)执行效率高。如果某操作包含大量的T-SQL语句并且被反复执行,那么存储过程比T-SQL语句执行速度要快。因为存储过程是预编译的,系统在首次执行该存储过程时会对它进行分析和优化,并将其保存在高速缓冲存储器中;而T-SQL语句是从客户端发送的,每次执行时都要进行预编译和优化,因此速度比较慢。

(3)减少网络通信量。执行一个由成百条T-SQL语句组成的命令时,需要重复发送成百条T-SQL语句;而执行存储过程只需要从客户端发送一条执行语句,从而减少了网络通信量。

(4)更好的安全机制。可以对存储过程授权,实现对部分数据的保密性。未授权的用户将不能访问数据,从而保障了数据的安全性。

1.3 存储过程的语法格式

创建存储过程的语法如下:

create proc[edure]存储过程名[;分组号][{@参数 数据类型}[varying][=默认值][out| output]][,…n]

[with {recompile| encryption}]

[for replication]

As

SQL查询语句[,…n]

2 存储过程在学生考勤系统中的应用

2.1 学生考勤系统表的设计

本系统中与考勤相关的表有三个,Kqin(考勤信息表)、KqinType(考勤类型表)和KqinJiLu(考勤时间设置表)。具体表结构见表1-3。

2.2 学生考勤存储过程的设计

表1 Kqin(考勤信息表)

表2 KqinType(考勤类型表)

表3 KqinJiLu(考勤时间设置表)

学生考勤存储过程的功能是获得学生的考勤说明信息。此考勤说明信息主要分为三种情况:(1)正常出勤;(2)如果迟到,并且是第一节课,显示迟到多少分钟;(3)如果迟到,并且不是第一节课,显示旷课多少节,迟到多少分钟。其中,迟到时间是通过当前时间与每节课开始时间之差获得;旷课节数是通过流程控制语句中的选择结构进行判断得到。创建该存储过程的源代码如下:

create proc proc_Kqin /*创建存储过程*/

@stuId int, /*接收学生编号参数*/

@remark varchar(20) output /*输出考勤说明*/

as

declare @ks int /*声明变量ks,表示上的是哪节课*/

declare @time char(6) /*声明变量time,表示迟到的时间,以分钟为单位*/

select @ks = dName, @time = Convert(char,DATEDIFF(mi, SUBSTRING(Convert(varchar,dStart,120),11,6), SUBSTRING(Convert(varchar,getdate(),120),11,6))) from KqinJilu where SUBSTRING(Convert(varchar,getdate(),120),11,6) between SUBSTRING(Convert(varchar,dStart,120),11,6) and SUBSTRING(Convert(varchar,dStop,120),11,6)

/*@time是当前时间与每节课开始时间之间的时间差/*

/*SUBSTRING(Convert(varchar,getdate(),120),11,6)获得当前时间,只包括时分,不含年月日*/

/*SUBSTRING(Convert(varchar,dStart,120),11,6)表示上课时间*/

/*SUBSTRING(Convert(varchar,dStop,120),11,6)表示下课时间*/

declare @min int /*声明变量min,表示第一节课*/

declare @max int /*声明变量max,表示最后一节课*/

select @min = min(dId) from KqinJilu

select @max = max(dId) from KqinJilu

if @ks = 0 /*如果是第一节课*/

begin

set @remark = '迟到'+ @time +'分钟'/*考勤说明格式为迟到多少分钟*/

insert into Kqin values (@stuId,getdate(),100,@remark,'')

/*在Kqin表中插入学生迟到的考勤说明信息*/

end

else if @ks between 1 and 10 /*如果不是第一节课*/

begin

set @remark = '旷课'+Convert(char(2),@ks,120)+'节,迟到'+Convert(char(2),@time,120)+'分钟' /*考勤说明的格式为旷课多少节,迟到多少分钟*/

insert into Kqin values (@stuId,getdate(),101,@remark,'')

/*在Kqin表中插入学生旷课以及迟到的考勤说明信息*/

end

go

3 结束语

存储过程在学生考勤系统中的使用,提高了系统的执行效率。信息管理系统的安全高效运行一直是广大开发人员思考的问题,如何有效的利用存储过程仍将是大家努力的方向。

[1] 胡吉林,姜波,高丙朋.存储过程在ASP.NET数据库系统开发中的应用[J].微型电脑应用,2008,24(9):51-53.

[2] 白会肖.存储过程在.NET Web程序中的应用——以“权限管理系统”的划分权限模块为例[J].石家庄职业技术学院学报,2012,24(2):61-63.

[3] 贺宪春.SQLSERVER视图和存储过程在进销存系统开发中的应用——以.NET开发环境实现统计业绩提成为例[J].计算机光盘软件与应用,2013(1):4-6.

[4] 吴伶琳.存储过程在网上商城系统开发中的应用[J].计算机时代,2013(9):31-33.

[5] 耿涛,黄磊,刘儒香.SQLServer2005存储过程在学生上机计费管理系统中的应用[J].西昌学院学报(自然科学版),2013,27(2):56-58.

猜你喜欢

旷课考勤语句
被记旷课
对社会失望,新西兰学生频频旷课
重点:语句衔接
基于人脸识别技术的考勤应用研究
智能人脸识别考勤系统
精彩语句
便携式指纹考勤信息管理系统设计
大学生旷课现象多因素分析
——以重庆理工大学为例
罚款治旷课,英国政府成功了
“最严考勤”难留学生心