【機(jī)房管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)5500字(論文)】_第1頁(yè)
【機(jī)房管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)5500字(論文)】_第2頁(yè)
【機(jī)房管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)5500字(論文)】_第3頁(yè)
【機(jī)房管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)5500字(論文)】_第4頁(yè)
【機(jī)房管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)5500字(論文)】_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

機(jī)房管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)目錄TOC\o"1-3"\h\u250231.引言 1125892系統(tǒng)相關(guān)技術(shù) 1303082.1JAVA語(yǔ)言的特點(diǎn) 1158512.2java鏈表的實(shí)現(xiàn) 1196443系統(tǒng)分析與設(shè)計(jì) 2121043.1系統(tǒng)分析概述 2238343.2系統(tǒng)主要功能 230573.3數(shù)據(jù)庫(kù)設(shè)計(jì) 3277653.3.1數(shù)據(jù)庫(kù)設(shè)計(jì)原則 45083.3.2概念結(jié)構(gòu)設(shè)計(jì) 4249933.3.3邏輯結(jié)構(gòu)設(shè)計(jì) 5209224系統(tǒng)實(shí)現(xiàn) 6177364.1卡片管理模塊 631374.2系統(tǒng)管理模塊 9191634.3服務(wù)端聊天管理模塊 11110524.4客戶(hù)端聊天服務(wù)模塊 1229133總結(jié) 1429530參考文獻(xiàn) 14機(jī)房管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)1.引言隨著計(jì)算機(jī)科學(xué)技術(shù)和網(wǎng)絡(luò)通訊技術(shù)的迅猛發(fā)展,計(jì)算機(jī)性能的逐漸增強(qiáng),價(jià)格的逐漸降低,使得越來(lái)越多的中、小學(xué)都擁有了自己的多媒體機(jī)房,城市中的機(jī)房更是隨處可見(jiàn)、比比皆是。這些機(jī)房和機(jī)房中的計(jì)算機(jī)少則有幾十臺(tái),多則上百臺(tái)。另外隨著近幾年我國(guó)高等院校的大規(guī)模擴(kuò)招,我國(guó)的在校大學(xué)生人數(shù)在迅速地膨脹,各大專(zhuān)院校的計(jì)算機(jī)實(shí)驗(yàn)室也在不斷地?cái)U(kuò)大,一般院校的一個(gè)計(jì)算機(jī)實(shí)驗(yàn)室少則幾百臺(tái),多則上千臺(tái)計(jì)算機(jī)。這使得如何管理好這些計(jì)算機(jī)成為一個(gè)比較傷腦筋的問(wèn)題。目前,絕大多數(shù)機(jī)房和機(jī)房還處于原始的人工管理階段,而且大部分機(jī)房為了提高資源的利用率,都在業(yè)余時(shí)間對(duì)學(xué)生開(kāi)放,這都為機(jī)房的管理增加了難度,此外人工管理還存在著一些不可避免的缺陷。機(jī)房管理系統(tǒng)是近幾年來(lái)討論比較多的一個(gè)技術(shù)專(zhuān)題,同時(shí)也有很多不同的、成熟的系統(tǒng),包括純軟件的系統(tǒng)及軟、硬件結(jié)合的系統(tǒng)(IC卡等)。實(shí)驗(yàn)室信息管理系統(tǒng)技術(shù)實(shí)際上包括兩個(gè)方面內(nèi)容:其一是管理思想;其二是實(shí)現(xiàn)這一思想的技術(shù)手段。2系統(tǒng)相關(guān)技術(shù)2.1JAVA語(yǔ)言的特點(diǎn)Java語(yǔ)言獨(dú)特的運(yùn)行機(jī)制使得它具有良好的二進(jìn)制可移植性,利用Java,開(kāi)發(fā)人員可編寫(xiě)出與具體平臺(tái)無(wú)關(guān),普遍適用的應(yīng)用程序,大大降低了開(kāi)發(fā)、維護(hù)和管理的開(kāi)銷(xiāo),也就是一次編譯,隨處運(yùn)行,方便存取數(shù)據(jù)庫(kù)的JDBAPI,CORBA、JND1、RM1技術(shù)以及能夠在Internet應(yīng)用中保護(hù)數(shù)據(jù)的安全模式等功能,為用戶(hù)和開(kāi)發(fā)人員提供一個(gè)具有高度的可移植性、兼容性和安全性的平臺(tái)。Java語(yǔ)言具有動(dòng)態(tài)性的特點(diǎn),它的動(dòng)態(tài)性是面向?qū)ο笤O(shè)計(jì)方法的擴(kuò)展,它允許程序動(dòng)態(tài)的裝入運(yùn)行過(guò)程中所需要的類(lèi)。2.2java鏈表的實(shí)現(xiàn)線型表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)是把線型表的數(shù)據(jù)元素存放在節(jié)點(diǎn)中,因此,用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)實(shí)現(xiàn)的線性表稱(chēng)為鏈表。節(jié)點(diǎn)(node)由數(shù)據(jù)元素域和一個(gè)或若干個(gè)指針域組成。指針是用來(lái)指向其他節(jié)點(diǎn)地址的,指向鏈表第一個(gè)節(jié)點(diǎn)的指針成為鏈表的頭指針,一個(gè)鏈表由頭指針指向第一個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)的鏈指向其后繼節(jié)點(diǎn),其中一個(gè)節(jié)點(diǎn)的鏈為空(null)。在C或C++里鏈表可以通過(guò)指針的操作來(lái)實(shí)現(xiàn),在Java中是沒(méi)有指針的,但是可以通過(guò)使用對(duì)象的引用等方法實(shí)現(xiàn)鏈表。鏈表的節(jié)點(diǎn)個(gè)數(shù)稱(chēng)為鏈表的長(zhǎng)度,長(zhǎng)度為零時(shí)稱(chēng)為空表。鏈表可以根據(jù)鏈的個(gè)數(shù)可以分為單向鏈表和雙向鏈表,本文只討論單向鏈表,一個(gè)單向鏈表包含一組節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)都包含了有關(guān)數(shù)據(jù)和指向下一個(gè)節(jié)點(diǎn)的指針。表的頭就是一個(gè)指針,它指向第一個(gè)節(jié)點(diǎn),而表的結(jié)束則用空指針表示。3系統(tǒng)分析與設(shè)計(jì)3.1系統(tǒng)分析概述采用自頂向下的結(jié)構(gòu)化分析方法分析和表達(dá)用戶(hù)需求的方法:圖3-1需求分析圖用結(jié)構(gòu)化的方法做需求分析,可以將任何一個(gè)系統(tǒng)可以抽象成如下圖的形式:圖3-2系統(tǒng)抽象圖將處理功能分解成若干個(gè)子功能,再將各個(gè)子功能繼續(xù)分解,直到把整個(gè)系統(tǒng)工作流程表達(dá)清楚為止。3.2系統(tǒng)主要功能本系統(tǒng)主要功能涉及到如下部分:卡片管理、系統(tǒng)設(shè)置,聊天服務(wù)管理,另外還有管理員對(duì)機(jī)房進(jìn)行上下機(jī)管理。以下是本系統(tǒng)的模塊圖:圖3-3系統(tǒng)模塊圖1.卡片管理功能上網(wǎng)學(xué)生在卡中儲(chǔ)存一定數(shù)量的金額,每次上機(jī)費(fèi)用從中扣除。待卡中金額用完時(shí)可以向卡中加存,繼續(xù)使用。如卡片遺失就可去該機(jī)房進(jìn)行掛失。學(xué)生若不需要該機(jī)房計(jì)費(fèi)卡也可注銷(xiāo),拿回卡片內(nèi)剩余的金額。2.系統(tǒng)設(shè)置功能系統(tǒng)管理是機(jī)房管理員才具有的功能,即機(jī)房的費(fèi)率設(shè)置,智能卡計(jì)費(fèi)管理系統(tǒng)的各項(xiàng)功能都是根據(jù)經(jīng)營(yíng)中的實(shí)際作經(jīng)驗(yàn)及長(zhǎng)期發(fā)展策略而提煉而成,比如為了支持機(jī)房?jī)?yōu)惠政策,提供靈活機(jī)動(dòng)的費(fèi)率設(shè)置功能,讓機(jī)房管理系統(tǒng)真正成為機(jī)房的管家,而不是礙手礙腳的障礙。包括機(jī)房不同卡片不同時(shí)間段的收費(fèi)設(shè)置和機(jī)房所售商品的進(jìn)售價(jià)設(shè)置,通過(guò)這兩個(gè)設(shè)置可以根據(jù)當(dāng)時(shí)的需求對(duì)價(jià)格進(jìn)行管理。3.聊天服務(wù)管理功能聊天程序分為服務(wù)器端和學(xué)生端兩個(gè)部分,服務(wù)器端的功能為:在特定的端口上進(jìn)行偵聽(tīng),等待學(xué)生端連接;學(xué)生可以配置服務(wù)端的偵聽(tīng)端口,默認(rèn)端口為8888;向已經(jīng)連接到服務(wù)端的學(xué)生發(fā)送系統(tǒng)消息;統(tǒng)計(jì)在線人數(shù);當(dāng)停止服務(wù)時(shí)斷開(kāi)所有的用戶(hù)連接。學(xué)生端的功能為:連接到已經(jīng)開(kāi)啟聊天服務(wù)的服務(wù)端;學(xué)生可以配置要連接服務(wù)器端的IP地址與端口號(hào);用戶(hù)可以配置連接后顯示的學(xué)生名;當(dāng)服務(wù)器開(kāi)啟的話,用戶(hù)可以隨時(shí)登陸和注銷(xiāo);用戶(hù)可以向機(jī)房管理員發(fā)送消息,提出需要解決的問(wèn)題或者要求。4.上下機(jī)情況功能這一功能主要是管理機(jī)房學(xué)生的上下機(jī),學(xué)生一上機(jī)即可以對(duì)其進(jìn)行計(jì)費(fèi),在上機(jī)的過(guò)程中學(xué)生可以發(fā)送消息給管理員。若學(xué)生要下機(jī)了,就可以進(jìn)行結(jié)帳退出。5.退出系統(tǒng)功能只要點(diǎn)擊退出按鈕,就會(huì)出現(xiàn)提示對(duì)話框“確定要退出嗎?”,點(diǎn)擊“是”即可退出系統(tǒng)。3.3數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)設(shè)計(jì)的目標(biāo)是要求完全滿足業(yè)務(wù)的數(shù)據(jù)存儲(chǔ)要求。如果能夠設(shè)計(jì)一個(gè)合理的數(shù)據(jù)庫(kù)模型,不僅會(huì)降低程序編程和維護(hù)的難度,也會(huì)提高系統(tǒng)實(shí)際運(yùn)行的性能,因而必須仔細(xì)的制定設(shè)計(jì)步驟方案,了解規(guī)范的設(shè)計(jì)方法和必要的規(guī)則。3.3.1數(shù)據(jù)庫(kù)設(shè)計(jì)原則對(duì)于機(jī)房管理系統(tǒng)來(lái)說(shuō),擁有大量的上網(wǎng)人員需要強(qiáng)有力的數(shù)據(jù)庫(kù)支撐,但是對(duì)于本系統(tǒng)來(lái)說(shuō),由于不會(huì)在實(shí)際環(huán)境中運(yùn)行,所以數(shù)據(jù)庫(kù)的使用可以選擇容易使用,并且易于維護(hù)的、容易獲取的數(shù)據(jù)庫(kù)作為后臺(tái)存放機(jī)房相關(guān)信息等的數(shù)據(jù)庫(kù)最終選擇了MYSQL作為后臺(tái)支持?jǐn)?shù)據(jù)庫(kù)。3.3.2概念結(jié)構(gòu)設(shè)計(jì)E-R模型和關(guān)系模型是兩種對(duì)數(shù)據(jù)庫(kù)不同的描述,在E-R模型中用實(shí)體集和聯(lián)系表示現(xiàn)實(shí)世界中的事物及其相互之間的關(guān)系;而在關(guān)系模型中則用單一的結(jié)構(gòu)來(lái)組織數(shù)據(jù)。所以,在這里就存在一個(gè)如何將E-R模型轉(zhuǎn)化為關(guān)系模型的問(wèn)題。下面介紹轉(zhuǎn)化所需要遵守的幾條準(zhǔn)則:★E-R模型中的每一個(gè)實(shí)體都轉(zhuǎn)化成一個(gè)同名的關(guān)系,實(shí)體集的屬性就是關(guān)系的屬性,實(shí)體集的碼就是關(guān)系的碼?!顴-R模型中的每一個(gè)聯(lián)系也用一個(gè)關(guān)系表示,與該聯(lián)系相連的各實(shí)體集的碼以及聯(lián)系的屬性轉(zhuǎn)化為關(guān)系的屬性。該關(guān)系的碼有三種情況:●若聯(lián)系為1:1,則每個(gè)實(shí)體的碼均是該關(guān)系的候選碼?!袢袈?lián)系為1:n,則關(guān)系的碼為n端實(shí)體集的碼?!袢袈?lián)系為m:n,則關(guān)系的碼為各實(shí)體集碼的組合?!锞哂邢嗤a的關(guān)系模式可以合并(合并原則)。cardsendcardsendidentifyPNumumnamecachPledgeinMoneycardTypecardIdidentifyPNumumnamecachPledgeinMoneycardTypecardId圖3-4卡片實(shí)體及其屬性圖feesfeesnightunitfeesnightfeesunitunitfeestimecardTypelowestnightunitfeesnightfeesunitunitfeestimecardTypelowest圖3-5費(fèi)率實(shí)體及其屬性圖updowncomputerupdowncomputermoneyIncardcomputerIdmoneyIncardcomputerIdcomputerAdresscomputerAdressplayMoneybuyMoneytotalMoneycardTypetimeplayMoneybuyMoneytotalMoneycardTypetime圖3-6上下機(jī)實(shí)體及其屬性圖3.3.3邏輯結(jié)構(gòu)設(shè)計(jì)設(shè)計(jì)邏輯結(jié)構(gòu)的是和分三步進(jìn)行:將概念結(jié)構(gòu)(E-R圖)轉(zhuǎn)化為一般關(guān)系模型將轉(zhuǎn)化來(lái)的關(guān)系模型向MYSQL支持下的數(shù)據(jù)模型轉(zhuǎn)化對(duì)數(shù)據(jù)模型進(jìn)行優(yōu)化,消除冗余字段。對(duì)數(shù)據(jù)依賴(lài)進(jìn)行極小化處理。對(duì)關(guān)系模式進(jìn)行必要的分解合并和優(yōu)化,形成以下的邏輯結(jié)構(gòu)表3-1cardsend信息表字段數(shù)據(jù)類(lèi)型大小允許空/主鍵描述cardIdint11NO/主鍵卡片idcardTypevarchar20NO卡片類(lèi)型cachPledgefloat8NO卡片押金inMoneyfloat8NO卡內(nèi)金額givePresentfloat8NO卡內(nèi)贈(zèng)送金額namevarchar20NO持卡人姓名identifyPNumvarchar45NO持卡人身份證表3-2卡片fees信息表字段數(shù)據(jù)類(lèi)型大小允許空/主鍵描述cardtypevarchar10NO/主鍵卡片類(lèi)型lowestfloat8NO最低收費(fèi)timeint11NO最小收費(fèi)單位unitfeesfloat8NO每單位收費(fèi)nightfeesunitint11NO通宵計(jì)費(fèi)單位nightunitfeesfloat8NO通宵每單位計(jì)費(fèi)表3-3updowncomputer臨時(shí)信息表字段數(shù)據(jù)類(lèi)型大小允許空/主鍵描述computerIdint11NO/主鍵計(jì)算機(jī)idIpadressvarchar25NO計(jì)算機(jī)IpcardTypevarchar20YES卡片類(lèi)型moneyIncardfloat8YES卡內(nèi)金額timevarchar20YES上機(jī)時(shí)間playMoneyfloat8YES上網(wǎng)消費(fèi)buyMoneyfloat8YES購(gòu)物消費(fèi)totalMoneyfloat8YES總消費(fèi)yearint11YES上機(jī)年份monthint11YES上機(jī)月份dayint11YES上機(jī)時(shí)間(日)hourint11YES上機(jī)時(shí)間(時(shí))minuteint11YES上機(jī)時(shí)間(分)secondint11YES上機(jī)時(shí)間(秒)4系統(tǒng)實(shí)現(xiàn)4.1卡片管理模塊(1)系統(tǒng)的卡片發(fā)行對(duì)話框:圖4-1卡片發(fā)行對(duì)話框管理員輸入卡片信息,點(diǎn)擊發(fā)行進(jìn)行卡片發(fā)行。這里進(jìn)行了非空驗(yàn)證:if(cardType.getText()==null||cardType.getText().trim().equals("")){messageBox.setMessage("卡片類(lèi)型不能為空!"); }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("身份證號(hào)碼不能為空!");}這里將對(duì)身份證號(hào)碼進(jìn)行唯一性驗(yàn)證,單擊“檢查唯一性”按鈕,系統(tǒng)將對(duì)輸入的身份證號(hào)碼與數(shù)據(jù)庫(kù)中已經(jīng)存在的身份證號(hào)碼進(jìn)行逐個(gè)匹配,如果已存在在數(shù)據(jù)庫(kù)中則發(fā)卡失敗,返回繼續(xù)填寫(xiě)信息;在其它信息和身份證號(hào)碼格式都填寫(xiě)正確的情況下若身份證號(hào)碼不存在數(shù)據(jù)庫(kù)中則發(fā)卡成功。圖4-2發(fā)卡成功對(duì)話框(2)系統(tǒng)的卡片掛失對(duì)話框:圖4-3發(fā)髂掛失對(duì)話框管理員輸入來(lái)掛失學(xué)生的身份證號(hào)碼,點(diǎn)擊“查找”按鈕,學(xué)生的卡片內(nèi)的一切信息就會(huì)顯示出來(lái),包括卡內(nèi)的剩余金額balance也會(huì)顯示出來(lái),然后點(diǎn)擊“掛失”按鈕,就會(huì)出現(xiàn)一個(gè)選擇對(duì)話框是否返回學(xué)生balance元,點(diǎn)擊“”就掛失成功,卡內(nèi)的剩余金額就變成0元。(3)系統(tǒng)的卡片充值對(duì)話框:圖4-4卡片充值對(duì)話框通過(guò)卡號(hào)對(duì)卡片進(jìn)行充值,關(guān)鍵代碼為:Stringsql1="selectinMoneyfromcardsendwherecardId='"+str1+"'";//查找相應(yīng)要充值卡片的本來(lái)剩余金額rs=stmt.executeQuery(sql1);//執(zhí)行上條SQL語(yǔ)句 if(rs.next()){str2=rs.getFloat("inMoney");//得到剩余金額的值} floatstr4=str2+str3;//剩余金額與剛充值的金額相加Stringsql2="updatecardsendsetinMoney="+str4+"wherecardId='"+str1+"'";//把數(shù)據(jù)庫(kù)中的剩余金額改為充值之后的金額,從而充值動(dòng)作完成stmt.executeUpdate(sql2);//執(zhí)行上條SQL語(yǔ)句(4)系統(tǒng)的卡片注銷(xiāo)對(duì)話框:圖4-5卡片注銷(xiāo)對(duì)話框若學(xué)生不需要此張卡片,或者卡片已經(jīng)永久遺失,則可以通過(guò)該功能注銷(xiāo)卡片,通過(guò)用戶(hù)的身份證注銷(xiāo)卡片,返還學(xué)生卡片內(nèi)的剩余金額。關(guān)鍵代碼如下:Stringsql="select*fromcardsendwhereidentifyPNum='"+str1+"'";//查找要注銷(xiāo)卡片的相關(guān)信息,并顯示在對(duì)話框中 rs=stmt.executeQuery(sql);//執(zhí)行以上SQL語(yǔ)句 Stringsql="deletefromcardsendwhereidentifyPNum='"+str2+"'";//刪除要注銷(xiāo)卡片的所有信息stmt.executeUpdate(sql);//執(zhí)行以上SQL語(yǔ)句4.2系統(tǒng)管理模塊點(diǎn)主對(duì)話框上的菜單欄中的系統(tǒng)設(shè)置。收費(fèi)設(shè)置類(lèi)FeesSet.java調(diào)用了修改卡片費(fèi)率的類(lèi)ModifyFees.java,關(guān)鍵代碼為:ModifyFeesmodify=newModifyFees();//創(chuàng)建實(shí)例對(duì)象modifymodify.createSShell(ctype);//引用類(lèi)ModifyFees中的createSShell()方法圖4-6收費(fèi)設(shè)置對(duì)話框選中要修改的卡類(lèi)的收費(fèi)信息行,接著點(diǎn)擊修改記錄按鈕,即會(huì)彈出修改收費(fèi)信息頁(yè)面,若沒(méi)有選中數(shù)據(jù)項(xiàng),則會(huì)報(bào)錯(cuò)。圖4-7修改收費(fèi)信息對(duì)話框圖4-8報(bào)錯(cuò)對(duì)話框4.3服務(wù)端聊天管理模塊該模塊是和學(xué)生端進(jìn)行聯(lián)系的。點(diǎn)主頁(yè)面的開(kāi)啟聊天服務(wù)圖4-9服務(wù)端聊天主對(duì)話框管理員要啟動(dòng)服務(wù),學(xué)生端的聊天程序才能連接上服務(wù)器而進(jìn)行正常的聊天,點(diǎn)端口設(shè)置可以對(duì)要偵聽(tīng)的端口進(jìn)行設(shè)置,默認(rèn)的端口號(hào)為8888,點(diǎn)停止服務(wù)服務(wù)端就會(huì)被關(guān)閉。服務(wù)端聊天管理主要包括6個(gè)文件,它們的功能如下:(1)ChatServer.java包含名為ChatServer的public類(lèi),其主要功能為定義服務(wù)器端的界面,添加事件偵聽(tīng)與事件處理。調(diào)用ServerListen類(lèi)來(lái)實(shí)現(xiàn)服務(wù)端用戶(hù)上線與下線的偵聽(tīng),調(diào)用ServerReceive類(lèi)來(lái)實(shí)現(xiàn)服務(wù)器端的消息收發(fā)。(2)ServerListen.java該類(lèi)實(shí)現(xiàn)服務(wù)端用戶(hù)上線與下線的偵聽(tīng)。該類(lèi)對(duì)用戶(hù)上線下線的偵聽(tīng)是通過(guò)用戶(hù)鏈表(UserLinkList)來(lái)實(shí)現(xiàn)的,當(dāng)用戶(hù)上線下線的情況發(fā)生變化時(shí),該類(lèi)會(huì)對(duì)主類(lèi)的界面進(jìn)行相應(yīng)的修改。(3)ServerReceive.java該類(lèi)是實(shí)現(xiàn)服務(wù)器消息收發(fā)的類(lèi)。該類(lèi)分別定義了向?qū)W生發(fā)送消息的方法,發(fā)送的消息會(huì)顯示在主界面類(lèi)的界面上。(4)PortConf.java該類(lèi)是對(duì)服務(wù)器端偵聽(tīng)端口進(jìn)行修改配置的類(lèi)。(5)Node.java用戶(hù)鏈表的節(jié)點(diǎn)類(lèi),定義了鏈表中的用戶(hù)。該類(lèi)與前面所講的鏈表節(jié)點(diǎn)Node類(lèi)的功能相當(dāng)。(6)UserLinkList.java用戶(hù)鏈表節(jié)點(diǎn)的具體實(shí)現(xiàn)類(lèi)。該類(lèi)通過(guò)構(gòu)造函數(shù)構(gòu)造用戶(hù)鏈表,定義了添加用戶(hù)、刪除用戶(hù)、返回用戶(hù)數(shù)、根據(jù)用戶(hù)名查找用戶(hù)、根據(jù)索引查找用戶(hù)這5個(gè)方法。點(diǎn)退出按鈕,即會(huì)彈出是否真的要退出的選擇對(duì)話框。點(diǎn)擊是或者按回車(chē)鍵,就退出了界面。圖4-10聊天服務(wù)退出對(duì)話框4.4客戶(hù)端聊天服務(wù)模塊聊天服務(wù)客戶(hù)端主要包括5個(gè)文件,它們的功能如下:(1)ChatClient.java包含名為ChatClient的public類(lèi),其主要功能為定義學(xué)生端的界面,添加事件偵聽(tīng)與事件處理。該類(lèi)定義了Connect()與DisConnect()方法實(shí)現(xiàn)與服務(wù)器的連接與斷開(kāi)連接。同時(shí)該類(lèi)還定義了SendMessage()方法向網(wǎng)管發(fā)送消息或者與網(wǎng)管悄悄話聊天。(2)ClientReceive該類(lèi)是實(shí)現(xiàn)服務(wù)器端與學(xué)生端消息收發(fā)的類(lèi)。(3)ConnectConf.java該類(lèi)繼承自對(duì)話框,是用戶(hù)對(duì)所要連接的服務(wù)器IP及偵聽(tīng)端口進(jìn)行修改配置的類(lèi)。(4)UserConf.java該類(lèi)也繼承自對(duì)話框,是用戶(hù)對(duì)連接到服務(wù)器時(shí)所顯示的用戶(hù)名進(jìn)行修改配置的類(lèi)。圖4-11聊天服務(wù)學(xué)生端界面點(diǎn)聊天服務(wù)客戶(hù)端界面用戶(hù)設(shè)置,用戶(hù)可以配置連接后顯示的用戶(hù)名,若沒(méi)有配置用戶(hù)名,則顯示系統(tǒng)默認(rèn)的用戶(hù)名。關(guān)鍵代碼:userInputName=userName.getText();/*輸入的用戶(hù)名在非空和字符小于15個(gè)字符的情況下,保存成功*/圖4-12學(xué)生端用戶(hù)名配置界面點(diǎn)聊天服務(wù)學(xué)生端界面連接設(shè)置,用戶(hù)可以配置要連接服務(wù)器的IP地址與端口號(hào)。關(guān)鍵代碼: userInputIp=""+InetAddress.getByName(inputIp.getText());userInputIp=userInputIp.substring(1);//判斷端口號(hào)是否合法savePort=Integer.parseInt(inputPort.getText());if(savePort<1||savePort>65535){DLGINFO.setText("偵聽(tīng)端口必須是0-65535之間的整數(shù)!");inputPort.setText("");return;}//判斷端口號(hào)是否合法圖4-13連接設(shè)置界面點(diǎn)登錄,如果服務(wù)器端已經(jīng)啟動(dòng)了服務(wù),則用戶(hù)可以正常與網(wǎng)管進(jìn)行聊天。用戶(hù)登陸后也可以隨時(shí)注銷(xiāo)和退出學(xué)生端聊天界面。如果服務(wù)器沒(méi)有被啟動(dòng),登錄就失敗。關(guān)鍵代碼: try{ socket=newSo

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論