




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、計算機與信息技術學院局域網即時通信軟件編寫:指導教師:可行性分析報告1引言需求規格說明書是需求分析的產物,它是軟件系統生存期中軟件定義階段的最后一個步驟。作為整個軟件開發過程的指南,它也是軟件開發人員開發出符合用戶要求的軟件的基礎。1.1編寫目的軟件需求說明書的編制目的是為了使用戶和軟件開發者雙方對該軟件的初始規定有一個共同的理解;使之成為整個開發工作的基礎。本軟件需求說明書的讀者是系統開發人員或合同約定的人負。1.2背景a.軟件系統名稱:山西大學計算機科學與信息技術學院局域網即時通信軟件b.本項目任務的提出者:計算機科學與信息技術學院2005級林真真、金鵬、王超、張拓c.本項目的開發者為:計
2、算機科學與信息技術學院2005級林真真、金鵬、王超、張拓d.該軟件系統同其他系統或其他機構的基本的相互來往關系:該系統是一個局域網內部系統,獨立于網絡服務商和其他系統2.可行性研究的前提2.1要求功能:這是一個通信軟件系統,主要負責本局域網內部人員之間進行便捷的互動交流,以便局域網內部的交流迅速、快捷,節省信息傳遞時間。2.2目標目前的通信軟件絕大多數都依賴于通信軟件服務商提供的軟件質量和網絡服務商提供的網絡質量。只有在這些通信軟件和網絡服務提供商的提供服務時,才能進行局域網內部人員之間的網絡通信。本通信軟件可以滿足局域網內部人員不依賴于網絡服務提供商和其他軟件服務商,來完成局域網內部人員的即
3、時通訊,實現數據發送,文件傳輸。2.3條件、假定和限制a.開發者的計算機性能不夠穩定,對Mysql等數據庫軟件和Eclipse等開發工具有不利影響。b.可利用的信息和資源比較單一,客戶的需求分析主要來自開發者在計算機科學與信息技術學院學習和生活過程中的交流學習帶來很大的方便之處;而技術方面,對Mysql等數據庫軟件和Java、以及網絡編程的掌握和應用還有待提高,不足之處靠借閱有關書籍和向老師請教進行補充,組內成員間相互討論分析決定。c.經費不足d.進行系統方案選擇比較的時間較短。e.系統投入使用的時間最晚為本學期末3.對現有系統的分析3.1處理流程和數據流程a.網絡服務方面:由網絡服務商提供網
4、絡服務b.軟件服務方面:由軟件服務商提供軟件;用戶獲得軟件-注冊-登陸-客戶發送端發送信息-軟件提供商服務器-客戶接收端接受信息3.2工作負荷由于網絡服務商提供網絡服務、軟件服務商提供軟件服務,客戶端只是使用軟件,所以工作量幾乎沒有3.3費用開支由于需要網絡服務商提供網絡服務,所以需要承擔網絡服務費用3.4人員由于網絡服務商提供網絡服務、軟件服務商提供軟件服務,所以不需要人員來來維護服務器。3.5設備局域網服務器,個人主機。3.6局限性由于網絡服務商提供網絡服務、軟件服務商提供軟件服務,雖然這樣使用起來很方便,并且省去了維護人員的維護費用和硬件設備費用,但是在這種模式下,軟件使用時嚴重依賴于軟
5、件服務提供商和網絡服務提供商所提供的服務質量。假若任何一方出現問題,那么現有的客戶端軟件就不能使用。因此開發局域網內部使用的即時通信軟件是非常有必要的。4.所建議的系統4.1對所建議系統的說明a.功能概括:(1)提供局域網內部即時文字信息傳輸,語音信息傳輸,文件傳輸(2)對用戶信息進行增加、刪除、更改b.系統環境以及工具系統運行環境:WINDOWS/LINUX和JVM編程語言:JAVA數據庫:Mysql4.2處理流程和數據流程處理流程:客戶請求登陸內部服務器接受請求-客戶發送(接收)信息數據流程:客戶請求登陸信息:客戶內部服務器客戶發送信息:客戶內部服務器客戶4.3改進之處本軟件系統完全不依賴
6、外部網絡服務提供商和軟件服務提供商,能夠在局域網內部提供便捷的通信服務。4.4影響4.4.1.對設備的影響運行該軟件時,必須安裝相應操作系統JVM。4.4.2.對軟件的影響JAVA以及Mysql4.4.3.對用戶單位機構的影響使用該系統,客戶原有體系幾乎不需要太大的變化,這是個即裝即用的軟件,對人員技術的要求不高,只要用戶會簡單的計算機操作即可4.4.4.對系統運行過程的影響該系統工作量小,一般情況下不會由于信息量大而造成麻煩。因為軟件只是的服務只是在學院內部網絡中使用,一般同一時間段的使用人數不會超過1000人,所以該系統的負擔不會太大。4.4.5.對開發的影響影響開發進程,使工程停滯,在開
7、發過程中給程序員打來很大不便。4.4.6.對地點和設施的影響由于該系統專門服務給學院內部,所以需要在學院內部網絡服務器上安裝該系統的服務器端。4.5技術條件方面的可能性技術方面,我們選擇的是JAVA和Mysql,都是組員熟悉的語言,即使遇到部分困難,也可以從豐富的參考書中找到解決方案。所以技術方面是絕對可行的。5.可選擇的其他系統方案由于該系統的結構比較簡單、開發時間倉促,故只使用這一個方案,無其他備用方案。6.社會因素方面的可能性使用方面的可行性:學院在沒有使用我們這套系統前,都采用其他軟件服務商提供的軟件,相對而言服務質量難以得到保證。而根據現有的硬件條件,在辦公室中,學院的老師和在實驗室
8、的學生都配備電腦。而且電腦的系統軟件都是WINDOWS98以上的,所以足夠可以來運行我們的軟件;從學院老師和學生的文化素質來看,我們的軟件操作簡單,運行方便,在用我們的軟件來進行通信是沒有什么困難的。7.結論經過了我們整個的可行性研究報告的研究,最終我們得出了一個研究的結論。結論是:我們可以立即執行我們的軟件設計,來達到我們的預期目標。軟件需求說明書1引言需求規格說明書是需求分析的產物,它是軟件系統生存期中軟件定義階段的最后一個步驟。作為整個軟件開發過程的指南,它也是軟件開發人員開發出符合用戶要求的軟件的基礎。1.1編寫目的軟件需求說明書的編制目的是為了使用戶和軟件開發者雙方對該軟件的初始規定
9、有一個共同的理解;使之成為整個開發工作的基礎。本軟件需求說明書的讀者是系統開發人員或合同約定的人負。1.2背景(1)本系統的名稱是:局域網即時通信軟件。(2)本項目的任務提出者是計算機科學與信息技術學院2005級林真真、金鵬、王超、張拓,開發者是計算機科學與信息技術學院2005級林真真、金鵬、王超、張拓,用戶是企業人事及相關部門,實現該軟件的對象:企業及個人局域網內部使用。1.3定義數據字典:關于數據的信息的集合,也即是對數據流圖中包含的元素的定義的集合。1.4參考資料引用資料計算機科學與信息技術學院通信系統軟件說明書計算機科學與信息技術學院通信系統概要說明書計算機科學與信息技術學院通信系統數
10、據庫設計說明書國家開發標準文檔軟件工程(第四版-張海藩)UML面向對象設計與分析(朱麗平等)2任務概述2.1目標局域網即時通信軟件是現代網絡通信技術的重要內容,也是萬維網通信技術的基礎性工作。局域網即時通信軟件在開發過程中有很多不利于實現的地方,不適應現代的網絡通信任務。局域網即時通信軟件是局域網企業內部及個人局域網內部不實現信息化、規范化,使工作效率及重要信息的可靠傳遞。2.2用戶的特點本軟件的最終用戶是局域網內部任何人員。局域網內有專門的服務器管理人員,具有一定的計算機操作知識;軟件的維護人員是局域網內部的專業網絡管理員,對網絡和數據庫的操作比較熟悉,同時對VB或Delphi,Java編程
11、有一定的經驗。2.3假定和約束a.開發者的計算機性能不夠穩定,對Mysql等數據庫軟件和Eclipse等開發工具有不利影響。b.可利用的信息和資源比較單一,客戶的需求分析主要來自開發者在計算機科學與信息技術學院學習和生活過程中的一些問題;而技術方面,對Mysql等數據庫軟件和Java、以及網絡編程的掌握和應用還有待提高,不足之處靠借閱有關書籍和向老師請教進行補充,組內成員間相互討論分析決定。c.經費不足d.進行系統方案選擇比較的時間較短。e.系統投入使用的時間最晚為本學期末3需求規定3.l對功能的規定3.l.1系統功能主要分為客戶端發送接收消息和服務器數據庫管理和處理.通信系統功能部分分為2類
12、:客戶相關,管理員相關.從使用和操作功能上分,有三種用戶:超級管理員用戶(管理所有用戶)管理員用戶(管理普通用戶信息)普通用戶(接收發送信息,更改密碼).為了便于整個系統組織管理,把各個相對獨立的數據或功能組織到更大的系統中來,我們把各個相對獨立的功能完全獨立設計,編譯成獨立的目標(功能)模塊,各功能模塊最后被集成到一控制臺模塊中.相應的將系統分為一個控制臺程序和兩個子系統.客戶子系統主要功能有發送接收信息和更改密碼;管理員子系統主要功能是管理用戶信息,在這里,某些模塊都能用到的功能將不在重復解釋,在每個模塊中只列出每個子模塊區別于其他子模塊的功能實現.3.1.2數據流圖詳見局域網即時通信軟件
13、詳細設計說明書3.1.3E-R圖3.2對性能的規定靈活性(l)操作方式上應該能夠滿足鼠標和鍵盤任意切換的需要;(2)能夠支持Windows95、Windows98、Windows2000、WindowsMe和WindowsXP的運行環境;(3)留有與其他系統的接口。3.3輸入輸出要求輸入:本即時通信軟件所要求的字符格式與文件格式,否則無法傳輸文件及收發文字信息。輸出:本軟件提供用戶打印聊天記錄功能。3.4故障處理要求在輸入不符合定義格式的數據時,軟件應出現提示信息,而不是死機或刪除已經輸入的信息,然后再彈出輸入界面重新開始。4運行環境規定4.1設備運行本軟件要求處理器在奔騰III以上、內存在2
14、56MB以上的計算機。4.2支持軟件A.windows2000以上的操作系統或RedHatLinuxAS5:這兩個操作系統是主要的軟件,此系統開發過程在除了文檔的編寫,其它的工作都在這兩個操作系統中進行,這兩個操作系統在開發過程中承擔重要的開發任務B.Eclipse3.4編程工具:它作為一個集成開發工具,提供了部分的代碼自動生成和可視化的資源編輯功能,在此系統開發過程中主要承擔代碼的編寫任務C.MySQL5.1應用軟件:Mysql數據庫軟件是一種使用極其方便的數據庫軟件,在處理少量數據是很好的,不但操作簡單、效率高,而且適用于多種操作系統的適用,最重要的是它是一個免費的數據庫軟件,不會涉及版權
15、問題,節約了大量的開發資金4.3接口本軟件通過若干個中間表實現與其他軟件的通信。4.4控制本軟件通過“昵稱登入”模塊進行用戶登錄的控制,根據不同用戶的昵稱調用不同的模塊。其他模塊控制情況照此描述。(l)驗證軟件需求需求分析階段的工作結果是開發軟件系統的重要基礎,一旦對目標系統提出完整、具體的要求并寫出了軟件需求說明書之后,就必須嚴格驗證這些需求的正確性。通常,從以下4個方面進行驗證。一致性:所有需求必須是一致的,任何一條需求都不能和其他需求相矛盾。完整性:需求必須是完整的,軟件需求說明書應該包含用戶對軟件產品的每一項要求。現實性:指定的需求應該用現有的硬件技術和軟件技術可以實現。有效性:需求必
16、須是有效的,確實能解決用戶所面臨的問題,可以達到開發軟件的目標。軟件概要設計1引言軟件概要設計主要是一個把軟件需求轉化為軟件表示的過程,這種表示只是描述出軟件總的概貌。1.1編寫目的概要設計說明書編制的目的是:說明對程序系統的設計考慮,包括程序系統的基本處理I流程、程序系統的組織結構、模塊劃分、功能分配、接口設計、運行設計、數據結構設計和出錯處理設計等,為程序的詳細設計提供基礎。本軟件概要說明書的讀者是系統開發人員或合同約定的人員。1.2背景(1) 本系統的名稱是:局域網即時通信軟件。(2)本項目的任務提出者是計算機科學與信息技術學院2005級林真真、金鵬、王超、張拓,開發者是計算機科學與信息
17、技術學院2005級林真真、金鵬、王超、張拓,用戶是企業人事及相關部門,實現該軟件的對象:企業及個人局域網內部使用。1.3定義數據字典:關于數據的信息的集合,也即是對數據流圖中包含的元素的定義的集合。VB:VisualBasic。1.4參考資料計算機科學與信息技術學院通信系統軟件說明書計算機科學與信息技術學院通信系統概要說明書計算機科學與信息技術學院通信系統數據庫設計說明書國家開發標準文檔軟件工程(第四版-張海藩)UML面向對象設計與分析(朱麗平等)2總體設計2.1需求規定主要分為客戶端發送接收消息和服務器數據庫管理和處理.通信系統功能部分分為2類:客戶相關,管理員相關.從使用和操作功能上分,有
18、三種用戶:超級管理員用戶(管理所有用戶)管理員用戶(管理普通用戶信息)普通用戶(接收發送信息,更改密碼).為了便于整個系統組織管理,把各個相對獨立的數據或功能組織到更大的系統中來,我們把各個相對獨立的功能完全獨立設計,編譯成獨立的目標(功能)模塊,各功能模塊最后被集成到一控制臺模塊中.相應的將系統分為一個控制臺程序和兩個子系統.客戶子系統主要功能有發送接收信息和更改密碼;管理員子系統主要功能是管理用戶信息,在這里,某些模塊都能用到的功能將不在重復解釋,在每個模塊中只列出每個子模塊區別于其他子模塊的功能實現.2.2運行環境硬件環境:運行本軟件要求處理器在奔騰III、內存在256MB以上的計算機。
19、軟件環境:本系統支持的操作系統包括Windows95、Windows98、Windows2000、WindowsMe和WindowsXP;本系統的支持數據庫為MySQL;本軟件的開發工具為Java。2.3結構所有模塊都必須調用“昵稱等入”模塊進行身份驗證,只有合法用戶才能使用系統。2.4功能需求與程序的關系用戶必須輸入昵稱后,方能登入客戶端,與服務器連接,程序正常運行。2.5人工處理過程本軟件系統的工作過程中不需要人工處理數據。3接口設計3.1用戶接口本系統采用典型的Windows風格作為人機接口,如使用窗口、菜單、對話框等。3.2外部接口本系統支持處理器在奔騰III以上、內存在256MB以上
20、的計算機;支持具有Windows的操作系統,如Windows95、Windows98、Windows2000、WindowsMe和WindowsXP支持MySQL關系數據庫3.3內部接口“用戶驗證”模塊:提供系統用戶登錄時的身份驗證功能,用戶進行角色切換時必裁用此模塊進行身份驗證。4運行設計4.l運行模塊組合不同的用戶登錄此系統獲得的系統功能是不同的,如超級用戶具有系統的全部功能;一些用戶只具有瀏覽數據但不具備更新數據的功能。4.2運行控制超級用戶對系統的其他用戶設置系統功能的訪問權限,這樣權限受限的用戶就只能訪問部分系統模塊。4.3運行時間“用戶驗證”模塊在完成用戶登錄的身份驗證后立即退出運
21、行,釋放占用的系統資源。5系統數據結構設計5.1邏輯結構設計要點邏輯設計是系統中數據庫設計的的重要步驟之一,其中羅列了文檔需求分析中各種功能實現之間的本質關系,通過E-R圖描述實例化了的文字抽象概念。以下針對本系統的加以闡述其邏輯設計數據表中的基本數據結構:5.2物理結構設計要點數據庫結構的物理設計是對一個給定的邏輯數據模型選取一個最適合應用環境的物理結構的過程主要設計表的結構,一般的試題對應于表,實體的屬性對應于列,實體之間的關系為表的約束,邏輯設計中的實體大部分可以轉化為物理設計中的表,但它們并不是一一對應的。5.3數據結構與程序的關系輸入登入昵稱,若不匹配,返回結果到登錄窗口,提示錯誤,
22、相反登錄成功。6系統出錯處理設計6.l出錯信息當輸入信息超出字符的標準時,軟件將會彈出警戒窗口提示,不會死機或軟件自動關閉。6.2補救措施本系統中,當用戶沒有輸入非空字段而進行數據提交時,系統提示字段數據不得為空,請重新輸入再提交。此時輸入界面保留剛剛輸入信息的界面,而不是清空全部輸入界面上的所有數據;要求用戶重新輸入。本系統提供數據備份功能,方便用戶對數據的備份。6.3系統維護設計詳細編寫各階段的文檔資料,以利于未來版本升級及移植等二次開發。詳細設計說明書1引言1.1編寫目的本文檔為計算機科學與信息技術學院通信系統詳細說明書,主要是為了實現系統的功能而進行的系統詳細設計說明,詳細系統各個軟件
23、組成模塊的實現流程、功能、接口、編譯、測試要點等內容,便于對系統的編碼進行指導和約束,本文檔供全體組員和測試人員閱讀。1.2參考資料計算機科學與信息技術學院通信系統軟件說明書計算機科學與信息技術學院通信系統概要說明書計算機科學與信息技術學院通信系統數據庫設計說明書國家開發標準文檔軟件工程(第四版-張海藩)UML面向對象設計與分析(朱麗平等)2系統功能實現從前面的需求分析可知,系統的功能不是很龐雜,主要分為客戶端發送接收消息和服務器數據庫管理和處理.通信系統功能部分分為2類:客戶相關,管理員相關.從使用和操作功能上分,有三種用戶:超級管理員用戶(管理所有用戶)管理員用戶(管理普通用戶信息)普通用
24、戶(接收發送信息,更改密碼).為了便于整個系統組織管理,把各個相對獨立的數據或功能組織到更大的系統中來,我們把各個相對獨立的功能完全獨立設計,編譯成獨立的目標(功能)模塊,各功能模塊最后被集成到一控制臺模塊中.相應的將系統分為一個控制臺程序和兩個子系統.客戶子系統主要功能有發送接收信息和更改密碼;管理員子系統主要功能是管理用戶信息,在這里,某些模塊都能用到的功能將不在重復解釋,在每個模塊中只列出每個子模塊區別于其他子模塊的功能實現.3.1系統控制臺模塊功能:各個子功能之間的調用;統一的登錄界面實現到數據庫服務器的登陸設計:3.1.1登陸數據庫輸入用戶賬號(id),密碼(pwd),以賬號Mana
25、gerPerson_id和密碼ManagerPerson_pwd登陸的用戶擁有對普通用戶管理的權限,以賬號Manager_id和密碼Manager_pwd登陸的用戶擁有對所由用戶進行管理的權限.檢索系統權限表,根據權限設置相應的功能模塊,a.無此用戶或禁止權限Enable=false;Able=false;M=falseb.普通用戶Enable=true;Able=false;M=falseb.可管理普通用戶權限Enable=true;Able=true;M=falsec.可管理所有用戶權限Enable=true;Able=true;M=true3.1.2程序組、程序項的原理組織各執行模塊可執
26、行功能模塊的調用執行,通過程序項名稱獲取可執行目標代碼文件名,應用接口類Main開始執行,界面如下:部分程序代碼JButtonbt=newJButton(登陸);JLabellabel=newJLabel(用戶名);JPanelpanel=newJPanel();panel.add(label);panel.add(field);frame.add(panel,BorderLayout.NORTH);JPanelpane=newJPanel();JTextFieldfieldpwd=newJTextField(10);JLabellabe=newJLabel(密碼);pane.add(labe
27、);pane.add(fieldpwd);frame.add(pane);frame.add(bt,BorderLayout.SOUTH);bt.addActionListener(this);field.addKeyListener(newKeyListener()publicvoidkeyPressed(KeyEvente)if(e.getKeyCode()=e.VK_ENTER&e.isControlDown()if(field=null)return;start();frame.dispose();publicvoidkeyReleased(KeyEvente)publicvoidke
28、yTyped(KeyEvente);privateJTextFieldfield=newJTextField(10);privateJFrameframe=newJFrame();3.2用戶子系統總體功能設計:用戶子系統包含用戶信息管理用戶之間數據的傳遞下面給出設計方案和實現方法3.2.1用戶子系統包含用戶信息管理超級管理員信息管理輸入:用戶ID、初始密碼處理:將用戶信息按相同的格式導入數據庫輸出:提示信息數據表:將Manager表中存放超級管理員數據,表存放在數據庫DB中管理員信息和普通用戶信息與超級管理員的信息管理方式基本相同,區別在于管理員信息存放在表personManager表中,而普
29、通用戶的信息存放在person表中。功能:普通用戶更改自己密碼的功能(超級)管理員添加刪除用戶更改密碼的界面如下:部分程序代碼:JFrameframe=newJFrame(更改密碼);JButtonbt=newJButton(確定);JLabellabel=newJLabel(舊密碼);JLabellabe=newJLabel(新密碼);JLabellabe1=newJLabel(確認密碼);JPanelpanel=newJPanel();JPanelpane=newJPanel();JPanelpane1=newJPanel();JPaneljpanel=newJPanel(newGridL
30、ayout(2,1);JTextFieldfield=newJTextField(20);JTextFieldfieldpwd=newJTextField(20);JTextFieldfieldpwd1=newJTextField(20);panel.add(label);panel.add(field);pane.add(labe);pane.add(fieldpwd);pane1.add(labe1);pane1.add(fieldpwd1);jpanel.add(pane1);jpanel.add(bt);frame.add(pane);frame.add(panel,BorderLay
31、out.NORTH);frame.add(jpanel,BorderLayout.SOUTH);frame.pack();frame.setVisible(true);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);部分數據庫代碼:/連接數據庫代碼Stringurl=jdbc:mysql:/:3306/test;Stringname=root;Stringpwd=1234567890;Connectioncon=null;con=DriverManager.getConnection(url,name,pwd);/更新
32、密碼代碼Statementstmt=con.createStatement();stmt.executeUpdate(updatepersonsetpwd=+temp+whereid=+id);/其中temp為新密碼刪除用戶界面為部分界面代碼:JButtonbt=newJButton(確定);JLabellabel=newJLabel(請輸入你要刪除的用戶號碼:);JPanelpanel=newJPanel();panel.add(label);panel.add(field);frame.add(panel);frame.add(bt,BorderLayout.SOUTH);.JOption
33、Pane.showMessageDialog(null,確定刪除該用戶,警告,JOptionPane.WARNING_MESSAGE);部分刪除用戶數據代碼:stmt.executeUpdate(deletefrompersonwhereid=+id);3.2.2用戶之間數據的傳遞數據傳遞間數據的管理輸入:發送用戶ID、用戶所發送的信息以及信息類型,目的用戶的ID處理:將用戶所發信息傳遞給服務器輸出:功能:給所有人發送信息以及接收在線用戶給所有人發送的信息給某用戶發送信息以及接受某個用戶所給該用戶發送的消息給某個發送文本文件給所有人發送信息的界面如下:部分代碼如下:if(!ClientFace
34、.getSendText().getText().isEmpty()PrintWriterpw=null;trypw=newPrintWriter(ClientFace.getSocket().getOutputStream();Stringstr=ClientFace.getSendText().getText();pw.println(message:+(String)ClientFace.getUsers().getSelectedItem()+:+str);pw.flush();ClientFace.getSendText().setText();接收在線用戶給所有人發送的信息界面如下
35、部分代碼如下:booleanb=true;BufferedReaderbr=null;trybr=newBufferedReader(newInputStreamReader(s.getInputStream();catch(IOExceptione)e.printStackTrace();while(b)if(ClientFace.getSocket().isClosed()b=false;break;Stringstr=null;trystr=br.readLine();catch(IOExceptione)e.printStackTrace();if(str.startsWith(all
36、:)str=str.substring(4);StringTokenizerst=newStringTokenizer(str,/);ClientFace.getUsers().removeAllItems();ClientFace.getUsers().addItem(所有人);while(st.hasMoreTokens()Stringuser=st.nextToken();if(!user.equals(ClientFace.getName()ClientFace.getUsers().addItem(user);elseClientFace.getReceiveText().setTe
37、xt(ClientFace.getReceiveText().getText()+str+n);Pointp=newPoint();if(!ClientFace.getReceiveText().getScrollableTracksViewportHeight()p.setLocation(0,ClientFace.getReceiveText().getHeight();ClientFace.getSp().getViewport().setViewPosition(p);以上這部分代碼應該是放在一個線程中的,使得客戶端能夠隨時接收并顯示服務器傳遞來的數據以下界面是用戶給其他某個特定的用戶
38、發送信息:其部分實現代碼為:pw.println(message:+(String)ClientFace.getUsers().getSelectedItem()+:+str);接受某個用戶所給該用戶發送的消息:客戶端會一直等待從服務器接收消息,至于接收消息的類型由服務器控制而不由客戶端來控制,所以接受某個用戶所給該用戶發送的消息模塊將會在服務器系統中說明3.3服務器子系統總體功能設計:接收客戶端客戶所發送的信息,并將其轉發給合適的目的用戶(為了便于測試,我們暫時給服務器增加了一個功能-查看所有用戶所發送的所有信息,在真正的生產中,應當將此功能去掉)下面給出設計方案和設計方法在這里有一個輔助的
39、功能就是,當用戶登陸是,用戶會將自己的Socket和ID號發送給服務器,服務器會將該用戶的信息存儲在服務器中,同時服務器將該用戶的id分發出去,使得所有用戶直到此用戶上線具體代碼如下:ServerSocketserverSocket=newServerSocket(2046);while(true)StringclientName;Socketsocket=serverSocket.accept();ObjectInputStreamobj=null;obj=newObjectInputStream(socket.getInputStream();Stringname=(String)obj.
40、readObject();if(!.equals(name)clientName=name;elseclientName=貓熊+String.valueOf(NO+);Messagemess=newMessage(socket,clientName);clients.add(mess);PrintWriterpw=null;pw=newPrintWriter(mess.getSocket().getOutputStream();for(Messagemes:clients)pw=newPrintWriter(mes.getSocket().getOutputStream();pw.printl
41、n(clientName+來了.);pw.flush();ServerFace.getAreas().setText(ServerFace.getAreas().getText()+n+clientName+來了.);Pointp=newPoint();if(!ServerFace.getAreas().getScrollableTracksViewportHeight()p.setLocation(0,ServerFace.getAreas().getHeight();ServerFace.getArs().getViewport().setViewPosition(p);ServerFac
42、e.getArea().setText(ServerFace.getArea().getText()+n+clientName+來了.);p=newPoint();if(!ServerFace.getArea().getScrollableTracksViewportHeight()p.setLocation(0,ServerFace.getArea().getHeight();ServerFace.getAr().getViewport().setViewPosition(p);pw.flush();mess.setSocketName(clientName);StringallClient
43、s=;for(Messagemes:clients)allClients+=mes.getSocketName()+/;PrintWriterpww=null;for(Messagemes:clients)pww=newPrintWriter(mes.getSocket().getOutputStream();pww.println(all:+allClients);pww.flush();轉發功能的部分代碼:BufferedReaderbr=null;PrintWriterpw=null;Stringstr=null;Messagees;booleanb=true;while(b)trybr
44、=newBufferedReader(newInputStreamReader(s.getSocket().getInputStream();str=br.readLine();if(str.startsWith(message:)str=str.substring(8);StringtoUser=str.substring(0,str.indexOf(:);/用戶發送的信息是給所有在線用戶時,服務器的處理方式if(所有人.equals(toUser)for(Messagemes:clients)pw=newPrintWriter(mes.getSocket().getOutputStream
45、();pw.println(s.getSocketName()+對所有人說:+str.substring(str.indexOf(:)+1);pw.flush();ServerFace.getArea().setText(ServerFace.getArea().getText()+n+s.getSocketName()+對所有人說:+str.substring(str.indexOf(:)+1);Pointp=newPoint();if(!ServerFace.getArea().getScrollableTracksViewportHeight()p.setLocation(0,Serve
46、rFace.getArea().getHeight();ServerFace.getAr().getViewport().setViewPosition(p);/用戶發送的信息是給某個特定的在線用戶時,服務器的處理方式es=getUser(toUser);if(es.getSocket().isClosed()continue;pw=newPrintWriter(es.getSocket().getOutputStream();pw.println(s.getSocketName()+悄悄地說:+str.substring(str.indexOf(:)+1);pw.flush();pw=new
47、PrintWriter(s.getSocket().getOutputStream();pw.println(悄悄地對+es.getSocketName()+說:+str.substring(str.indexOf(:)+1);pw.flush();ServerFace.getArea().setText(ServerFace.getArea().getText()+n+s.getSocketName()+悄悄地對+getUser(toUser).getSocketName()+說:+str.substring(str.indexOf(:)+1);Pointp=newPoint();if(!S
48、erverFace.getArea().getScrollableTracksViewportHeight()p.setLocation(0,ServerFace.getArea().getHeight();ServerFace.getAr().getViewport().setViewPosition(p);查看所有用戶的狀態的設計原理:如果客戶端上線,則記錄用戶上線,直到用戶下線時,記錄用戶離線,其根據的也是用戶端發送的消息,只不過是格式的不同而已,具體代碼如下:if(str.startsWith(exit:)str=str.substring(5);clients.remove(getU
49、ser(str);for(Messagemes:clients)pw=newPrintWriter(mes.getSocket().getOutputStream();pw.println(str+走了.);pw.flush();ServerFace.getAreas().setText(ServerFace.getAreas().getText()+n+str+走了.);Pointp=newPoint();if(!ServerFace.getAreas().getScrollableTracksViewportHeight()p.setLocation(0,ServerFace.getAre
50、as().getHeight();ServerFace.getArs().getViewport().setViewPosition(p);b=false;break;catch(Exceptione)e.printStackTrace();ServerFace.getAreas().setText(ServerFace.getAreas().getText()+n+str+意外退出.);Pointp=newPoint();if(!ServerFace.getAreas().getScrollableTracksViewportHeight()p.setLocation(0,ServerFac
51、e.getAreas().getHeight();ServerFace.getArs().getViewport().setViewPosition(p);ServerFace.getArea().setText(ServerFace.getArea().getText()+n+s.getSocketName()+意外退出.);服務器端界面(暫時)如下數據庫設計說明書1引言1.1編寫目的通信系統在數據庫管理系統的支持下,進行用戶信息的添加、整理、存儲、檢索、更新等操作。對于數據庫應用開發人員來說,如何利用數據庫管理系統、系統軟件和相關硬件系統,將用戶信息轉化成要有效的數據結構,并使數據庫結構易于實現用戶新的要求。確切的說,數據庫設計是指對于一個給定的應用環境,提供一個確定最優數據模型與處理模式的邏輯設計,以及一個確定數據庫存儲結構與存取方法的物理設計,建立起既能反映現實世界信息和信息聯系,滿足用戶數據要求和加工要求,有能被某個數據庫管理系統所接受,同時能實現系統目標,并有效存取數據的數據庫1.2背景a.待開發軟件系統的名稱:山西大學計算機科學與信息技術學院局域網即時通信軟件b.本項目的任務提出者:計算機科學與信息技術學院2005級林真真、金鵬、王
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 標準化住宅小區業主物業服務合同樣本
- 長途載重貨車租借合同書
- 建設工程施工合同風險防范
- 預售樓盤標準合同文本示例
- 辦公用房租賃合同:商務合作新篇章
- 標準公寓租賃合同范本
- 租賃酒店場地合同樣本
- 工程項目承包合同公示
- 廣福花園A19棟5號商業合同簽約注意事項
- 鋼材供應合同樣本
- 《建筑工程計量與計價》中職全套教學課件
- 反應釜50L驗證方案
- 2024年江蘇省宿遷市泗陽縣中考數學一模試卷
- 張偉《精彩紛呈的太空科學實驗》課件
- 政協企業走訪方案
- 110kV變電站及其配電系統的設計-畢業論文
- 2024年低壓電工資格考試必考重點題庫及答案(完整版)
- 2024年北京市燕山區九年級(初三)一模英語試卷及答案
- +廣東省深圳市寶安區十校聯考2023-2024學年七年級下學期期中數學試卷+
- 呼吸訓練方法
- 2024屆江蘇省宿遷市泗陽縣中考化學五模試卷含解析
評論
0/150
提交評論