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

下載本文檔

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

文檔簡介

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

溫馨提示

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

評論

0/150

提交評論