• 
    

    
    

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

      日期格式校驗算法

      2014-12-31 00:00:00張睿
      計算機光盤軟件與應(yīng)用 2014年10期

      摘 要:隨著計算機科學(xué)技術(shù)的發(fā)展,各類系統(tǒng)應(yīng)用越來越廣泛,用戶在輸入數(shù)據(jù)時,經(jīng)常會有各種各樣錯誤,若有好的校驗方法,能夠在一定程度上避免錯誤,本文以天津開發(fā)區(qū)職業(yè)技術(shù)學(xué)院在線考試系統(tǒng)需求為例,闡述了在學(xué)生登錄系統(tǒng)需要輸入出生日期完善數(shù)據(jù)時要解決的問題,并介紹了在開發(fā)過程中解決問題的思路和代碼的實現(xiàn)過程。

      關(guān)鍵詞:日期校驗;字符;算法

      中圖分類號:TP393.092

      當(dāng)今社會,學(xué)??己藢W(xué)生的考試方式已經(jīng)不僅僅局限于筆試,為實現(xiàn)考試方式的多元化,更好地分析學(xué)生的學(xué)習(xí)情況,把試題情況和學(xué)生基本信息相結(jié)合,更好地進行數(shù)據(jù)分析,我們在天津開發(fā)區(qū)職業(yè)技術(shù)學(xué)院在線考試系統(tǒng)中需要學(xué)生的基本信息,學(xué)生在初次登錄時,要輸入自己的信息,系統(tǒng)數(shù)據(jù)庫里只有學(xué)號班級等學(xué)籍信息并沒有個人信息,輸入信息包括性別、年齡、家庭住址和出生日期等。由于輸入時有的能夠選擇,例如性別,有的只能輸入,例如出生日期,在輸入時又難免會發(fā)生錯誤,而且在發(fā)生輸入的學(xué)生還不知曉,這樣就會造成數(shù)據(jù)不準(zhǔn)確。這就要求我們在開發(fā)系統(tǒng)時必須找到一種校驗方法,能夠校驗輸入的數(shù)據(jù),對輸入不合法的數(shù)據(jù)進行提示,直到輸入正確合法的數(shù)據(jù)為止。

      1 對出生日期校驗方式描述

      對于日期的格式有很多種,根據(jù)我們中國人傳統(tǒng)的日期格式,可以是簡單的8位數(shù)字,也可以中間有分隔符,分隔符有很多種,例如:“-”、“/”、“.”等,這需要在輸入時有提示,例如:“日期格式1994-6-12”。

      經(jīng)過驗證我們覺得使用分隔符格式比8位數(shù)字格式更好校驗,截取字符串也比較方便。其實也考慮過用選擇的方式,選擇年、月、日,這樣有兩個問題,一是對選擇日期正確與否不好判斷,二是存入數(shù)據(jù)庫時麻煩一些,因此我們采取的方式是讓同學(xué)們輸入日期,之后判斷日期是否符合要求,若符輸入的日期合要求就直接存入數(shù)據(jù)庫。下面簡單介紹一下采取的校驗算法。

      算法描述:(1)判斷輸入的字符串是否為空,若為空提示輸入日期;(2)若不為空,則根據(jù)分隔符分別獲取年、月、日;(3)判斷年、月、日是否合法,若不合法返回0,否則返回1。

      1)位數(shù)是否合法(年4位,月1位或2位,日1位或2位);2)月、日是否符合范圍(月:1-12,日1-31);3)若平年,二月份不能出現(xiàn)29日;4)若是小月(二、四、六、九、十一月)不能出現(xiàn)31日;5)二月份不能出現(xiàn)30日。

      2 代碼實現(xiàn)

      下邊的代碼,使用的是JavaScript語言,若chkdate函數(shù)返回0,說明輸入日期不合法,若返回1,說明輸入的日期合法。

      function chkdate(datestr)

      { Var lthStr;

      if (datestr != \"\")

      lthStr = datestr.length ;

      else

      { alert(\"請正確輸入日期!例1994-6-12\");

      return 0; }

      var tmpy=\"\"; var tmpm=\"\"; var tmpd=\"\";

      var status; //用于判斷出現(xiàn)了幾次“-”

      status=0;

      for (i=0;i

      { if (datestr.charAt(i)== '-')

      { status++; }

      if (status>2)

      { return 0; }

      if ((status= =0) (datestr.charAt(i)!='-'))

      { tmpy=tmpy+datestr.charAt(i) }

      if ((status==1) (datestr.charAt(i)!='-'))

      { tmpm=tmpm+datestr.charAt(i) }

      if ((status==2) (datestr.charAt(i)!='-'))

      { tmpd=tmpd+datestr.charAt(i) }

      }

      year=new String (tmpy); month=new String (tmpm); day=new String (tmpd)

      if ((tmpy.length!=4) || (tmpm.length>2) || (tmpd.length>2))

      { return 0; }

      if (?。ǎ?<=month) (12>=month) (31>=day) (1<=day)) )

      { return 0; }

      if (!((year % 4)= =0) (month= =2) (day= =29))

      { return 0; }

      if ((month<=7) ((month % 2)==0) (day>=31))

      { return 0; }

      if ((month>=8) ((month % 2)==1) (day>=31))

      { return 0; }

      if ((month= =2) (day= =30))

      { return 0; }

      return 1;

      }

      3 使用效果說明

      本系統(tǒng)正式投入使用四年來,多次用于各個專業(yè)學(xué)生的考試,在使用過程中,同學(xué)們輸入自己的相關(guān)信息,未發(fā)現(xiàn)出生日期不準(zhǔn)確的問題。有以下幾個方面需要說明:(1)本系統(tǒng)中在其它數(shù)據(jù)的輸入過程中也有校驗,只不過本文中沒有介紹;(2)同學(xué)們在輸入過程中,有的字符用全角或輸入的分隔符是否準(zhǔn)確有的不好判定,我們在存入數(shù)據(jù)庫時有相應(yīng)的處理;(3)本算法并未對出生的年份有限制,若都是學(xué)生,其實可以限定一個范圍,這樣能在一定范圍內(nèi)避免錯誤。

      4 結(jié)束語

      學(xué)生輸入數(shù)據(jù)發(fā)生錯誤是經(jīng)常的事,他們在使用本系統(tǒng)考試時,有時并不關(guān)心自己的其他信息是否準(zhǔn)確,而是更關(guān)心的是體統(tǒng)將給他們抽一套什么樣的試題,能不能重新抽取,以及考試結(jié)束后能不能看成績的等。這就要求我們在考試之前做更多的提醒,以及把系統(tǒng)做得更加完善。

      好的算法能夠節(jié)省程序的執(zhí)行時間,簡化很多過程,得到良好的效果,我們也一直在尋找有沒有更好的算法,如何去完善我們的系統(tǒng)是這幾年我們一直在做的事情。通過這個小的算法我們也能夠知道我們的學(xué)生進一步思考,也能夠進一步指導(dǎo)我們平時的教學(xué),本文中提供的代碼也可以用于其它關(guān)于日期的校驗,在很多支持JavaScript的程序中都可以使用。

      參考文獻:

      [1]張躍平,耿祥義.JSP程序設(shè)計[M].北京:清華大學(xué)出版社,2009.

      [2]馬建紅,李占波.JSP應(yīng)用與開發(fā)技術(shù)[M].北京:清華大學(xué)出版社,2011.

      [3]李平.基于JSP的動態(tài)網(wǎng)頁開發(fā)技術(shù)[J].微計算機信息,2009(21).

      作者單位:天津開發(fā)區(qū)職業(yè)技術(shù)學(xué)院,天津 300457

      贵德县| 新乡市| 隆昌县| 襄城县| 湘西| 南江县| 象州县| 巨鹿县| 岱山县| 城固县| 富民县| 孟村| 广昌县| 河曲县| 凤城市| 佛冈县| 赣州市| 金门县| 同江市| 含山县| 石林| 屏山县| 德州市| 通河县| 克东县| 皋兰县| 板桥市| 华坪县| 资中县| 拉孜县| 翁牛特旗| 偃师市| 临朐县| 惠东县| 大渡口区| 贵定县| 祁阳县| 波密县| 名山县| 奉化市| 乌拉特中旗|