基于Java的智能網(wǎng)吧管理系統(tǒng)_第1頁
基于Java的智能網(wǎng)吧管理系統(tǒng)_第2頁
基于Java的智能網(wǎng)吧管理系統(tǒng)_第3頁
基于Java的智能網(wǎng)吧管理系統(tǒng)_第4頁
基于Java的智能網(wǎng)吧管理系統(tǒng)_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

PAGE-摘要隨著信息時代的來臨,internet和網(wǎng)絡(luò)游戲的發(fā)展,大大小小的網(wǎng)吧已經(jīng)遍及全國,無論是大中城市還是小城市甚至是很小的縣城。但一直以來人們使用傳統(tǒng)人工的方式管理網(wǎng)吧即工作人員人工記時,結(jié)算的方式來進行管理,這種管理方式存在著許多缺點,如:效率低、保密性差、容易出錯,另外時間一長,將產(chǎn)生大量的文件和數(shù)據(jù),這對于查找、更新和維護都帶來了不少的困難。使用計算機對網(wǎng)吧收費,計帳,上機,查找管理,具有手工管理所無法比擬的優(yōu)點.例如:檢索迅速、查找方便、可靠性高、存儲量大、保密性好、壽命長、成本低等。本文介紹了一種在JAVA平臺下設(shè)計并實現(xiàn)智能卡網(wǎng)吧管理系統(tǒng)的全過程。通過分析比較流行的智能卡網(wǎng)吧管理系統(tǒng)的開發(fā)技術(shù),結(jié)合網(wǎng)吧管理的一系列特點,java語言基礎(chǔ)上使用Eclipse開發(fā)工具實現(xiàn)智能卡網(wǎng)吧管理系統(tǒng)的解決方案。本文經(jīng)過實際的需求分析,闡述了智能卡網(wǎng)吧管理系統(tǒng)支撐的相關(guān)技術(shù),以及數(shù)據(jù)庫設(shè)計,最后闡述系統(tǒng)的總體結(jié)構(gòu)與系統(tǒng)的各個功能模塊。關(guān)鍵詞:智能卡,JAVA平臺,網(wǎng)吧管理

ABSTRACTAlongwiththeadventofinformationageandthecontinuousdevelopmentofinternetandonlinegames,alotofnetbarshavebeendistributedalloverthewholecountry,notonlydistributedinthelargecitiesbutalsointhesmallcitiesandeveninthesmallcounties.Butpeoplehavealwaysusedthetraditionalmethodstomanagethenetbars,whichmethodsarethatadoptingtheartificialrememberingtimewayandtheartificialsettlingaccountswaytomanagethenetbars.Suchmanagementmethodsexistmanyshortcomings,suchaslowefficiency,poorsecurity,easytogenerateerror,besides,aftermanyyearslaterwillproducealargenumberofdocumentsanddate,whichwillbringalotofdifficultiestofind,updateandmaintainthedate.UsecomputertomanagenetbarsmustbemuchmoreconvenientthanUserthetraditionalmethodstomanagethenetbars.Usecomputertomanagenetbarsisbeyondcomparewhichhasalotofadvantages.Suchashighefficiency,goodsecurity,lowcostandsoon.ThispaperintroducesallprocessesaboutdesignandimplementationofthenetbarssmartcardmanagementsystemintheJAVAplatform.Byanalyzingandcomparingthepopularnetbarssmartcardmanagementsystemdevelopmenttechnology,combinednetbarsmanagementSystemfeatures,bringingforwardachievingnetbarssmartcardmanagementsystemusingoftheEclipsedevelopmenttoolonthebasisofthejava.Thispaperisdescribedthesystemanalysisanddesignusingtherelevanttechnologyanditsfeatures,anddescribedtheoverallsystemstructureandthefunctionofthevarioussystemmodulesKeywords:smartcard,JAVAplatform,netbarsmanage

目錄TOC\o"1-3"\t"樣式1,1,樣式2,2,樣式3,3"\h摘要 IABSTRACT II第1章緒論 11.1智能卡網(wǎng)吧管理系統(tǒng) 11.1.1智能卡網(wǎng)吧管理的概念及特點 11.1.2國內(nèi)網(wǎng)吧管理的現(xiàn)狀 21.2課題的背景及意義 31.3系統(tǒng)簡介 31.4課題的主要工作及論文的組織 3第2章系統(tǒng)相關(guān)技術(shù) 42.1JAVA語言的特點 42.2SWT/JFace簡介 42.2.1SWT/JFace的特點 42.2.2SWT/JFace的優(yōu)缺點 52.3Socket簡介 52.4URL與URLConnection 62.5java鏈表的實現(xiàn) 72.6C/S結(jié)構(gòu)概述 72.7本章小結(jié) 9第3章系統(tǒng)分析 103.1系統(tǒng)分析概述 103.2系統(tǒng)主要功能 103.3數(shù)據(jù)流圖 123.4數(shù)據(jù)字典 133.5本章小結(jié) 14第4章數(shù)據(jù)庫設(shè)計 154.1數(shù)據(jù)庫設(shè)計原則 154.2概念結(jié)構(gòu)設(shè)計 154.3邏輯結(jié)構(gòu)設(shè)計 174.4本章小結(jié) 19第5章系統(tǒng)實現(xiàn) ..205.1插件的導入 205.2配置數(shù)據(jù)庫 205.3界面的實現(xiàn) 205.3.1JavaVE實現(xiàn)系統(tǒng)服務(wù)端主界面 205.3.2JavaVE實現(xiàn)系統(tǒng)客戶端主界面 225.4具體功能的實現(xiàn) 225.4.1卡片管理模塊 225.4.2系統(tǒng)管理模塊 265.4.3服務(wù)端聊天管理模塊 295.4.4客戶端聊天服務(wù)模塊 315.4.5系統(tǒng)其它功能模塊 335.5本章小結(jié) 37第6章結(jié)論 38致謝 39參考文獻 40第1章緒論1.1智能卡網(wǎng)吧管理系統(tǒng)1.1.1智能卡網(wǎng)吧管理的概念及特點智能卡網(wǎng)吧管理系統(tǒng),可以應(yīng)用于網(wǎng)吧、學校、政府機關(guān)、稅務(wù)、銀行等領(lǐng)域的機房計費管理,使管理方便、快捷而取得更好的經(jīng)濟效益。目前,智能卡網(wǎng)吧管理系統(tǒng)主要有三種類型:主要是硬件網(wǎng)吧管理系統(tǒng)、軟件網(wǎng)吧管理系統(tǒng)、硬件及軟件相結(jié)合的網(wǎng)吧管理系統(tǒng)。這里主要是介紹硬件與軟件相結(jié)合的智能卡網(wǎng)吧計費管理系統(tǒng)。根據(jù)網(wǎng)吧經(jīng)營的性質(zhì),作為網(wǎng)吧老板,可能常遇到以下問題:例如1、手工記錄時間勞動強度大而計費方式不靈活。2、顧客上完后便走,無法把握回頭客。3、老板經(jīng)常不在網(wǎng)吧,對雇員缺乏財務(wù)監(jiān)控4、管理煩瑣而增加人員,成本相應(yīng)增加。5、老顧客應(yīng)打折而不方便查詢6、每個工作人員均感繁忙而沒有經(jīng)濟效益7、怎樣均勻顧客來源,提高上機率?8、怎樣樹立網(wǎng)吧形象而有更多的回頭客等等問題。怎樣更好管理網(wǎng)吧經(jīng)營呢?使用高效率的智能卡網(wǎng)吧管理系統(tǒng)可使管理規(guī)范化、標準化、效益化。靈活的計費方式是強化經(jīng)營、吸引顧客的最好手段。智能卡網(wǎng)吧計費管理系統(tǒng),有著很好的開放性和適應(yīng)性,允許用戶對不同電腦(如貴賓房電腦),不同卡型、不同的時段,定義不同的費率。允許網(wǎng)吧業(yè)主根據(jù)情況設(shè)定優(yōu)惠條件,如金卡、銀卡、普通卡、計時卡等。通過發(fā)行不同的卡型,可以滿足網(wǎng)吧各種不同的銷售推廣計劃和銷售方案。我認為智能卡網(wǎng)吧管理系統(tǒng)的軟件是為管理服務(wù)的,是為提高網(wǎng)吧的效益服務(wù)的。待業(yè)主只需點擊服務(wù)器端菜單,即可了解到每時、每刻、每天、每月等不同時間段的的上機情況、盈利額及銷售報表等情況,查詢方便快捷,提高經(jīng)濟效益。智能卡網(wǎng)吧計費管理系統(tǒng)往往由服務(wù)端軟件和客戶端軟件組成。服務(wù)端軟件負責發(fā)行卡片、充值加錢、注銷卡片、卡片掛失、費率管理等工作;客戶端軟件負責聯(lián)系網(wǎng)吧管理人員等工作。正如前面所述,提高管理效率、管理安全有效、提升網(wǎng)吧檔次等等都是智能卡網(wǎng)吧管理系統(tǒng)較傳統(tǒng)網(wǎng)吧管理的優(yōu)點。1.1.2國內(nèi)網(wǎng)吧管理的現(xiàn)狀目前在中國,網(wǎng)民數(shù)量大大超過上網(wǎng)計算機的數(shù)量,相當大的一部分網(wǎng)民是在網(wǎng)吧上網(wǎng),所以在各個城市都有大量的網(wǎng)吧存在。像深圳市的網(wǎng)吧就有600O多家,而全國就可想而知了。北京網(wǎng)吧失火事件后,在全國范圍內(nèi)加大了對網(wǎng)吧管理的力度,對所有注冊的網(wǎng)吧,全國正在進行整頓、檢查。對所有無證的網(wǎng)吧,也正在進行清理。對于公安部門和文化部門也確實需要一套完整的網(wǎng)吧管理系統(tǒng)來監(jiān)控網(wǎng)吧的運行。上網(wǎng)實名制也正在開始在各城市推廣。對于網(wǎng)吧管理,由于上網(wǎng)人員較多,負責收款的人也往往不是老板本人,如何對收費進行管理,減少上機不付費的現(xiàn)象及收銀員吞沒上網(wǎng)款的現(xiàn)象,實時遠程監(jiān)測網(wǎng)吧的運營情況,也是擺在各個網(wǎng)吧老板面前的一個問題。使用了該系統(tǒng),通過發(fā)卡,網(wǎng)吧能夠獲得大量的忠實用戶,網(wǎng)民也可以從網(wǎng)吧得到打折等實惠。因此,從網(wǎng)吧老板、網(wǎng)民到公安、文化部門對本系統(tǒng)都將持歡迎態(tài)度,我國經(jīng)過幾年的整頓和發(fā)展取得了長足的進步,網(wǎng)吧管理系統(tǒng)已經(jīng)廣泛的應(yīng)用到學校、政府機關(guān)、銀行等各個領(lǐng)域的機房管理中。在未來的幾十年中,網(wǎng)吧管理系統(tǒng)的應(yīng)用研究將繼續(xù)前所未有的速度發(fā)展。這一方面是網(wǎng)吧發(fā)展的需要,隨著網(wǎng)吧規(guī)模不斷的發(fā)展壯大,網(wǎng)民的不斷增加,網(wǎng)吧的管理、網(wǎng)民與網(wǎng)吧管理員之間的協(xié)調(diào)等問題也越來越突出,這也就客觀促使了網(wǎng)吧管理系統(tǒng)技術(shù)的發(fā)展;另一方面隨著全球經(jīng)濟一體化進程的加速,網(wǎng)吧與網(wǎng)吧之間的交流與合作也越來越密切,Internet、電子商務(wù)蓬勃發(fā)展客觀上也要求有功能更為全面的網(wǎng)吧管理產(chǎn)品的出現(xiàn)。展望下一代的網(wǎng)吧管理系統(tǒng)應(yīng)具備如下特點:1.完成從C/S模式向B/S模式的轉(zhuǎn)換;2.維護網(wǎng)吧的大量數(shù)據(jù)應(yīng)該更加簡單方便;3.需要支持電子商務(wù);4.系統(tǒng)更有安全性、實用性、先進性和經(jīng)濟性;1.2課題的背景及意義智能卡網(wǎng)吧管理系統(tǒng)是用計算機軟件系統(tǒng)管理網(wǎng)吧日常經(jīng)營的一種計算機應(yīng)用技術(shù)的創(chuàng)新,它的內(nèi)容對于網(wǎng)吧的老板和管理者來說都至關(guān)重要,所以網(wǎng)吧管理系統(tǒng)應(yīng)該能夠為管理者和上機人員提供方便的管理和上機。使用計算機對網(wǎng)吧收費,計帳,上機,查找管理,具有手工管理所無法比擬的優(yōu)點.例如:檢索迅速、查找方便、可靠性高、存儲量大、保密性好、壽命長、成本低等。這些優(yōu)點能夠極大地提高網(wǎng)吧管理的效率,也是企業(yè)的科學化、正規(guī)化管理,與世界接軌的重要條件1.3系統(tǒng)簡介此網(wǎng)吧管理系統(tǒng)后臺數(shù)據(jù)庫使用MYSQL??梢詫崿F(xiàn)卡片發(fā)行,卡片注銷,卡片掛失,卡片充值等基本功能,此外網(wǎng)吧管理員還能對網(wǎng)吧收費信息以及網(wǎng)吧經(jīng)營的商品信息進行管理。采用了JAVA,Socket套接字等技術(shù)實現(xiàn)。開發(fā)工具使用了當前流行的Eclipse,其中加上了VE插件。1.4課題的主要工作及論文的組織本文共分為五章:第1章主要闡述了智能卡網(wǎng)吧管理的概念、特點、國內(nèi)外的發(fā)展狀況,介紹了本課題的來源、背景及主要研究內(nèi)容。第2章主要闡述了智能卡管理系統(tǒng)支撐的相關(guān)技術(shù)。第3章對網(wǎng)吧管理系統(tǒng)進行了分析。第4章論述了網(wǎng)吧管理系統(tǒng)的數(shù)據(jù)庫設(shè)計。第5章論述了只能卡網(wǎng)吧管理系統(tǒng)的具體實現(xiàn)。第6章是結(jié)束語。第2章系統(tǒng)相關(guān)技術(shù)2.1JAVA語言的特點Java是面向?qū)ο蟮木幊陶Z言。面向?qū)ο蠹夹g(shù)較好的解決了當今軟件開發(fā)過程中新出現(xiàn)的種種傳統(tǒng)面向過程語言所不能處理的問題,包括軟件開發(fā)的規(guī)模擴大,升級加快,維護量增大以及開發(fā)分工日趨細化、專業(yè)化和標準化等[1]。面向?qū)ο蟮暮诵氖且愿咏谌祟愃季S的方式建立計算機模型,它利用類和對象的機制將數(shù)據(jù)與其上的操作封裝在一起,通過統(tǒng)一的接口與外界交互,使反映現(xiàn)實世界實體的各個類在程序中能夠獨立、自治和繼承。Java包括一個支持HTTP(超文本傳輸協(xié)議)和FTP(文件傳輸協(xié)議)等基于TCP/IP的子庫[1]。因此Java應(yīng)用程序可憑借URL(統(tǒng)一資源定位符)打開并訪問網(wǎng)絡(luò)上的對象,其訪問方式與訪問本地文件系統(tǒng)幾乎完全相同。其分布環(huán)境是一項很宏大的工程,但Java語言的語法特性可以很容易的實現(xiàn)這一目標。Java語言獨特的運行機制使得它具有良好的二進制可移植性,利用Java,開發(fā)人員可編寫出與具體平臺無關(guān),普遍適用的應(yīng)用程序,大大降低了開發(fā)、維護和管理的開銷,也就是一次編譯,隨處運行,方便存取數(shù)據(jù)庫的JDBAPI,CORBA、JND1、RM1技術(shù)以及能夠在Internet應(yīng)用中保護數(shù)據(jù)的安全模式等功能,為用戶和開發(fā)人員提供一個具有高度的可移植性、兼容性和安全性的平臺。Java語言還具有動態(tài)性的特點,它的動態(tài)性是面向?qū)ο笤O(shè)計方法的擴展,它允許程序動態(tài)的裝入運行過程中所需要的類。2.2SWT/JFace簡介2.2.1SWT/JFace的特點Eclipse不僅提供了一個優(yōu)秀的JavaIDE(集成開發(fā)環(huán)境),還提供了一個能夠替代JavaAWT和Swing的SWT和JFace庫。JavaAWT實現(xiàn)了有關(guān)GUI元素和圖形操作的Java和C庫,Swing則使用純Java語言在此基礎(chǔ)上實現(xiàn)更高級的GUI元素。相比較而言,SWT簡化了各種針對本地窗口系統(tǒng)函數(shù)的調(diào)用方式。由于操作系統(tǒng)緊密集成,采用SWT實現(xiàn)的應(yīng)用程序的感官效果及響應(yīng)方式同本地程序幾乎一樣。對于Java而言,這是子桌面應(yīng)用領(lǐng)域的一個突破。SWT是提供的開發(fā)平臺Eclipse中使用的一個窗口控件集和圖形庫,它集成于本機窗口系統(tǒng),但有獨立于操作系統(tǒng)窗口的API[3]。同SWT相比,JFace庫中的組件不會直接與本地窗口系統(tǒng)打交道。JFace完全采用Java實現(xiàn),并采用SWT中的類和方法,實現(xiàn)一些簡單的GUI元素。無疑,SWT/JFace像一股清新的風吹入Java的GUI開發(fā)領(lǐng)域,為這個沉悶的領(lǐng)域帶來了勃勃生機。雖然SUN不接納SWT/JFace作為Java的一種圖形API標準,但它仍然借著Eclipse的優(yōu)異表現(xiàn),以不可阻擋之勢向前發(fā)展著。借助SWT,可以輕松的開發(fā)出高效率的GUI程序,并且擁有標準的Windows外觀。Eclipse軟件就是基于SWT/JFace構(gòu)建的。2.2.2SWT/JFace的優(yōu)缺點SWT的先進之處在于它能夠?qū)⒒赟WT開發(fā)的緊密集成到所在的環(huán)境中去,普通用戶不會覺察出基于SWT的用戶界面和本地用戶界面有什么不同之處[3]。比如在Windows2000中,SWT的按鈕看起來就像Windows2000中的按鈕。在WindowsXP中就像WindowsXP中的按鈕。當轉(zhuǎn)到Mac操作系統(tǒng)中時,按鈕又與Mac操作系統(tǒng)中的一樣了。如果使用Swing則按鈕始終保持一種樣式。SWT采用了本地事件處理機制,所以從響應(yīng)時間上來說,基于SWT開發(fā)的程序比基于Swing開發(fā)的程序稍微快一些,并且需要的資源要少一些。同時由于大部分基于SWT的小部件僅僅是本地窗口的適配器,所以在諸多異構(gòu)的部件和各種圖形子系統(tǒng)加速設(shè)備下,SWT可能更穩(wěn)定。但是使用SWT也有它的局限性。(1)基于SWT的應(yīng)用程序只能在實現(xiàn)了SWT的平臺上運行。(2)一般來說,各種SWT的實現(xiàn)是等同的。但對于某些功能來說,GUI元素的行為可能因平臺的不同而不同。因此一個軟件在多個平臺上進行部署的時候,最好是在各個平臺上都能夠測試。(3)同AWT相比,SWT顯示的進行資源管理,SWT中使用的資源,如圖片、顏色等,不再需要時,必須進行釋放。在這一點上,SWT有類似C/C++里面的資源動態(tài)分配方式。2.3Socket簡介套接字(Socket)是網(wǎng)絡(luò)通信的基本操作單元,又被稱作端口,通常用來實現(xiàn)客戶方和服務(wù)器方的連接。網(wǎng)絡(luò)上的兩個程序通過一個雙向的通信連接實現(xiàn)數(shù)據(jù)的交換,在實現(xiàn)雙向通信鏈路的每一端都建立一個Socket,通過對Socket的讀/寫操作實現(xiàn)網(wǎng)絡(luò)通信功能。套接字是網(wǎng)絡(luò)通信的一個標準,它就像房中的電源插座,無論是電燈還是電腦等電器,它們只要使用220V50Hz的交流電壓,插在電源插座上就能正常工作[4]。套接字可以分為以下三種類型:(1)流套接字這是最常用的套接字類型,TCP/IP協(xié)議中的TCP協(xié)議使用此類接口,它提供面向連接的、無差錯的、發(fā)送先后順序一致的、包長度不限和非重復的網(wǎng)絡(luò)信包傳輸。(2)數(shù)據(jù)報套接字TCP/IP協(xié)議族中的UDP協(xié)議使用此類接口,它是無連接的服務(wù),以獨立的信包進行網(wǎng)絡(luò)傳輸,信包最大長度為32KB,傳輸不保證順序性、可靠性和無重復性,它通常用于單個報文傳輸或可靠性不重復的場合。(3)原始數(shù)據(jù)報套接字提供對網(wǎng)絡(luò)通信下層通信協(xié)議(如IP協(xié)議)的直接訪問,它一般不是提供給普通用戶的,主要用于開發(fā)新的協(xié)議或用于提取協(xié)議較隱蔽的功能。所有Socket通信程序的基本結(jié)構(gòu)都是一樣的,主要有創(chuàng)建Socket、打開連接到Socket的輸入流和輸出流、按照一定的協(xié)議對Socket進行讀寫操作、關(guān)閉Socket這四個步驟,通過這四個步驟可以完成一般的Socket通信[4]。為了完成Socket通信,包中提供了Socket和ServerSocket這兩個類,它們分別用來表示雙向連接的客戶端和服務(wù)端。2.4URL與URLConnectionURL的全稱是UniformResourceLocator,意思是統(tǒng)一資源定位器,表示的Internet上某一資源的地址,通過URL可以訪問Internet上主機所開放的資源。URL由協(xié)議名和資源名組成,中間用“:”分隔。協(xié)議名指定獲取資源所使用的傳輸協(xié)議,比如:ftp、http等。而資源名則是資源的完整地址,包括主機名、端口號、文件名或者文件內(nèi)部的一個引用。URLConnection是一個抽象類,代表與URL指定數(shù)據(jù)源的動態(tài)連接,URLConnection類提供比URL類更強的服務(wù)器交互控制。如果你建立了與遠程服務(wù)器之間的連接,你可以在傳輸它到本地之前URLConnection來檢查遠程對象的屬性。這些屬性為HTTP協(xié)議的規(guī)范定義,并且僅對用HTTP的協(xié)議的URL對象有意義。同時,它還允許用POST或PUT和其他HTTP請求方法將數(shù)據(jù)送回服務(wù)器。在包中只有抽象的URLConnection類,其中的許多方法和字段與單個構(gòu)造函數(shù)一樣是受保護的,這些方法只可以被URLConnection類及其子類訪問。2.5java鏈表的實現(xiàn)線型表的鏈式存儲結(jié)構(gòu)是把線型表的數(shù)據(jù)元素存放在節(jié)點中,因此,用鏈式存儲結(jié)構(gòu)實現(xiàn)的線性表稱為鏈表。節(jié)點(node)由數(shù)據(jù)元素域和一個或若干個指針域組成。指針是用來指向其他節(jié)點地址的,指向鏈表第一個節(jié)點的指針成為鏈表的頭指針,一個鏈表由頭指針指向第一個節(jié)點,每個節(jié)點的鏈指向其后繼節(jié)點,其中一個節(jié)點的鏈為空(null)。在C或C++里鏈表可以通過指針的操作來實現(xiàn),在Java中是沒有指針的,但是可以通過使用對象的引用等方法實現(xiàn)鏈表。鏈表的節(jié)點個數(shù)稱為鏈表的長度,長度為零時稱為空表。鏈表可以根據(jù)鏈的個數(shù)可以分為單向鏈表和雙向鏈表,本文只討論單向鏈表,一個單向鏈表包含一組節(jié)點,每個節(jié)點都包含了有關(guān)數(shù)據(jù)和指向下一個節(jié)點的指針。表的頭就是一個指針,它指向第一個節(jié)點,而表的結(jié)束則用空指針表示。2.6C/S結(jié)構(gòu)概述C/S結(jié)構(gòu)(Client/Server結(jié)構(gòu))是大家熟知的客戶機和服務(wù)器結(jié)構(gòu)。它是軟件系統(tǒng)體系結(jié)構(gòu),通過它可以充分利用兩端硬件環(huán)境的優(yōu)勢,將任務(wù)合理分配到Client端和Server端來實現(xiàn),降低了系統(tǒng)的通訊開銷。目前大多數(shù)應(yīng)用軟件系統(tǒng)都是Client/Server形式的兩層結(jié)構(gòu),由于現(xiàn)在的軟件應(yīng)用系統(tǒng)正在向分布式的Web應(yīng)用發(fā)展,Web和Client/Server應(yīng)用都可以進行同樣的業(yè)務(wù)處理,應(yīng)用不同的模塊共享邏輯組件;因此,內(nèi)部的和外部的用戶都可以訪問新的和現(xiàn)有的應(yīng)用系統(tǒng),通過現(xiàn)有應(yīng)用系統(tǒng)中的邏輯可以擴展出新的應(yīng)用系統(tǒng)。這也就是目前應(yīng)用系統(tǒng)的發(fā)展方向。C/S又稱Client/Server或客戶/服務(wù)器模式。服務(wù)器通常采用高性能的PC、工作站或小型機,并采用大型數(shù)據(jù)庫系統(tǒng),如ORACLE、SYBASE、InfORMix或SQLServer??蛻舳诵枰惭b專用的客戶端軟件。傳統(tǒng)的C/S體系結(jié)構(gòu)雖然采用的是開放模式,但這只是系統(tǒng)開發(fā)一級的開放性,在特定的應(yīng)用中無論是Client端還是Server端都還需要特定的軟件支持。由于沒能提供用戶真正期望的開放環(huán)境,C/S結(jié)構(gòu)的軟件需要針對不同的操作系統(tǒng)系統(tǒng)開發(fā)不同版本的軟件,加之產(chǎn)品的更新?lián)Q代十分快,已經(jīng)很難適應(yīng)百臺電腦以上局域網(wǎng)用戶同時使用。而且代價高,效率低。如本文介紹的智能卡網(wǎng)吧管理系統(tǒng)軟件就是典型的C/S體系結(jié)構(gòu)管理軟件。一、C/S結(jié)構(gòu)的優(yōu)點和缺點C/S結(jié)構(gòu)的優(yōu)點是能充分發(fā)揮客戶端PC的處理能力,很多工作可以在客戶端處理后再提交給服務(wù)器。對應(yīng)的優(yōu)點就是客戶端響應(yīng)速度快。缺點主要有以下幾個:只適用于局域網(wǎng)。而隨著互聯(lián)網(wǎng)的飛速發(fā)展,移動辦公和分布式辦公越來越普及,這需要我們的系統(tǒng)具有擴展性。這種方式遠程訪問需要專門的技術(shù),同時要對系統(tǒng)進行專門的設(shè)計來處理分布式的數(shù)據(jù)。客戶端需要安裝專用的客戶端軟件。首先涉及到安裝的工作量,其次任何一臺電腦出問題,如病毒、硬件損壞,都需要進行安裝或維護。特別是有很多分部或?qū)Yu店的情況,不是工作量的問題,而是路程的問題。還有,系統(tǒng)軟件升級時,每一臺客戶機需要重新安裝,其維護和升級成本非常高。對客戶端的操作系統(tǒng)一般也會有限制。可能適應(yīng)于Win98,但不能用于win2000或WindowsXP?;蛘卟贿m用于微軟新的操作系統(tǒng)等等,更不用說Linux、Unix等。二、C/S架構(gòu)軟件的優(yōu)勢與劣勢(1)、應(yīng)用服務(wù)器運行數(shù)據(jù)負荷較輕。最簡單的C/S體系結(jié)構(gòu)的數(shù)據(jù)庫應(yīng)用由兩部分組成,即客戶應(yīng)用程序和數(shù)據(jù)庫服務(wù)器程序。二者可分別稱為前臺程序與后臺程序。運行數(shù)據(jù)庫服務(wù)器程序的機器,也稱為應(yīng)用服務(wù)器。一旦服務(wù)器程序被啟動,就隨時等待響應(yīng)客戶程序發(fā)來的請求;客戶應(yīng)用程序運行在用戶自己的電腦上,對應(yīng)于數(shù)據(jù)庫服務(wù)器,可稱為客戶電腦,當需要對數(shù)據(jù)庫中的數(shù)據(jù)進行任何操作時,客戶程序就自動地尋找服務(wù)器程序,并向其發(fā)出請求,服務(wù)器程序根據(jù)預定的規(guī)則作出應(yīng)答,送回結(jié)果,應(yīng)用服務(wù)器運行數(shù)據(jù)負荷較輕。(2)、數(shù)據(jù)的儲存管理功能較為透明。在數(shù)據(jù)庫應(yīng)用中,數(shù)據(jù)的儲存管理功能,是由服務(wù)器程序和客戶應(yīng)用程序分別獨立進行的,前臺應(yīng)用可以違反的規(guī)則,并且通常把那些不同的(不管是已知還是未知的)運行數(shù)據(jù),在服務(wù)器程序中不集中實現(xiàn),例如訪問者的權(quán)限,編號可以重復、必須有客戶才能建立定單這樣的規(guī)則。所有這些,對于工作在前臺程序上的最終用戶,是“透明”的,他們無須過問(通常也無法干涉)背后的過程,就可以完成自己的一切工作。在客戶服務(wù)器架構(gòu)的應(yīng)用中,前臺程序不是非?!笆菪 ?,麻煩的事情都交給了服務(wù)器和網(wǎng)絡(luò)。在C/S體系的下,數(shù)據(jù)庫不能真正成為公共、專業(yè)化的倉庫,它受到獨立的專門管理。(3)、C/S架構(gòu)的劣勢是高昂的維護成本且投資大。首先,采用C/S架構(gòu),要選擇適當?shù)臄?shù)據(jù)庫平臺來實現(xiàn)數(shù)據(jù)庫數(shù)據(jù)的真正“統(tǒng)一”,使分布于兩地的數(shù)據(jù)同步完全交由數(shù)據(jù)庫系統(tǒng)去管理,但邏輯上兩地的操作者要直接訪問同一個數(shù)據(jù)庫才能有效實現(xiàn),有這樣一些問題,如果需要建立“實時”的數(shù)據(jù)同步,就必須在兩地間建立實時的通訊連接,保持兩地的數(shù)據(jù)庫服務(wù)器在線運行,網(wǎng)絡(luò)管理工作人員既要對服務(wù)器維護管理,又要對客戶端維護和管理,這需要高昂的投資和復雜的技術(shù)支持,維護成本很高,維護任務(wù)量大。2.7本章小結(jié)本章主要介紹了系統(tǒng)使用到的相關(guān)技術(shù),包括JAVA平臺和JAVA語言特點的介紹、SWT/JFace技術(shù)的特點以及它的優(yōu)缺點的羅列、URL與URLConnection(統(tǒng)一資源定位器)的相關(guān)介紹、Java鏈表的整個實現(xiàn)過程、三種Socket套接字技術(shù)的簡介,以及C/S結(jié)構(gòu)的一些基本介紹。

第3章系統(tǒng)分析3.1系統(tǒng)分析概述采用自頂向下的結(jié)構(gòu)化分析方法分析和表達用戶需求的方法:圖3-1需求分析圖用結(jié)構(gòu)化的方法做需求分析,可以將任何一個系統(tǒng)可以抽象成如下圖的形式:圖3-2系統(tǒng)抽象圖將處理功能分解成若干個子功能,再將各個子功能繼續(xù)分解,直到把整個系統(tǒng)工作流程表達清楚為止。3.2系統(tǒng)主要功能本系統(tǒng)主要功能涉及到如下部分:卡片管理、系統(tǒng)設(shè)置,聊天服務(wù)管理,另外還有管理員對網(wǎng)吧進行上下機管理和網(wǎng)吧經(jīng)營情況的管理。以下是本系統(tǒng)的模塊圖:圖3-3系統(tǒng)模塊圖1.卡片管理功能包括卡片發(fā)行、卡片充值、卡片注銷、卡片掛失等模塊??蛻艨梢杂每ㄆM行網(wǎng)吧上網(wǎng)消費,卡片有三種類型,即普通卡、銀卡、金卡和計時卡。每種卡片可以擁有不同的優(yōu)惠方式,例如普通卡可以不打折,銀卡和金卡都可以進行打折。上網(wǎng)顧客在卡中儲存一定數(shù)量的金額,每次上機費用從中扣除。待卡中金額用完時可以向卡中加存,繼續(xù)使用。如卡片遺失就可去該網(wǎng)吧進行掛失??蛻羧舨恍枰摼W(wǎng)吧計費卡也可注銷,拿回卡片內(nèi)剩余的金額。2.系統(tǒng)設(shè)置功能系統(tǒng)管理是網(wǎng)吧管理員才具有的功能,即網(wǎng)吧的費率設(shè)置,智能卡計費管理系統(tǒng)的各項功能都是根據(jù)經(jīng)營中的實際作經(jīng)驗及長期發(fā)展策略而提煉而成,比如為了支持網(wǎng)吧優(yōu)惠政策,提供靈活機動的費率設(shè)置功能,讓網(wǎng)吧管理系統(tǒng)真正成為網(wǎng)吧的管家,而不是礙手礙腳的障礙。包括網(wǎng)吧不同卡片不同時間段的收費設(shè)置和網(wǎng)吧所售商品的進售價設(shè)置,通過這兩個設(shè)置可以根據(jù)當時的需求對價格進行管理。3.聊天服務(wù)管理功能聊天程序分為服務(wù)器端和客戶端兩個部分,服務(wù)器端的功能為:在特定的端口上進行偵聽,等待客戶端連接;客戶可以配置服務(wù)端的偵聽端口,默認端口為8888;向已經(jīng)連接到服務(wù)端的客戶發(fā)送系統(tǒng)消息;統(tǒng)計在線人數(shù);當停止服務(wù)時斷開所有的用戶連接??蛻舳说墓δ転椋哼B接到已經(jīng)開啟聊天服務(wù)的服務(wù)端;客戶可以配置要連接服務(wù)器端的IP地址與端口號;用戶可以配置連接后顯示的客戶名;當服務(wù)器開啟的話,用戶可以隨時登陸和注銷;用戶可以向網(wǎng)吧管理員發(fā)送消息,提出需要解決的問題或者要求。4.上下機情況功能這一功能主要是管理網(wǎng)吧客戶的上下機,客戶一上機即可以對其進行計費,在上機的過程中客戶可以發(fā)送消息給管理員,要求購買什么商品和購買商品的數(shù)量,網(wǎng)吧管理員即可對其卡片進行相應(yīng)的扣費。若客戶要下機了,就可以進行結(jié)帳退出。5.網(wǎng)吧經(jīng)營情況功能這一功能主要是顯示網(wǎng)吧過去到現(xiàn)在的營業(yè)情況,網(wǎng)吧產(chǎn)生的經(jīng)濟效益對網(wǎng)吧管理員和老板來說可以一目了然,在這一模塊中還可以根據(jù)年月來顯示網(wǎng)吧的經(jīng)營記錄,通過選擇需要顯示的年份或者月份從而顯示相關(guān)的一系列記錄,方便統(tǒng)計比較分析,提高經(jīng)濟效益。6.退出系統(tǒng)功能只要點擊退出按鈕,就會出現(xiàn)提示對話框“確定要退出嗎?”,點擊“是”即可退出系統(tǒng)。3.3數(shù)據(jù)流圖數(shù)據(jù)流圖是用來描述數(shù)據(jù)處理的過程,不反映時間的順序,只反映數(shù)據(jù)的流向、自然的邏輯過程和必要的邏輯數(shù)據(jù)存儲,即表示“做什么”,而不表示“怎么做”我畢業(yè)設(shè)計的流圖大體如下所示:卡片管理網(wǎng)吧客戶系統(tǒng)管理聊天服務(wù)管理卡片管理網(wǎng)吧客戶系統(tǒng)管理聊天服務(wù)管理網(wǎng)吧經(jīng)營情況管理網(wǎng)管修改各種費率信息數(shù)據(jù)庫聯(lián)系網(wǎng)管操作操作聯(lián)系交換數(shù)據(jù)3.4數(shù)據(jù)字典數(shù)據(jù)字典是對系統(tǒng)用到的所有數(shù)據(jù)項和結(jié)構(gòu)的定義,以確保開發(fā)人員使用統(tǒng)一的數(shù)據(jù)定義。本系統(tǒng)中的部分的數(shù)據(jù)字典如下:數(shù)據(jù)項數(shù)據(jù)項:卡片ID含義說明:唯一的表示一張卡片類型:整型長度:11取值含義:用戶自定義數(shù)據(jù)項數(shù)據(jù)項:卡片類型含義說明:唯一的表示一種卡的類型類型:字符型長度:10數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu):卡片信息含義說明:記錄卡片的所有信息。組成:卡片ID、卡片類型、持卡人姓名、持卡人身份證號、卡內(nèi)金額、卡片押金、卡內(nèi)贈送金額數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu):卡片費率信息表含義說明:記錄各類卡片上網(wǎng)消費的收費信息。組成:卡片類型、最低收費、最小收費單位、每單位收費、通宵計費單位、通宵每單位計費數(shù)據(jù)存儲數(shù)據(jù)存儲:上下機情況信息說明:記錄客戶上下機情況信息存取方式:隨即存取處理過程處理過程:上下機說明:客戶上下機輸入:客戶上下機信息輸出:客戶下機信息處理:保存上下機信息到數(shù)據(jù)庫3.5本章小結(jié)本章主要概述了系統(tǒng)的各個功能模塊,包括系統(tǒng)設(shè)置功能、卡片管理功能、聊天服務(wù)管理功能、退出系統(tǒng)功能、網(wǎng)吧經(jīng)營情況功能、上下機情況功能。也分別介紹了各個功能模塊的相應(yīng)的功能;畫出了系統(tǒng)的數(shù)據(jù)流圖,寫出了部分數(shù)據(jù)字典。為系統(tǒng)設(shè)計和實現(xiàn)的展開打好了基礎(chǔ)。

第4章數(shù)據(jù)庫設(shè)計數(shù)據(jù)庫設(shè)計的目標是要求完全滿足業(yè)務(wù)的數(shù)據(jù)存儲要求。如果能夠設(shè)計一個合理的數(shù)據(jù)庫模型,不僅會降低程序編程和維護的難度,也會提高系統(tǒng)實際運行的性能,因而必須仔細的制定設(shè)計步驟方案,了解規(guī)范的設(shè)計方法和必要的規(guī)則。4.1數(shù)據(jù)庫設(shè)計原則一個成功的管理系統(tǒng),是由:[50%的業(yè)務(wù)+50%的軟件]所組成,而50%的成功的軟件又有[25%的數(shù)據(jù)庫+25%的程序]所組成,數(shù)據(jù)庫設(shè)計的好壞是一個關(guān)鍵。如果把企業(yè)的數(shù)據(jù)比做生命所需的血液,那么數(shù)據(jù)庫設(shè)計就是應(yīng)用中最重要的一部分。對于智能卡網(wǎng)吧管理系統(tǒng)來說,擁有大量的上網(wǎng)人員需要強有力的數(shù)據(jù)庫支撐,但是對于本系統(tǒng)來說,由于不會在實際環(huán)境中運行,所以數(shù)據(jù)庫的使用可以選擇容易使用,并且易于維護的、容易獲取的數(shù)據(jù)庫作為后臺存放網(wǎng)吧相關(guān)信息等的數(shù)據(jù)庫最終選擇了MYSQL作為后臺支持數(shù)據(jù)庫。4.2概念結(jié)構(gòu)設(shè)計E-R模型和關(guān)系模型是兩種對數(shù)據(jù)庫不同的描述,在E-R模型中用實體集和聯(lián)系表示現(xiàn)實世界中的事物及其相互之間的關(guān)系;而在關(guān)系模型中則用單一的結(jié)構(gòu)來組織數(shù)據(jù)。所以,在這里就存在一個如何將E-R模型轉(zhuǎn)化為關(guān)系模型的問題。下面介紹轉(zhuǎn)化所需要遵守的幾條準則:★E-R模型中的每一個實體都轉(zhuǎn)化成一個同名的關(guān)系,實體集的屬性就是關(guān)系的屬性,實體集的碼就是關(guān)系的碼?!顴-R模型中的每一個聯(lián)系也用一個關(guān)系表示,與該聯(lián)系相連的各實體集的碼以及聯(lián)系的屬性轉(zhuǎn)化為關(guān)系的屬性。該關(guān)系的碼有三種情況:●若聯(lián)系為1:1,則每個實體的碼均是該關(guān)系的候選碼?!袢袈?lián)系為1:n,則關(guān)系的碼為n端實體集的碼?!袢袈?lián)系為m:n,則關(guān)系的碼為各實體集碼的組合?!锞哂邢嗤a的關(guān)系模式可以合并(合并原則)。在這里我們將要設(shè)計的是數(shù)據(jù)庫的概念模式。根據(jù)對數(shù)據(jù)流圖和數(shù)據(jù)字典的分析,我們可以確定該應(yīng)用中的實體、屬性和實體之間的關(guān)系,并畫出表E-R圖:卡片卡片NNNN消費設(shè)置消費設(shè)置M1M1費率費率賬單賬單NN分析統(tǒng)計分析統(tǒng)計MM總營業(yè)額 總營業(yè)額圖4-1實體及其聯(lián)系圖cardsendcardsendidentifyPNumumnamecachPledgeinMoneycardTypecardIdidentifyPNumumnamecachPledgeinMoneycardTypecardId圖4-2卡片實體及其屬性圖feesfeesnightunitfeesnightfeesunitunitfeestimecardTypelowestnightunitfeesnightfeesunitunitfeestimecardTypelowest圖4-3費率實體及其屬性圖totaltotalcardTypetotalMoneybuyMoneyplayMoneytimecardTypetotalMoneybuyMoneyplayMoneytime圖4-4經(jīng)營匯總實體及其屬性圖updowncomputerupdowncomputermoneyIncardcomputerIdmoneyIncardcomputerIdcomputerAdresscomputerAdressplayMoneybuyMoneytotalMoneycardTypetimeplayMoneybuyMoneytotalMoneycardTypetime圖4-5上下機實體及其屬性圖goodsgoodsbuyingPricebuyingPricequntitygoodsTypesellingPricegoodsNameunitquntitygoodsTypesellingPricegoodsNameunit圖4-6商品實體及其屬性圖4.3邏輯結(jié)構(gòu)設(shè)計設(shè)計邏輯結(jié)構(gòu)的是和分三步進行:將概念結(jié)構(gòu)(E-R圖)轉(zhuǎn)化為一般關(guān)系模型將轉(zhuǎn)化來的關(guān)系模型向MYSQL支持下的數(shù)據(jù)模型轉(zhuǎn)化對數(shù)據(jù)模型進行優(yōu)化,消除冗余字段。對數(shù)據(jù)依賴進行極小化處理。對關(guān)系模式進行必要的分解合并和優(yōu)化,形成以下的邏輯結(jié)構(gòu)表4-1cardsend信息表字段數(shù)據(jù)類型大小允許空/主鍵描述cardIdint11NO/主鍵卡片idcardTypevarchar20NO卡片類型cachPledgefloat8NO卡片押金inMoneyfloat8NO卡內(nèi)金額givePresentfloat8NO卡內(nèi)贈送金額namevarchar20NO持卡人姓名identifyPNumvarchar45NO持卡人身份證表4-2卡片fees信息表字段數(shù)據(jù)類型大小允許空/主鍵描述cardtypevarchar10NO/主鍵卡片類型lowestfloat8NO最低收費timeint11NO最小收費單位unitfeesfloat8NO每單位收費nightfeesunitint11NO通宵計費單位nightunitfeesfloat8NO通宵每單位計費表4-3goods信息表字段數(shù)據(jù)類型大小允許空/主鍵描述goodsIdint11NO/主鍵商品idgoodsTypevarchar10NO商品類型goodsNamevarchar20NO商品名稱goodsUnitvarchar10NO商品單位goodsQuantityint11NO商品數(shù)量sellingPricefloat8NO進價buyingPricefloat8NO售價表4-4total匯總表字段數(shù)據(jù)類型大小允許空/主鍵描述timevarchar20NO/主鍵經(jīng)營時間playMoneyfloat8NO上網(wǎng)消費buyMoneyfloat8NO購物消費cardTypevarchar10NO卡片類型totalMoneyfloat8NO總消費表4-5updowncomputer臨時信息表字段數(shù)據(jù)類型大小允許空/主鍵描述computerIdint11NO/主鍵計算機idIpadressvarchar25NO計算機IpcardTypevarchar20YES卡片類型moneyIncardfloat8YES卡內(nèi)金額timevarchar20YES上機時間playMoneyfloat8YES上網(wǎng)消費buyMoneyfloat8YES購物消費totalMoneyfloat8YES總消費yearint11YES上機年份monthint11YES上機月份dayint11YES上機時間(日)hourint11YES上機時間(時)minuteint11YES上機時間(分)secondint11YES上機時間(秒)4.4本章小結(jié)本章介紹了數(shù)據(jù)庫的設(shè)計原則和概念結(jié)構(gòu)的設(shè)計,作了對系統(tǒng)的數(shù)據(jù)庫設(shè)計工作。畫出了E-R圖和各個數(shù)據(jù)庫表的實體及其屬性圖,分析了表與表之間的關(guān)系,以及寫出了詳細的表結(jié)構(gòu)信息。

第5章系統(tǒng)實現(xiàn)5.1插件的導入開發(fā)這個系統(tǒng)我用的開發(fā)工具是Eclipse,在Eclipse中我導入了三個插件用來進行可視化的GUI編程,它們分別是emfsdoxsdSDK2.2,GEF-ALL-3.3和VE-SDK-1。這三個插件導入過程很輕松,只要分別將三個包中的features和plugins文件夾中的內(nèi)容全部分別復制到Eclipse的features和plugins文件夾內(nèi)。加入到工程后,重新啟動Eclipse,這時候在工程中就可以新建可視化的類了即(Visualclass),這樣為開發(fā)系統(tǒng)的界面帶來了很多方便。5.2配置數(shù)據(jù)庫本系統(tǒng)用JDBC來連接數(shù)據(jù)庫,數(shù)據(jù)庫是MYSQL,所以需要導入mysql-connector-java-3.1.jar這個java包。導入方法為:在工程下新建一個文件夾lib,把mysql-connector-java-3.1.jar這個jar包放入lib文件夾中,然后在工程的屬性中就可添加新的庫。這是com.mysql.jdbc.Driver是JDBC連Mysql數(shù)據(jù)庫的驅(qū)動程序;jdbc:mysql://localhost:3306/system是連接數(shù)據(jù)庫的url;兩個root分別為Mysql的用戶名和密碼。5.3界面的實現(xiàn)5.3.1JavaVE實現(xiàn)系統(tǒng)服務(wù)端主界面系統(tǒng)服務(wù)端主頁面是MainFrame.java這個文件,具體代碼如下: publicvoidcreateSShell(){ sShell=newShell(display); sShell.setText("智能網(wǎng)吧管理系統(tǒng)"); sShell.setSize(newPoint(800,500)); sShell.setLayout(null); MenumenuBar=newMenu(sShell,SWT.BAR); MenuItemitemCard=newMenuItem(menuBar,SWT.CASCADE); Menumenu1=newMenu(itemCard); MenuItemitemCardsend=newMenuItem(menu1,SWT.PUSH); MenuItemitemCardinmoney=newMenuItem(menu1,SWT.PUSH); MenuItemitemCardloss=newMenuItem(menu1,SWT.PUSH); MenuItemitemCarddistroy=newMenuItem(menu1,SWT.PUSH); MenuItemitemSystemSet=newMenuItem(menuBar,SWT.CASCADE); Menumenu2=newMenu(itemSystemSet); MenuItemitemFeesSet=newMenuItem(menu2,SWT.PUSH); MenuItemitemGoodsSafeguard=newMenuItem(menu2,SWT.PUSH); MenuItemnews=newMenuItem(menu2,SWT.PUSH); itemSystemSet.setMenu(menu2); Menumenu3=newMenu(itemHelp); MenuItemitemAbout=newMenuItem(menu3,SWT.PUSH); MenuItemitemExit=newMenuItem(menuBar,SWT.PUSH); MenuItemitemChat=newMenuItem(menuBar,SWT.PUSH);sShell.open();}界面效果如下:圖5-1系統(tǒng)服務(wù)端主界面頁面中定義了兩個選項卡,一個選項卡用來控制客戶的上下網(wǎng)情況,對于未有人上網(wǎng)的計算機可以進行上網(wǎng)服務(wù),對于已經(jīng)有人上網(wǎng)的計算機可以進行下網(wǎng)服務(wù)和購物服務(wù)。另一個選項卡用來統(tǒng)計網(wǎng)吧經(jīng)營情況,網(wǎng)吧管理員可以根據(jù)年份或者月份對經(jīng)營情況進行查看和統(tǒng)計。5.3.2JavaVE實現(xiàn)系統(tǒng)客戶端主界面系統(tǒng)客戶端主頁面是ClientLogin.java這個文件,具體代碼如下:publicvoidcreateSShell(){ sShell=newShell(); sShell.setText("歡迎界面"); sShell.setSize(newPoint(300,200)); sShell.setLayout(null); connect=newButton(sShell,SWT.NONE); connect.setBounds(newRectangle(114,98,65,29)); connect.setText("聯(lián)系網(wǎng)管"); sShell.open();界面效果如下:圖5-2系統(tǒng)客戶端主界面5.4具體功能的實現(xiàn)5.4.1卡片管理模塊(1)系統(tǒng)的卡片發(fā)行對話框:圖5-3卡片發(fā)行對話框管理員輸入卡片信息,點擊發(fā)行進行卡片發(fā)行。這里進行了非空驗證:if(cardType.getText()==null||cardType.getText().trim().equals("")){messageBox.setMessage("卡片類型不能為空!"); }if(cachPledge.getText()==null||cachPledge.getText().trim().equals("")){messageBox.setMessage("押金不能為空!"); }if(inMoney.getText()==null||inMoney.getText().trim().equals("")){ messageBox.setMessage("充值金額不能為空!"); }if(name.getText()==null||name.getText().trim().equals("")){messageBox.setMessage("姓名不能為空!"); } Stringstr5=identifyPNum.getText();if(identifyPNum.getText()==null||identifyPNum.getText().trim().equals("")){messageBox.setMessage("身份證號碼不能為空!");}這里將對身份證號碼進行唯一性驗證,單擊“檢查唯一性”按鈕,系統(tǒng)將對輸入的身份證號碼與數(shù)據(jù)庫中已經(jīng)存在的身份證號碼進行逐個匹配,如果已存在在數(shù)據(jù)庫中則發(fā)卡失敗,返回繼續(xù)填寫信息;在其它信息和身份證號碼格式都填寫正確的情況下若身份證號碼不存在數(shù)據(jù)庫中則發(fā)卡成功。圖5-4發(fā)卡成功對話框(2)系統(tǒng)的卡片掛失對話框:圖5-5發(fā)髂掛失對話框管理員輸入來掛失客戶的身份證號碼,點擊“查找”按鈕,客戶的卡片內(nèi)的一切信息就會顯示出來,包括卡內(nèi)的剩余金額balance也會顯示出來,然后點擊“掛失”按鈕,就會出現(xiàn)一個選擇對話框是否返回客戶balance元,點擊“”就掛失成功,卡內(nèi)的剩余金額就變成0元。(3)系統(tǒng)的卡片充值對話框:圖5-6卡片充值對話框通過卡號對卡片進行充值,關(guān)鍵代碼為:Stringsql1="selectinMoneyfromcardsendwherecardId='"+str1+"'";//查找相應(yīng)要充值卡片的本來剩余金額rs=stmt.executeQuery(sql1);//執(zhí)行上條SQL語句 if(rs.next()){str2=rs.getFloat("inMoney");//得到剩余金額的值} floatstr4=str2+str3;//剩余金額與剛充值的金額相加Stringsql2="updatecardsendsetinMoney="+str4+"wherecardId='"+str1+"'";//把數(shù)據(jù)庫中的剩余金額改為充值之后的金額,從而充值動作完成stmt.executeUpdate(sql2);//執(zhí)行上條SQL語句(4)系統(tǒng)的卡片注銷對話框:圖5-7卡片注銷對話框若客戶不需要此張卡片,或者卡片已經(jīng)永久遺失,則可以通過該功能注銷卡片,通過用戶的身份證注銷卡片,返還客戶卡片內(nèi)的剩余金額。關(guān)鍵代碼如下:Stringsql="select*fromcardsendwhereidentifyPNum='"+str1+"'";//查找要注銷卡片的相關(guān)信息,并顯示在對話框中 rs=stmt.executeQuery(sql);//執(zhí)行以上SQL語句 Stringsql="deletefromcardsendwhereidentifyPNum='"+str2+"'";//刪除要注銷卡片的所有信息stmt.executeUpdate(sql);//執(zhí)行以上SQL語句5.4.2系統(tǒng)管理模塊點主對話框上的菜單欄中的系統(tǒng)設(shè)置,下拉菜單出現(xiàn)三個選擇項:收費設(shè)置、商品資料維護、系統(tǒng)初始化。收費設(shè)置收費設(shè)置類FeesSet.java調(diào)用了修改卡片費率的類ModifyFees.java,關(guān)鍵代碼為:ModifyFeesmodify=newModifyFees();//創(chuàng)建實例對象modifymodify.createSShell(ctype);//引用類ModifyFees中的createSShell()方法圖5-8收費設(shè)置對話框選中要修改的卡類的收費信息行,接著點擊修改記錄按鈕,即會彈出修改收費信息頁面,若沒有選中數(shù)據(jù)項,則會報錯。圖5-9修改收費信息對話框圖5-10報錯對話框商品資料維護商品資料維護類GoodsSafeguard.java調(diào)用了商品資料信息修改類GoodsModify.java。關(guān)鍵代碼為: ModifyGoodsmodify=newModifyGoods();//創(chuàng)建實例對象modify modify.createSShell(goodsIp);//引用類ModifyGoods中的createSShell()方法圖5-11商品資料設(shè)置對話框在商品資料設(shè)置對話框中有修改商品信息和添加商品信息的功能,選中要修改的信息項,然后點擊修改記錄,彈出修改商品信息對話框。圖5-12修改商品信息對話框修改后點修改按紐修改商品信息。關(guān)鍵代碼:Stringsql="updategoodssetquantity="+Quantity+",buyingPrice="+BuyingPrice+",sellingPrice="+SellingPrice+"wheregoodsName='"+GoodsName+"'";stmt.executeUpdate(sql);//調(diào)用executeUpdate()方法實現(xiàn)修改商品信息。在商品資料設(shè)置對話框中點擊添加記錄按鈕,即會彈出添加商品信息對話框,在添加商品信息對話框中填寫完整要添加商品的信息后,點擊添加按鈕完成了對商品信息的添加,關(guān)鍵代碼:strSQL="insertintogoods(goodsType,goodsName,unit,quantity,buyingprice,sellingprice)values('"+str1+"','"+str2+"','"+str3+"','"+str4+"','"+str5+"','"+str6+"')";stmt.executeUpdate(strSQL);//調(diào)用executeUpdate()方法實現(xiàn)添加商品信息。系統(tǒng)初始化系統(tǒng)初始化的類為New.java,該類實現(xiàn)系統(tǒng)中部分信息的處始清零,關(guān)鍵代碼為:Stringsql1="deletefromgoods";//商品資料初始化代碼 stmt.executeUpdate(sql1);//調(diào)用executeUpdate()方法執(zhí)行sql語句Stringsql1="deletefromtotal";//經(jīng)營情況初始化代碼stmt.executeUpdate(sql1);//調(diào)用executeUpdate()方法執(zhí)行sql語句Stringsql1="deletefromfees";//收費資料初始化代碼stmt.executeUpdate(sql1);//調(diào)用executeUpdate()方法執(zhí)行sql語句圖5-13系統(tǒng)信息初始化對話框點“商品資料初始化”按鈕,商品資料信息表中的內(nèi)容全部被清楚,可以重新設(shè)置商品資料的一切信息。其它按鈕也是如此。5.4.3服務(wù)端聊天管理模塊該模塊是和客戶端進行聯(lián)系的。點主頁面的開啟聊天服務(wù)圖5-14服務(wù)端聊天主對話框管理員要啟動服務(wù),客戶端的聊天程序才能連接上服務(wù)器而進行正常的聊天,點端口設(shè)置可以對要偵聽的端口進行設(shè)置,默認的端口號為8888,點停止服務(wù)服務(wù)端就會被關(guān)閉。服務(wù)端聊天管理主要包括6個文件,它們的功能如下:(1)ChatServer.java包含名為ChatServer的public類,其主要功能為定義服務(wù)器端的界面,添加事件偵聽與事件處理。調(diào)用ServerListen類來實現(xiàn)服務(wù)端用戶上線與下線的偵聽,調(diào)用ServerReceive類來實現(xiàn)服務(wù)器端的消息收發(fā)。(2)ServerListen.java該類實現(xiàn)服務(wù)端用戶上線與下線的偵聽。該類對用戶上線下線的偵聽是通過用戶鏈表(UserLinkList)來實現(xiàn)的,當用戶上線下線的情況發(fā)生變化時,該類會對主類的界面進行相應(yīng)的修改。(3)ServerReceive.java該類是實現(xiàn)服務(wù)器消息收發(fā)的類。該類分別定義了向客戶發(fā)送消息的方法,發(fā)送的消息會顯示在主界面類的界面上。PortConf.java該類是對服務(wù)器端偵聽端口進行修改配置的類。(5)Node.java用戶鏈表的節(jié)點類,定義了鏈表中的用戶。該類與前面所講的鏈表節(jié)點Node類的功能相當。(6)UserLinkList.java用戶鏈表節(jié)點的具體實現(xiàn)類。該類通過構(gòu)造函數(shù)構(gòu)造用戶鏈表,定義了添加用戶、刪除用戶、返回用戶數(shù)、根據(jù)用戶名查找用戶、根據(jù)索引查找用戶這5個方法。點退出按鈕,即會彈出是否真的要退出的選擇對話框。點擊是或者按回車鍵,就退出了界面。圖5-15聊天服務(wù)退出對話框5.4.4客戶端聊天服務(wù)模塊聊天服務(wù)客戶端主要包括5個文件,它們的功能如下:(1)ChatClient.java包含名為ChatClient的public類,其主要功能為定義客戶端的界面,添加事件偵聽與事件處理。該類定義了Connect()與DisConnect()方法實現(xiàn)與服務(wù)器的連接與斷開連接。同時該類還定義了SendMessage()方法向網(wǎng)管發(fā)送消息或者與網(wǎng)管悄悄話聊天。(2)ClientReceive該類是實現(xiàn)服務(wù)器端與客戶端消息收發(fā)的類。(3)ConnectConf.java該類繼承自對話框,是用戶對所要連接的服務(wù)器IP及偵聽端口進行修改配置的類。(4)UserConf.java該類也繼承自對話框,是用戶對連接到服務(wù)器時所顯示的用戶名進行修改配置的類。圖5-16聊天服務(wù)客戶端界面點聊天服務(wù)客戶端界面用戶設(shè)置,用戶可以配置連接后顯示的用戶名,若沒有配置用戶名,則顯示系統(tǒng)默認的用戶名。關(guān)鍵代碼:userInputName=userName.getText();/*輸入的用戶名在非空和字符小于15個字符的情況下,保存成功*/圖5-17客戶端用戶名配置界面點聊天服務(wù)客戶端界面連接設(shè)置,用戶可以配置要連接服務(wù)器的IP地址與端口號。關(guān)鍵代碼: userInputIp=""+InetAddress.getByName(inputIp.getText());userInputIp=userInputIp.substring(1);//判斷端口號是否合法savePort=Integer.parseInt(inputPort.getText());if(savePort<1||savePort>65535){DLGINFO.setText("偵聽端口必須是0-65535之間的整數(shù)!");inputPort.setText("");return;}//判斷端口號是否合法圖5-18連接設(shè)置界面點登錄,如果服務(wù)器端已經(jīng)啟動了服務(wù),則用戶可以正常與網(wǎng)管進行聊天。用戶登陸后也可以隨時注銷和退出客戶端聊天界面。如果服務(wù)器沒有被啟動,登錄就失敗。關(guān)鍵代碼: try{ socket=newSocket(ip,port); } catch(Exceptione){ JOptionPane.showConfirmDialog( this,"不能連接到指定的服務(wù)器。\n請確認連接設(shè)置是否正確。","提示",JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE); return; }圖5-19客戶端用戶登錄失敗界面5.4.5系統(tǒng)其它功能模塊(1)網(wǎng)吧經(jīng)營查詢模塊圖5-20網(wǎng)吧經(jīng)營查詢界面在這一模塊中可以根據(jù)年月來顯示網(wǎng)吧的經(jīng)營記錄,通過選擇需要顯示的年份或者月份從而顯示相關(guān)的一系列記錄,方便統(tǒng)計比較分析,提高經(jīng)濟效益。關(guān)鍵代碼:Stringsql1="select*fromtotalwhereyear="+Year+"";//SQL語句按年份查詢rs=stmt.executeQuery(sql1);//執(zhí)行SQL語句Stringsql1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論