• sqlserver 自学笔记 函数实训 学分学期转换函数的设计


    设计目的:

    1.运用sql基本知识,编写学期转换函数。

    2.运用sql基本知识,编写学分转换函数,将考试成绩转换为学分

    3.通过上述函数的编写与调试,熟练掌握 sql函数的编写、调试与使用方法。

    设计内容:

    1.根据需求,分析并设计函数的功能、入口参数和返回值。

    ①学分转换函数

    在学籍管理中,需要根据学生选修课程的成绩,查询所获学分情况,如果成绩大于等于60分,就可以获得该课程对应的学分,否则所得学分为0.这种需求可以通过函数实现,根据要求,该函数的功能以及入口参数和返回值要求如下。

    功能要求:将学生考试成绩转换为学分的功能。如果考试通过则获得该课程的学分,否则获得学分为0.

    入口参数:成绩和课程学分

    返回:返回应得学分

    ②学期转换函数

    在学籍管理中,每门课程都会在规定学期(如学生入学后的第四学期开课)而入学时间不同,对应的具体开课时间不同。

    例如“面向对象程序设计”规定学生入学后的第四学期开设,2005年入学的同学需要在2006-2007/2学期学习该门课程,而2006年入学的同学需要在2007-2008/2学期学习该课程。反过来如果需要统计2005年入学同学在2006-2007/2学期学习哪些课程,这些课程的考试情况怎么样,需要将2006-2007/2的学期表示形式转换为4的学期表示形式,然后再查询学生对4学期开设课程课程的考试情况即可。

    为了完成上述学期转换的功能,需要设计一个学期转换函数。该函数的功能以及入口参数和返回值要求如下。

    功能要求:结合学生入学年份,将如“2006-2007/2”的学期表述的字符串转换为如1,2,3等表述的数字方式。例如2005年入学的同学的2006-2007/2学期是其在校的第四学期。

    入口参数:学年和入学年份。

    返回:数字表示的学期。

    函数实现

    1.CreditConvert(功能:学分转换)

    CREATE FUNCTION CreditConvert(@score NUMERIC(3,1),@CCredits NUMERIC(3,1))

    --@score : 考试成绩

    --@CCredits:课程规定学分

    RERURNS NUMERIC(5,2) --应得学分

    AS

    BEGIN

    RETURN

    CASE SIGN(@score-60)--sign函数取结果符号,当为零时结果为0

    WHEN 1 THEN @CCredits

    WHEN 0 THEN @CCredits

    WHEN -1 THEN 0

    END

    END

    termConvert(功能:学期转换)

    CREATE FUNCTION termConvert(@term CHAR(11),@clno CHAR(6))

    --@term  学年,格式如:2006-2007/2

    --@clno  班级编号,前两位代表入学年份

    RETURNS INT --在校第几学期

    AS

    BEGIN

    RETURN(CONVERT(NUMERIC,SUBSTRING(@term,1,4))-CONVERT(NUMERIC,'20'+SUBSTRING(@clno,1,2)))*2+CONVERT(NUMERIC,SUBSTRING(@term,11,1))

    END

    执行函数

    ①学分转换函数

    SELECT CName,dbo.CreditConvert(30,CCredits) fail,dbo.CreditConvert(70,CCredits)pass FROM Course

    ②学期转换函数

    SELECT dbo.termConvert('2005-2006/2','04')

    整理自:教科书《数据库试验指导》 人民邮电出版社

  • 相关阅读:
    Oracle 网络
    Oracle 实例管理
    Oracle 体系结构四 逻辑和物理存储结构之间的关系
    Oracle 体系结构三 后台进程
    Oracle 体系结构二 内存结构
    Oracle 体系结构一 概述
    SQL 二
    SQL 一
    如何获取SQL Server数据库元数据的方法
    VB.NET中使用代表对方法异步调用
  • 原文地址:https://www.cnblogs.com/wjcnet/p/3390265.html
Copyright © 2020-2023  润新知