• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      醫(yī)學(xué)生“程序設(shè)計(jì)”課程教學(xué)中若干問(wèn)題討論

      2010-09-12 11:25:14萍,何
      關(guān)鍵詞:程序設(shè)計(jì)語(yǔ)句賬號(hào)

      劉 萍,何 青

      (桂林醫(yī)學(xué)院信息中心計(jì)算機(jī)教研室,廣西 桂林 541004)

      醫(yī)學(xué)生“程序設(shè)計(jì)”課程教學(xué)中若干問(wèn)題討論

      劉 萍,何 青

      (桂林醫(yī)學(xué)院信息中心計(jì)算機(jī)教研室,廣西 桂林 541004)

      由于醫(yī)學(xué)生與工科計(jì)算機(jī)專(zhuān)業(yè)學(xué)生邏輯思維上的差異,程序設(shè)計(jì)對(duì)于醫(yī)學(xué)生而言,是較難學(xué)習(xí)的一門(mén)課程,在教學(xué)中常常會(huì)遇到一些難于理解的問(wèn)題,使學(xué)生難于準(zhǔn)確掌握及正確使用。本文總結(jié)教學(xué)中出現(xiàn)的若干問(wèn)題,著重討論了空值Null、BOF和 EOF屬性以及聚合函數(shù)的特點(diǎn)及在程序中的正確使用和教學(xué)方法。

      醫(yī)學(xué)生程序設(shè)計(jì)教學(xué);空值Null、BOF、EOF屬性;聚合函數(shù);探討

      引 言

      VisualBasic forApplications(簡(jiǎn)稱VBA)是新一代標(biāo)準(zhǔn)宏語(yǔ)言,是基于 Visual Basic forW indows發(fā)展而來(lái)的。VBA提供了面向?qū)ο蟮某绦蛟O(shè)計(jì)方法及相當(dāng)完整的程序設(shè)計(jì)語(yǔ)言,對(duì)于非計(jì)算機(jī)專(zhuān)業(yè)的醫(yī)學(xué)生來(lái)說(shuō)易于學(xué)習(xí)和掌握。因此,對(duì)于日后在工作中需要經(jīng)常使用Office套裝軟件來(lái)解決工作中需要解決的問(wèn)題的醫(yī)學(xué)大學(xué)生,學(xué)習(xí)VBA程序設(shè)計(jì)將有助于使工作自動(dòng)化,提高工作效率。

      所以,從目前高校數(shù)據(jù)庫(kù)課程開(kāi)設(shè)的情況來(lái)看,大部分學(xué)校都將 Access數(shù)據(jù)庫(kù)系統(tǒng)作為非計(jì)算機(jī)專(zhuān)業(yè)學(xué)生學(xué)習(xí)的課程之一,同時(shí)Access近年來(lái)也成為全國(guó)高校計(jì)算機(jī)二級(jí)等級(jí)考試參考人數(shù)最多的科目之一。為此,我們教研室也為醫(yī)學(xué)生開(kāi)設(shè)了“Access數(shù)據(jù)庫(kù)VBA程序設(shè)計(jì)”這門(mén)選修課。由于醫(yī)學(xué)生與工科計(jì)算機(jī)專(zhuān)業(yè)學(xué)生邏輯思維上的差異,如何提高該課程的教學(xué)質(zhì)量和教學(xué)效果,是我們?nèi)握n教師一直探討的問(wèn)題。由于VBA不是一門(mén)獨(dú)立的編程語(yǔ)言,是基于VB擴(kuò)展而來(lái)的,它在語(yǔ)法規(guī)則上基本遵循VB的語(yǔ)法,但基于 Access數(shù)據(jù)庫(kù)的使用特點(diǎn),在個(gè)別使用上又有其特點(diǎn)。

      1 空值Null、Empty、和Nothing

      在VBA中,Null、Empty、和Nothing表示的都是空值,但它們又有所區(qū)別。Nothing:是用于對(duì)象變量的,當(dāng)對(duì)象變量被設(shè)為 Nothing(set rs=Nothing)時(shí),系統(tǒng)便會(huì)釋放該對(duì)象所占用的內(nèi)存資源,此時(shí)該對(duì)象變量指向空對(duì)象。Empty:表示的是一個(gè)有效空值,當(dāng)一個(gè)變量 x被聲明為變體類(lèi)型而從未賦值時(shí),其值就是 Empty,是由系統(tǒng)自動(dòng)賦予的,表示變量 x尚未初始化,此時(shí)的 x的值可以是數(shù)值型的初始值 0,也可以是字符型的初始值空字串"",此時(shí)語(yǔ)句 If x=0 Then或 if x=""Then或 If IsEmpty(x) Then的判斷結(jié)果都為 True。Null:表示的是一個(gè)無(wú)效數(shù)據(jù),一般用于表示記錄中某字段數(shù)據(jù)暫不確定時(shí)的數(shù)據(jù)值,比如,在通過(guò)程序添加記錄時(shí),對(duì)于某個(gè)字段的值暫不確定,就可以用Null來(lái)表示。在程序中當(dāng) x=Null時(shí),則表示 x不包含有效數(shù)據(jù),此時(shí)的 x的值不能在程序中直接使用。對(duì)于值為 Null的數(shù)據(jù)只能通過(guò) IsNull()函數(shù)來(lái)判斷,例如:IF Is-Null(x)=true Then,而不能用 If x=Null Then,因?yàn)楹?Null值的運(yùn)算式其結(jié)果永遠(yuǎn)是Null。

      空值Null雖然不能在程序中直接使用,但它卻是完全合法的數(shù)據(jù)庫(kù)錄入項(xiàng),我們?cè)诰幊虝r(shí)不能因?yàn)榭罩礜ull是無(wú)效數(shù)據(jù),在數(shù)據(jù)錄入時(shí)就一律拒絕空值,如果完全回避空值,那么,在你創(chuàng)建一條記錄時(shí),如果某個(gè)字段的數(shù)據(jù)暫時(shí)不確定,就無(wú)法創(chuàng)建該記錄。要求所有數(shù)據(jù)都必須是已知的,在實(shí)際使用當(dāng)中是不現(xiàn)實(shí)的。以醫(yī)院急診室的數(shù)據(jù)庫(kù)系統(tǒng)為例,不能因?yàn)閿?shù)據(jù)錄入時(shí)不確定一個(gè)急診病人的年齡,系統(tǒng)就拒絕為其創(chuàng)建一條記錄。所以,我們不能完全回避空值,而應(yīng)在實(shí)際應(yīng)用中正確認(rèn)識(shí)及合理使用空值。

      在教學(xué)中,發(fā)現(xiàn)學(xué)生對(duì) Null空值較難理解,可通過(guò)一些實(shí)例講解使學(xué)生加深對(duì)空值的理解。例如:在盤(pán)點(diǎn)藥品庫(kù)存時(shí),發(fā)現(xiàn)某種藥品用完了,那么在它的數(shù)量一欄里我們應(yīng)該輸入 0,代表這種藥品已盤(pán)點(diǎn)過(guò),數(shù)量是 0,而另一種藥品我們還沒(méi)來(lái)得及清點(diǎn),數(shù)量暫時(shí)未知,那么此時(shí)它的數(shù)量一欄是空的,也就是我們所說(shuō)的空值Null,這種空值告訴我們?cè)撍幤返谋P(pán)點(diǎn)工作尚未完成,數(shù)量暫不確定。通過(guò)0和Null的實(shí)例比較,我們可以很清楚地看到,0和Null反應(yīng)的是事物的兩種完全不同的狀態(tài)。從而進(jìn)一步加深了對(duì)空值Null的正確認(rèn)知,并認(rèn)識(shí)到空值是無(wú)法避免的,正確的做法就是如何正確處理它們,確保它們不會(huì)導(dǎo)致程序錯(cuò)誤。當(dāng)空值在表達(dá)式中使用之前,可以用 IsNull函數(shù)捕捉空值或用Nz函數(shù)來(lái)處理空值,因?yàn)榭罩到?jīng)常會(huì)返回錯(cuò)誤而使程序無(wú)法正常運(yùn)行。

      2 if語(yǔ)句的條件表達(dá)式中出現(xiàn)Null值的運(yùn)行情況

      前面討論的Null值不能在程序中直接使用,否則程序會(huì)返回出錯(cuò)信息而使程序無(wú)法正常運(yùn)行。但當(dāng)Null出現(xiàn)在 IF語(yǔ)句的條件表達(dá)式中時(shí),程序不會(huì)返回錯(cuò)誤信息,并且可運(yùn)行,只是運(yùn)行結(jié)果不正確。例如下面的程序段,學(xué)生在編程時(shí),由于對(duì)于未初始化的文本框控件的Value屬性初始值為Null這一特征的掌握不準(zhǔn)確,時(shí)常會(huì)誤用其空值Null:

      IfMe.賬號(hào)="" Or Me.密碼="" Then MsgBox"賬號(hào)、密碼不能為空"

      ElseIfMe.賬號(hào) <>"1234567"Then

      MsgBox"賬號(hào)錯(cuò)誤,請(qǐng)重新輸入"

      ElseIfMe.密碼 <>"gyjsj"Then

      MsgBox"密碼錯(cuò)誤,請(qǐng)重新輸入"

      Else

      MsgBox"登錄成功!"

      :

      :

      End If

      在程序首次運(yùn)行時(shí),如果“賬號(hào)”和“密碼”文本框不輸入任何數(shù)據(jù) (即未初始化),此時(shí)引用“賬號(hào)”、“密碼”文本框的Value屬性為空值 Null,程序運(yùn)行時(shí)不是像程序設(shè)計(jì)者預(yù)想的那樣,執(zhí)行MsgBox“賬號(hào)、密碼不能為空”語(yǔ)句,也不執(zhí)行MsgBox“賬號(hào)錯(cuò)誤,請(qǐng)重新輸入”和MsgBox“密碼錯(cuò)誤,請(qǐng)重新輸入”語(yǔ)句,同時(shí)又不返回錯(cuò)誤使用Null值的信息,而是執(zhí)行MsgBox“登錄成功!”語(yǔ)句(此時(shí) if語(yǔ)句的前 3個(gè)分支都出現(xiàn)了 Null空值)。雖然教科書(shū)明確指出不能在程序中直接使用空值Null,可問(wèn)題出現(xiàn),老師應(yīng)給學(xué)生一個(gè)合理的解釋。那么程序?qū)τ跅l件表達(dá)式出現(xiàn)空值 Null的情況是如何判斷的呢?通過(guò)查證Access幫助信息提示是判為 False,假設(shè) 判 斷 為 False,則 Not(Me.賬 號(hào) = ""OrMe.密碼 ="")=True應(yīng)該成立,實(shí)際運(yùn)行情況表明該假設(shè)不成立,程序執(zhí)行結(jié)果仍是運(yùn)行MsgBox“登錄成功!”。由此可見(jiàn),程序?qū)τ跅l件表達(dá)式出現(xiàn)空值Null的情況是既不返回錯(cuò)誤信息,也不判斷為 False。即,不做任何邏輯判斷,而是忽略跳過(guò)所有含Null值的條件分支,轉(zhuǎn)入后續(xù)分支判斷執(zhí)行。由于 Null出現(xiàn)在 If語(yǔ)句中程序可運(yùn)行而系統(tǒng)又不提示出錯(cuò)信息,使學(xué)生誤用后很難發(fā)現(xiàn)錯(cuò)誤。所以在教學(xué)中,應(yīng)通過(guò)實(shí)例詳細(xì)闡述 Null的特點(diǎn)、正確使用及合理規(guī)避,可通過(guò)對(duì)文本框初始化的方法盡量避免使用 Null空值。也可把第一條語(yǔ)句改為:IF Nz(Me.賬號(hào))=""Or Nz(Me.密碼)= ""Then或 IF Is Null(Me.賬號(hào))=True or IsNull (Me.密碼)=True Then。

      3 SQL select avg()…查詢結(jié)果集的特性及使用

      在VBA的ADO數(shù)據(jù)庫(kù)操作程序中,經(jīng)常會(huì)用到 SQL select查詢語(yǔ)句,下面有兩個(gè)查詢語(yǔ)句:

      Select姓名,年齡 from tEmp where黨員否Select avg(年齡)from tEmp where黨員否

      第一條語(yǔ)句的查詢結(jié)果是黨員的姓名,年齡字段數(shù)據(jù)集,如果沒(méi)有黨員記錄,則查詢結(jié)果集為 0條記錄。而第二條語(yǔ)句的查詢結(jié)果是黨員的平均年齡,即查詢結(jié)果是一個(gè)集函數(shù)返回值,其特點(diǎn)是:無(wú)論是否有黨員記錄,結(jié)果集中都會(huì)有一條固定的記錄,(該結(jié)論可通過(guò)在程序中添加語(yǔ)句:MsgBox rs.RecordCount得到驗(yàn)證),只是記錄的值不同。當(dāng)有黨員記錄時(shí),集函數(shù)返回值為一個(gè)有效的確定值,而當(dāng)無(wú)黨員記錄時(shí),集函數(shù)返回值為一個(gè)無(wú)效的空值Null。下面的程序段是全國(guó)計(jì)算機(jī)二級(jí)等級(jí)考試的一道程序題:

      Private Sub bt_Click()

      Dim cn AsNew ADODB.Connection

      Dim rsAsNew ADODB.Recordset

      Dim strSQL As String

      Dim sage As Single

      Set cn=CurrentProject.Connection

      strSQL="select avg(年齡)from tEmp where黨員否"

      rs.Open strSQL,cn,adOpenKeyset,adLock-Optimistic

      If rs.EOF Then

      MsgBox"無(wú)黨員職工的年齡數(shù)據(jù)"

      sage=0

      Exit Sub

      Else

      sage=rs.Fields(0)

      Me.Text1=sage

      End If

      :

      :

      End Sub

      在判斷查詢結(jié)果集中是否有黨員平均年齡時(shí),程序使用的方法是用記錄集的 EOF屬性,該屬性當(dāng)記錄集中無(wú)記錄時(shí),rs.EOF=TRUE,此方法用于判斷普通字段數(shù)據(jù)查詢結(jié)果集是可以的,但該題判斷的結(jié)果集是一個(gè)集函數(shù)返回值,無(wú)論黨員條件是否為真都會(huì)有一條固定的記錄,既然有記錄,那么其rs.EOF=FALSE。所以當(dāng)模擬無(wú)黨員記錄運(yùn)行該程序時(shí),程序并未按設(shè)計(jì)者的想法運(yùn)行MsgBox"無(wú)黨員職工的年齡數(shù)據(jù)"語(yǔ)句,而是運(yùn)行 sage= rs.Fields(0),同時(shí)提示錯(cuò)誤信息:

      因?yàn)榇藭r(shí)查詢結(jié)果集中的 rs.Fields(0)的值為Null。所以該程序不適合用 rs.EOF來(lái)判斷。

      解決方法:可以利用查詢結(jié)果集中固定記錄的值的不同來(lái)作為判斷條件。為避免使用無(wú)效空值Null,可使用 Is Null()函數(shù)來(lái)判斷空值,或者用Nz()函數(shù)將無(wú)效空值 Null轉(zhuǎn)換為有效值,可將程序改為:

      MsgBox"無(wú)黨員職工的年齡數(shù)據(jù)"

      sage=0

      Exit Sub

      Else

      sage=rs.Fields(0)

      Me.Text1=sage

      End If

      :

      :

      End sub

      此時(shí),無(wú)論是否有黨員記錄,程序都能正常運(yùn)行了。

      結(jié)束語(yǔ)

      程序設(shè)計(jì)對(duì)于非計(jì)算機(jī)專(zhuān)業(yè)的醫(yī)學(xué)生來(lái)說(shuō),是較難學(xué)習(xí)和掌握的一門(mén)課程,學(xué)習(xí)中常常會(huì)遇到一些難以理解和掌握的知識(shí)點(diǎn),而有限的教科書(shū)又無(wú)從查證,甚至一些輔助教材還會(huì)出現(xiàn)一些錯(cuò)誤內(nèi)容,這就需要我們老師去深入探討及結(jié)合實(shí)驗(yàn)驗(yàn)證來(lái)給學(xué)生作詳細(xì)的講解,從而使學(xué)生能正確認(rèn)知和使用。在以后的教學(xué)中還會(huì)遇到很多類(lèi)似的問(wèn)題需要我們進(jìn)一步的不斷探討。

      [1] 王 晟,韓澤坤.Access數(shù)據(jù)庫(kù)開(kāi)發(fā)經(jīng)典案例解析[M].北京:清華大學(xué)出版社,2006.336-380

      [2] 蔣加伏,張林峰.VisualBasic程序設(shè)計(jì)教程[M].北京:北京郵電大學(xué)出版社,2004.312-316

      [3] 何勝利.Access數(shù)據(jù)庫(kù)應(yīng)用技術(shù)教程[M].北京:中國(guó)鐵道出版社,2008.182-232

      [4] 教育部考試中心.全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)教程—Access數(shù)據(jù)庫(kù)程序設(shè)計(jì)[M].北京:高等教育出版社,2004.247-293

      (學(xué)術(shù)編輯:周 敏)

      1005-3697(2010)05-0506-03

      G642.4

      B

      2010-07-01

      猜你喜歡
      程序設(shè)計(jì)語(yǔ)句賬號(hào)
      彤彤的聊天賬號(hào)
      施詐計(jì)騙走游戲賬號(hào)
      派出所工作(2021年4期)2021-05-17 15:19:10
      重點(diǎn):語(yǔ)句銜接
      基于Visual Studio Code的C語(yǔ)言程序設(shè)計(jì)實(shí)踐教學(xué)探索
      從細(xì)節(jié)入手,談PLC程序設(shè)計(jì)技巧
      電子制作(2019年9期)2019-05-30 09:42:04
      精彩語(yǔ)句
      高職高專(zhuān)院校C語(yǔ)言程序設(shè)計(jì)教學(xué)改革探索
      Google Play游戲取消賬號(hào)綁定沒(méi)有Google賬號(hào)也能玩
      CHIP新電腦(2016年3期)2016-03-10 14:52:50
      PLC梯形圖程序設(shè)計(jì)技巧及應(yīng)用
      如何搞定語(yǔ)句銜接題
      丰镇市| 炉霍县| 托克逊县| 紫金县| 远安县| 阿克苏市| 富顺县| 图片| 公主岭市| 北辰区| 灵璧县| 师宗县| 县级市| 莫力| 册亨县| 兴文县| 渑池县| 瓮安县| 江陵县| 石林| 简阳市| 鱼台县| 凤冈县| 汉寿县| 浏阳市| 治县。| 务川| 遵义市| 灵石县| 民和| 孟连| 谷城县| 奉节县| 黄山市| 阿巴嘎旗| 武乡县| 信阳市| 闽侯县| 关岭| 房产| 金阳县|