設計目的:
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')
整理自:教科書《數據庫試驗指導》 人民郵電出版社
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
