国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

利用Visual?。拢幔螅椋悖玻埃埃翟O(shè)計(jì)電視節(jié)目手機(jī)號(hào)碼抽獎(jiǎng)程序

2009-06-05 03:59:50包宋德
新媒體研究 2009年9期
關(guān)鍵詞:窗體手機(jī)號(hào)碼抽獎(jiǎng)

[摘要]以春節(jié)聯(lián)歡晚會(huì)電視節(jié)目手機(jī)號(hào)碼抽獎(jiǎng)為例,介紹利用Visual Basic2005設(shè)計(jì)電視節(jié)目手機(jī)號(hào)碼抽獎(jiǎng)程序的步驟和關(guān)鍵技術(shù)。

[關(guān)鍵詞]VisualBasic2005 手機(jī)號(hào)碼 電視抽獎(jiǎng)

中圖分類號(hào):TP3文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1671-7597(2009)0510021-02

近年來,各地電視臺(tái)為了增進(jìn)節(jié)目與觀眾的互動(dòng),在節(jié)目中設(shè)置了用手機(jī)和小靈通參與節(jié)目短信投票活動(dòng),在節(jié)目舉行到高潮時(shí),邀請(qǐng)抽獎(jiǎng)嘉賓開啟手機(jī)號(hào)碼抽獎(jiǎng),屏幕不停翻滾手機(jī)號(hào)碼,當(dāng)停止抽獎(jiǎng)時(shí)屏幕顯示中獎(jiǎng)手機(jī)號(hào)碼。本文通過一個(gè)春節(jié)聯(lián)歡晚會(huì)電視節(jié)目抽獎(jiǎng)程序?yàn)槔ǔ绦蜻\(yùn)行結(jié)果如圖1所示),介紹了利用Visual Basic2005設(shè)計(jì)手機(jī)號(hào)碼抽獎(jiǎng)程序的步驟和關(guān)鍵技術(shù)。

一、電視節(jié)目手機(jī)號(hào)碼抽獎(jiǎng)程序的特點(diǎn)

電視節(jié)目手機(jī)號(hào)碼抽獎(jiǎng)程序有下列特點(diǎn):(1)電視節(jié)目抽獎(jiǎng)程序力求界面友好,窗體無標(biāo)題欄和無關(guān)控件,程序操作方法要簡(jiǎn)單,當(dāng)按空格鍵實(shí)現(xiàn)抽獎(jiǎng)啟動(dòng)與停止;(2)手機(jī)號(hào)碼數(shù)據(jù)由電信營(yíng)運(yùn)商提供,可能數(shù)據(jù)量大,每個(gè)號(hào)碼都要有平等的機(jī)會(huì)參與抽獎(jiǎng),號(hào)碼翻滾速度適中,翻滾的號(hào)碼數(shù)據(jù)要作隱私保護(hù)(屏蔽中間4位數(shù)字),對(duì)抽中的號(hào)碼要鎖定并記錄到數(shù)據(jù)庫(kù)中。

二、電視節(jié)目手機(jī)號(hào)碼抽獎(jiǎng)程序設(shè)計(jì)

(一)程序界面設(shè)計(jì)和數(shù)據(jù)庫(kù)設(shè)計(jì)

電視抽獎(jiǎng)時(shí)一般同時(shí)會(huì)顯示出幾組手機(jī)號(hào)碼數(shù)據(jù),用組框(Groupbox)

控件對(duì)號(hào)碼進(jìn)行分組,一個(gè)手機(jī)號(hào)碼有11位數(shù)字,用11個(gè)標(biāo)簽分開顯示,本例有4組號(hào)碼需要44個(gè)標(biāo)簽控件(第一組命名label101~label111,第二組label201~label211,其他組依此類推)。設(shè)置窗體的邊框樣式FormBor

DerStyle為None,實(shí)現(xiàn)抽獎(jiǎng)程序運(yùn)行無標(biāo)題欄。設(shè)置窗體的WindowsState

屬性為Maximized,實(shí)現(xiàn)抽獎(jiǎng)程序運(yùn)行時(shí)最大化。

考慮到手機(jī)號(hào)碼數(shù)據(jù)量大和數(shù)據(jù)庫(kù)表的可擴(kuò)充性,選用SQL Server20

05作為手機(jī)抽獎(jiǎng)數(shù)據(jù)庫(kù)。在SQL Server環(huán)境下建立一個(gè)名為Mobile_Lotter

Y的數(shù)據(jù)庫(kù),然后建立兩張數(shù)據(jù)表:(1)TphoneNumber存儲(chǔ)待抽取的手機(jī)號(hào)碼;(2)TselectedNumber存儲(chǔ)已經(jīng)抽中的手機(jī)號(hào)碼。兩張表都含有(Phone

Number varchar(11))字段,表示11位手機(jī)號(hào)碼。

(二)數(shù)據(jù)訪問技術(shù)的實(shí)現(xiàn)

程序中多處要訪問數(shù)據(jù)庫(kù),考慮到VB2005訪問SQL Server數(shù)據(jù)庫(kù)的簡(jiǎn)便性,特設(shè)計(jì)一個(gè)數(shù)據(jù)庫(kù)操作類CDBOperation,在類下面定義一個(gè)共享函數(shù)DBOperate()對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。

Public Class CDBOperation

Shared Function DBOperate(ByVal SQLString As String) As DataTable

Try

Dim SconString As String

SconString = "Data Source=(local);Initial Catalog=Mobile_Lottery;Integrated Security=SSPI"

'連接SQL Server數(shù)據(jù)庫(kù)

Dim myconn As New SqlConnection

myconn.ConnectionString = SconString

myconn.Open()

Dim myComm As New SqlCommand(SQLString, myconn)

If InStr(SQLString.ToUpper, "INSERT") > 0 Or InStr(SQLString.ToUpper, "DELETE") Or InStr(SQLString.ToUpper, "UPDATE") Then '增加、刪除、更新操作

myComm.ExecuteNonQuery()

myconn.Close()

Else'查詢操作

myComm.ExecuteNonQuery()

Dim mydataset As New DataSet

Dim mydataApater As New SqlDataAdapter

mydataApater.TableMappings.Add("Table", "Temp")

mydataApater.SelectCommand = myComm

mydataApater.Fill(mydataset)

myconn.Close()

Return mydataset.Tables("Temp")

End If

Catch ex As SqlException

MsgBox(ex.Message)

End Try

End Function

End Class

為了避免從數(shù)據(jù)庫(kù)頻繁讀寫數(shù)據(jù),影響抽獎(jiǎng)程序的運(yùn)行速度,在窗體啟動(dòng)事件中事先把手機(jī)號(hào)碼數(shù)據(jù)一次性讀入到全局內(nèi)存數(shù)據(jù)表(mytable) 中,抽獎(jiǎng)進(jìn)行中直接從mytable中抽取,不需要頻繁訪問數(shù)據(jù)庫(kù)。

Private Sub frmPhonenumber_Load( …… )

mytable = CDBOperation.DBOperate("select * from TPhoneNumber")

'讀手機(jī)數(shù)據(jù)庫(kù)到全局內(nèi)存數(shù)據(jù)表mytable中。

Nend = mytable.Rows.Count1'全局變量Nend記錄手機(jī)號(hào)碼總條數(shù)

End Sub

(三)當(dāng)按空格鍵開始抽獎(jiǎng),再按空格鍵停止抽獎(jiǎng)并鎖定抽中號(hào)碼的程序設(shè)計(jì)

空格鍵是鍵盤中最長(zhǎng)的一個(gè)鍵,如果用它來控制抽獎(jiǎng)的啟停,就會(huì)給操作軟件帶來方便,在程序中要設(shè)法捕捉按下空格鍵所觸發(fā)的事件。按鍵按下時(shí)都會(huì)觸發(fā)keypress事件,該事件傳遞被按鍵的ASCII碼值,在窗體的keypress事件捕捉按下的鍵值,從而對(duì)程序進(jìn)行控制。空格鍵的ASCII值是32,根據(jù)按鍵值e.keychar來測(cè)試是否按了空格鍵。程序界面設(shè)計(jì)時(shí),計(jì)時(shí)器控件Enabled屬性設(shè)置為False,即初始時(shí)未自動(dòng)進(jìn)行抽獎(jiǎng)必須按空格鍵開始抽獎(jiǎng),然后按空格鍵停止抽獎(jiǎng)。

Private Sub frmPhonenumber_KeyPress(……)

If Asc(e.KeyChar) = 32 Then

Timer1.Enabled = Not Timer1.Enabled

'一反一復(fù)式控制

End If

在窗體的KeyPress事件中,要測(cè)試計(jì)時(shí)器timer1.Enabled屬性,如果其值為不可用(False),表明己經(jīng)停止?jié)L動(dòng)(即抽中了號(hào)碼),要鎖定抽獎(jiǎng)號(hào)碼,把抽中的號(hào)碼放到TselectedNumber表中保存,然后刪除TphoneNumber表中相應(yīng)的號(hào)碼。

If Timer1.Enabled = False Then

Dim i As Integer

For i = 1 To 4

CDBOperation.DBOperate("insert into TSelectedNumber(PhoneNumber) values('" & WinningNumbers(i) & "') ") '把抽中的號(hào)碼放到TselectedNumber表

CDBOperation.DBOperate("delete from TPhoneNumber where PhoneNumber='" & WinningNumbers(i) & "'")'刪除TphoneNumber表中抽中的號(hào)碼

Next

End If

(四)實(shí)現(xiàn)電腦屏幕不停翻滾加以隱私保護(hù)的手機(jī)號(hào)碼

實(shí)現(xiàn)電腦屏幕不停翻滾手機(jī)號(hào)碼數(shù)據(jù),可設(shè)置計(jì)時(shí)器觸發(fā)周期(滾動(dòng)頻率)Interval屬性(單位毫秒,建議設(shè)為10,每秒鐘觸發(fā)100次)讓計(jì)時(shí)器timer1每隔Interval周期不停地執(zhí)行滾動(dòng)號(hào)碼。為了讓每個(gè)號(hào)碼都有平等的機(jī)會(huì)參與抽獎(jiǎng),采用隨機(jī)數(shù)抽取內(nèi)存數(shù)據(jù)表中的手機(jī)號(hào)碼。設(shè)Nbegin起始數(shù)字,Nend表示終止數(shù)字,可以利用隨機(jī)數(shù)公式n = Int(Rnd() *(Nend-Nbegin+1)+Nbegin)產(chǎn)生[Nbegin,Nend]的隨機(jī)數(shù),然后利用產(chǎn)生的隨機(jī)數(shù)作為序號(hào)讀取內(nèi)存表mytable中相應(yīng)的數(shù)據(jù)行到TempNumbers。從內(nèi)存表中讀取的數(shù)據(jù)是11位的手機(jī)號(hào)碼,如果直接全部顯示出來,會(huì)泄露手機(jī)用戶的隱私,有必要對(duì)手機(jī)號(hào)碼進(jìn)行保護(hù),具體的方法是只取TempNumbers串的前3位和后4位字符,中間4位的四位在界面設(shè)計(jì)時(shí)用“×”代替。

Dim i, Nbegin, n As long

Nbegin = 0

n = Int(Rnd() * (Nend - Nbegin + 1) + Nbegin)

'產(chǎn)生[Nbegin,Nend]之間的隨機(jī)數(shù)

TempNumbers = mytable.Rows(n).Item("PhoneNumber")

'讀內(nèi)存數(shù)據(jù)表相應(yīng)的行

WinningNumbers(1) = TempNumbers

'取TempNumbers串的前3位和后4位字符放到標(biāo)簽控件

label101.Text = Mid(TempNumbers, 1, 1)

Label102.Text = Mid(TempNumbers, 2, 1)

Label103.Text = Mid(TempNumbers, 3, 1)

Label108.Text = Mid(TempNumbers, 8, 1)

Label109.Text = Mid(TempNumbers, 9, 1)

Label110.Text = Mid(TempNumbers, 10, 1)

Label111.Text = Mid(TempNumbers, 11, 1)

其它組按第一組的相同的方法設(shè)計(jì)代碼。

三、結(jié)束語

通過以上的分析,電視節(jié)目手機(jī)號(hào)碼抽獎(jiǎng)并不是那么神秘、那樣復(fù)雜,只要我們富于豐富的想像力,就能夠設(shè)計(jì)出符合需求的各種電視節(jié)目手機(jī)號(hào)碼抽獎(jiǎng)程序。

此程序在Windows xp、Visual Basic 2005、SQL Server2000環(huán)境下測(cè)試通過。

參考文獻(xiàn):

[1]豈興明、矯津毅、銀華強(qiáng),Visual Basic.Net 項(xiàng)目開發(fā)寶典[M].電子工業(yè)出版社,2007.

[2]丁愛萍,Visual Basic2005程序設(shè)計(jì)[M] 人民郵電出版社,2008.

作者簡(jiǎn)介:

包宋德,湖南衡陽(yáng)人,湖南婁底職業(yè)技術(shù)學(xué)院系統(tǒng)分析師,湖南大學(xué)在讀軟件碩士,研究方向:軟件技術(shù)。

猜你喜歡
窗體手機(jī)號(hào)碼抽獎(jiǎng)
本月來信之最
開學(xué)大抽獎(jiǎng)
“手機(jī)號(hào)碼”繼承公證的可行性及路徑
法制博覽(2021年4期)2021-11-24 15:03:12
試談Access 2007數(shù)據(jù)庫(kù)在林業(yè)檔案管理中的應(yīng)用
檔案天地(2019年5期)2019-06-12 05:12:02
基于Tesseract-OCR的快遞單中手機(jī)號(hào)碼識(shí)別應(yīng)用的實(shí)現(xiàn)
大抽獎(jiǎng)
航空模型(2016年8期)2017-05-03 12:17:21
抽獎(jiǎng)
基于LayeredWindow的異形窗體局部刷新
中文信息(2014年2期)2014-03-06 23:49:14
巧設(shè)WPS窗體控件讓表格填寫更規(guī)范
抽獎(jiǎng)
興趣英語(2013年3期)2013-05-13 09:21:06
三门县| 教育| 浮梁县| 榆林市| 错那县| 资源县| 山西省| 北京市| 江门市| 九龙城区| 广宁县| 专栏| 巩义市| 雅江县| 海兴县| 龙州县| 合水县| 泰兴市| 三江| 满洲里市| 泸州市| 阳朔县| 始兴县| 南城县| 连州市| 海南省| 塔城市| 华蓥市| 九江县| 博湖县| 南漳县| 开远市| 措美县| 巴东县| 晋城| 南靖县| 灵台县| 景德镇市| 井陉县| 黎川县| 临夏县|