• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    用VB設計“投票評選”程序的簡單方法

    發布: 2007-5-25 09:18 | 作者: 王威文 | 來源: 天極網 | 查看: 68次 | 進入軟件測試論壇討論

    領測軟件測試網  簡介:

      正逢2005年年末,國內各媒體都掀起了“2005年度XXXX投票評選”的熱潮,就拿CCTV央視來說,各種命題的“投票評選”活動就不下十多項;對這樣題目在編程中如何實現呢?我想主要從三個方面入手;第一,解決好參加評比候選人數據裝入;第二,采集好投票人有效點擊次數的相關信息;第三,確保參加評比候選人獲票數與投票人的投出票數的一致性。掌握好這三點后,其它問題就會迎刃而解。使用Delphi、PB、VB等語言得到較理想編程設計與實施。

      為了簡便起見下面將以“2005CCTV中國經濟年度人物評選人氣榜”的信息為數據源,把用VB、SQL Server 2000數據庫設計“投票評選”程序的簡單方法介紹給大家。如圖1所示,為“投票評選”窗體界面,下面分三個問題介紹:


    圖片1

      一、用VB設計“投票評選”程序的流程及要點

      1.2005年參加評比候選人數據的裝入

      <1>.在數據庫中創建[候選代表獲票表-(簡稱:表1)]和[投票參與表-(簡稱:表2)]

      表1:A05_Start 數據結構 表2: A05_Piao 數據結構
      表1字段有:[姓名、單位、職務、圖片、長度、票數] 記錄數:20條。
      表2字段有:[身份、序號、姓名、票數、Flag] 記錄數:若干。

      <2>. 將“中國經濟年度人物候選人20位”數據裝入ListBox控件中在ADO的連接方式下進行SQL Server2000數據庫連接;將已經編輯通過的數據源表中所有記錄項(包括:姓名、單位、職務)信息,按姓氏筆畫為序地讀到FrmXP窗體的ListBox控件中,請見如圖1所示。

      2.采集好投票評比人有效點擊次數的相關信息

      【參與投票為有效】的充分必要條件是①.滿10票才算有效投票;②.填入身份證號的位數合法。接收這樣的數據信息才視為“有效”,才能記錄“在案”。

      <1>.數據采集需簡捷明快

      對公眾參與操作的程序界面,要允許參與人使用鼠標“可反復地點擊[選擇],可打“√”可去掉“√”,以最終符合“滿10票才算有效投票”為原則。

      在ListBox控件中采集數據據的范圍及算法:

      范圍:①總點擊次數;②.有效點擊次數;③.收集候選人姓名;④.收集候選人序

      號;⑤.收集打“√”可去掉“√”狀態。

      算法:這里與算法相關項是【②.有效點擊次數】如:在姓名前點擊:(加上“√”= 真)設置為1;后來在點擊過的姓名前:(去掉“√”=假)設置為-1。

      即:【有效點擊次數】------初值等于零;

      如果,點擊:(加上“√”=真)?有效點擊數=有效點擊數+1

      如果,點擊:(去掉“√”=假)?有效點擊數=有效點擊數-1

      程序中要求此數據不允許小于10,這樣就明確了對參與者出錯的提示條件。

      3.確保參加評選的候選人獲票數與投票人的投票數的一致性

      在正確數據采集的基礎上,確!精@票數】與【投票數】一致性問題能用較簡單地利用SQL語句進行處理,可隨時顯示獲票【結果】。

      <1>.審核參與者身份證號合法性,主要包括:舊證(15位)新證(18位)。

      <2>.利用“視圖”將每一次有效數據,按“候選人姓名”分組求和,計算出票數。

      <3>.使用SQL語句的更新操作:Update A05_start set 票數=票數+視圖.票數 條件:兩個表的姓名相等。

      二、用VB設計“投票評選”程序主要代碼

      1.將“候選人物20位”數據的裝入ListBox控件代碼

    Sub p_abc()
     RS.Open " Select 姓名,職務,單位From A05_start Order By id", mConn, adOpenStatic
     Dim iSize, iNo As Long
     Dim Lname As String
     iNo = RS.RecordCount
     If iNo = 0 Then
      MsgBox "數據庫中的數據項不能為空,請重新設置", vbOKOnly, "信息提示"
      Exit Sub
     End If
     Do While Not RS.EOF
      iSize = 0
      iSize = Len(RS.Fields("姓名"))
      Lname = RS.Fields("姓名")
      lstFields.AddItem Lname + Space(2) + RS.Fields("單位") + RS.Fields("職務")
      RS.MoveNext
      Lname = ""
     Loop
     lstFields.ListIndex = -1
     RS.Close
    End Sub

      2.采集數據ListBox控件下的程序代碼

    Private Sub lstFields_ItemCheck(Item As Integer) '現場采集的過程
     P = P + 1 '獲取總次數
     A_name(P) = Mid(lstFields.List(lstFields.ListIndex), 1, 3) '獲取姓名
     A_No(P) = lstFields.ListIndex '獲取序號
     A_TF(P) = lstFields.Selected(lstFields.ListIndex) '獲取邏輯值
     If A_TF(P) = "True" Then '獲取有效的點擊次數
      P1 = P1 + 1
     Else
      P1 = P1 - 1
     End If
    'End Sub

      3.更新“候選人”獲票數據的主要程序代碼(【投票】按鈕下)

    Private Sub Command2_Click()
     Dim P_No, lNo As Integer
     Dim P_name As String
     ……
     '此處略掉部分代碼,它們主要有:
    、.判斷身份證號(舊15)位或(新18)位
    、.判斷[身份證號]的位數有誤的提示
    、.判斷[滿10票為有效投票]的提示
     RS.Open " Select * From A05_piao Where 身份='" & Text1.Text & "' Order By id", mConn, adOpenStatic
     lNo = 0
     lNo = RS.RecordCount
     RS.Close
     If lNo > 0 Then
      MsgBox "對不起,您已經投過票,謝謝合作!!!", vbOKOnly, " > 操作信息提示 <"
      Text1.SetFocus
      Exit Sub
     End If
     For J = 1 To P '根據現場采集總次數,將數據插入表2
      If A_No(J) >= 0 Then
       P_name = A_name(J)
       If A_TF(J) = "True" Then
        P_No = 1 '首此點擊為 “勾”時為:1
       Else
        P_No = -1 '原已點后去掉“勾”時為:-1
       End If
      End If
      mConn.Execute "Insert Into A05_piao (身份,序號,姓名,票數) VALUES ('" & Text1.Text & "'," & A_No(J) & ",'"
    & A_name(J) & "'," & P_No & ")"
     Next J
     '--更新A05_start表1的內容
     '--V_sum1為視圖文件其格式:Select 姓名 Sum(票數) AS "票數" From A05_Piao Where flag is Null GROUP
    By 姓名
     mConn.Execute " Update A05_start Set A05_start.票數 = A05_start.票數 + V_sum1.票數 From
     A05_start,v_sum1 Where A05_start.姓名 = V_sum1.姓名 "
     mConn.Execute " Update A05_piao Set flag=1" '參與過的標記
     Call A_abc '記票后清除各個數組及變量供采集數據用
     lstFields.Clear '記票后清空ListBox控件。
     Call p_abc '記票后重新裝入20位候選人物信息
     Text1.Text = "" '記票后清空“身份證”輸入框中信息
     lstFields.SetFocus '記票后焦點移到ListBox中
    End Sub

      4.界面的設置程序代碼

      <1>.投票窗體設置,窗體名:FrmXP

    Option Explicit
     Dim mConn As ADODB.Connection
     Dim RS As New ADODB.Recordset
     DIM StrCnn As String '連接字符串
     Dim A_name() As String '定義姓名數組
     Dim A_No() As Integer '定義編號數組
     Dim A_TF() As String '邏輯值判斷(鼠標的點擊過程)
     Dim I, J, P,P1 As Integer

      <2>.數據庫的連接

    Private Sub Form_Load()
     Set mConn = New Connection
     StrCnn="Provider=SQLoledb;DataSource=USER2;Userid=sa;pwd=;Initial atalog=My_data"
     mConn.CursorLocation = adUseClient '設置為客戶端
     mConn.Open StrCnn
     Call p_abc '此過程為裝入“候選20位”數據
     Call A_abc '此過程清空各個數組及變量采集數據用
    End Sub

      <3>.使用控件清單

      標簽控件2個,命令按鈕控件4個,文本框控件1個,列表框控件1個。

      <4>.模塊的主要"引用"

      VB和SQL Server2000下模塊引用[ADO]:Microsoft ActiveX Data Object 2.6 Library

      三、對【結果】【重填】【看圖片】按鈕的說明

      1.【結果】按鈕下將調用“前八名結果”圖形窗體

    frm_GRP.show vbmodal

      此界面的代碼比較簡單,即:將獲取票數前八名的候選人物姓名和票數裝入到Mschart控件,以直方圖形式體現,圖形為動態(隨票數而變化),圖形窗體與程序代碼略掉。

      2.【重填】主要清空身份證文本框和重新將20位候選人數據裝入。

      3.【看圖片】按鈕下將調用“20位中國經濟年度人物”圖片窗體 如圖2所示

    frm_Pic.show vbmodal

      此窗體是將“中國經濟年度人物”姓名和圖片數據讀到frm_Pic界面的控件中,以下三種:

      圖像Image(0...19);

      圖片框picture(0…19);

      標簽label2(0..,19)控件;

      在數據庫表1的循環中,將圖片數據和姓名裝入到符合其下標的控件中,請見如圖2所示,此處代碼較長,故略掉。


    圖片2

      四、 編后語

      用VB設計"投票評比"程序的簡單方法中,關鍵要思路清楚、考慮周到、設計合理到位。首先,做到文中表1與表2數據關系準確(基于數據采集的準確上)。其次,讓參與投票的人士在操作程序上感到方便,快捷。最后,在設計類似程序時一定要理論聯系實際,結合你現場的具體環境,抓好整個流程的關鍵環節、以點代面、活學活用、讓參與投票使用者都喜歡。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>