校園軟件科技有限公司專業(yè)實習報告.doc_第1頁
校園軟件科技有限公司專業(yè)實習報告.doc_第2頁
校園軟件科技有限公司專業(yè)實習報告.doc_第3頁
校園軟件科技有限公司專業(yè)實習報告.doc_第4頁
校園軟件科技有限公司專業(yè)實習報告.doc_第5頁
已閱讀5頁,還剩72頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

北京科技大學本科生專業(yè)實習報告目錄引言11實習單位與工作內(nèi)容21.1實習單位概況21.1.1公司理念21.1.2公司產(chǎn)品21.2實習工作31.2.1承擔項目31.2.2工作任務31.2.3工作意義32實習工作內(nèi)容和過程42.1工作內(nèi)容42.1.1 SSH框架的認識42.1.2 JavaScript學習42.1.3 Qt應用程序的開發(fā)52.2工作過程53局域網(wǎng)聊天軟件程序開發(fā)133.1開發(fā)技術133.1.1關鍵技術與理論133.1.2開發(fā)工具143.2可行性分析153.2.1業(yè)務可行性153.2.2 技術可行性153.2.3 操作可行性153.3 需求分析163.3.1 運行環(huán)境163.3.2 功能需求163.3.3性能需求193.3.4界面需求193.4 概要設計203.4.1總體設計203.4.2接口設計213.4.3系統(tǒng)出錯設計223.5 詳細設計223.5.1系統(tǒng)類設計223.5.2模塊設計283.5.3界面設計353.6 系統(tǒng)測試373.6.1測試環(huán)境373.6.2 系統(tǒng)測試基本原則373.6.3 軟件測試方法383.6.4 系統(tǒng)測試用例383.6.5 測試結(jié)論394實習總結(jié)40結(jié) 束 語42參 考 文 獻43附 錄44- 2 -北京科技大學本科生專業(yè)實習報告引言實習是每一個大學生必須擁有的一段經(jīng)歷,它使我們在實踐中了解社會、在實踐中鞏固知識;實習又是對每一位大學生專業(yè)知識的一種檢驗。作為一名即將進入大四的學生,生產(chǎn)實習是一門主要實踐性課程。是我們將理論知識同生產(chǎn)實踐相結(jié)合的有效途徑,是增強我們勞動觀點、工程觀點和建設有中國特色社會主義事業(yè)的責任心和使命感的過程。通過生產(chǎn)實習,可以使我們學習和了解市場經(jīng)濟下軟件公司實際開發(fā)軟件的流程和主流設計方法、思想和模型,培養(yǎng)學生樹立理論聯(lián)系實際的工作作風,以及生產(chǎn)現(xiàn)場中將科學的理論知識加以驗證、深化、鞏固和充實。并培養(yǎng)我們進行調(diào)查、研究、分析和解決工程實際問題的能力,為后繼專業(yè)課的學習、課程設計和畢業(yè)設計打下堅實的基礎。對于一名即將踏入社會邁向工作崗位的大四學生來說,熟悉了公司開發(fā)軟件的流程和方法、認識自己所學知識體系的不足,通過生產(chǎn)實習來認識到自己平時學習的漏洞通過生產(chǎn)實習,可以拓寬我們的知識面,增加感性認識,把所學知識條理化系統(tǒng)化,學到從書本學不到的專業(yè)知識,從而對自己的知識體系進行完善,學習更多真正在工程實際中應用廣泛的知識技能,為今后的學習和將從事的技術工作打下堅實的基礎。1實習單位與工作內(nèi)容1.1實習單位概況北京清元優(yōu)軟科技有限公司是北京市海淀區(qū)科技園內(nèi)的高新技術企業(yè)、軟件企業(yè),位于北京市海淀區(qū)上地東路1號盈創(chuàng)動力大廈E座302,是清華大學計算機與信息管理中心數(shù)字校園軟件研發(fā)和推廣的唯一合作伙伴。公司專注于完成數(shù)字校園計劃、大學生資源計劃(URP,University Resource Planning)系統(tǒng)的建設、運行維護和用戶服務的業(yè)務需求,面向國內(nèi)高校提供數(shù)字校園解決方案和咨詢服務、提供數(shù)字校園系列應用軟件的開發(fā)服務、提供數(shù)字校園軟件的集成服務。1.1.1公司理念清元優(yōu)軟由一支成長于教育信息化建設、熱愛教育信息化事業(yè)的百余人隊伍組成。是一個有理想、有追求、勇于開拓進取、朝氣蓬勃又富于理性的團隊。制定發(fā)展戰(zhàn)略的核心領導層以及首席設計師,多年來一直從事數(shù)字校園與URP的理論研究和建設實踐,承擔了多所高校數(shù)字校園軟件系統(tǒng)的設計研發(fā),在業(yè)內(nèi)享有盛譽。公司產(chǎn)品服務于全國200多所高校,在創(chuàng)造數(shù)字校園、構建信息化校園方面發(fā)揮了重大的作用,公司貫徹“求實創(chuàng)新、追求卓越、誠信協(xié)作”的理念,以推動高校信息化建設發(fā)展為己任,為客戶提供最優(yōu)的數(shù)字校園解決方案與全方位的技術支持服務,成為提升高校管理水平和工作效率的得力助手。1.1.2公司產(chǎn)品公司的主要產(chǎn)品包括:URP高校信息集成管理平臺(信息標準、信息門戶系統(tǒng)、數(shù)據(jù)交換平臺、統(tǒng)一身份認證平臺、綜合信息服務系統(tǒng)(決策分析)、URP高校教務管理系統(tǒng)、URP高校研究生教務管理系統(tǒng)、URP高校協(xié)同辦公系統(tǒng)、URP高校學生管理系統(tǒng)(URP高校招生管理系統(tǒng)、URP高校數(shù)字迎新系統(tǒng)、URP高校學工管理系統(tǒng)、URP高校就業(yè)管理系統(tǒng)、URP高校畢業(yè)離校系統(tǒng)、URP高校校友管理系統(tǒng))、URP高??蒲泄芾硐到y(tǒng)、URP高校網(wǎng)絡教學系統(tǒng)、URP高校人事管理系統(tǒng)等。與國內(nèi)外諸多軟硬件廠商,如HP、Sun、Oracle、清華在線、致遠協(xié)創(chuàng)、商郵等公司都建立了良好的合作伙伴關系,共同為高校提供優(yōu)秀的集成服務。1.2實習工作1.2.1承擔項目在為期五周的實習時間中,我的主要工作室負責公司7月20號即將上線的中國石油大學留學生管理系統(tǒng)中部分功能模塊的實現(xiàn)以及局域網(wǎng)聊天室軟件的開發(fā)工作。1.2.2工作任務實習中承擔的是中國石油大學留學生管理系統(tǒng)前端頁面功能的開發(fā)編寫工作,主要負責的是系統(tǒng)參數(shù)設置模塊功能的實現(xiàn),目的是使用戶參數(shù)模塊的性能更加完善,操作更加簡單明了,實現(xiàn)界面的人性化設計,人機交互性力求使用戶滿意。在完成了中國石油大學留學生管理系統(tǒng)的前端模塊功能開發(fā)之后,又獨立進行了Qt軟件的學習,并利用C+程序設計語言在Qt環(huán)境下進行了局域網(wǎng)聊天軟件的開發(fā)工作。其中主要涉及到了局域網(wǎng)群聊、私聊和文件傳輸?shù)饶K的實現(xiàn)編碼工作。1.2.3工作意義留學生管理系統(tǒng)的開發(fā)是利用SSH(Struts+Spring+Hibernate)框架實現(xiàn)的。所謂SSH框架是基于MVC(Module、View、Control)軟件開發(fā)模式的一種框架體系結(jié)構。對于傳統(tǒng)的ASP和 PHP等腳本站點技術,將整個站點的業(yè)務邏輯和表現(xiàn)邏輯都混雜在ASP或PHP頁面里,從而導致頁面的可讀性相當差,可維護性非常低。即使需要簡單改變頁面的按鈕,也不得不打開頁面文件,冒著破壞系統(tǒng)的風險。但采用嚴格分層J2EE架構,則可完全避免這個問題。對表現(xiàn)層的修改即使發(fā)生錯誤,也絕對不會將錯 誤擴展到業(yè)務邏輯層,更不會影響持久層。因而學習利用SSH框架進行基于B/S的軟件系統(tǒng)開發(fā)更有助于了解MVC開發(fā)模式,使得開發(fā)過程更加清晰,便于對代碼進行修改,提高代碼的可讀性和程序的清晰度。通過在公司學習SSH框架,進行留學生系統(tǒng)的開發(fā),可以是我對Java有更深刻的理解和認識,明白現(xiàn)行市場中主流的開發(fā)方式和開發(fā)技術,對今后在校更有針對性的學習奠定了基礎。局域網(wǎng)聊天開發(fā)軟件是利用跨平臺的C+圖形界面庫Qt進行開發(fā)。Qt擁有良好的面向?qū)ο笮?,支持了大量的API,并且擁有成熟完善的開發(fā)體系結(jié)構,也是嵌入式平臺上應用廣泛的圖形化編程和多媒體編程工具。學習Qt編程可以為以后從事嵌入式開發(fā)奠定堅實的基礎。2實習工作內(nèi)容和過程2.1工作內(nèi)容2.1.1 SSH框架的認識SSH(Struts+Spring+Hibernate)框架是基于MVC設計模式的一種框架體系結(jié)構。所謂MVC(Model-View-Controller),是軟件工程中的一種軟件架構模式,把軟件系統(tǒng)分為三個基本部分:模型(Model)、視圖(View)和控制器(Controller)。1 用戶與視圖(View)進行交互,寫入數(shù)據(jù)并進行提交,控制器(Controller)接收到來自視圖的事件并對模型(Model)進行操作,根據(jù)用戶操作改變更新模型,最后在顯示在界面上。這樣的設計模式實現(xiàn)了視圖與業(yè)務邏輯層的分離,增加了代碼的重利用率,減少數(shù)據(jù)表達,數(shù)據(jù)描述和應用操作的耦合度。而Struts架構則是典型的基于MVC框架的一種開發(fā)框架體系。SSH框架簡單的來說就是指將開發(fā)系統(tǒng)分為表示層、業(yè)務邏輯層、數(shù)據(jù)持久層和域模塊層4個部分。基于SSH框架的系統(tǒng)基本業(yè)務流程為,在表示層利用Struts框架實現(xiàn)頁面交互,傳送請求(request)和接受響應(response);在業(yè)務邏輯層,利用Spring技術向action提供業(yè)務模型組件(Module)和該組件的協(xié)作對象處理組件(DAO)完成的業(yè)務邏輯;在持久層依賴于Hibernate的對象化映射和數(shù)據(jù)庫交互,處理DAO組件的請求并返回結(jié)果。結(jié)合具體實現(xiàn)留學生管理系統(tǒng)項目的程序代碼來認識Struts框架,jsp頁面相當于表示層,用來與用戶進行交互;通過java類實現(xiàn)業(yè)務控制組件,最后通過中心配置文件Struts.xml實現(xiàn)java類與jsp頁面的關聯(lián)。2.1.2 JavaScript學習JavaScript是一種基于對象(Object)和事件驅(qū)動(Event Driven)并且具有安全性能的腳本語言。它與Html超文本標記語言、Java腳本語言一起實現(xiàn)了Web頁面中連接多個對象,與Web客戶進行交互的作用。JavaScript語言可以做到響應請求事件,而不用任何網(wǎng)絡來回傳輸資料,所以在進行數(shù)據(jù)輸入時,不用經(jīng)過傳給服務器處理在傳回來的過程,可以直接在客戶端進行處理。22.1.3 Qt應用程序的開發(fā)Qt是跨平臺的C+圖形界面庫要用于Windows、Mac-Os和Linux等環(huán)境下GUI的開發(fā)。Qt不但擁有了完善的C+圖形庫,而且新版本逐漸整合了數(shù)據(jù)庫、OpenGL庫、多媒體庫、網(wǎng)絡、腳本庫、XML庫、WebKit庫等等,其核心庫也加入了進程間通信、多線程等模塊,極大的豐富了Qt開發(fā)大規(guī)模復雜跨平臺應用程序的能力。在利用Qt進行局域網(wǎng)聊天軟件的開發(fā)時,主要使用和學習的是提供網(wǎng)絡程序設計的QtNetwork庫。QtNetwork庫支持通用協(xié)議如HTTP、FTP和DNS,在該庫中可以利用QTcpSocket和QTcpServer實現(xiàn)TCP協(xié)議,利用QUdpSocket實現(xiàn)UDP協(xié)議。2.2工作過程在為期五周的實習工作中,我主要承擔負責的是清元優(yōu)軟公司為中國石油大學所開發(fā)的留學生管理系統(tǒng)的系統(tǒng)參數(shù)設置模塊的功能編寫和界面實現(xiàn),其中應用到了Struts框架和java程序設計的部分知識。在開發(fā)程序前,首先要進行系統(tǒng)環(huán)境的搭建。公司使用的是MyEclipse+Resin 3.0進行留學生系統(tǒng)的搭建。在MyEclipse中的菜單欄選擇MyEclipse-Perference-MyEclipse-Server中的Resin3.X,選擇配置Resin3.0的路徑以及jdk路徑,然后在MyEclipse下運行Resin3.0服務器。服務器運行成功后,需要對resin.conf進行如下配置: jdbc/OracleDB jdbc:oracle:thin::1521:jw lxsxt lxsxt 8 1800 30s 配置完成后保存resin.conf,然后再次運行服務器,然后打開IE瀏覽器在地址欄中輸入:8082/即可打開如圖2.1所示的登陸界面,留學生系統(tǒng)搭建完成。圖2.1 留學生系統(tǒng)登錄界面完成了系統(tǒng)的搭建,便開始進行系統(tǒng)參數(shù)設置模塊的編寫工作。利用公司提供的代碼生成器Code Gen,對數(shù)據(jù)庫中的Sys_param表自動生成相關表操作的java類和jsp頁面代碼文件和配置文件,然后將生成的jsp和java文件按照相應的路徑導入到工程當中,并且修改工程中l(wèi)xsxt-front.xml、lxsxt-end.xml和validator-lxsxt.xml三個配置文件,即完成了系統(tǒng)參數(shù)設置頁面的基本配置。之后利用系統(tǒng)管理員賬號登陸系統(tǒng),在相應的系統(tǒng)菜單模塊設置的對應路徑一欄中填寫bean的相對路徑xtsz.sys_param.do并保存,即完成了模塊頁面代碼的導入工作。圖2.2 系統(tǒng)管理配置之后的工作是根據(jù)具體的需求對程序代碼編寫來使頁面的操作更加人性化。在對detail.jsp和edit.jsp頁面中的form進行了編寫時使用了JSTL和EL標簽技術,主要實現(xiàn)功能是,在選擇編輯不同系統(tǒng)參數(shù)時,進入到不同的參數(shù)設置界面,對各個不同的參數(shù)進行配置,以此達到界面美觀和操作簡單易行的目的,因此借助JSTL條件標簽來完成條件分支。其中在界面設計上還利用了下拉框。 -請選擇-option value=開 selected開option value=關 selected關完成對edit.jsp頁面的編寫后,開始對index.jsp頁面進行編寫和功能實現(xiàn)。其中該頁面主要工作是需要編寫table中學校名稱項和成績錄入開關項中操作欄對應的功能實現(xiàn)。通過對sys_paramContorller.java中一個方法public ModelAndView modify()以及index.jsp中一個javascript功能function doEdit()的編碼,實現(xiàn)所需要的功能。主要修改代碼如下所示:Java類:public ModelAndView modify(HttpServletRequest request, HttpServletResponse response) throws AppException,IOException String id = ServletRequestUtils.getStringParameter(request, id, -1); String mode = request.getParameter(p_param_mode); String value = request.getParameter(p_param_value); Sys_param sys_param = this.sys_paramService.queryTableById(id); try sys_param.setParam_mode(mode); sys_param.setParam_value(value); sys_param.setId(id); this.sys_paramService.update(sys_param); showMessage(request, 修改系統(tǒng)參數(shù)表成功); MirrorCacheTool.refresh(sys_param); catch(AppException e) logger.error(修改系統(tǒng)參數(shù)表 + sys_param + 失敗, e); showMessage(request, 修改系統(tǒng)參數(shù)表失?。?+ e.getMessage(), e); return query(request, response); JavaScript :function doEdit() var frm = window.document.forms0; var menuDiv = window.document.getElementById(menuDiv); if(getCheckedCount(frm.p_id)=0) alert(請選擇一條記錄); else if(getCheckedCount(frm.p_id) 1) alert(每次只能修改一條記錄); else if(getCheckedCount(frm.p_id) = 1) menuDiv.innerHTML = ; /點擊提交以后將菜單設置為不可用,防止重復提交 frm.m.value = edit; frm.submit(); 最后在jsp頁面中調(diào)用編寫的javascript即可實現(xiàn)編寫的功能。界面完成后如圖2.3、2.4、2.5所示。圖2.3 系統(tǒng)參數(shù)設置index.jsp頁面圖2.4 系統(tǒng)參數(shù)設置學校名稱參數(shù)修改圖2.5 系統(tǒng)參數(shù)設置成績錄入開關參數(shù)修改在完成了系統(tǒng)參數(shù)設置模塊的代碼編寫和功能實現(xiàn)后,有進行了學校信息表和專業(yè)課程表兩個頁面模塊的編寫工作,編寫的基本流程與系統(tǒng)參數(shù)設置基本相同,需要實現(xiàn)對表中數(shù)據(jù)的增加(add,jsp)、修改(edit,jsp)、刪除等功能。實現(xiàn)頁面如圖2.62.9所示。圖2.6 學校信息表index.jsp頁面圖2.7 學校信息表add.jsp界面圖2.8 學校信息查詢edit.jsp頁面圖2.9 專業(yè)課程表index.jsp頁面完成了全部的代碼編寫后便將所編寫的代碼上傳到CVS(Concurrent Version System)服務器上,完成了這段時間的工作。在進行留學生管理系統(tǒng)的部分模塊的編寫和實現(xiàn)時,同時我還進行這Qt的學習,利用Qt進行局域網(wǎng)聊天軟件的編寫和實現(xiàn)。3局域網(wǎng)聊天軟件程序開發(fā)3.1開發(fā)技術3.1.1關鍵技術與理論(1) P2P技術:對等網(wǎng)絡互聯(lián)技術(Peer to Peer,P2P)是一種新型的網(wǎng)絡技術,依賴網(wǎng)絡中參與者的計算能力與帶寬,在P2P構成的網(wǎng)絡中,沒有客戶端和服務器的概念,對于每個節(jié)點,相對于網(wǎng)絡中的其他節(jié)點來說,它既是客戶端,又是服務器。該技術擁有較佳的并行處理能力和效率,并且易于維護3。(2) UDP協(xié)議:用戶數(shù)據(jù)報協(xié)議(User Datagram Protocol, UDP),是一個簡單的面向數(shù)據(jù)報的傳輸層協(xié)議。UDP協(xié)議只提供數(shù)據(jù)的不可靠傳輸,一旦將數(shù)據(jù)發(fā)送出去,就不保留數(shù)據(jù)備份。UDP協(xié)議的數(shù)據(jù)報頭由4個域構成:源端口號、目標端口號、數(shù)據(jù)報長度、校驗值。UDP協(xié)議是一個無連接協(xié)議傳輸數(shù)據(jù)之前源端和終端不建立連接,因而可以實現(xiàn)一臺服務器向多個客戶端發(fā)送消息的功能。(3) TCP協(xié)議:傳輸控制協(xié)議(Transmission Control Protocol,TCP),是一種面向連接的、可靠的、基于字節(jié)流運輸層(Transport layer)的通信協(xié)議。相比較于UDP協(xié)議,TCP協(xié)議具有面向連接、有序數(shù)據(jù)傳輸、無錯誤數(shù)據(jù)傳輸?shù)葍?yōu)勢,因而在進行文件傳輸時可以保證傳輸文件的正確性,避免丟包現(xiàn)象的發(fā)生。(4) Socket網(wǎng)絡編程接口:Socket套接字接口,是一個應用程序接口(API),使用一個Internet套接字的概念,使主機間或者一臺計算機上的進程間可以通訊。Socket的連接過程可以分為三個步驟:服務器監(jiān)聽、客戶端請求和確認連接。具體過程為客戶端的套接字向處于等待連接狀態(tài)的服務器發(fā)送連接請求,服務器接收并響應請求,然后把服務端的套接字描述發(fā)回給客戶端,建立連接。而服務器端則繼續(xù)處于等待狀態(tài),等待其他套接字的連接請求。因而利用socket可以實現(xiàn)單服務器多客戶端的同是響應連接。圖3.1 Socket工作流程圖3.1.2開發(fā)工具(1) Qt libraries Qt libraries是一個由挪威Trolltech 公司開發(fā)的跨平臺的C+圖形界面庫,主要用于Windows、Mac-Os和Linux等環(huán)境下GUI的開發(fā)。Qt采用面向?qū)ο蟮木幊陶Z言,學習簡單、易于擴展、并且允許組件編程。諾基亞公司提供三種Qt授權方式,其中LGPL和GPL是免費發(fā)布的,而商業(yè)版需要收取授權費用。本程序開發(fā)所使用的是Qt libraries 4.8.2 for Windows是諾基亞公司于2012年5月22日發(fā)布的,其功能上融合了數(shù)據(jù)庫、OpenGL、多媒體庫、NetWorking、Webkit、XML等常用的庫文件,核心庫中也加入多進程和多線程間的通信模塊,大大擴展和豐富了Qt開發(fā)大規(guī)模復雜平臺應用程序的能力在真正意義上實現(xiàn)了“Code Less; Create More; Deploy Anywhere”的研發(fā)宗旨。(2) Qt Creator Qt Creator是實現(xiàn)Qt開發(fā)的輕量級跨平臺集成開發(fā)環(huán)境(IDE)。Qt Creator內(nèi)包含了用于開發(fā)和測試Qt應用程序的完整工具,其中包括C+代碼編輯器、上下文代碼感知器、可視化Debug、代碼管理器、Qt Designer、項目和構建管理工具等。在進行Qt開發(fā)時使用Qt Creator一定程度上可以確保首次上手接觸Qt框架的開發(fā)人員能夠迅速上手操作編程。3.2可行性分析可行性分析的任務是從技術上、業(yè)務上、操作上分析所提出的項目是否可行??尚行匝芯康哪康木褪怯米钚〉拇鷥r在盡可能短的時間內(nèi)確定系統(tǒng)目標和規(guī)模是否可行,是否能夠解決,是否值得解決。3.2.1業(yè)務可行性隨著互聯(lián)網(wǎng)的迅速發(fā)展,網(wǎng)上實時聊天和傳輸文件變成了很多用戶的需求。而在各個公司、學校、乃至學生宿舍,局域網(wǎng)聊天室也成為了一個團隊進行交流信息的主要工具之一。利用局域網(wǎng)聊天室,成員可以不受具體物理環(huán)境的限制,通過網(wǎng)絡進行問題的探討以及文件的傳輸。3.2.2 技術可行性隨著計算機技術的發(fā)展,對于該局域網(wǎng)聊天室,很多語言和集成開發(fā)環(huán)境都是理想的選擇。根據(jù)實際情況,我決定使用基于Qt的跨平臺C+圖形界面設計庫來進行軟件的開發(fā)。Qt在進行圖形界面開發(fā)上提供了豐富的庫和API接口,并且提供了Socket實現(xiàn)通信鏈句柄。3.2.3 操作可行性Qt實現(xiàn)的軟件具有友好的界面和簡單易懂的操作提示,很方便用戶上手即用。在進行文件傳輸時,使用TCP協(xié)議進行傳輸也保證了數(shù)據(jù)的安全性以及準確性。3.3 需求分析需求分析是在可行性研究的基礎上,將用戶對系統(tǒng)的描述,通過開發(fā)人員的分析概括,抽象為完整的需求定義,再形成一系列文檔的過程??尚行匝芯恐荚谠u估目標系統(tǒng)是否值得去開發(fā),問題是否能夠解決,而需求分析旨在回答系統(tǒng)做什么的問題,通過需求分析明確開發(fā)軟件的功能、性能和GUI界面,使軟件開發(fā)人員清楚的明白用戶的需求,確保將來開發(fā)出來的軟件產(chǎn)品能夠真正滿足用戶的需要。3.3.1 運行環(huán)境硬件環(huán)境:HDD 10G以上、內(nèi)存 1G以上操作系統(tǒng):Microsoft Windows XP及系統(tǒng)以后版本3.3.2 功能需求(1) 功能需求說明1) 局域網(wǎng)聊天室實時聊天功能:主要需要實現(xiàn)局域網(wǎng)多用戶之間的實時聊天通信,并且用戶可以直接看到所在局域網(wǎng)內(nèi)其他用戶的IP信息,用戶在進行聊天時可以進行字體、字號、顏色、加粗、傾斜、下劃線等設置,也可以保存聊天記錄。2) 局域網(wǎng)內(nèi)文件傳輸:實現(xiàn)局域網(wǎng)內(nèi)兩個用戶之間文件的相互傳輸。當一個用戶向另一個用戶發(fā)送文件時,另一個用戶可以選擇接受文件或者拒絕接收。如果接收文件則開始進行文件傳輸,傳輸過程中顯示文件傳輸?shù)乃俣?、用時、文件總大小、已接受文件大小和剩余時間。如果拒絕接收,則不發(fā)送文件,并返回發(fā)送端對方拒絕接收的消息。3) 局域網(wǎng)私聊功能:在用戶信息欄中雙擊一個用戶則可打開私聊窗口與該用戶實現(xiàn)私聊通信。與局域網(wǎng)聊天室功能相同,可以實現(xiàn)字體、字號、顏色、加粗、傾斜、下劃線的設置,可以 保存聊天記錄。(2) 系統(tǒng)功能描述實現(xiàn)根據(jù)所提出的需求利用Rational Rose進行用例圖的設計。利用用例圖可以描述業(yè)務功能,指導以后軟件的測試環(huán)節(jié),并且在整個軟件開發(fā)過程中對工作流起到指導作用。圖3.2 系統(tǒng)用例圖描述表3.1 chatroom用例說明表用例名:chatroom簡要說明:局域網(wǎng)內(nèi)用戶進入聊天室進行聊天事件流:用戶進入局域網(wǎng)聊天工具頁面 在界面文本框中輸入想要發(fā)送的信息 點擊發(fā)送按鈕發(fā)送信息 信息顯示在輸出信息文本框內(nèi)前置條件:用戶輸入合法信息并提交后置條件:系統(tǒng)處理用戶發(fā)出的信息并顯示在輸出信息文本框中活動圖:圖3.3 聊天室功能活動圖描述表3.2 fileTransport用例描述用例名:fileTransport簡要說明:局域網(wǎng)內(nèi)用戶進行文件傳輸事件流:用戶進入局域網(wǎng)聊天工具 點擊發(fā)送文件按鈕,選擇發(fā)送的文件 接收方給予響應 進行文件傳輸 前置條件:用戶選擇合法的文件、接收方選擇確定接收文件后置條件:系統(tǒng)通過TCP協(xié)議進行文件傳輸活動圖:圖3.4 文件傳輸功能活動圖描述表3.3 privateChat用例描述用例名:privateChat簡要說明:局域網(wǎng)內(nèi)兩用戶私聊事件流:用戶進入局域網(wǎng)聊天工具 雙擊用戶信息欄中的某個用戶名打開私聊窗口 發(fā)送消息 對方接收消息前置條件:用戶選擇局域網(wǎng)中在線的某個用戶并發(fā)送合法消息后置條件:系統(tǒng)處理用戶發(fā)送的信息并在對方系統(tǒng)上打開私聊窗體,顯示消息活動圖:圖3.5私聊功能活動圖描述3.3.3性能需求支持網(wǎng)絡通信,實現(xiàn)全方位多功能的點對點通信和文件傳輸功能。系統(tǒng)的局域網(wǎng)聊天功能要求及時性,還要求盡可能提高文件傳輸?shù)陌踩院蛡鬏斝?,避免無效數(shù)據(jù)的傳輸。3.3.4界面需求界面設計要求美觀,人機交互界面友好。本程序要求設計3個窗體實現(xiàn)軟件功能,分別為聊天主程序窗體、發(fā)送文件窗體、接收文件窗體。根據(jù)已有的需求信息和功能分析,聊天主程序窗體需要有信息的輸入框和顯示框、需要能夠現(xiàn)實局域網(wǎng)中各個用戶的IP地址和用戶名、能夠?qū)斎胛淖值淖煮w、字號等進行設置,以及傳輸文件按鍵。發(fā)送文件和接收文件窗體需要能夠選擇設置需要發(fā)送和接受的文件路徑,可以顯示文件傳輸進度等。3.4 概要設計系統(tǒng)概要設計的目的就是根據(jù)需求分析結(jié)果確定系統(tǒng)是由哪些模塊哪些功能組成的,這些模塊之間又有怎樣的關系,每個模塊是如何實現(xiàn)的。模塊化的依據(jù)是抽象、信息屏蔽和局部化、自頂向下逐步求精和模塊的獨立性,依照高內(nèi)聚低耦合的原則對系統(tǒng)進行模塊化設計。3.4.1總體設計(1) 系統(tǒng)實現(xiàn)原理聊天系統(tǒng)的設計最重要的就是系統(tǒng)實時性的保證。為了減少客戶端-服務器這種方式在利用中繼設備進行傳輸時消耗的時間,因此該局域網(wǎng)聊天軟件采取P2P技術,實現(xiàn)點對點的連接,這樣處在局域網(wǎng)聊天軟件中的每個用戶,相對于其他用戶來說既是客戶端,又是服務器,以此來避免多用戶進入聊天室時服務器響應時間過長而導致的系統(tǒng)實時性過差的問題發(fā)生。在程序的網(wǎng)絡通信數(shù)據(jù)傳輸上,即時聊天采取UDP協(xié)議進行數(shù)據(jù)報的傳輸。利用UDP無連接協(xié)議可以更快的實現(xiàn)數(shù)據(jù)報的傳輸,更好的實現(xiàn)聊天的實時性要求。而文件傳輸則采用TCP協(xié)議。TCP協(xié)議是面向連接的、可靠的通信協(xié)議,具有有序數(shù)據(jù)傳輸、無錯誤數(shù)據(jù)傳輸?shù)葍?yōu)點,這樣可以保證文件傳輸中傳輸文件的安全性和完整性,盡可能的避免出現(xiàn)壞包現(xiàn)象的發(fā)生。(2) 系統(tǒng)總體功能結(jié)構1) 系統(tǒng)主要的功能框架如圖所示:圖3.6 局域網(wǎng)聊天室軟件功能結(jié)構2) 各個模塊功能描述:局域網(wǎng)聊天:登錄聊天界面,可以對輸入的文字信息進行字體、字號、加粗、傾斜、下劃線和文字顏色的設置,可以對聊天記錄進行保存,也可以清除信息框中的聊天信息。通過聊天界面窗體可以顯示聊天室內(nèi)其他用戶的用戶名和IP。文件傳輸:可以在聊天室內(nèi)用戶之間進行文件的發(fā)送和接收。用戶私聊:可以實現(xiàn)聊天室內(nèi)任意兩個用戶私聊功能。也可以對輸入的文字信息進行字體、字號、加粗、傾斜、下劃線和文字顏色的設置,可以對聊天記錄進行保存,也可以清除信息框中的聊天信息。3.4.2接口設計(1)用戶接口:系統(tǒng)采用圖形用戶接口,以鼠標和鍵盤作為用戶接口,方便用戶對軟件進行操作。用戶:登錄系統(tǒng);系統(tǒng):顯示UI界面。用戶:發(fā)送聊天信息;系統(tǒng):顯示聊天信息。用戶:雙擊聊天室內(nèi)其他用戶;系統(tǒng):顯示私聊窗口(2)內(nèi)部接口:UI界面與聊天接口:輸入:聊天信息;輸出:顯示聊天信息。UI界面與傳輸文件接口:輸入:傳輸文件路徑;輸出:傳輸操作。UI界面與顯示信息接口:輸入:登錄信息;輸出:顯示用戶登錄名、登錄IP。3.4.3系統(tǒng)出錯設計(1) 出錯信息1) 進行文件傳輸時若無法與所在網(wǎng)絡中的其他節(jié)點連接,則應做出正確提示。2) 聊天時出現(xiàn)非法操作時,通過信息對話框給出相應提示。3) 傳輸文件出現(xiàn)非法操作時,通過對話框給予相應提示。(2) 補救措施當系統(tǒng)出現(xiàn)錯誤時,如果是嚴重錯誤如內(nèi)存泄露等問題將直接關閉程序并提示用戶;若為一般錯誤,則通過messageBox彈出對話框給予用戶提示,讓用戶重新進行操作。3.5 詳細設計詳細設計階段的根本目標是確定應該怎樣具體的實現(xiàn)所要求的系統(tǒng),換言之,經(jīng)過這個階段的設計工作,應該得出目標系統(tǒng)的精確描述,從而在編碼階段可以把這個描述直接翻譯成用某總程序設計語言書寫的程序。詳細設計的目標不僅僅是邏輯上正確地實現(xiàn)每個模塊的功能,更重要的是設計的處理過程應該盡可能簡明易懂,詳細設計階段的任務還不是具體的編寫程序,而是要設計出程序的“藍圖”,以后根據(jù)這個藍圖編寫出實際的程序代碼。系統(tǒng)實現(xiàn)用于對程序具體設計的部分,根據(jù)詳細設計的結(jié)果,把它翻譯成符合某種語言的語法規(guī)則的代碼。3.5.1系統(tǒng)類設計(1)系統(tǒng)類圖總體設計圖3.7 系統(tǒng)類圖描述(2)Widget類1) 功能:Widget類主要用于局域網(wǎng)聊天系統(tǒng)中界面各部分按鍵功能的統(tǒng)一實現(xiàn)以及聊天室內(nèi)利用UDP協(xié)議進行聊天的功能實現(xiàn)。2) 類圖圖3.8 Widget類圖描述3) 類詳細說明表3.4 Widget類方法詳細說明函數(shù)名稱返回值函數(shù)功能Widget(QWidget *parent = 0)無構造函數(shù)Widget( )無析構函數(shù)sendMessage(MessageType type,QString serverAddress = )void發(fā)送消息newparticipant(QString userName,QString localHostName,QString ipAddress)void新用戶加入聊天室participantLeft(QString userName,QString localHostName,QString time)void用戶離開聊天室saveFile(const QString &fileName)void保存文件receiveMessage( )void接收消息formatChange(const QTextCharFormat &format)void改變字體設置receiveFile(QString userName,QString serverAddress,QString clientAddress,QString fileName)void接收文件showChat(QString name,QString ip)void構造私聊窗體getFileName(Qstring fileName)void獲取接收文件的文件名getUserName( )QString獲取用戶名getMessage( )QString獲取文本框中信息getIP( )QString獲取用戶ipeventFilter(QObject *watched, QEvent *event)bool事件過濾器changeEvent(QEvent *e)void改變窗體響應closeEvent(QCloseEvent *evnet)void關閉窗體響應on_send_clicked( )void發(fā)送按鍵on_fontComboBox_currentFontChanged(QFont font)void字體設置on_fontsizeComboBox_currentIndexChanged(QString)void字號設置on_textbold_clicked(bool checked)void加粗設置on_textitalic_clicked(bool checked)void傾斜設置on_textUnderline_clicked(bool checked)void下劃線設置on_textcolor_clicked( )void顏色設置on_sendfile_clicked( )void發(fā)送文件按鍵on_save_clicked( )void保存聊天記錄on_clear_clicked( )void 清除聊天記錄on_tableWidget_doubleClicked(QModelIndex index)void雙擊信息顯示框(3)TcpServer類1) 功能TcpServer類繼承了系統(tǒng)類QDialog,為局域網(wǎng)聊天室軟件傳送文件模塊提供了發(fā)送文件的界面,并且利用QTcpServer類實現(xiàn)了傳輸文件中服務器端的功能。2) 類圖圖3.9 TcpServer類圖描述3) 類詳細說明表3.5 TcpServer類方法詳細說明函數(shù)名稱返回值函數(shù)功能TcpServer(QWidget *parent=0)無構造函數(shù)TcpServer( )無析構函數(shù)initServer( )void服務器初始化sendMessage( )void發(fā)送消息refused( )void拒絕接收updateProgress(qint64 numBytes)void更新進度條sendFileName(QString fileName)void發(fā)送文件名closeEvent(QCloseEvent *)void關閉窗體響應changeEvent(QEvent *)void改變窗體響應on_choose_clicked( )void選擇按鍵on_send_clicked( )void發(fā)送按鍵on_quit_clicked( )void退出按鍵(4) TcpClient類1) 功能TcpClient繼承了系統(tǒng)類QDialog,主要為局域網(wǎng)聊天室軟件提供了接收文件的圖形化界面,同時實現(xiàn)了傳輸文件模塊中客戶端的功能。2) 類圖圖3.10 TcpClient類圖描述3) 類詳細說明表3.6 TcpClient類方法詳細說明函數(shù)名稱返回值函數(shù)功能TcpClient(QWidget *parent=0)無構造函數(shù)TcpClient( )無析構函數(shù)setHostAddress(QHostAddress address)void設置主機地址setFileName(QString fileName)void獲取文件名newConnect( )void建立新連接readMessage( )void讀取傳輸信息displayError(QAbstractSocket:SocketError socketError)void傳輸錯誤處理changeEvent(QEvent *e)void窗體改變響應on_cancel_clicked( )void取消按鍵(4) chat類1) 功能chat類繼承了系統(tǒng)類QDialog,與聊天室功能類似,利用系統(tǒng)類QUdpSocket進行了局域網(wǎng)中兩個用戶私聊功能的實現(xiàn)2) 類圖圖3.11 chat類圖描述3) 類詳細說明表3.6 chat類方法詳細說明函數(shù)名稱返回值函數(shù)功能chat(QString name, QString ip)無構造函數(shù)chat()無析構函數(shù)sendMessage(MessageType type,QString serverAddress=)void發(fā)送消息participantLeft(QString userName,QString localHostName,QString time)void用戶退出私聊receiveMessage()void接收消息formatChange(const QTextCharFormat &format)void改變字體設置saveFile(const QString &fileName)bool保存文件getUserName()Qstring獲取聊天室內(nèi)用戶名getMessage()Qstring獲取文本框中信息getIP()Qstring獲取聊天室內(nèi)用戶ipeventFilter(QObject *target, QEvent *event)bool事件過濾器on_send_clicked()void發(fā)送按鍵on_quit_clicked()void退出按鍵on_fontComboBox_currentFontChanged(QFont font)void字體設置on_fontsizeComboBox_currentIndexChanged(QString)void字號設置on_textbold_clicked(bool checked)void加粗設置on_textitalic_clicked(bool checked)void傾斜設置on_textUnderline_clicked(bool checked)void下劃線設置on_textcolor_clicked()void顏色設置on_save_clicked()void保存聊天記錄on_clear_clicked()void 清除聊天記錄3.5.2模塊設計(1) 聊天室模塊 1) 聊天室模塊程序流程圖 圖3.12 聊天室接收端程序流程圖圖3.13 聊天室發(fā)送端程序流程圖2) 模塊詳細描述局域網(wǎng)群聊軟件群聊功能的實現(xiàn)可以將局域網(wǎng)中的每個節(jié)點既當成客戶端又當成服務器來考慮。當節(jié)點發(fā)送消息時,該節(jié)點相當于客戶端,系統(tǒng)獲取節(jié)點的登錄ip、用戶名和主機名,然后將聊天信息輸入欄中的消息通過udp協(xié)議以數(shù)據(jù)報的形式發(fā)送到其他節(jié)點。當節(jié)點接收消息時,節(jié)點相當于服務器,系統(tǒng)通過UdpSocket綁定一個固定的端口,然后利用信號槽對網(wǎng)絡進行監(jiān)聽。如果收到數(shù)據(jù)報,則根據(jù)數(shù)據(jù)報的消息類型(MessageType)確定處理方式。若是新用戶加入聊天室,則更新用戶列表并在聊天窗口上添加新用戶的上線通知;若為用戶離開聊天室,則刪除用戶列表中離開用戶的具體信息并在聊天窗口中提示用戶下線通知。若接收到聊天消息,則將收到的聊天消息顯示在聊天窗口上。(2) 文件傳輸模塊1) 文件傳輸模塊程序流程圖圖3.14 文件傳輸模塊發(fā)送端程序流程圖圖3.15 文件傳輸模塊接收端程序流程圖2) 文件傳輸模塊詳細描述文件傳輸模塊利用TCP協(xié)議進行文件傳輸,同樣對于局域網(wǎng)中的各個節(jié)點,每個節(jié)點既是服務器又是客戶端。當需要進行文件傳輸時,發(fā)送端承擔著服務器角色。選擇需要發(fā)送的文件并且先通過udp協(xié)議將文件名傳輸?shù)浇邮斩?,如果接收端拒絕接收則返回信息提示,若接收端同意接收則利用tcp進行文件的傳輸。而在文件傳輸?shù)倪^程中,接收端承擔著客戶端的角色。當收到某個ip傳送過來的文件接收信息時,若選擇接收文件則從發(fā)送端處利用TCP協(xié)議接收文件并存放在指定路徑。若拒絕接收則返回發(fā)送端拒絕信息。(3) 私聊模塊1) 私聊模塊程序流程圖圖3.16 私聊模塊發(fā)送消息程序流程圖圖3.17 私聊模塊接收消息程序流程圖2) 私聊模塊詳細描述對于發(fā)送端,用戶想與私聊對象進行私聊時,首先通過私聊對象的主機名和ip建立了privateChat類,然后綁定本地ip和私聊用的端口。私聊類建立以后,利用主群聊的udpSocket向通訊對方的ip和端口發(fā)送消息類型(xchat)、本地用戶名、主機名、用戶ip,完成后顯示私聊窗體。然后即可通過私聊類建立的socket進行私聊。對于接收端,當接收到消息類型為xchar后接受對方的用戶名、主機名和ip地址,并通過對方的用戶名和ip地址建立私聊類privateChat,完成后顯示私

溫馨提示

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

評論

0/150

提交評論