資源描述:
《利用pb實(shí)現(xiàn)抽獎(jiǎng)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫(kù)。
1、利用PB實(shí)現(xiàn)抽獎(jiǎng)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 摘要本文描述了基于抽??系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),通過(guò)前期的需求分析、系統(tǒng)流程設(shè)計(jì)、系統(tǒng)功能設(shè)計(jì),軟件選擇PB(powerbuilder9.0)作為系統(tǒng)開(kāi)發(fā)工具,使用ACCESS作為數(shù)據(jù)庫(kù)開(kāi)發(fā)此系統(tǒng),由于抽獎(jiǎng)系統(tǒng)是一個(gè)獨(dú)立的軟件,所以采用單機(jī)版的數(shù)據(jù)庫(kù),安裝簡(jiǎn)便,界面友好,容易移植,目前使用效果好?! 娟P(guān)鍵詞】PBACCESS抽獎(jiǎng)隨機(jī)記錄數(shù) 1引言 我院為了豐富職工文化生活,每年春節(jié)臨近時(shí)都舉行晚會(huì),在晚會(huì)過(guò)程中為了活躍氣氛,有多次抽獎(jiǎng)機(jī)會(huì),分別抽出一等獎(jiǎng),二等獎(jiǎng),三等獎(jiǎng)近400多名,往年都是把全院近700多人名單打印出來(lái),折疊放在暗箱
2、,由院領(lǐng)導(dǎo)分批次抽取,一個(gè)一個(gè)讀出,占用時(shí)間長(zhǎng),而且職工懷疑有不透明的暗箱操作的嫌疑,今年根據(jù)醫(yī)院工會(huì)要求,由我院信息科著手開(kāi)發(fā)抽獎(jiǎng)系統(tǒng),這個(gè)任務(wù)由我全權(quán)負(fù)責(zé)開(kāi)發(fā),利用了2天時(shí)間完成任務(wù),現(xiàn)將經(jīng)驗(yàn)分享各位?! ?設(shè)計(jì)目標(biāo) 本系統(tǒng)能夠根據(jù)選擇獎(jiǎng)項(xiàng)不同,在數(shù)據(jù)庫(kù)中隨機(jī)抽取10個(gè)人數(shù),展示在屏幕上,由操作員點(diǎn)開(kāi)始與停止,抽出10名幸運(yùn)觀眾。被抽取的幸運(yùn)觀眾將在待抽取的數(shù)據(jù)庫(kù)中打上標(biāo)識(shí),在下次抽取中不再被選,以保證幸運(yùn)觀眾不重復(fù),同時(shí)保證待抽取的觀眾被抽取的機(jī)率相等?! ?數(shù)據(jù)庫(kù)表結(jié)構(gòu) 由于本系統(tǒng)操作簡(jiǎn)單,數(shù)據(jù)庫(kù)僅有2張表,一張Person_table全體職工表,一張Per
3、son_selected,獲獎(jiǎng)員工表,表結(jié)構(gòu)分別如下: 3.1Person_table表字段 Person_id員工ID,Person_name員工姓名,Person_Sex員工性別,Cecked中獎(jiǎng)標(biāo)志(0,為未中,1為中獎(jiǎng)) 3.2Person_selected表字段 Person_id員工ID,Person_name員工姓名,Person_Sex員工性別,Jiang_X獎(jiǎng)項(xiàng) 4程序設(shè)計(jì) 4.1編程思想 PowerBuilder美國(guó)Sybase公司研制的一種新型、快速開(kāi)發(fā)工具,是客戶機(jī)/服務(wù)器結(jié)構(gòu)下,基于Windows3.x、Windows95和Win
4、dowsNT的一個(gè)集成化開(kāi)發(fā)工具。它包含一個(gè)直觀的圖形界面和可擴(kuò)展的面向?qū)ο蟮木幊陶Z(yǔ)言PowerScript,提供與當(dāng)前流行的大型數(shù)據(jù)庫(kù)的接口,并通過(guò)ODBC與單機(jī)數(shù)據(jù)庫(kù)相連?! ?.2系統(tǒng)的實(shí)現(xiàn) 4.2.1員工基本信息的建立 由于是單機(jī)版,采用微軟的ACCESS數(shù)據(jù)庫(kù),對(duì)于一個(gè)近千人的單位,足夠使用,剛開(kāi)始我采用的是SQL2000數(shù)據(jù)庫(kù)。在開(kāi)發(fā)過(guò)程中感覺(jué)非常不便,單機(jī)還要安裝SQL數(shù)據(jù)庫(kù),待抽獎(jiǎng)人員還要開(kāi)發(fā)錄入,修改,刪除的功能,時(shí)間緊,來(lái)不及,最重要是操作非常煩瑣,后決定采用易操作的ACCESS數(shù)據(jù)庫(kù)?! ∈紫冉⒋楠?jiǎng)數(shù)據(jù)庫(kù),表結(jié)構(gòu)如圖1。 表結(jié)構(gòu)建立后,將
5、EXCEL里將待抽取的人員按數(shù)據(jù)庫(kù)的結(jié)構(gòu)復(fù)制至數(shù)據(jù)庫(kù)表中,注意表中Checked設(shè)置為0,待抽取狀態(tài),如圖2?! 〗⒖毡斫Y(jié)構(gòu)Person_selected,用于插入中獎(jiǎng)員工記錄,保存便于導(dǎo)出,表結(jié)構(gòu)如圖3。 中獎(jiǎng)后記錄如圖4?! ?.2.2隨機(jī)記錄的產(chǎn)生 經(jīng)查詢資料,在網(wǎng)上搜索到:四種數(shù)據(jù)庫(kù)隨機(jī)獲取10條數(shù)據(jù)的方法 SQLServer: SELECTTOP10*FROMT_USERORDERBYNEWID() ORACLE: SELECT*FROM(SELECT*FROMT_USERORDERBYDBMS_RANDOM.RANDOM())WHERERONU
6、M<=10 MySQL: SELECT*FROMT_USERORDERBYRAND()LIMIT10 Access: SELECTTOP10*FROMT_USERORDERBYrnd([一個(gè)自動(dòng)編號(hào)字段]) 4.2.3代碼實(shí)現(xiàn) 窗口主要控件: a、下拉列表框控件ddlb_1,顯示待選擇的獎(jiǎng)項(xiàng):如:一等獎(jiǎng),二等獎(jiǎng)等; b、靜態(tài)文本框statictext控件,存放待抽取人數(shù),各類獎(jiǎng)項(xiàng)中獎(jiǎng)人數(shù)及按秒滾動(dòng)的人員姓名框,如圖5?! 、在主窗口的timer事件中加入隨機(jī)抽取記錄腳本,定義游標(biāo)等,因?yàn)橐黄林伙@示10位員工,所以只隨機(jī)抽取10條記錄: DECLARE
7、C1CURSORFOR selecttop10person_id,person_namefromPerson_tablewherechecked='0'orderbyrnd(person_id); OPENC1; FORLI_ROW=1TO10 FETCHC1INTO:p_id[li_row],:name[li_row]; NEXT CLOSEC1; st_1.text=name[1] st_2.text=name[2] st_3.text=name[3] st_4.text=name[4] st_5.text=na