![畢業(yè)設(shè)計(jì)-機(jī)房收費(fèi)管理系統(tǒng)的開發(fā)_第1頁(yè)](http://file4.renrendoc.com/view/dee44e477e01aaf936a46bd00a621d1a/dee44e477e01aaf936a46bd00a621d1a1.gif)
![畢業(yè)設(shè)計(jì)-機(jī)房收費(fèi)管理系統(tǒng)的開發(fā)_第2頁(yè)](http://file4.renrendoc.com/view/dee44e477e01aaf936a46bd00a621d1a/dee44e477e01aaf936a46bd00a621d1a2.gif)
![畢業(yè)設(shè)計(jì)-機(jī)房收費(fèi)管理系統(tǒng)的開發(fā)_第3頁(yè)](http://file4.renrendoc.com/view/dee44e477e01aaf936a46bd00a621d1a/dee44e477e01aaf936a46bd00a621d1a3.gif)
![畢業(yè)設(shè)計(jì)-機(jī)房收費(fèi)管理系統(tǒng)的開發(fā)_第4頁(yè)](http://file4.renrendoc.com/view/dee44e477e01aaf936a46bd00a621d1a/dee44e477e01aaf936a46bd00a621d1a4.gif)
![畢業(yè)設(shè)計(jì)-機(jī)房收費(fèi)管理系統(tǒng)的開發(fā)_第5頁(yè)](http://file4.renrendoc.com/view/dee44e477e01aaf936a46bd00a621d1a/dee44e477e01aaf936a46bd00a621d1a5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
信息科學(xué)技術(shù)學(xué)院2005屆優(yōu)秀畢業(yè)論文匯編(六)機(jī)房收費(fèi)管理系統(tǒng)的開發(fā)姓名:學(xué)號(hào):2001年級(jí):2001級(jí)專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)指導(dǎo)教師:完成日期:2004年05月20日摘要隨著學(xué)校人數(shù)的不斷增加,學(xué)校機(jī)房手工管理的難度也不斷增大。手工計(jì)費(fèi)不但效率低,而且容易出錯(cuò),也不利于定期的統(tǒng)計(jì)工作。為了減輕機(jī)房管理人員負(fù)擔(dān)以及提高工作效率,本文詳細(xì)介紹了一個(gè)機(jī)房收費(fèi)管理系統(tǒng)的開發(fā)過程。這個(gè)系統(tǒng)是單機(jī)版的基于門禁技術(shù)的管理系統(tǒng)。它具有使用方便、安全可靠等特點(diǎn)。系統(tǒng)以VisualBasic和Access作為開發(fā)工具,采用Windows的圖形界面,支持條形碼閱讀器讀取帳戶信息和鍵盤輸入信息兩種方式進(jìn)行上機(jī)登記,具有跟蹤顯示帳戶余額、下機(jī)帳戶結(jié)算、支持機(jī)房收入查詢以及數(shù)據(jù)備份和還原功能,實(shí)現(xiàn)了機(jī)房上機(jī)收費(fèi)的高效率管理。系統(tǒng)由軟件計(jì)算費(fèi)用,避免了人工計(jì)算造成的失誤,也減少了管理人員的工作負(fù)擔(dān)。這個(gè)系統(tǒng)還帶有條形碼編制和打印功能。通過條形碼編制,將所有學(xué)生帳戶與相應(yīng)條形碼對(duì)應(yīng),基本杜絕了他人仿冒使用帳號(hào)的可能。關(guān)鍵詞:收費(fèi)管理系統(tǒng);門禁技術(shù);條形碼
AbstractThemanualmanagementofthecampuscomputercenterismoredifficultwiththeincreasingofthenumberoftheundergraduate.Thetraditionalmanualaccountinghastheshortcomingoflowefficiency,highinaccuracyandgoingagainsttheregularstatisticwork.Amanagementsystemforcomputercenter’saccountingisdevelopedinthethesisforlighteningtheburdenofthemanagersandimprovingtheworkefficiency. Thismanagementsystemisbasedonthedoorlimittechniqueandusedforstandaloneterminal,whichhastheadvantagesofconvenience,securityandhighreliability,etc.DevelopedwithVisualBasicandAccess,thesystemsupportstheWindowsgraphicalinterfacesandmakestheefficientaccountingmanagementrealization.Withthesystem,userscanregisterfromthebarcodereaderaswellasthekeyboard,andmangercantraceanddealwiththeuser’saccountbalance,inquirythecenterincoming,backupandrestorethedata.Accountingbythesoftware,itwillavoidthemistakescreatedbythemanualcomputationandreducethemanager'sload.Thesystemsupportstheestablishmentandprintingofthebarcode,whichbindingtotheaccountandputsanendtothecounterfeit.Keywords:accountingmanagementsystem;doorlimittechnique;barcode
目錄1引言………………(1)2機(jī)房收費(fèi)管理系統(tǒng)的現(xiàn)狀………(1)3背景知識(shí)………………………(2)3.1VisualBasic………………(2)3.2MicrosoftAccess……………………(2)3.2.1數(shù)據(jù)庫(kù)概念…………………(2)3.2.2為數(shù)據(jù)庫(kù)設(shè)置密碼…………(3)3.2.3事務(wù)概念……………………(3)3.3條形碼技術(shù)……………(4)3.3.1條形碼概念…………………(4)3.3.2條形碼碼制…………………(5)3.3.3EAN-13碼的編制……………(6)4系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)……………(7)4.1總體設(shè)計(jì)…………………(7)4.1.1系統(tǒng)模塊設(shè)計(jì)………………(7)4.1.2數(shù)據(jù)庫(kù)設(shè)計(jì)…………………(10)4.2系統(tǒng)實(shí)現(xiàn)………………(12)4.2.1主要界面設(shè)計(jì)………………(12)4.2.2功能模塊設(shè)計(jì)與實(shí)現(xiàn)………(14)5總結(jié)………………………(20)致謝…………(20)參考文獻(xiàn)……………………(21)附件…………(22)1、引言目前,在部分高校中,計(jì)算機(jī)機(jī)房的上機(jī)收費(fèi)仍然采用傳統(tǒng)的人工計(jì)時(shí)方式,即學(xué)生憑有效證件前來(lái)上機(jī),由機(jī)房管理人員手工登記開始時(shí)間和結(jié)束時(shí)間,然后按實(shí)際機(jī)時(shí)進(jìn)行計(jì)算并收取相應(yīng)費(fèi)用。人工計(jì)時(shí)收費(fèi)方式不但效率低,而且容易出錯(cuò),也不利于定期的統(tǒng)計(jì)工作。隨著高校學(xué)生人數(shù)的不斷增加,這些工作的難度和強(qiáng)度也在不斷加大,給機(jī)房管理部門帶來(lái)了很大壓力。機(jī)房收費(fèi)管理系統(tǒng)是典型的信息管理系統(tǒng)(MIS),其開發(fā)工作主要包括后臺(tái)數(shù)據(jù)庫(kù)的建立和維護(hù)以及前端應(yīng)用程序的開發(fā)兩個(gè)方面。對(duì)于前者要求建立起具有資料一致性和完整性的數(shù)據(jù)庫(kù),對(duì)于后者則要求具有界面美觀大方,應(yīng)用程序功能完備,操作簡(jiǎn)單方便等特點(diǎn)。本系統(tǒng)的開發(fā)是為了從一定程度上幫助提高機(jī)房收費(fèi)管理的工作效率,以適應(yīng)機(jī)房收費(fèi)管理現(xiàn)代化的需要。本系統(tǒng)通過條形碼閱讀器讀取帳戶信息,進(jìn)行上機(jī)登記、計(jì)算上機(jī)費(fèi)用、跟蹤顯示帳戶余額、支持機(jī)房收入查詢,從而實(shí)現(xiàn)了機(jī)房上機(jī)收費(fèi)的高效率管理。通過對(duì)該系統(tǒng)功能及應(yīng)用各方面的綜合分析,本系統(tǒng)使用了VisualBasic6.0作為開發(fā)工具,利用其提供的各種面向?qū)ο蟮拈_發(fā)工具,首先在短時(shí)間內(nèi)建立系統(tǒng)應(yīng)用原型,然后對(duì)初始系統(tǒng)進(jìn)行不斷修正和改進(jìn),直到形成系統(tǒng)功能齊全、操作方便的可行系統(tǒng)。 機(jī)房收費(fèi)管理系統(tǒng)的現(xiàn)狀目前計(jì)算機(jī)機(jī)房收費(fèi)系統(tǒng)的具體實(shí)施方案有多種,主要可分為單機(jī)和聯(lián)網(wǎng)兩種方式,其中單機(jī)方式又可以分為純軟件方式、門禁方式和純硬件方式。純軟件方式的機(jī)房管理系統(tǒng),在服務(wù)器上建立包含上機(jī)者信息的中心數(shù)據(jù)庫(kù),其中包含了上機(jī)者的所有信息,如姓名、學(xué)號(hào)、帳戶金額等;上機(jī)前先輸入帳戶名稱和密碼,核對(duì)無(wú)誤且?guī)艚痤~足夠時(shí),方允許用戶上機(jī),下機(jī)時(shí)對(duì)相應(yīng)帳戶結(jié)帳退出。由純軟件控制的機(jī)房管理系統(tǒng)的優(yōu)點(diǎn)是成本低廉、構(gòu)造簡(jiǎn)單,缺點(diǎn)則是安全性能不高。門禁方式的機(jī)房管理系統(tǒng),它的硬件部分是通過各種身份識(shí)別卡(如IC卡,ID卡,條碼卡等各種卡片)來(lái)驗(yàn)證用戶身份,但是核心的控制技術(shù)是用軟件來(lái)實(shí)現(xiàn),主體與純軟件系統(tǒng)基本相同,重要特征是在機(jī)房入口處安裝一個(gè)或多個(gè)與主機(jī)相連的讀卡器??蛻羯蠙C(jī)時(shí)需先劃卡驗(yàn)證身份,再輸入相匹配的用戶名和密碼,通過檢查便可使用機(jī)器,否則不能使用。下機(jī)時(shí)需在讀卡器上再次刷卡結(jié)帳。該類系統(tǒng)由于使用了身份識(shí)別卡進(jìn)行身份驗(yàn)證而杜絕了仿冒使用別人帳戶的可能,從而增加了系統(tǒng)安全性,但投資費(fèi)用比軟件方式有所增加。純硬件方式的機(jī)房管理系統(tǒng),是在每臺(tái)客戶機(jī)上安裝一個(gè)IC卡讀取器,將上機(jī)人員的帳戶信息寫入IC卡中,驗(yàn)證身份后方可使用機(jī)器,同時(shí)自動(dòng)扣減IC卡中的費(fèi)用,最后是拔卡下機(jī)。這種方案的系統(tǒng)穩(wěn)定性好,運(yùn)用也比較簡(jiǎn)單,但是投資較大。聯(lián)網(wǎng)方式則是在單機(jī)方式的基礎(chǔ)上增加了服務(wù)器對(duì)客戶機(jī)器進(jìn)行管理的功能,通過網(wǎng)絡(luò)在服務(wù)器上能實(shí)現(xiàn)對(duì)客戶機(jī)的鎖定、查看進(jìn)程、關(guān)機(jī)等一系列管理功能。鑒于學(xué)校機(jī)房的實(shí)際條件和現(xiàn)行的管理方式,本系統(tǒng)采用的是基于門禁技術(shù)的機(jī)房管理系統(tǒng),在身份識(shí)別方面采用的是條形碼識(shí)別技術(shù)。系統(tǒng)將帳戶的各個(gè)主要信息存放在主機(jī)上,并為每個(gè)帳戶編制唯一的條形碼。系統(tǒng)通過對(duì)條形碼的識(shí)別得到帳號(hào),再?gòu)臄?shù)據(jù)庫(kù)中讀取出相關(guān)的帳戶信息,并對(duì)該帳戶進(jìn)行相關(guān)管理。背景知識(shí)VisualBasicVisualBasic是在Windows環(huán)境中廣泛使用的應(yīng)用程序開發(fā)工具。VisualBasic最大的兩個(gè)特點(diǎn)是“可視化”和“事件驅(qū)動(dòng)”?!翱梢暬奔础翱梢暬绦蛟O(shè)計(jì)”,是指開發(fā)圖形用戶界面(GUI)的一種方法,用這種方法,程序員不用編寫大量代碼去描述界面元素的外觀和位置,而只要把預(yù)先建立的界面元素用鼠標(biāo)拖放到屏幕的適當(dāng)位置即可。“事件驅(qū)動(dòng)”是指Windows應(yīng)用程序的運(yùn)行是通過事件來(lái)驅(qū)動(dòng)的,用戶或系統(tǒng)觸發(fā)了某一個(gè)事件,就執(zhí)行程序員在此事件中編寫的一段代碼。由于VisualBasic具有這兩個(gè)特性,使得其在開發(fā)MIS方面具有很大的易用性,因此采用它作為本系統(tǒng)的開發(fā)平臺(tái)。MicrosoftAccess數(shù)據(jù)庫(kù)概念數(shù)據(jù)庫(kù)即數(shù)據(jù)的倉(cāng)庫(kù),是存儲(chǔ)在計(jì)算機(jī)內(nèi)、有組織的、可共享的相關(guān)數(shù)據(jù)的集合。數(shù)據(jù)庫(kù)中的數(shù)據(jù)是高度結(jié)構(gòu)化的,可以存儲(chǔ)大量的數(shù)據(jù),并且能夠方便地進(jìn)行數(shù)據(jù)的查詢,另外數(shù)據(jù)庫(kù)還具有較好的保護(hù)數(shù)據(jù)安全和維護(hù)數(shù)據(jù)一致性的措施,能夠方便數(shù)據(jù)的共享。數(shù)據(jù)庫(kù)系統(tǒng)則是在操作系統(tǒng)支持下為數(shù)據(jù)庫(kù)的建立、使用和維護(hù)配置的軟件系統(tǒng)。MicrosoftAccess是微軟公司開發(fā)的第一個(gè)面向Windows平臺(tái)的關(guān)系型桌面數(shù)據(jù)庫(kù)管理系統(tǒng),它充分利用了Windows平臺(tái)的優(yōu)越性,如圖形界面和Windows的事件驅(qū)動(dòng)機(jī)制等。它可以用來(lái)建立中、小型的數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)。本系統(tǒng)中的數(shù)據(jù)庫(kù)就是用MicrosoftAccess來(lái)建立。為數(shù)據(jù)庫(kù)設(shè)置密碼 使用MicrosoftAccess軟件設(shè)置數(shù)據(jù)庫(kù)密碼很簡(jiǎn)單,只要在關(guān)閉數(shù)據(jù)的情況下,用“獨(dú)占”方式打開數(shù)據(jù)庫(kù),單擊“設(shè)置數(shù)據(jù)庫(kù)密碼”,鍵入自己的密碼即可。下一次打開數(shù)據(jù)庫(kù)時(shí)將檢查密碼。設(shè)置密碼的目的是為了防止他人非法對(duì)數(shù)據(jù)庫(kù)中的信息進(jìn)行修改。在VisualBasic編程中,打開有密碼的數(shù)據(jù)庫(kù)需正確設(shè)置connect屬性“pwd”參數(shù),才能正常使用。在本系統(tǒng)中用以下代碼對(duì)數(shù)據(jù)庫(kù)進(jìn)行連接:Data1.DatabaseName=App.Path+"\data.mdb"Data1.Connect=";pwd=841029"Data1.RecordSource="管理員"事務(wù)概念 數(shù)據(jù)庫(kù)系統(tǒng)在運(yùn)行中需要執(zhí)行大量的數(shù)據(jù)更新操作,萬(wàn)一發(fā)生故障,系統(tǒng)將通過事務(wù)管理手段來(lái)確定最近的正確狀態(tài)。從靜態(tài)角度看,事務(wù)(Transaction)是用戶為了完成一次任務(wù)所執(zhí)行的一系列操作,即一段應(yīng)用程序。從動(dòng)態(tài)角度看,它也代表這段程序在機(jī)器上的一次運(yùn)行。事務(wù)是一個(gè)不可再分的邏輯工作單元。在事務(wù)執(zhí)行之前數(shù)據(jù)庫(kù)處于某個(gè)正確狀態(tài),事務(wù)執(zhí)行完后,數(shù)據(jù)庫(kù)處于另一個(gè)正確狀態(tài)。事務(wù)的開始與結(jié)束可以由用戶顯式控制。定義事務(wù)的語(yǔ)句有3條:BeginTransCommitTransRollback其中,BeginTrans表示事務(wù)的開始;CommitTrans表示事務(wù)的提交,即將事務(wù)中所有對(duì)數(shù)據(jù)庫(kù)的更新寫回到磁盤上的物理數(shù)據(jù)庫(kù)中去,此時(shí)事務(wù)正常結(jié)束;Rollback表示事務(wù)的回滾,即在事務(wù)運(yùn)行的過程中發(fā)生了某種故障,事務(wù)不能繼續(xù)運(yùn)行,系統(tǒng)將事務(wù)中對(duì)數(shù)據(jù)庫(kù)的所有已完成的更新操作全部撤銷,再回滾到事務(wù)的開始狀態(tài)。事務(wù)是恢復(fù)和并發(fā)控制的基本單位。本系統(tǒng)中,事務(wù)管理操作的主要應(yīng)用在客戶下機(jī)時(shí)對(duì)帳戶相關(guān)信息的修改上。上機(jī)情況表、學(xué)生表以及上機(jī)流水帳表三個(gè)數(shù)據(jù)表的修改缺一不可,任何一個(gè)處理故障都將會(huì)給系統(tǒng)管理帶來(lái)難以預(yù)料的錯(cuò)誤。加入事務(wù)管理操作后,如果系統(tǒng)在處理數(shù)據(jù)庫(kù)數(shù)據(jù)時(shí)發(fā)生錯(cuò)誤,都將會(huì)退回到事務(wù)處理之前的狀態(tài),并會(huì)彈出信息框?qū)τ脩暨M(jìn)行提示。條形碼技術(shù)條形碼概念條形碼技術(shù)是在計(jì)算機(jī)應(yīng)用和實(shí)踐中產(chǎn)生并發(fā)展起來(lái)的廣泛應(yīng)用于商業(yè)、郵政、圖書管理、倉(cāng)儲(chǔ)、工業(yè)生產(chǎn)過程控制、交通等領(lǐng)域的一種自動(dòng)識(shí)別技術(shù),具有輸入速度快、準(zhǔn)確度高、成本低、可靠性強(qiáng)等優(yōu)點(diǎn),在當(dāng)今的自動(dòng)識(shí)別技術(shù)中占有重要的地位。條形碼是由一組規(guī)則排列的條、空以及對(duì)應(yīng)的字符組成的標(biāo)記,“條”指對(duì)光線反射率較低的部分,“空”指對(duì)光線反射率較高的部分,這些條和空組成的數(shù)據(jù)表達(dá)一定的信息,并能夠用特定的設(shè)備識(shí)讀,轉(zhuǎn)換成與計(jì)算機(jī)兼容的二進(jìn)制和十進(jìn)制信息。通常對(duì)于每一種物品,它的編碼是唯一的,對(duì)于普通的一維條碼來(lái)說(shuō),還要通過數(shù)據(jù)庫(kù)建立條碼與商品信息的對(duì)應(yīng)關(guān)系,當(dāng)條碼的數(shù)據(jù)傳到計(jì)算機(jī)上時(shí),由計(jì)算機(jī)上的應(yīng)用程序?qū)?shù)據(jù)進(jìn)行操作和處理。因此,普通的一維條碼在使用過程中僅作為識(shí)別信息,它的意義是通過在計(jì)算機(jī)系統(tǒng)的數(shù)據(jù)庫(kù)中提取相應(yīng)的信息而實(shí)現(xiàn)的。條形碼碼制條形碼的碼制即指條碼條和空的排列規(guī)則,常用的一維碼的碼制包括:EAN碼、39碼、128碼、93碼、25碼及Codabar(庫(kù)德巴碼)等。不同的碼制有它們各自的應(yīng)用領(lǐng)域:EAN碼:是國(guó)際通用的符號(hào)體系,是一種長(zhǎng)度固定、無(wú)含意的條碼,所表達(dá)的信息全部為數(shù)字,主要應(yīng)用于商品標(biāo)識(shí)。39碼和128碼:為目前國(guó)內(nèi)企業(yè)內(nèi)部自定義碼制,可以根據(jù)需要確定條碼的長(zhǎng)度和信息,它編碼的信息可以是數(shù)字,也可以包含字母,主要應(yīng)用于工業(yè)生產(chǎn)線領(lǐng)域、圖書管理等。93碼:是一種類似于39碼的條碼,它的密度較高,能夠替代39碼。25碼:只要應(yīng)用于包裝、運(yùn)輸以及國(guó)際航空系統(tǒng)的機(jī)票順序編號(hào)等。Codabar碼:應(yīng)用于血庫(kù)、圖書館、包裹等的跟蹤管理。其中EAN碼具有以下特性:只能儲(chǔ)存數(shù)字??呻p向掃描處理,即條碼可由左至右或由右至左掃描。必須有一檢驗(yàn)碼,以防誤讀資料的情形發(fā)生,其位于EAN碼中的最右邊處。具有起始符、中間符及終止符,以分隔條碼上的不同部分與擷取適當(dāng)?shù)陌踩臻g來(lái)處理。條碼長(zhǎng)度一定,較欠缺彈性,但經(jīng)由適當(dāng)?shù)墓艿?,可使其通用於世界各?guó)。依結(jié)構(gòu)的不同,可區(qū)分為:EAN-13碼:由13個(gè)數(shù)字組成,為EAN的標(biāo)準(zhǔn)編碼型式。EAN-8碼:由8個(gè)數(shù)字組成,屬EAN的簡(jiǎn)易編碼型式。本系統(tǒng)中,由于學(xué)號(hào)的唯一性,采用其作為帳戶的名稱,而學(xué)號(hào)的數(shù)據(jù)位長(zhǎng)度有10位和11位兩種。根據(jù)各種碼制的特性,采用的是最適合的EAN-13編碼方式。EAN-13碼的編制EAN標(biāo)準(zhǔn)碼共13位數(shù),包括一個(gè)前置碼,以及一個(gè)檢驗(yàn)碼,因此可供使用的數(shù)據(jù)位數(shù)為11位。EAN-13的編碼由起始符,左側(cè)數(shù)據(jù)符(6位數(shù)字),中間符,右側(cè)數(shù)據(jù)符(5位數(shù)字),檢驗(yàn)符(1位數(shù)字),終止符五個(gè)部分組成。其中前置碼不用符號(hào)表示,不包括在左側(cè)數(shù)據(jù)符內(nèi)。EAN-13的結(jié)構(gòu)如圖3-1所示:圖3-1EAN-13碼結(jié)構(gòu)EAN-13碼符號(hào)構(gòu)成如表3-1所示:表3-1EAN-13碼符號(hào)構(gòu)成左側(cè)空白區(qū)起始符左側(cè)數(shù)據(jù)符中間分隔符右側(cè)數(shù)據(jù)符檢驗(yàn)符終止符右側(cè)空白區(qū)9個(gè)模塊3個(gè)模塊42個(gè)模塊5個(gè)模塊35個(gè)模塊7個(gè)模塊3個(gè)模塊9個(gè)模塊在EAN碼中一個(gè)模塊的寬度為。
EAN條形碼具有檢驗(yàn)碼,從而具有了自檢功能,即當(dāng)條形碼中信息段(左、右側(cè)數(shù)據(jù)符)各字符被閱讀器進(jìn)行解碼閱讀時(shí),閱讀器就將按照檢驗(yàn)步驟進(jìn)行同一種運(yùn)算,并將運(yùn)算結(jié)果與檢驗(yàn)碼進(jìn)行比較,當(dāng)二者一致時(shí),說(shuō)明讀入的信息有效,否則無(wú)效。EAN-13檢驗(yàn)碼的計(jì)算方法:(1).C1為前十二位碼中奇數(shù)位的數(shù)字求和;(2).C2為前十二位碼中偶數(shù)位的數(shù)字求和;(3).C2=C2*3(3).CC=(C1+C2)取個(gè)位數(shù);(4).C(檢驗(yàn)碼)=10-CC(若值為10,則取0)。EAN-13碼的編碼規(guī)則如表3-2所示:表3-2EAN-13碼編碼規(guī)則數(shù)字符左側(cè)數(shù)據(jù)符右側(cè)數(shù)據(jù)符ABC0000110101001111110010100110010110011110011020010011001101111011003011110101000011000010401000110011101101110050110001011100110011106010111100001011010000701110110010001100010080110111000100110010009000101100101111110100起始符:101中間分隔符:01010終止符:101。A、B、C中的“0”和“1”分別表示具有一個(gè)模塊寬度的“空”和“條”。因?yàn)樽髠?cè)數(shù)據(jù)編碼方式有兩種,要按照前置碼的不同選其中一種。(如表3-3所示:)EAN標(biāo)準(zhǔn)碼的尺寸:寬:全部
條碼起始符/分隔符/終止符放大倍數(shù):0.8--2表3-3EAN-13碼編碼方式前置字符左側(cè)數(shù)據(jù)符編碼規(guī)則的選擇0AAAAAA1AABABB2AABBAB3AABBBA4ABAABB5ABBAAB6ABBBAA7ABABAB8ABABBA9ABBABA4、系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)4.1總體設(shè)計(jì)系統(tǒng)模塊設(shè)計(jì)根據(jù)系統(tǒng)功能要求可以將系統(tǒng)分解成系統(tǒng)管理、帳戶管理、條碼編制和信息查詢四大模塊(如圖4-1所示):其中各模塊應(yīng)該實(shí)現(xiàn)的功能:⑴系統(tǒng)管理模塊(如圖4-2所示):功能簡(jiǎn)介:○修改用戶密碼能夠?qū)崿F(xiàn)對(duì)當(dāng)前登陸用戶的密碼修改。 ○添加刪除用戶是系統(tǒng)管理員具有的功能,方便管理員管理。 ○可根據(jù)不同的時(shí)間調(diào)整系統(tǒng)計(jì)費(fèi)的費(fèi)率。滿足不同時(shí)期管理要求。○使用前可設(shè)置將要管理的計(jì)算機(jī)數(shù)目,程序運(yùn)行時(shí),會(huì)根據(jù)實(shí)際需要調(diào)整數(shù)據(jù)庫(kù)中相應(yīng)表的項(xiàng)目數(shù),提高系統(tǒng)運(yùn)行效率。○數(shù)據(jù)的備份與還原功能是管理信息系統(tǒng)中不可缺少的部分,當(dāng)系統(tǒng)出現(xiàn)重大故障后,數(shù)據(jù)還原功能能夠用您以前備份的數(shù)據(jù)還原,減少故障造成的損失?!甬?dāng)用戶有事暫時(shí)離開時(shí),為防止他人使用本系統(tǒng),可啟用自我鎖定功能,它將對(duì)系統(tǒng)起到保護(hù)作用,系統(tǒng)解鎖時(shí)只需輸入當(dāng)前登陸的用戶名稱和密碼即可。⑵帳戶管理模塊(如圖4-3所示):功能簡(jiǎn)介:○為每一個(gè)前來(lái)上機(jī)的學(xué)生根據(jù)學(xué)號(hào)建立對(duì)應(yīng)帳戶,保存客戶的所有信息,是上機(jī)消費(fèi)的前提?!鹩脩羯蠙C(jī)消費(fèi),根據(jù)其具體消費(fèi)所用時(shí)間,計(jì)算實(shí)際消費(fèi)金額,并在客戶的帳戶余額中進(jìn)行扣除?!甬?dāng)客戶的帳戶余額不足時(shí),系統(tǒng)將限制其上機(jī),客戶需在充值了足夠金額后才能繼續(xù)消費(fèi)。○客戶可對(duì)其帳戶信息進(jìn)行查詢,包括帳戶余額、消費(fèi)次數(shù)、累計(jì)上機(jī)金額,最后上機(jī)時(shí)間等信息。 ⑶條形碼編制、打印模塊:由于每個(gè)學(xué)生的學(xué)號(hào)的唯一性,根據(jù)EAN-13的編碼規(guī)則對(duì)學(xué)號(hào)進(jìn)行編碼,并用打印機(jī)打印出來(lái)。此條形碼即是客戶上機(jī)消費(fèi)的憑證??蛻羯蠙C(jī)時(shí),通過對(duì)條形碼的掃描可在帳戶中讀取相應(yīng)信息進(jìn)行登記。結(jié)帳時(shí)對(duì)條形碼再次掃描,依此修改相應(yīng)帳戶信息,完成上機(jī)消費(fèi)過程。⑷信息查詢模塊:管理人員可對(duì)機(jī)房運(yùn)行情況進(jìn)行查詢,如當(dāng)天上機(jī)人次以及消費(fèi)金額等等,并能夠?qū)⒉樵兘Y(jié)果打印出來(lái)。數(shù)據(jù)庫(kù)設(shè)計(jì) 根據(jù)系統(tǒng)功能設(shè)計(jì)的要求以及功能模塊的劃分,對(duì)于系統(tǒng)用戶信息數(shù)據(jù)庫(kù),以下列出了其中各個(gè)表的數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu): (1).名稱:管理員 如表4-1所示,管理員數(shù)據(jù)表包括name、pass兩個(gè)字段。此表中儲(chǔ)存的是系統(tǒng)的用戶信息,表中固定有admin用戶,是唯一的系統(tǒng)管理員用戶,可行使所有的系統(tǒng)管理功能。表4-1管理員表結(jié)構(gòu)字段名稱類型主鍵非空Name文本YesNoPass文本NoNo(2).名稱:上機(jī)流水帳如表4-2所示,上級(jí)流水帳表包括ID、學(xué)號(hào)、上機(jī)時(shí)間、結(jié)帳時(shí)間、結(jié)帳金額、Name六個(gè)字段。每當(dāng)一個(gè)客戶結(jié)帳消費(fèi)后,系統(tǒng)自動(dòng)在上機(jī)流水帳表中加入一條記錄,記錄不僅包括客戶上機(jī)消費(fèi)的完整信息,還包括了管理此次消費(fèi)的用戶名稱。此表是上機(jī)情況統(tǒng)計(jì)的依據(jù)。表4-2上機(jī)流水帳表結(jié)構(gòu)字段名稱類型主鍵非空ID數(shù)字YesNo學(xué)號(hào)數(shù)字NoNo上機(jī)時(shí)間文本NoNo結(jié)帳時(shí)間文本NoNo結(jié)帳金額數(shù)字NoNoName文本NoNo(3).名稱:上機(jī)情況如表4-3所示,上級(jí)情況表包括機(jī)號(hào)、學(xué)號(hào)、開始時(shí)間、帳戶金額、是否計(jì)費(fèi)五個(gè)字段。當(dāng)客戶上機(jī)時(shí),在表中查找第一個(gè)“是否計(jì)費(fèi)”項(xiàng)的值非“消費(fèi)中”的記錄,根據(jù)客戶上機(jī)信息進(jìn)行修改,設(shè)置“是否計(jì)費(fèi)”項(xiàng)的值為“消費(fèi)中”;并在系統(tǒng)主界面中顯示出來(lái)。客戶結(jié)帳時(shí),對(duì)相應(yīng)的上機(jī)記錄修改,并清除其在系統(tǒng)主界面的顯示。表4-3上機(jī)情況表結(jié)構(gòu)字段名稱類型主鍵非空機(jī)號(hào)數(shù)字YesNo學(xué)號(hào)數(shù)字NoNo開始時(shí)間文本NoNo帳戶金額數(shù)字NoNo是否計(jì)費(fèi)文本NoNo (4).名稱:學(xué)生如表4-4所示,學(xué)生表包括學(xué)號(hào)、姓名、帳戶余額、上機(jī)次數(shù)、累計(jì)上機(jī)金額、最后上機(jī)時(shí)間六個(gè)字段。此表包含了學(xué)生帳戶的主要信息,在此表中為學(xué)生建立帳戶后,依據(jù)帳戶消費(fèi)與充值的情況修改記錄,是帳戶查詢功能的依據(jù)。表4-4學(xué)生表結(jié)構(gòu)字段名稱類型主鍵非空學(xué)號(hào)數(shù)字YesNo姓名文本NoNo帳戶余額數(shù)字NoNo上機(jī)次數(shù)數(shù)字NoNo累計(jì)上機(jī)金額數(shù)字NoNo最后上機(jī)時(shí)間文本NoNo(5)名稱: 自定義如表4-5所示,上級(jí)流水帳表包括臺(tái)數(shù)、單價(jià)、單價(jià)new、單價(jià)改變四個(gè)字段。顧名思義,自定義表中包含著管理員對(duì)系統(tǒng)的自定義信息,包括計(jì)算機(jī)數(shù)目以及上機(jī)的費(fèi)率。表4-5自定義表結(jié)構(gòu)字段名稱類型主鍵非空臺(tái)數(shù)數(shù)字NoNo單價(jià)文本NoNo單價(jià)new文本NoNo單價(jià)改變布爾NoNo 4.2系統(tǒng)實(shí)現(xiàn)主要界面設(shè)計(jì)
用戶登陸界面(如圖4-4所示):圖4-4用戶登陸界面當(dāng)用戶名稱和密碼與管理員表中對(duì)應(yīng)的數(shù)據(jù)項(xiàng)相符時(shí),才能登入系統(tǒng),否則將清除輸入內(nèi)容,并提醒用戶重新輸入。在此窗體運(yùn)用了以下代碼:.MoveLast.MoveFirstForI=1To.RecordCountCombo1.AddItem.Fields(0).MoveNextNextIEndWith通過此段代碼,用戶名稱欄將根據(jù)管理員表中數(shù)據(jù)項(xiàng)目自動(dòng)添加,因此用戶可不必鍵入用戶名,直接在下拉列表中選擇,方便了用戶使用。
主界面(如圖4-5所示):圖4-5主界面主界面的菜單由菜單編輯器編輯,上機(jī)情況則用MSFlexGrid控件來(lái)顯示,能夠?qū)崟r(shí)的反映當(dāng)前上機(jī)的具體情況。為了使用戶能夠方便快捷的使用本管理系統(tǒng),在工具欄還設(shè)計(jì)了上機(jī)、結(jié)帳、報(bào)表以及幫助四個(gè)常用功能的快捷按鈕。在狀態(tài)欄中,能夠顯示出當(dāng)前的系統(tǒng)時(shí)間以及計(jì)費(fèi)中的電腦數(shù)目。
用戶管理界面(如圖4-6所示):圖4-6用戶管理界面通過此界面可以進(jìn)行添加、刪除用戶的操作,這是系統(tǒng)管理員才能執(zhí)行的功能。為實(shí)現(xiàn)系統(tǒng)的簡(jiǎn)單與易用,本系統(tǒng)只設(shè)置了一個(gè)系統(tǒng)管理員用戶“admin”,其余都是一般用戶。系統(tǒng)管理員用戶不能被刪除。
帳戶管理界面(如圖4-7所示):4-7帳戶管理界面 此界面是對(duì)帳戶信息查詢和修改的主界面,界面中間顯示的是所有帳戶的詳細(xì)信息,下面的四個(gè)功能按鈕分別對(duì)應(yīng)四個(gè)與帳戶相關(guān)的操作。功能模塊設(shè)計(jì)與實(shí)現(xiàn)○系統(tǒng)管理模塊:系統(tǒng)管理模塊主要包含以下幾個(gè)功能:修改密碼、添加刪除用戶、設(shè)置計(jì)算機(jī)數(shù)目、修改費(fèi)率、數(shù)據(jù)備份與還原以及系統(tǒng)自我鎖定。它們的設(shè)計(jì)思路與實(shí)現(xiàn)方法分別如下:修改密碼只針對(duì)當(dāng)前登陸的用戶有效,也就是只能修改登陸用戶本身的密碼。而不能對(duì)系統(tǒng)其他用戶進(jìn)行修改。若管理員用戶需要修改其他用戶密碼,則可通過刪除相應(yīng)用戶,再用新密碼將此用戶添加實(shí)現(xiàn)。修改密碼窗體如圖4-8所示:圖4-8修改密碼窗體添加刪除用戶、設(shè)置計(jì)算機(jī)數(shù)目以及修改費(fèi)率都是在管理員權(quán)限下的管理功能,其他用戶單擊此類菜單時(shí),會(huì)彈出提示框(如圖4-9所示)提醒用戶。為了方便機(jī)房管理人員的管理,本系統(tǒng)為計(jì)算機(jī)數(shù)目以及費(fèi)率專門建了一張表,當(dāng)管理員修改費(fèi)率后,并不是直接生效,而是將其寫入表中,并設(shè)置單價(jià)改變的標(biāo)志位為真,當(dāng)窗體重新加載時(shí),根據(jù)標(biāo)志位的值,從表中讀出用戶設(shè)置的費(fèi)率。圖4-9權(quán)限提示框數(shù)據(jù)備份與還原能將當(dāng)前的數(shù)據(jù)庫(kù)備份至您指定位置,也能根據(jù)您以前備份的數(shù)據(jù)進(jìn)行還原。因?yàn)檎诖蜷_的文件不能夠用FileCopy函數(shù)復(fù)制,這段程序代碼中應(yīng)用到了數(shù)據(jù)庫(kù)的關(guān)閉方法,在關(guān)閉數(shù)據(jù)庫(kù)后進(jìn)行數(shù)據(jù)庫(kù)的備份和還原。由于還原后當(dāng)前的數(shù)據(jù)庫(kù)內(nèi)容將被清除,因此為避免出現(xiàn)不可意料的錯(cuò)誤,還原前提示用戶將當(dāng)前數(shù)據(jù)庫(kù)進(jìn)行備份。如在此項(xiàng)過程中遇到問題,可參照幫助系統(tǒng)中的幫助文檔解決。(如圖4-10所示):圖4-10數(shù)據(jù)還原提示框系統(tǒng)自我鎖定:當(dāng)管理員有事離開時(shí),并不方便將系統(tǒng)關(guān)閉,為了防止此時(shí)他人對(duì)系統(tǒng)進(jìn)行操作,特設(shè)置此功能將系統(tǒng)鎖定,只有在輸入正確當(dāng)前用戶名和密碼后才能解鎖,恢復(fù)對(duì)系統(tǒng)的控制。(如圖4-11所示):圖4-11系統(tǒng)鎖定窗體○帳戶管理模塊帳戶管理模塊包含創(chuàng)建帳戶、帳戶消費(fèi)、帳戶充值以及帳戶查詢功能。 創(chuàng)建帳戶時(shí),由于學(xué)號(hào)的唯一性,本系統(tǒng)采用學(xué)號(hào)作為帳戶名稱,只需填寫學(xué)生姓名并在帳戶中充值一定的金額即可完成帳戶創(chuàng)建。帳戶創(chuàng)建的窗體(如圖4-12所示):圖4-12帳戶創(chuàng)建窗體 帳戶消費(fèi)包括上機(jī)和結(jié)帳兩個(gè)過程,是收費(fèi)系統(tǒng)中最基本的功能:學(xué)生通過條形碼掃描上機(jī)時(shí),系統(tǒng)會(huì)提示該帳戶現(xiàn)存的金額。在上機(jī)過程中,系統(tǒng)會(huì)定時(shí)對(duì)所有上機(jī)情況進(jìn)行掃描,計(jì)算上機(jī)帳戶的余額與上機(jī)所需費(fèi)用的差額,當(dāng)其金額小于系統(tǒng)設(shè)置的計(jì)費(fèi)費(fèi)率時(shí),系統(tǒng)會(huì)對(duì)管理人員進(jìn)行提示(如圖4-13所示):圖4-13帳戶追蹤提示管理員即可據(jù)此提醒該帳戶對(duì)應(yīng)的上機(jī)者及時(shí)充值,實(shí)現(xiàn)了對(duì)帳戶的實(shí)時(shí)追蹤??蛻艚Y(jié)帳時(shí),使用DateDiff函數(shù)(這個(gè)函數(shù)的作用是對(duì)兩個(gè)指定的日期按日期形式求相差的間隔)計(jì)算出客戶上機(jī)消費(fèi)的具體時(shí)間mm,并用以下代碼計(jì)算消費(fèi)的金額:PublicFunctionJF(mm)AsSingleJF=(mm\30)*Dj/2IfmmMod30>10ThenJF=JF+Dj/2EndIfIfJF=0ThenJF=Dj/2EndFunction系統(tǒng)根據(jù)計(jì)算結(jié)果在學(xué)生表和上機(jī)情況表中對(duì)相應(yīng)記錄進(jìn)行修改,并在上機(jī)流水帳表中添加上機(jī)記錄。由于是對(duì)多張表中數(shù)據(jù)同時(shí)進(jìn)行修改,因此在這段程序代碼中,要以事務(wù)管理方式對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,否則當(dāng)系統(tǒng)處理過程中遇到錯(cuò)誤時(shí),極有可能造成數(shù)據(jù)庫(kù)各個(gè)表中相應(yīng)的數(shù)據(jù)不一致,最終導(dǎo)致系統(tǒng)不能正常運(yùn)行。系統(tǒng)運(yùn)行過程中,每個(gè)時(shí)刻的上機(jī)情況都會(huì)在狀態(tài)欄進(jìn)行顯示,當(dāng)顯示的上機(jī)數(shù)目不為零時(shí),用戶將不能對(duì)系統(tǒng)進(jìn)行正常的關(guān)閉,這避免了由于系統(tǒng)的關(guān)閉而使客戶的上機(jī)消費(fèi)時(shí)間的計(jì)算出現(xiàn)錯(cuò)誤。 當(dāng)客戶帳戶金額不足時(shí),需要對(duì)帳戶金額進(jìn)行充值。帳戶成功充值后會(huì)即時(shí)提示帳戶現(xiàn)有的金額。(如圖4-14所示):圖4-14帳戶成功充值提示框本系統(tǒng)中所有的帳戶信息用一個(gè)MSFlexGrid控件在窗體中顯示,初始化界面時(shí),窗體中的帳戶按照學(xué)號(hào)的索引排列。在使用帳戶查詢功能時(shí),如查詢到相應(yīng)的帳戶記錄,則將此項(xiàng)記錄放到表格的第一行顯示(如圖4-15所示),簡(jiǎn)化了程序代碼的編寫。圖4-15帳戶查詢結(jié)果顯示○ 條形碼編制和打印模塊 條形碼編制和打印模塊是本系統(tǒng)中一個(gè)比較復(fù)雜的模塊,本系統(tǒng)采用了EAN-13的編碼方式,由于左側(cè)數(shù)據(jù)符有奇排列和偶排列兩種方式,右側(cè)數(shù)據(jù)符另有一種排列方式。為了簡(jiǎn)化編碼,本系統(tǒng)采用0作為前置碼,從而左側(cè)數(shù)據(jù)符統(tǒng)一采用奇排列,在程序中建立了一個(gè)一維數(shù)組用于存儲(chǔ)每個(gè)數(shù)字的編碼方式對(duì)應(yīng)的條與空的模塊數(shù)。通過以下代碼計(jì)算檢驗(yàn)碼:Check=Array1(1)+Array1(3)+Array1(5)+Array1(7)+Array1(9)+Array1(11)Check=Check*3Check1=Array1(2)+Array1(4)+Array1(6)+Array1(8)+Array1(10)+Array1(0)Check=Check+Check1Check=CheckMod10IfCheck=0ThenArray1(12)=0ElseArray1(12)=10-CheckEndIf在計(jì)算好帳戶的檢驗(yàn)碼后,為帳戶的每位數(shù)字調(diào)用自定義的打印子程序,從而將整個(gè)帳戶的條形碼打印出來(lái)。本模塊中是使用打印機(jī)對(duì)象打印條形碼。在代碼中用到了printer的ScaleMode(打印機(jī)的度量單位)、CurrentX(打印機(jī)當(dāng)前水平坐標(biāo))、CurrentY(打印機(jī)當(dāng)前垂直坐標(biāo))三個(gè)屬性。打印結(jié)果如圖4-16所示:圖4-16打印的條形碼○信息查詢模塊 信息查詢模塊提供了對(duì)當(dāng)天以及當(dāng)月上機(jī)情況和計(jì)費(fèi)情況的總計(jì)查詢,對(duì)當(dāng)天消費(fèi)情況的查詢代碼如下:ForI=1To.RecordCountIfFormat$(.Fields(2),"ddddd")=DateThenMoney=Val(.Fields(4))+Moneytimes=times+1EndIf.MoveNextNextIlinestr="本日上機(jī)人次:"&Space(4)×linestr1="本日消費(fèi)金額:"&Space(4)&Money&"元"對(duì)當(dāng)月消費(fèi)情況的查詢與此類似。對(duì)查詢結(jié)果的打印采用的是打印機(jī)對(duì)象,直接將查詢得到的兩個(gè)結(jié)果字符串傳輸?shù)酱蛴C(jī),設(shè)置相關(guān)位置參數(shù)后進(jìn)行打印。(如圖4-17所示):圖4-17信息查詢模塊界面5、總結(jié) 經(jīng)過一個(gè)學(xué)期的認(rèn)真開發(fā)和調(diào)試,終于形成了如今比較完整的機(jī)房收費(fèi)管理系統(tǒng)。本系統(tǒng)較好的實(shí)現(xiàn)了本次設(shè)計(jì)任務(wù)的最高目標(biāo)。經(jīng)過一段時(shí)間的綜合測(cè)試和維護(hù),完善了系統(tǒng)的功能,系統(tǒng)性能也得到了很大提高。本系統(tǒng)足夠勝任現(xiàn)有條件下的學(xué)校機(jī)房管理,將為機(jī)房管理員減輕很多的任務(wù)和負(fù)擔(dān)。在本次機(jī)房收費(fèi)管理系統(tǒng)的開發(fā)過程中,由于掌握知識(shí)的不足以及系統(tǒng)開發(fā)經(jīng)驗(yàn)的缺乏,使得系統(tǒng)不可避免地產(chǎn)生了許多的錯(cuò)誤。通過查閱相關(guān)書籍資料并在老師的指導(dǎo)下才把錯(cuò)誤一一糾正。在系統(tǒng)開發(fā)與調(diào)試過程中,不僅得到了寶貴的系統(tǒng)開發(fā)經(jīng)驗(yàn),也鍛煉了自己獨(dú)力查找文獻(xiàn)、解決問題的能力。由于時(shí)間的限制以及水平的不足,現(xiàn)有系統(tǒng)仍然存在著漏洞和不足,有待進(jìn)一步的發(fā)現(xiàn)和解決,也希望老師同學(xué)不吝批評(píng)和指正。 致謝 本次畢業(yè)設(shè)計(jì)中,吳星老師給予了我很多的指導(dǎo)和關(guān)心,他嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度以及深厚的理論知識(shí)給了我很大的幫助和啟發(fā),讓我能順利完成本次系統(tǒng)的開發(fā)。在此我對(duì)他表示最誠(chéng)摯的感謝,也同樣謝謝那些在本系統(tǒng)開發(fā)過程中給了我?guī)椭耐瑢W(xué)們。
參考文獻(xiàn)黃明,梁旭.VisualBasic6.0信息系統(tǒng)設(shè)計(jì)與開發(fā)實(shí)例.北京:機(jī)械工業(yè)出版社,2004.龔沛曾,陸慰民,楊志強(qiáng).VisualBasic程序設(shè)計(jì)教程(6.0版).北京:高等教育出版社,2000.求是科技,孫越.VisualBasic數(shù)據(jù)庫(kù)開發(fā)自學(xué)教程.北京:人民郵電出版社,2002.譚小丹,劉國(guó)慶,李光明.VisualBasic6.0數(shù)據(jù)庫(kù)編程思想與實(shí)踐.北京:冶金出版社,2002.劉恩濤,趙耀峰.VisualBasic6.0編程技巧與實(shí)例分析.北京:中國(guó)水力水電出版社,1999.李玉東,李罡,李雷.VisualBasic6.0中文版控件大全.北京:電子工業(yè)出版社,2000.東方人華,王晟,凌宇欣.VisualBasic6.0中文版范例入門與提高.北京:清華大學(xué)出版社,2004.盧毅.VisualBasic6數(shù)據(jù)庫(kù)設(shè)計(jì)實(shí)例導(dǎo)航.北京:科學(xué)出版社,2001.楊昕紅.?dāng)?shù)據(jù)庫(kù)基礎(chǔ)-Access北京:電子工業(yè)出版社.2004.鄭小玲,王學(xué)軍.Access項(xiàng)目案例導(dǎo)航.北京:科學(xué)出版社,2003.薩師煊,王珊.?dāng)?shù)據(jù)庫(kù)系統(tǒng)概論.北京:高等教育出版社,2000.王珊,陳紅.?dāng)?shù)據(jù)庫(kù)系統(tǒng)原理.北京:清華大學(xué)出版社,2001.戴宏民.條形碼技術(shù)及應(yīng)用.重慶:重慶人民大學(xué)出版社,1991.黃以群,董湘陵.條形碼技術(shù).北京:國(guó)防工業(yè)出版社,1991.黃志建.條形碼技術(shù)及應(yīng)用.北京:機(jī)械工業(yè)出版社,1992.李金哲.條形碼自動(dòng)識(shí)別技術(shù).北京:國(guó)防工業(yè)出版社,1991.
附件:Frmmain(主界面窗體):OptionExplicitPublicrowsAsIntegerPublicuseridAsStringPublicuserID1AsStringPublicuserfindAsStringDimIAsIntegerDimjAsIntegerPublicuserrmbAsSinglePublicDjAsSingleDimmmAsIntegerPublicpcCountAsIntegerPublicnAsIntegerPublicFunctionJF(mm)AsSingle'計(jì)費(fèi)函數(shù)DimXAsSingleX=mm\30JF=(mm\30)*Dj/2IfmmMod30>10ThenJF=JF+Dj/2EndIfIfJF=0ThenJF=Dj/2EndFunctionPublicSubShowStatus()'在狀態(tài)欄中顯示正在計(jì)費(fèi)的電腦數(shù)目StatusBar1.Panels(2).Text=pcCount&"臺(tái)電腦計(jì)費(fèi)中"EndSubPublicSubClearRow(nAsInteger)'客戶結(jié)帳清除相應(yīng)記錄MSFlexGrid1.Row=nMSFlexGrid1.Col=1MSFlexGrid1.Text=""MSFlexGrid1.Col=2MSFlexGrid1.Text=""MSFlexGrid1.Col=3MSFlexGrid1.Text=""MSFlexGrid1.Col=4MSFlexGrid1.Text=""EndSubPublicSubShowRow(nAsInteger)'客戶上機(jī)顯示相應(yīng)記錄MSFlexGrid1.Row=nMSFlexGrid1.Col=1MSFlexGrid1.Text=Data3.Recordset.Fields(1)MSFlexGrid1.Col=2MSFlexGrid1.Text=Data3.Recordset.Fields(2)MSFlexGrid1.Col=3MSFlexGrid1.Text=Data3.Recordset.Fields(3)MSFlexGrid1.Col=4MSFlexGrid1.Text=Data3.Recordset.Fields(4)EndSubPublicSubDisplay()'顯示表格過程WithMSFlexGrid1.Clear.Row=0.Col=0:.Text="機(jī)號(hào)".Col=1:.Text="學(xué)號(hào)".Col=2:.Text="開始時(shí)間".Col=3:.Text="帳戶金額(元)".Col=4:.Text="是否計(jì)費(fèi)"st'顯示表格內(nèi)容DimIAsIntegerDimjAsInteger.Row=0.Row=.Row+1ForI=0To4.Col=IIfData3.Recordset.Fields(I)<>0Then.Text=Data3.Recordset.Fields(I)EndIfNextLoopEndWithEndSubPublicSubtiaozhen(mAsInteger)'根據(jù)電腦數(shù)目調(diào)整表格Ifm<.RecordCountThenDoUntilm=.RecordCount.MoveLast.Delete.MoveNext.MoveLastLoopElseDoUntilm=.RecordCount.AddNew.Fields(0)=.RecordCount+1.Fields(1)=0.Fields(2)=0.Fields(3)=0.Fields(4)=0.UpdateLoopEndIfEndWithEndSubPrivateSubabout_Click()frmAbout.ShowvbModalEndSubPrivateSubcdhelp1_Click()'打開幫助文檔I=Shell("hh.exe"+""+App.Path+"\help.chm",1)EndSubPrivateSubcdjf_Click()OnErrorGoTojferruserid=Trim(InputBox$("請(qǐng)輸入學(xué)號(hào)","上機(jī)"))Ifuserid<>""Thenuserfind="學(xué)號(hào)="&userid&""ElseExitSubEndIf'查找數(shù)據(jù)庫(kù)看是否有學(xué)生記錄Data4.Recordset.FindFirstuserfindIfData4.Recordset.NoMatchThenMsgBox"該學(xué)生尚未登記,請(qǐng)?zhí)砑?"ExitSubElseIfData4.Recordset.Fields(0)=useridThenuserrmb=Data4.Recordset.Fields("帳戶余額")Ifuserrmb<0ThenMsgBox"該帳號(hào)已無(wú)金額!",vbCriticalExitSubEndIfExitForElseEndIfNextIEndIf'查看該帳號(hào)是否使用Data3.Recordset.FindFirstuserfindIfNotData3.Recordset.NoMatchThenMsgBox"此帳號(hào)正在使用!"ExitSubElse'更新上機(jī)情況.MoveLast.MoveFirstForI=1To.RecordCountIf.Fields(1)=0Thenn=.Fields(0).Edit.Fields(1)=userid.Fields(2)=Now.Fields(3)=userrmb.Fields(4)="計(jì)費(fèi)中".UpdatepcCount=pcCount+1'調(diào)用過程顯示窗體'n=n+1ShowRow(n)'DisplayShowStatusMsgBox"該帳戶現(xiàn)有金額為:"&userrmb&"元"ExitForElse.MoveNextEndIfNextIExitSubEndWithEndIfjferr:riptionEndSubPrivateSubcdjf2_Click()'客戶結(jié)帳OnErrorGoTojf2errDimffAsIntegerDimrmbAsSingleuserid=Trim(InputBox$("請(qǐng)輸入學(xué)號(hào)","結(jié)帳"))Ifuserid<>""Thenuserfind="學(xué)號(hào)="&userid&""ElseExitSubEndIf'查找數(shù)據(jù)庫(kù)看是否有學(xué)生記錄Data4.Recordset.FindFirstuserfindIfData4.Recordset.NoMatchThenMsgBox"該學(xué)生尚未登記!"ExitSubEndIf'查看此客戶是否上機(jī)Data3.Recordset.FindFirstuserfindet.NoMatchThenMsgBox"該帳號(hào)尚未使用!",vbCriticalExitSubElseForI=1ToData3.Recordset.RecordCount IfData3.Recordset.Fields(1)=useridThen '更新上機(jī)記錄'計(jì)算費(fèi)用ff=DateDiff("n",Data3.Recordset.Fields(2),Now)rmb=JF(ff)‘定義數(shù)據(jù)事務(wù)開始BeginTrans'在上機(jī)流水帳中添加一條記錄Data2.Recordset.Fields(0)=Data2.Recordset.RecordCount+1Data2.Recordset.Fields(1)=useridData2.Recordset.Fields(2)=Data3.Recordset.Fields(2)Data2.Recordset.Fields(3)=NowData2.Recordset.Fields(4)=rmbData2.Recordset.Update'在學(xué)生表中修改記錄IfData4.Recordset.Fields(0)=useridThenData4.Recordset.Fields(2)=Data4.Recordset.Fields(2)-rmbData4.Recordset.Fields(3)=Data4.Recordset.Fields(3)+1Data4.Recordset.Fields(4)=Data4.Recordset.Fields(4)+rmbData4.Recordset.Fields(5)=NowExitForElseEndIfNextj'在上機(jī)情況表中修改相應(yīng)記錄IfData3.Recordset.Fields(1)=useridThenn=Data3.Recordset.Fields(0)Data3.Recordset.Fields(1)=0Data3.Recordset.Fields(2)=0Data3.Recordset.Fields(3)=0Data3.Recordset.Fields(4)=0ExitForElseEndIfNextj'上機(jī)人數(shù)改變pcCount=pcCount-1CommitTransExitForElseEndIfNextIEndIf'清除表格中對(duì)應(yīng)行的顯示ClearRow(n)ShowStatusMsgBox"該帳號(hào)本次上機(jī)用時(shí)"&ff&"分鐘"&Space(2)&"消費(fèi)"&rmb&"元"&"帳戶余額"&Data4.Recordset.Fields(2)&"元"ExitSubjf2err:RollbackEndSubPrivateSubcdkh_Click()EndSubPrivateSubcdtj1_Click()EndSubPrivateSubcdtj2_Click()'備份數(shù)據(jù)OnErrorResumeNextComDlg.CancelError=TrueComDlg.FileName=Format(Date,"yyyymmdd")&".bak"ComDlg.Filter="備份文件|*.bak"ComDlg.ShowSaveIfErr=mscomdlg.cdlCancelThenExitSubIfDir(ComDlg.FileName)<>""ThenIfMsgBox("當(dāng)前日期已經(jīng)備份了,確實(shí)要再次備份嗎?",vbYesNo+vbQuestion)=vbNoThenExitSubEndIf'關(guān)閉數(shù)據(jù)庫(kù).CloseData6.Database.CloseMsgBox"備份成功!",vbInformationForm_LoadExitSubMsgBox"發(fā)現(xiàn)錯(cuò)誤備份失??!",vbCritical,"錯(cuò)誤"EndSubPrivateSubcdtj3_Click()'數(shù)據(jù)還原OnErrorResumeNextComDlg.CancelError=TrueComDlg.FileName=""ComDlg.Filter="備份文件|*.bak"ComDlg.ShowOpenIfErr=mscomdlg.cdlCancelThenExitSubIfMsgBox("請(qǐng)您確認(rèn)“"&ComDlg.FileName&"”是您以前備份的文件,否則可能出現(xiàn)不可想像的錯(cuò)誤。如果發(fā)生了錯(cuò)誤,請(qǐng)你參見幫助的解決辦法,建議您先對(duì)當(dāng)前數(shù)據(jù)庫(kù)進(jìn)行備份。還原后,在您備份以后的數(shù)據(jù)都將丟失。您真的要還原這個(gè)數(shù)據(jù)庫(kù)嗎?",_vbYesNo+vbQuestion+vbDefaultButton2,"問題")=vbNoThenExitSub'關(guān)閉所有數(shù)據(jù)庫(kù)Data6.Database.CloseFileCopyComDlg.FileName,App.Path+"\data.mdb"MsgBox"還原成功!將使用這個(gè)數(shù)據(jù)庫(kù)。如果發(fā)生了錯(cuò)誤,請(qǐng)您參見幫助的解決辦法。",vbInformation,"注意"Me.Visible=FalseForm_LoadMe.Visible=TrueExitSubForm_LoadMsgBox"還原數(shù)據(jù)庫(kù)失敗!",vbCriticalEndSubPrivateSubForm_Load()Data1.DatabaseName=App.Path+"\data.mdb"Data1.Connect=";pwd=841029"Data1.RecordSource="管理員"Data2.DatabaseName=App.Path+"\data.mdb"Data2.Connect=";pwd=841029"Data2.RecordSource="上機(jī)流水帳"Data3.DatabaseName=App.Path+"\data.mdb"Data3.Connect=";pwd=841029"Data3.RecordSource="上機(jī)情況"Data4.DatabaseName=App.Path+"\data.mdb"Data4.Connect=";pwd=841029"Data4.RecordSource="學(xué)生"Data6.DatabaseName=App.Path+"\data.mdb"Data6.Connect=";pwd=841029"Data6.RecordSource="自定義"Data6.RefreshApp.HelpFile=App.Path+"\help.chm"frmmain.HelpContextID=16MSFlexGrid1.ScrollBars=2'設(shè)置各列寬度MSFlexGrid1.ColWidth(0)=1500MSFlexGrid1.ColWidth(1)=1800MSFlexGrid1.ColWidth(2)=2200MSFlexGrid1.ColWidth(3)=1800MSFlexGrid1.ColWidth(4)=1800MSFlexGrid1.Cols=5'初始化上機(jī)人數(shù)pcCount=0IfData3.Recordset.Fields(4)Like"計(jì)費(fèi)中"ThenpcCount=pcCount+1EndIfNextI'讀取用戶自定義費(fèi)率IfData6.Recordset.Fields(3)=TrueThenData6.Recordset.Fields(1)=Data6.Recordset.Fields(2)Data6.Recordset.Fields(3)=FalseEndIfDj=Val(Data6.Recordset.Fields(1))DimmAsIntegerm=Data6.Recordset.Fields(0)Data3.Recordset.MoveFirstIfm<>Data3.Recordset.RecordCountThentiaozhen(m)EndIfMSFlexGrid1.rows=m+1'顯示數(shù)據(jù)表格Display'顯示狀態(tài)欄ShowStatusEndSubPrivateSubForm_Unload(CancelAsInteger)IfpcCount<>0ThenMsgBox"當(dāng)前還有電腦計(jì)費(fèi)中,請(qǐng)?jiān)谌拷Y(jié)帳后退出!",vbCriticalCancel=TrueExitSubEndIfEndEndSubPrivateSubsys01_Click()'顯示修改用戶密碼窗體frmedit.ShowvbModalEndSubPrivateSubsys02_Click()IffrmLogin.username="admin"ThenDimaAsIntegerDimIAsString'調(diào)整費(fèi)率OnErrorResumeNextI=Val(Trim(InputBox$("請(qǐng)輸入新的計(jì)費(fèi)標(biāo)準(zhǔn):?jiǎn)挝唬涸?小時(shí)","調(diào)整費(fèi)率")))IfI=""ThenExitSubElseIfI>0ThenData6.Recordset.Fields(2)=IData6.Recordset.Fields(3)=TrueMsgBox"設(shè)置成功,新標(biāo)準(zhǔn)將在下次啟動(dòng)時(shí)生效!"ExitSubEndIfEndIfElseMsgBox"您沒有此權(quán)限"ExitSubEndIfEndSubPrivateSubsys021_Click()IffrmLogin.username="admin"ThenDimaAsIntegerDimIAsString'調(diào)整計(jì)算機(jī)數(shù)目OnErrorResumeNextI=Val(Trim(InputBox$("請(qǐng)輸入電腦數(shù)目:","設(shè)置電腦數(shù)目")))IfI=""ThenExitSubElseIfI>0ThenData6.Recordset.Fields(0)=IMsgBox"設(shè)置成功,將在下次啟動(dòng)時(shí)生效!"ExitSubEndIfEndIfElseMsgBox"您沒有此權(quán)限"ExitSubEndIfEndSubPrivateSubsys11_Click()'當(dāng)前登陸用戶為管理員時(shí),打開添加刪除用戶界面IffrmLogin.username="admin"ThenElseMsgBox"您沒有此權(quán)限"EndIfEndSubPrivateSubsys21_Click()frmlog.ShowvbModalEndSubPrivateSubsys22_Click()'當(dāng)上機(jī)人數(shù)不為0時(shí),不能關(guān)閉程序IfpcCount<>0ThenMsgBox"當(dāng)前還有電腦計(jì)費(fèi)中,請(qǐng)?jiān)谌拷Y(jié)帳后退出!",vbCriticalExitSubEndIfEndEndSubPrivateSubTimer2_Timer()'定時(shí)檢測(cè)上機(jī)帳戶余額StaticsAsIntegerDimffAsIntegerDimRMB1AsSingles=s+1'設(shè)置掃描間隔Ifs=10ThenDimTishiAsString.MoveLast.MoveFirstForI=1To.RecordCountIf.Fields(4)Like"計(jì)費(fèi)中"Thenff=DateDiff("n",.Fields(2),Now)RMB1=JF(ff)RMB1=.Fields(3)-RMB1IfRMB1<DjThenTishi=Tishi&Space(2)&.Fields(0)&""EndIfEndIf.MoveNextNextIs=0'根據(jù)掃描結(jié)果提示帳戶充值IfTishi<>""ThenMsgBox"第"&Tishi&"機(jī)費(fèi)用已不多,請(qǐng)?zhí)嵝哑浼皶r(shí)充值"EndWithEndIfEndSubPrivateSubToolbar1_ButtonClick(ByValButtonAsMSComctlLib.Button)OnErrorResumeNextCase1'應(yīng)做:添加'上機(jī)'按鈕代碼。cdjf_ClickCase2'應(yīng)做:添加'結(jié)帳'按鈕代碼。cdjf2_ClickCase4'應(yīng)做:添加'報(bào)表'按鈕代碼。cdtj1_ClickCase6'應(yīng)做:添加'幫助'按鈕代碼。cdhelp1_ClickEndSelectEndSubFrmaddadmin(添加用戶窗體):PrivateSubCommand1_Click()IfCommand3.Enabled=FalseThen'添加用戶OnErrorGoToadderr'檢查輸入數(shù)據(jù)是否正確IfTrim(Text1.Text)=""ThenMsgBox"用戶名不能為空!",vbCriticalExitSubEndIfIfText2.Text=""ThenMsgBox"密碼不能為空"ExitSubEndIfIfText2.Text<>Text3.TextThenMsgBox"前后密碼設(shè)置不一致,請(qǐng)重新輸入!",vbCriticalText3.Text=""Text2.Text=""ExitSubEndIf.MoveLast.MoveFirst‘查看數(shù)據(jù)庫(kù)中是否已有記錄ForI=1To.RecordCountIf.Fields("name")=Text1.TextThenMsgBox"用戶名已經(jīng)存在,請(qǐng)你再換一個(gè)!",vbExclamation.MoveFirstText1.Text=""ExitSub.MoveNextEndIfNextI'在數(shù)據(jù)庫(kù)中添加用戶.AddNew.UpdateEndWithMsgBox"成功添加帳號(hào)!"‘窗體刷新Form_LoadText1.Text=""Text2.Text=""Text3.Text=""Command2.SetFocusElse'刪除用戶OnErrorGoToadderrIfCombo1.Text="admin"ThenMsgBox"管理員帳戶不能刪除",vbCriticalElseData1.Recordset.MoveFirst
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年企業(yè)生產(chǎn)協(xié)作合同范本
- 2025年單位購(gòu)房協(xié)議樣本
- 2025年戶外雕塑設(shè)計(jì)與安裝合同協(xié)議
- 2025年節(jié)能服務(wù)項(xiàng)目規(guī)劃申請(qǐng)報(bào)告范文
- 2025年建筑工程鋼筋班組承包合同樣式
- 2025技術(shù)創(chuàng)新與資本投入?yún)f(xié)議范例策劃
- 2025年中外合資企業(yè)員工派遣協(xié)議范本
- 2025年崗位變動(dòng)勞動(dòng)合同細(xì)則
- 2025年住宅租賃合同解除
- 2025年公共建筑外墻涂裝工程承包合同范本
- 中考語(yǔ)文真題雙向細(xì)目表
- 我國(guó)新零售業(yè)上市公司財(cái)務(wù)質(zhì)量分析-以蘇寧易購(gòu)為例
- 青島版三年級(jí)下冊(cè)科學(xué)25.小改變大效率教學(xué)課件
- 藥品集采培訓(xùn)課件
- 股骨干骨折教學(xué)演示課件
- 動(dòng)靜脈內(nèi)瘺血栓
- 朗誦《詩(shī)頌風(fēng)華》
- 醫(yī)共體人財(cái)物管理系統(tǒng)需求說(shuō)明
- 大班安全《尖利的東西會(huì)傷人》課件
- 幼兒園一崗雙責(zé)制度及實(shí)施方案(5篇)
- 臨時(shí)占用城市道路申請(qǐng)表
評(píng)論
0/150
提交評(píng)論