设计目的:

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')

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

sqlserver 自学笔记 函数实训 学分学期转换函数的设计的更多相关文章

  1. sqlserver 自学笔记之 常量,变量及函数

    (1)全局变量. 输入以下sql语句,根据查询结果,了解sqlserver全局变量的含义 select @@VERSIONselect @@CONNECTIONSselect @@CURSOR_ROW ...

  2. sqlserver自学笔记之的流程控制语句

    1.使用if else语句 ①在学生表中,查找名字为王刚的同学,如果存在,显示该同学的信息,否则显示查无此人 if exists(select sno from student where sname ...

  3. sqlserver -- 学习笔记(六)日期格式转换

    忘了这篇是从哪里看到,然后复制保存下来,感谢原创的分享~ ) ::08 ),'-',''),' ',''),':','') ),'/','-') ) , ) ) , ) ) , ) ) , ) ) , ...

  4. Java实训:实训一 ——长春职业技术学院 16级网络工程

    Java实训:实训一 本文会解释一些设计思路. 想看具体过程,请转:https://www.cnblogs.com/lxwlxw/p/10114187.html 笑维的码云项目命名不太对,所以我来:h ...

  5. Mysql实训任务书

    注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6635189537079296526/ 什么是数据库:数据库(Database)是按照数据结构来组织.存储和管理数据 ...

  6. golang构造函数与转换函数

    golang的每种类型, 凡是用type定义的类型, 其类型名既是其构造函数,也是其转换函数. 其中,构造函数后眼{...}, 转换函数后跟(...)

  7. T-SQL语句中的转换函数

    书接上回 前面讲了聚合函数.字符串函数 今天一起来看下转换函数 首先是 值类型转换 ),degree) 在C#里面是convert,现在在SQL中也是他,convert(转换类型,被转换列)from ...

  8. conversion function——转换函数

    类型转换函数 与 explicit关键字 1.类型转换函数 在C++中,可以使用构造函数将一个指定类型的数据转换为类的对象,也可以使用类型转换函数 (type conversion function) ...

  9. vi, Java, Ant, Junit自学报告 - 实训week1

    vi, Java, Ant, Junit自学报告 2017软件工程实训 15331023 陈康怡 vi Vi是linux系统的标准文本编辑器,采用指令的方式进行操作,此处仅记录部分常用的指令. vi模 ...

随机推荐

  1. 1688: [Usaco2005 Open]Disease Manangement 疾病管理( 枚举 )

    我一开始写了个状压dp..然后没有滚动就MLE了... 其实这道题直接暴力就行了... 2^15枚举每个状态, 然后检查每头牛是否能被选中, 这样是O( 2^15*1000 ), 也是和dp一样的时间 ...

  2. HDOJ 2120 并查集

    并查集的应用,用来查找被分割的区域个数. 即当两个节点值相同时说明已经为了一个圈,否则不可能,此时区域个数加1. #include<iostream> #include<cstdio ...

  3. eclipse中使用maven插件的时候,运行run as maven build/clean的时候报错

    -Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable a ...

  4. php Smarty模板引擎配置与测试

    Smarty简介 smarty是一个使用PHP写出来的模板PHP模板引擎,它提供了逻辑与外在内容的分离,简单的讲,目的就是要使用PHP程序员同美工分离,使用的程序员改变程序的逻辑内容不会影响到美工的页 ...

  5. ETC_百度百科

    ETC_百度百科 ETC(电子不停车收费系统)

  6. 支付平台程序,支付程序,网络pos程序,api接口程序,锋锐支付平台程序开发领导者!

    支付平台程序,支付程序,网络pos程序,api接口程序,锋锐支付平台程序开发领导者! 锋锐支付平台程序(www.100freenet.com)隶属于盐城市沐良商贸有限公司(沈阳杰速网络科技有限公司旗下 ...

  7. Navicat连接oracle,出现Only compatible with oci version 8.1 and&amp;nb

    与本地oracle连接的时候,一般没问题.sqlplus和oci都是本地oracle自带的.(设置: 工具->选项->oci) 分别为:   oci:D:\app\pcman\produc ...

  8. linux服务之NFS和SAMBA服务

    这几种网络文件传输最适合局域网.网络中用FTP 一:NFS服务 nfs(network file system)网络文件系统,改服务依赖于rpcbind服务.client通过rpc訪问server端的 ...

  9. SQL 教程

    SQL 教程 http://www.w3school.com.cn/sql/

  10. TPersistent的三个用途(读写DFM文件,Assign,RTTI),最主要还是第三个用途

    不是什么类对象都需要RTTI,如果把它放在TObject,除了增加可执行文件的大小以及运行内存空间以外,没什么好处.