第一篇:軟件工程課程設計報告 之 總結性報告
總結性報告
1. 時間
飛Q2012項目從擬定好課題起,經過問題定義,可行性研究,需求分析,概要設計,詳細設計,主要編程,分布測試,總體測試,到整體裝配完成歷時一個半月。
2. 人員
主程序員(組長):王昌帥
輔程序員:司吉峰、王璐、紀曉文、王松松
文檔管理員:王璐、紀曉文
3. 遇到的困難
服務器方面:最開始我們選用的登錄模式是利用sqlsever從硬盤上的數據庫中讀取賬號密碼進行匹配登錄,但這種讀取機制降低了登錄速度,經過修改,改用了將好友賬號密碼預讀入內存中,直接在內存中進行讀取,大幅度節省了登錄時間。
客戶端方面:區別于類似的大多數即時聊天工具的消息傳送機制(即向服務器發送消息經服務器轉發),我們利用了典型的p2p(點對點)機制,當好友聊天時,服務器避免了接收和轉發消息的負荷,減少了線程數量,既減輕了服務器壓力同時又提高了好友間消息傳送的速度和質量。
4. 系統性總結
本系統具有以下特點:
?采用 C/S通信模型設計,有效減輕了服務器的負擔,便于后臺的管理。將任務合理分配到 Client端和Server端來實現,降低了系統的通訊開銷。
?采用了Java語言,因為用Java設計的系統是跨平臺的,在任何操作系統上,只要安裝了Java虛擬機,就可以運行本系統,不用受平臺的限制。
? 在客戶端都和服務器端都實現了多線程編程技術,以提高系統的效率。使用線程可以把占據長時間的程序中的任務放到后臺去處理。
本系統這實現了網絡聊天工具所具備的基本功能,即注冊、登錄、查找好友,添加好友、更改個人資料、查看好友資料、添加刪除分組、各分組之間轉移好友、發送消息、接收消息、接收系統消息等,還添加了一些特色功能,如隱身,頭像的變化,系統管理員可以向每個客戶端發送系統消息,上線下線在好友客戶端都有提示,密碼丟失可以通過密碼找回功能通過設置的密保問題找回密碼,并可以判斷密碼的安全等級等。本系統實現了一個與Tencent QQ相似的友好操作界面,簡單,易用,適合用戶的操作習慣。
該系統具備了網絡聊天工具所具備的基本功能,但還有一些功能還沒完善,如用戶聊天之間的方式僅限于文本通信,還沒實現文本傳輸功能。還沒實現修改用戶資料的功能等。系統或許存在一些未知的Bug,還需要進一步的改進和測試。在以后的研究中,我們還會研究安全通信協議,保障通信的安全,提高系統的實用性等
本課題需要繼續完善的功能有:
?
?
?
?設計測試用例,全面、系統地測試該系統所存在的一些缺陷;
? 擴展即時消息系統的服務范圍,增強系統工作的穩定性和健壯性。
5. 收獲與經驗
本次課程設計是自大一以來工作量最大的同時也是歷時最長的一次大作業任務。與之前大作業不同的在于,這次課程設計所設計的項目課題,所用的編程語言,用到的知識都是以前沒有接觸過的,完全通過自學掌握。所以工作進度最初進展很慢,不過通過對新知識的學習,和項目實踐的鍛煉,深入學習java可視化編程,完善操作界面,使其更加適合用戶的操作習慣; 設計安全通信機制,保障通信的安全; 加入文件傳輸功能,豐富用戶的信息交流方式;
掌握專業知識的同時,更重要的是項目經驗,以及實踐中處理各種問題能力的培養。
通過本次項目的復習,我們了解了一個完整的軟件開發過程,包括課題定義、可行性研究,需求分析,概要設計,詳細設計,測試工作,進一步完善,設計使用說明書,總結提交實驗報告。以及其中不同人員和不同的工作,主程序員是一個項目團隊的核心,指導整個項目組各個成員的工作,規劃整個項目的結構,統一各個部分函數接口,承擔著編程過程中最核心的任務,以其為核心各個部分才可以慢慢擴展開來。輔助程序員主要負責各個獨立部分的編程設計,對輔助程序員來說,獨立性較主程序員的任務更大一些,但是,卻要求輔助程序員對自己承擔的任務有必須清晰的了解,因為到后期各個部分連接的時候肯定會出現一些問題,修改這些錯誤要求必須對不同部分有很詳細的了解。文檔管理員承擔著大部分文檔編輯工作,但對具體的程序代碼也要有一定的了解。
本次課程設計最重要的是讓我們收獲了一些寶貴的項目開發經驗:項目最開始的全局規劃,接口統一工作很重要以及數據結構的選擇因為這涉及到以后各部分連接時的統一問題,一旦剛開始沒有統一好,連接時會有很多問題,導致各部分不能很好的連接,很多功能或屬性沒有很好的利用。另外,項目后期的bug修改也很重要,因為由不同程序員編寫程序在正確性、高效性,和格式上都有很大的不同,自然會在連接時產生一些問題,更改這些問題時便不再是某個部分的問題,而是全局的問題,需要各個程序員協調完成修改工作,而且我們也了解到,工程項目越大,后期產生的bug也會越多,起初我們忽視了后期bug修改的工作量,導致在完成時間上一拖再拖。
總而言之,盡管本次課程設計使我們糾結了很長的時間,遇到了很多困難,但我們真心的為我們所獲得工作經驗和成果而高興,截止到完成文檔時,我們的飛QQ2012已經實現了局域網內以及校園內網各個客戶端的即時聊天,并且速度和質量得到了各用戶的好評,我們還將繼續完善飛Q2012,讓更多人知道了解它,繼續學習繼續努力。
第二篇:軟件工程課程設計報告(個人)2010
軟件工程課程設計報告(個人)
課程設計題目:研究生教務管理系統
專業:信息與計算科學班級:
報告人姓名:學號課程教師:實驗指導教師:
實驗地點:
完成起止日期:
[正文]
一、課程設計概述(目的、任務、參考資料)
1.項目的目的根據研究生管理部門的要求,面向針對研究生和導師這一特殊的群體,針對教務信息數據混亂的情況,利用電腦信息化的優勢,為理學院研究生系統建立研究生教務管理系統,使研究生管理中的各項實際業務工作切實的映射在系統內部,為學院提供一個方便的、快捷的、一體化的集成信息化環境。
2.項目的任務
根據研究生教務管理中的具體需求,該項目的任務可分為7個模塊進行
設計劃分,每個模塊都要完成具體的任務
? 任務一:基礎平臺
任務:建立導航登陸界面,使用戶能用密碼登陸頁面,了解信息,下載表格文件,獲得具體操作權限。
? 任務二:學籍管理
任務:研究生登路后,可進行基本信息查詢、成績查詢、修改密碼的功能操作;管理員則可進行修改用戶信息、創建賬戶、數據上傳或下載的操作
? 任務三:智能排課:
任務:包括完成自動排課、手動調整、選課管理、課表查詢及打印等更能
? 任務四:導師管理
任務:建業數據庫,使研究生和導師、管理員可以查詢導師的基本信息,并且管理員可以對數據等做出修改和調整。
? 任務五:教學教務管理
任務:該部分主要針對管理員展開建設。管理員的職責是以管理、統計、修改數據信息為主。建議以基本信息維護、入學、畢業信息管理、任課安排和考試安排為主要功能的模塊。
? 任務六:科研管理
任務:主要完成的任務是,研究生能夠順利提交科研項目,管理員能無誤的將項目掛在網頁上
? 任務七:評優管理
任務:管理員能將通過審核的名單公示在網頁上。
3.項目的參考資料
[1] 《LoadRunner使用手冊》
北京長江軟件有限公司編制
[2] 《軟件測試:第二版》
Paul C.Jorgensen著/機械工業出版社
[3]《ASP.NET網站開發》(丁昊凱、許靜雯、謝黎文編著 出版社:電子工業出版社)
[4]《數據庫系統概論(第四版)》(作者:薩師煊王珊出版社:高等教育出版社)
[5]《軟件工程導論(第五版)》(作者:張海藩出版社:清華大學出版社)
二、采用的主要技術與方法
1.項目采用的主要技術:
? 技術路線:
基于微軟ASP.NET框架及應用環境,遵循Web Service和XML技術、B/S模式,采用三層結構開發
? 系統平臺:
Windows 2003 Server SP1(以上包括SP1)
MS Sql Server 2005
IIS 6.0及以上
? 開發工具:
Microsoft Visual Studio.NET 2005
PhotoShop 7.0
CorelDraw 12
Dream Weaver 8.0
? 開發語言
C# 2.0
ASP.NET 2.0(3.0)
XML/XSL
JavaScript
? 測試軟件
LoadRunner
三、實現步驟與在實現項目中我獲得的主要成果
1.項目的實現步驟
1)首先,小組成員根據研究生管理部門提供的資料,針對研究生的具
體要求,討論研究后編寫需求分析文檔,將項目軟件分為7個模塊,并完成初步的界面設計;
2)之后,在需求文檔的基礎上,針對研究生、導師以及管理員的不同
需求,根據模塊進行設計文檔的編寫,并著手進行軟件的設計以及
完善界面設計。
3)在完善需求文檔和設計文檔之后,小組成員制作PPT,并通過審核。
4)在完成項目前期工作之后,小組中的軟件編寫成員依據軟件工程的原則開始進行具體的軟件編程,另外的部分成員則進行測試計劃文
檔及測試設計文檔的編寫。并在之后的幾天中對其進行整理修改以
完善文檔。
5)在軟件基本完成之后,小組成員分工進行軟件的測試,完成測試結
果。針對測試中發現的問題,討論并對軟件進行修改。
6)最后,對項目進行總結,編寫總結報告。
2.我獲得的主要成果:
由于我在軟件編程方面比較薄弱,在完成項目的過程中,我主要負責的是文檔的編寫以及項目的測試方面的工作。包括如下部分:
? 研究生教務管理系統需求分析書中,第四部分需求規格以及第五部分項
目具體的功能規格;
? 研究生教務管理系統軟件設計文檔的大體框架以及其中的第一部分引言
以及第二部分系統設計概述;
? 研究生教務管理系統客戶端測試計劃(全部);
? 研究生教務管理系統客戶端測試設計的大體框架以及第一部分引言、第二部分測試設計;
? 研究生教務管理系統用戶使用手冊(除第三部分運行環境)
四、個人小結
主要困難:
? 在項目進行的初期,雖然我們對用戶的需求有大致的了解,并有參照模版,但由于本科生教務管理系統和研究生教務管理系統的具體項目上有著某些差異,這要求我們要注重了解其中的區別,并對模版進行分析及修改。在對需求文檔進行編寫時,文字表述不足的弱點很輕易的就顯示出來,這要求我們對網絡教學上給出的資料及范例進行詳細的閱讀,才能寫好需求文檔;在接下來的文檔編寫時也有同樣的問題。
? 在項目進行的中期,即軟件的設計階段。在了解具體需求之后,編寫設計
文檔困難不大,但是由于編程能力的強弱問題,小組成員不可能完全都進行編程,雖然這是小組分工后可以解決蓋的問題,但是由于軟件編程能力的缺乏,會造成在小組討論和文檔書寫上出現代溝,所以個人認為,小組成員擁有對程序編成有一定的了解是有必要的。
? 在項目的測試后面階段,即軟件的測試階段。初次接觸具體測試的我們,對新的軟件不了解,導致產生一定的困難,這要求我們對LoadRunner軟件自主的進行學習并掌握如何運用該軟件進行項目的測試。
五、附錄(個人完成的文檔)
第三篇:《軟件工程》課程設計個人報告
軟件工程課程設計報告
海天一色網上書店
《軟件工程》課程設計個人報告
題 目 網上書店
學 院 名
稱 :信息科學與工程學院 專 業 班
級 :計算機09-2 班
報 告 人姓名 :
梁宏
報 告 人學號 : 200901051413
承 擔 角
色 : 網頁設計員
同 組 組
長 :
安文龍
同組其他成員 : 李金閃、呂穎、孫娜
指 導 教 師 : 孫紅梅
完成起止日期:2011-10-17至2011-12-20 軟件工程課程設計報告
海天一色網上書店
一、課程設計實驗概述
1.目的與任務
1)通過本課程設計的實踐及其前后的準備與總結,復習、領會、鞏固和運用軟件工程課堂上所學的軟件開發方法和知識,為適應畢業后團隊合作開發規模稍大項目和綜合應用本專業所學習的多門課程知識創造實踐機會,為學生提供主動學習、積極探索與大膽創新的機會。
2)學習研究課程設計指導書,進行分組并且明確每個人在開發小組中扮演的角色及承擔的職責,確定目標、初步方案,準備、試用開發環境與工具,以及學習與搜集素材,借閱、購置必要的書籍與材料,做好小組與個人的開發記錄、總結,做好小組內外的交流與互助。
2.開發環境
本項目采用客戶機/服務器原理,客戶端和用戶端的程序是建立在Windows XP/Win7 系統上。
3.參考資料
1)《軟件工程》錢樂秋、趙文耕、齊治昌 等清華大學出版社鄭人杰等 2)覃劍鋒 張鋼編著,ASP網站建設專家,機械工業出版社,2001 3)武延軍 趙彬編著,精通ASP網絡編程,人民郵電出版社,2000 4)李赫雄等,SQL SERVER 2000應用程序開發,郵電出版社,2001 5)劉育楠著,動態網頁設計培訓教程,清華大學出版社,2001 4.任務完成的一般過程
學習課程設計指導書—>分組并明確角色—>對項目進行分析確定目標、初步確定方案,選擇開發環境及工具—>進行課程設計—>進行總結
5.軟件配置
以Microsoft Visual Studio 2008為開發軟件的應用程序,是采用SQL Server Management Studio Express的為開發軟件的數據庫服務程序。
6.個人完成的程序模塊和文檔清單 參與各個文檔的討論及修改母版、首頁的設計,網頁整體設計,角色劃分及 軟件工程課程設計報告
海天一色網上書店 權限的設計,參與小組課程設計報告的完成。
二、本小組個人承擔部分的主題、構思與創意 1.小組選題特色:
小組內承擔著網頁設計員的職責。首先我們網站主要提供的基本服務項目有:用戶的注冊,登錄;用戶的分級瀏覽或圖書選購;店主對進書、售書、庫存、帳目、客戶的管理;以及網站的日常維護(比如,網上書店簡介;網上書店信息發布;客戶留言及對客戶留言的反饋)。這些都是需要大量網頁來呈現的,網站的前臺就是我們程序的臉面,因為它是我們程序唯一能與執行者關聯的模塊,所以我認為網站的設計員同樣也是一個軟件開發團隊里不可缺少的一部分。
經過我們小組討論,網頁首先用的動態的,所以這就要求我作為網站設計員必須熟練的運用ASP和C#的一部分內容,盡我最大的能力把網也弄的符合人們現在的觀賞能力,讓我們的用戶能喜歡而不是討厭我們的網站,讓用戶能在使用我們網站的時候有個愉快的購物體驗,讓他們能記住我們的網站。
2. 個人貢獻:
本人承擔的角色是網頁設計員,參與各個文檔的討論及修改母版、首頁的設計,網頁整體設計,角色劃分及權限的設計,參與小組課程設計報告的完成。軟件工程課程設計報告
海天一色網上書店
三、本人實現項目的過程與步驟以及遇到的困難
1、因為以前沒有做過這個大規模的程序,也沒有動態網頁設計的經驗,好在以前自己為了滿足自己的好奇心做過靜態的網頁,對html網頁語言和Dreamweaver,photoshop軟件的使用都有一定的了解,但是這些知識的積累還不足以滿足我們這次項目的要求,所以我是邊學習邊應用。
首先在網上了解了網頁設計的基本步驟:
一、用“原型法”細化網站設計需求
二、網頁鏈接的深度、廣度和耦合程度
三、網頁基本布局
四、網頁空間中的視覺導向
五、網頁空間的秩序及運動趨勢
六、網頁中的留白
七、文字信息的設計和編排
八、圖片和動畫
九、網頁空間中的運動趨勢線
十、使用Web標準設計網頁
因為我的主要角色是網頁設計,所以要把我的網頁框架思路介紹給同組中負責編碼的成員,因此,為了實現網頁設計,我還參與了網頁模板的設計。
母版的設計要綜合考慮各方面的因素,不能過于簡單,因為過于簡單不能體現母版的使用價值,也不能過于復雜,因為過于復雜會影響其他頁板頁的設計,使其影響面板設計的靈活性,有的頁面因為特殊的需要甚至不用繼承模板頁。
2、首頁的設計要注重對整個網站的引導作用,網頁版面設計要力求簡單但是有特色,具有良好的網絡購書界面,讀者可以通過分類查找方式選擇自己所需購買的圖書。一個網站,能否吸引顧客的經常光顧,界面的美觀也顯得非常重要。本書店系統通過精心打造,讓書店的設計充分體現軟件的時尚、大眾化。
1)首頁中擁有顯示進入各個模塊的導航按鈕,用戶可以直接點擊進入相應的模塊。
海天一色網上書店首頁如下圖所示: 軟件工程課程設計報告
海天一色網上書店
2)要在本網上書店進行購書,首先要注冊為網站會員,填寫詳細個人信息。通過會員注冊提取用戶基本信息。注冊內容包括登錄名,密碼,真實姓名,E—ail等信息。
會員注冊頁面如下:
3)為了便于對網上書店進行管理,以及從網站的安全性考慮,我們將科大書店首頁與后臺管理系統進行了分離,以防不法分子進行攻擊。海天一色書店的內部管理系統的界面: 軟件工程課程設計報告
海天一色網上書店
對于有關圖片編輯的地方,因為對于Photoshop掌握的并不好,所以選取了另一款簡易的軟件:ACDSee,具有多照片疊加等功能,更有50余種照片特效,數秒即可制作出影樓級的專業照片。因此相對于Photoshop來說,ACDSee更加容易上手。
3、網站設計過程中遇到的大問題不多但小問題還真得挺多的,光是網頁設計就費了很長時間,起初為了接觸網頁,翻閱了很多資料,最終確定的方就是邊查資料邊學習。
網頁頁面的設計中最主要的就是頁面風格的設計,為了使客戶在登陸網站之后又一個舒適的頁面,單純的依靠自己的喜好設計頁面鮮艷不合乎情理,為此,我專門登陸了一項大型公司的網站做了相應的比較和分析,例如,東軟和華維的網站,他們的首頁想對于一些娛樂網站來說都是比較簡單,給我一種簡單的舒適的感覺。結合我們網站的特點,經過和其他組員的商定最終確定了現在的網頁格式。
四、實驗個人小結
因為以前沒有做過這個大規模的程序,也沒有動態網頁設計的經驗,好在以前自己為了滿足自己的好奇心做過靜態的網頁,對html網頁語言和Dreamweaver,photoshop軟件的使用都有一定的了解,但是這些知識的積累還不足以滿足我們這次項目的要求,所以我是邊學習邊應用。由于自己一開始的不自信,覺著這樣的任務也許自己并不能很好的完成,也許會拖累自己組的人。但是當我做完整個項目回過頭看時,才發現自己一開始的想法是錯誤的,其實并沒 軟件工程課程設計報告
海天一色網上書店 有自己想象的那么困難。
通過此次課程設計,使我更加扎實的掌握了有關軟件工程方面的知識,在設計過程中雖然遇到了一些問題,但經過一次又一次的思考,一遍又一遍的檢查終于找出了原因所在,也暴露出了前期我在這方面的知識欠缺和經驗不足。實踐出真知,通過親自動手制作,使我們掌握的知識不再是紙上談兵。
過而能改,善莫大焉。在課程設計過程中,我們不斷發現錯誤,不斷改正,不斷領悟,不斷獲取。最終的檢測調試環節,本身就是在踐行“過而能改,善莫大焉”的知行觀。這次課程設計終于順利完成了,在設計中遇到了很多問題,最后在老師的指導下,終于游逆而解。在今后社會的發展和學習實踐過程中,一定要不懈努力,不能遇到問題就想到要退縮,一定要不厭其煩的發現問題所在,然后一一進行解決,只有這樣,才能成功的做成想做的事,才能在今后的道路上劈荊斬棘,而不是知難而退,那樣永遠不可能收獲成功,收獲喜悅,也永遠不可能得到社會及他人對你的認可!
回顧起此課程設計,至今我仍感慨頗多,從理論到實踐,在這段日子里,可以說得是苦多于甜,但是可以學到很多很多的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,但可喜的是最終都得到了解決。
實驗過程中,也對團隊精神的進行了考察,讓我們在合作起來更加默契,在成功后一起體會喜悅的心情。果然是團結就是力量,只有互相之間默契融洽的配合才能換來最終完美的結果。
第四篇:軟件工程課程設計報告 之 詳細設計報告
山東科技大學 王昌帥 wangchangshuai0010.iteye.com
詳細設計說明書
1、引言: 1、1編寫目的:
在前一階段(概要設計說明書)中,已解決了實現該系統需求的程序模塊設計問題。包括如何把該系統劃分成若干個模塊、決定各個模塊之間的接口、模塊之間傳遞的信息,以及數據結構、模塊結構的設計等。在以下的詳細設計報告中將對在本階段中對系統所做的所有詳細設計進行說明。
在本階段中,確定應該如何具體地實現所要求的系統,從而在編碼階段可以把這個描述直接翻譯成用具體的 程序語言書寫的程序。主要的工作有:根據在《需求分析說明書》中所描述的數據、功能、運行、性能需求,并依照《概要設計說明書》所確定的處理流程、總體結構和模塊外部設計,設計軟件系統的結構設計、逐個模塊的程序描述(包括各模塊的功能、性能、輸入、輸出、算法、程序邏輯、接口等等)
在以下的各個階段中,《用戶操作手冊》將與本階段的工作緊密結合,努力作到 讓用戶易懂易學。《測試報告》和《維護報告》也將參考本說明書,檢驗本系統的各項性能指標,及時發現紕漏及時修補,一定要把功能強大、穩定可靠、便于維護的機票預定系統交到用戶手中。1、2項目背景:
在本即時聊天工具項目的前一階段,也就是需求分析階段,已經將系統用戶對本系統的需求做了詳細的闡述,這些用戶需求已經在上一階段中對不同用戶所提出的不同功能,實現的各種效果做了調研工作,并在需求規格說明書中得到詳盡得敘述及闡明。
本 飛Q即時聊天系統項目主要由兩部分形成:
1、客戶端;
2、數據庫服務器端;
山東科技大學 王昌帥 wangchangshuai0010.iteye.com 1、3文中特殊的定義和縮寫:
1.3.1定義
SQL SERVER: 系統服務器所使用的數據庫管理系統(DBMS)。SQL: 一種用于訪問查詢數據庫的語言
事務流:數據進入模塊后可能有多種路徑進行處理。主鍵:數據庫表中的關鍵域。值互不相同。
外部主鍵:數據庫表中與其他表主鍵關聯的域。ROLLBACK: 數據庫的錯誤恢復機制。
1.3.2 縮寫
系統:若未特別指出,統指本機票預定系統。
SQL: Structured Query Language(結構化查詢語言)。ATM: Asynchronous Transfer Mode(異步傳輸模式)。1、4參考資料:
1. 以下列出在概要設計過程中所使用到的有關資料: 2. 需求規格說明書
飛Q軟件開發小組
3. 概要設計說明書 飛Q軟件開發小組
4. 用戶操作手冊(初稿)
飛Q軟件開發小組 5. 軟件工程及其應用 周蘇、王文等 天津科學技術出版社 6. 軟件工程
張海藩 清華大學出版社
7. Computer Network A.S.Tanenbaun Prentice Hall
8.網絡上的資料
文檔所采用的標準是參照《軟件工程導論》沈美明著 的“計算機軟件開發文檔編寫指南”。
山東科技大學 王昌帥 wangchangshuai0010.iteye.com 2.總體設計: 2、1需求概要:
應廣大用戶的要求,要求做一個性能更高更人性化的即使聊天工具,我飛Q軟件設計小組努力為大家寫一個更好的即時聊天工具。
飛Q2012聊天系統的總目標是:在計算機網絡,數據庫和先進的開發平臺上,利用現有的軟件,配置一定的硬件,開發一個具有開放體系結構的、易擴充的、易維護的、具有良好人機交互界面的飛Q2012聊天系統,實現添加好友,刪除好友,相互聊天系統,為人們聊天提供準確、精細、迅速的信息。
根據可行性研究的結果和客戶的要求,分析現有情況及問題,采用Client/Server結構,將飛Q2012聊天系統劃分為兩個子系統:客戶端子系統,服務器端子系統。
要求系統能有效、快速、安全、可靠和無誤的完成上述操作。并要求客戶機的界面要單明了,易于操作,服務器程序利于維護。2、2 軟件結構:
各模塊之間的關系已由概要設計給出
下面介紹詳細的設計
登陸模塊
山東科技大學 王昌帥 wangchangshuai0010.iteye.com
登錄找回密碼輸入錯誤輸入飛Q帳號和密碼申請帳號輸入格式是否正確正確進入找回密碼界面點擊登錄進入申請界面密碼正確?密碼正確進入飛Q聊天主界面密碼錯誤登錄失敗結束 申請模塊
山東科技大學 王昌帥 wangchangshuai0010.iteye.com
開始輸入基本信息N點擊新用戶注冊信息是否完整Y顯示已申請的QQ帳號,密碼點擊登錄QQ進入QQ登陸界面結束
安全模塊
山東科技大學 王昌帥 wangchangshuai0010.iteye.com
開始點擊安全概述點擊修改密碼點擊常見欺騙點擊修改密保常見欺詐立即完成是否設置密保Y判斷安全狀況隱患危險N密保是否正確Y提交輸入驗證密保設置密保N密保問題是否正確提交Y提交N是否設置密保Y輸入原密保問題輸入密保問題N修改密碼修改密保輸入新密保提交良好結束
山東科技大學 王昌帥 wangchangshuai0010.iteye.com
聊天模塊聊天窗口1聊天窗口2窗口1窗口2發送發送窗口2信息轉換站窗口1信息轉換站
服務器端:
1、申請模塊
山東科技大學 王昌帥 wangchangshuai0010.iteye.com
啟動線程將可申請帳號預讀到內存中等待用戶申請。。返回繼續監聽客戶端返回申請到的QQ用戶請求啟動線程調用子線程次數過多此ip是否申請次數過多取出一個可申請的qq返回申請到的QQ在數據庫中建立此人的基本信息檔案結束c
2、登錄模塊山東科技大學 王昌帥 wangchangshuai0010.iteye.com
啟動線程將密碼預讀到內存中等待用戶申請。。返回繼續監聽該帳號另一客戶端客戶端返回申請到的QQ用戶請求啟動線程調用子線程重復則發送終止命令判斷是否是重復登錄不重復密碼錯誤判斷密碼是否正確給其他好友發送登錄信息、讀取系統消息讀取系統消息所以在線好友返回申請到的QQ返回用戶的好友列表讀取好友列表數據庫結束
3、添加好友模塊
山東科技大學 王昌帥 wangchangshuai0010.iteye.com
啟動接收添加好友同意與否信息線程10
等待用戶。。返回繼續監聽客戶端發送同意與否信息啟動子線程調用子線程讀取同意與否信息不同意同意否?同意寫入數據庫數據庫客戶端同意信息子線程結束 10 山東科技大學 王昌帥 wangchangshuai0010.iteye.com
啟動接收添加好友請求線程11
等待用戶申請。。返回繼續監聽客戶端用戶請求啟動子線程調用子線程不允許任何人加入判斷要添加的用戶的添加權限允許任何人加入數據庫需要驗證結束 11 山東科技大學 王昌帥 wangchangshuai0010.iteye.com
啟動接收添加好友驗證線程12
等待用戶申請。。返回繼續監聽客戶端用戶請求啟動子線程調用子線程讀取驗證信息判斷要添加的用戶是否在線發送同意與否不在線數據庫在線子線程結束要添加的用戶同意的同時數據庫相應添加
4、刪除好友模塊
山東科技大學 王昌帥 wangchangshuai0010.iteye.com
啟動刪除好友請求線程13
等待用戶請求。。返回繼續監聽客戶端用戶請求啟動子線程調用子線程刪除成功讀取要刪除的人在雙方數據庫中刪除對方數據庫發送刷新界面命令另一客戶端結束
5修改好友昵稱模塊山東科技大學 王昌帥 wangchangshuai0010.iteye.com
啟動修改好友昵稱請求線程等待用戶請求。。返回繼續監聽客戶端用戶請求啟動子線程調用子線程讀取要修改的人在數據庫中修改數據數據庫結束
6、查找用戶模塊
山東科技大學 王昌帥 wangchangshuai0010.iteye.com
啟動查找用戶請求線程15
等待用戶請求。。返回繼續監聽客戶端用戶請求啟動子線程調用子線程讀取要刪除的人判斷是精確查找還是按條件按條件精確構造SQL語句構造SQL語句返回結果列表數據庫構造搜索結果列表返回結果結束
7、安全模塊
7.1、設置密保模塊
山東科技大學 王昌帥 wangchangshuai0010.iteye.com
啟動監聽用戶設置密保請求線程等待用戶請求。。返回繼續監聽客戶端用戶請求啟動子線程調用子線程讀取此用戶的信息,及密保設置信息返回成功信息構造SQL語句寫入數據庫數據庫寫入數據庫完成后結束
7.2、判斷是否設置密保模塊
山東科技大學 王昌帥 wangchangshuai0010.iteye.com
啟動監聽用戶請求線程等待用戶請求。。返回繼續監聽客戶端用戶請求沒有設置密保啟動子線程調用子線程判斷是否設置密保讀取密保問題返回密保問題信息數據庫得到該用戶密保問題結束 山東科技大學 王昌帥 wangchangshuai0010.iteye.com 7.3、判斷密保答案是否正確模塊
啟動接收用戶密保答案線程等待用戶請求。。返回繼續監聽客戶端用戶請求啟動子線程錯誤調用子線程獲得密保答案讀取密保問題及答案數據庫返回數據判斷密保答案是否正確返回正確信息子線程結束
山東科技大學 王昌帥 wangchangshuai0010.iteye.com 7.4、修改密保模塊
啟動接收用戶密保答案線程等待用戶請求。。返回繼續監聽客戶端用戶請求啟動子線程錯誤調用子線程獲得密保答案讀取密保問題及答案數據庫返回數據判斷密保答案是否正確返回正確信息子線程結束
7.5、修改密碼模塊
山東科技大學 王昌帥 wangchangshuai0010.iteye.com
啟動接收用戶重設密碼線程等待用戶請求。。返回繼續監聽客戶端用戶請求調用子線程啟動子線程讀取密碼信息返回成功信息重設密碼在數據庫中重寫此用戶密碼數據庫子線程結束
7.6、找回密碼
山東科技大學 王昌帥 wangchangshuai0010.iteye.com
啟動監聽用戶請求線程等待用戶請求。。返回繼續監聽客戶端用戶請求沒有設置密保啟動子線程調用子線程讀取密保問題判斷是否設置密保舊密碼不正確判斷舊密碼是否正確返回重設成功信息數據庫重設密碼寫入數據庫子線程結束
8、移動好友模塊 山東科技大學 王昌帥 wangchangshuai0010.iteye.com
啟動移動好友昵稱請求線程等待用戶請求。。返回繼續監聽客戶端用戶請求啟動子線程調用子線程讀取基本信息在數據庫中修改數據數據庫結束
9、組操作模塊
山東科技大學 王昌帥 wangchangshuai0010.iteye.com
啟動組操作請求線程23
等待用戶請求。。返回繼續監聽客戶端用戶請求啟動子線程調用子線程讀取基本信息判斷是對組的什么操作贈加組刪除組修改組的名稱生成SQL語句在數據庫中修改數據數據庫結束
10、發送系統消息模塊
山東科技大學 王昌帥 wangchangshuai0010.iteye.com
開始服務器線程產生的不通的發送消息要求判斷是發哪種類型的系統消息用戶1用戶3用戶2用戶4給相應的用戶發送相應的系統消息。。結束
11、更新個人信息模塊
啟動修改個人信息請求線程等待用戶請求。。返回繼續監聽客戶端用戶請求啟動子線程調用子線程讀取信息生成SQL語句在數據庫中修改數據數據庫結束
山東科技大學 王昌帥 wangchangshuai0010.iteye.com
12、請求ipPort 模塊
啟動修改個人信息請求線程等待用戶請求。。返回繼續監聽客戶端用戶請求啟動子線程調用子線程讀取信息讀取ip和port讀取另一用戶ip和portHashmap返回此人ip和chatport判斷ipport是否為空返回不在線信息結束、心跳模塊
13.1、用戶心跳接收處理模塊
山東科技大學 王昌帥 wangchangshuai0010.iteye.com
啟動修改個人信息請求線程26
等待用戶請求。。返回繼續監聽客戶端用戶請求啟動子線程調用子線程讀取信息讀取ip和port讀取另一用戶ip和portHashmap返回此人ip和chatport判斷ipport是否為空返回不在線信息結束
13.2、服務器定時檢測超時模塊
山東科技大學 王昌帥 wangchangshuai0010.iteye.com
啟動循環檢測用戶是否在線的線程得到hashmap中的一個用戶是否超時?是推拉檢測模塊否得到hashmap中的下一個用戶
13.3、服務器推拉檢測在線模塊
山東科技大學 王昌帥 wangchangshuai0010.iteye.com
啟動循環檢測用戶是否在線的線程客戶端是否在線我在線向用戶詢問是否在限定時間得到用戶客戶端響應是更新記錄接收用戶心跳時刻的hashmap否在數據庫中相應修改從記錄接收用戶狀態的hashmap刪除此用戶從記錄接收用戶在線信息的hashmap刪除此用戶從記錄接收用戶心跳時刻的hashmap刪除此用戶數據庫此線程結束
14、添加可利用飛Q號
山東科技大學 王昌帥 wangchangshuai0010.iteye.com
開始否讀取數據庫中可申請的帳號數Sleep 一小時判斷數量是否過少否是添加一些可利用的帳號添加到內存中的可申請帳號arraylist中
3、程序描述:
客戶端總模塊:
山東科技大學 王昌帥 wangchangshuai0010.iteye.com 30
登陸模塊 登錄過程
對在飛Q登錄信息界面中輸入的各項信息進行初步檢驗。若發現錯誤,輸入數據全部清空,以讓用戶重新輸入一次。若未發現錯誤,轉入主界面。其中的錯誤種類有:
輸入數據不匹配
帳號 數據庫沒有該帳號
密碼 與對應賬號的密碼不匹配 2 輸入數據不能為空 if(賬號為空){ 請輸入賬號再登陸 } else if(賬號長度小于6或對于20){ 請輸入正確的賬號,賬號可以位數字或Email地址。
} else if(密碼為空){ 請輸入密碼后再登陸 } else { 通知服務器 賬號為:xxx 密碼為:xxx的請求登陸 } 2申請過程
對之前沒有申請飛Q的用戶,不能登錄飛Q,而必須點擊申請,成為飛Q大家庭點擊之后轉入申請界面
尋找忘記密碼過程
對之前申請飛Q的用戶,如果忘記密碼,請不要擔心,點擊界面上的“忘記密碼”,點擊之后轉入尋找密碼界面
1.的一員。
山東科技大學 王昌帥 wangchangshuai0010.iteye.com
2申請模塊
對在飛Q申請信息界面中輸入的各項信息進行賬號申請。若發現錯誤,輸入數據全部清空,以讓用戶重新輸入一次。若未發現錯誤,轉入賬號申請成功界面。
if(昵稱為空){ 請輸入昵稱 } else if(密碼格式錯誤(小于6或大于20)){ 密碼必須6-20個字符!
密碼框清空,重新輸入 } else if(兩次密碼輸入不匹配){ 兩次密碼輸入不一致
密碼框清空,重新輸入 } else { 獲取注冊信息
點擊新用戶注冊,向服務器傳輸注冊信息 }
山東科技大學 王昌帥 wangchangshuai0010.iteye.com
3 增刪改查模塊
3.1 查找好友模塊
對在飛Q查找好友界面中選擇查找類型(精確查找或條件查找),輸入各項查找信息進行好友查找。若發現錯誤,輸入數據全部清空,以讓用戶重新輸入一次。若未發現錯誤,轉入查找結果界面。在查找結果界面中選擇要添加的好友,雙擊,查看該好友的詳細資料,點擊添加,轉入好友信息驗證界面。在好友信息界面,輸入驗證信息,完成好友的添加。
Search類
if(查找聯系人){ if(精確查找){
if(查詢條件為空)
{
請至少填一個查詢條件
}
else { 獲取查找信息
點擊查找把查找信息傳遞給服務器 } }
else if(條件查找)
{ 獲取查找信息
點擊查找把查找信息傳遞給服務器
} Search_rasult類 if(點擊添加好友){ if(添加好友選擇的是自己)
山東科技大學 王昌帥 wangchangshuai0010.iteye.com
{
對不起,自己不能加自己為好友!
重新選擇
} else { 把選擇的好友發送給服務器
} } else if(關閉){ 放棄添加為好友
} Addfriends類
if(確定添加為好友){ 把選擇的好友信息發送給服務器 } else if(取消){ 放棄添加為好友 } 3.2 刪除好友模塊
找到你要刪除的對象所在的用戶組,展開,找到該用戶,右擊,點擊好友刪除,然后刷新好友列表;
3.3.3 修改個人資料模塊
點擊自己頭像,轉入個人資料界面,更新你所需要的信息選項;確定更新點擊確定,如果不想更新,點擊取消即可;
更改頭像:點擊更換頭像,即可轉入更換頭像界面,界面中陳列了各種頭像,點擊你想要的頭像,即可顯示該頭像的不同樣式,一供你參考。思考之后確實想更換,點擊確定,立刻刷新所有界面,確保頭像更換。如果不想更換,點擊取消即可。
3.4 好友移動模塊
山東科技大學 王昌帥 wangchangshuai0010.iteye.com
找到你要移動的對象所在的用戶組,展開,找到該用戶,右擊,點擊移動,在彈出框中選擇移動的組對象,向服務器發送相應的數據,然后刷新好友列表;
3.5 組操作模塊 <1> 修改
找到你要修改的用戶組,右擊點擊重命名,向服務器發送該賬號的修改組信息,刷新好友列表,即可看見修改成果.<2> 刪除
找到你要刪除用戶組,展開,右擊,點擊刪除分組,向服務器發送該賬號的刪除組信息,然后刷新好友列表;
如果,要刪除的是默認分組“我的好友”,系統不提供刪除權限。<3> 添加
在好友列表中右擊,點擊添加分組,輸入分組名,點擊確定,向服務器發送該賬號的組信息,不想添加,點擊取消。安全模塊
對在飛Q安全界面中,分為“安全概述”,“常見欺詐”,“修改密碼”,“修改密?!?; <1> 安全概述
安全概述 概述了你當前飛Q的安全狀況 if(設置密保并且密碼等級為良好以上){
安全狀況良好請繼續保持良好的習慣
可立即完成設置密碼 } else if(設置密保并且密碼等級為中等以下){ 安全狀況存在隱患請定期修改密碼
立即完成設置密碼 } else { 安全狀況危險請立刻設置密保問題
立即完成設置密保 } <2> 常見欺詐
常見的集中欺詐方式:釣魚網址,視頻欺詐,中獎欺詐,冒充好友欺詐;
山東科技大學 王昌帥 wangchangshuai0010.iteye.com
<3> 修改密碼
修改密碼之前請確保設置密保;
如果沒有設置密保問題,請先設置密保問題,以確保該賬戶的安全性。如果設置了密保問題,請先輸入原密保問題,核對用戶身份。密保正確才可以修改,如果錯誤,對不起,不能修改密碼。
if(三個密保問題有空){ 對不起,密保問題回答不能為空!
沒填寫的須不完整
} else { 向服務器獲取對應密保問題的答案
If(回答錯誤){ 提示:對不起,密保問題回答不能正確
全部清空,重新輸入 }
else { 修改密碼
輸入舊密碼
if(輸入的舊密碼正確){
if(新密碼為空)
{
提示:密碼不能為空
}
else if(兩次密碼輸入不一致)
{
提示:兩次密碼輸入不一致
}
else if(兩次密碼輸入一致并且不空){ 向服務器發送該賬號的新密碼
} }
else
山東科技大學 王昌帥 wangchangshuai0010.iteye.com
{ 提示:密碼有誤,請重新輸入
} } } <4> 修改密保
如果沒有設置密保問題,設置密保問題。
如果設置了密保問題,請先輸入原密保問題,核對用戶身份。密保正確才可以修改,如果錯誤,對不起,不能修改密保。
if(沒有設置密保){ 選擇密保問題回答
If(選擇的密保問題重復){ 提示:選擇的密保問題重復
重新選擇密保問題 }
Else if(修改密保時驗證密保問題為空){ 提示:修改密保時驗證密保問題為空 } Else { 服務器發送該賬號的新密保問題和新密保問題對應的答案 }
} else { 已經設置設置密保
向服務器獲取對應密保問題的答案
輸入密保問題答案(用戶)If(回答錯誤){ 提示:對不起,密保問題回答不能正確
全部清空,重新輸入 }
else { 修改密保
選擇密保問題回答
山東科技大學 王昌帥 wangchangshuai0010.iteye.com
If(選擇的密保問題重復){ 提示:選擇的密保問題重復
重新選擇密保問題 }
Else if(修改密保時驗證密保問題為空){ 提示:修改密保時驗證密保問題為空 } Else { 服務器發送該賬號的新密保問題和新密保問題對應的答案 } } } 聊天模塊
所有的聊天窗口的即時聊天信息 只要點擊發送,聊天信息會發送到服務器中信息中轉站中;在信息中轉站中判斷該發送的對象,再由服務器發送給對。
服務器模塊:
1、申請模塊
將用戶發送過來的申請信息寫入臨時變量對象中并存入數據庫中 在數據庫中建立如下信息
在main數據庫的各表中插入申請的號碼
在users 數據庫中建立該帳號的檔案,包括好友列表、添加好友驗證表、歷史記錄表等等
2、登錄模塊
接收數據并存入loginpot中
山東科技大學 王昌帥 wangchangshuai0010.iteye.com
判斷接收的密碼和服務器中的密碼是否相同,相同則返回登錄成功,并發送一系列信息(見下),不相同則返回登錄失敗,3、添加好友模塊
1、發送添加好友請求:
用戶發送添加好友請求包,服務器解析出要添加的好友,然后從數據庫中查找出該用戶的添加好友權限jugde 然后進行一下判斷: switch(judge){ case 1://假如統一任何人加入
在雙方數據庫中分別添加對方,并且向被添加的的用戶發送的界面刷新命令
break;
case 2: 對方需要驗證信息,通知客戶端
break;
case 0: 對方不允許任何人加入,通知客戶端
break;
}
2、發送驗證信息:
用戶發送驗證信息包,服務器解析出數據,判斷要發送驗證信息的用戶是否在線
If(在線){
在線的話,就把驗證信息發送到該用戶客戶端上并顯示 } Else {
不在線的話,就把驗證信息存入要發送的用戶的數據庫中,等到該用戶下次登錄時候并會提示該用戶有添加好友驗證信息 }
3、發送同意以否信息
山東科技大學 王昌帥 wangchangshuai0010.iteye.com
用戶發送同意與否信息包,服務器解析出數據,判斷要發送同意與否信息的用戶是否在線,判斷同意與否信息是否
If(同意){
寫入數據庫相應 的信息。} Else {
不對數據庫進行操作。}
If(在線){
在線的話,就把同意與否信息發送到該用戶客戶端,同時把此人的基本信息發送到客戶端 } Else {
不在線的話,就把同意與否信息存入要發送的用戶的數據庫中,等到該用戶下次登錄時候并會提示該用戶有添加好友成功與否信息 }
4、刪除好友模塊
刪除好友模塊設計思路比較簡單,如下
用戶發送刪除好友信息包,服務器解析出基本數據,刪除發送請求用戶的數據庫中要刪除的好友的信息,同時在對方的數據庫中也相應的刪除此人信息,并且將刪除成功與否信息發送回去,同時給要刪除的用戶發送刷新界面命令,當然得先判斷該用戶是否在線
If(在線){
在線的話,給要刪除的用戶發送刷新界面命令,刪除點發送請求的用戶的信息 } Else {
不在線的話,不用再進行任何操作 }
山東科技大學 王昌帥 wangchangshuai0010.iteye.com
5修改好友昵稱模塊
同樣,修改好友昵稱模塊,也很簡單明了,不需要進行復雜的邏輯判斷,詳細過程如下:
用戶發送修改好友昵稱信息包,服務器解析成基本數據,在數據庫中找到該好友的好友列表,修改該用戶要修改的好友的昵稱,然后子線程就可以終止了
6、查找用戶模塊
用戶發送修改好友昵稱信息包,服務器解析成基本數據,首先判斷該用戶用的是什么搜索模式,If(搜索模式是精確查找模式){
根據內容構造出SQL語句,在數據庫中查找出相應的用戶,構造出列表發回客戶端 }
Else if(搜索模式是按條件查找模式){
根據內容構造出SQL語句,在數據庫中查找出相應的用戶,構造出列表發回客戶端 }
7.1、設置密保模塊
用戶發送修改好友昵稱信息包,服務器解析成基本數據,在數據庫中找到該用戶的的信息,將密保問題和答案寫入該用戶的數據庫中,假如已有密保問題則轉到重設密保模塊
7.2、判斷是否設置密保模塊
用戶發送請求后,服務器解析出數據,在數據庫中找到該好友,查看該好友是否設置密保,If(設置了密保){
返回密保問題
山東科技大學 王昌帥 wangchangshuai0010.iteye.com
}
Else if(沒有設置密保){
發送回去沒有設置密保的標識 }
7.3、判斷密保答案是否正確模塊
用戶發送給服務器密保答案信息,服務器解析出相應的數據,從數據庫中查找該用戶的信息,得到密保問題和答案,進行判斷三個問題是否全部回答對
If(三個密保問題全回答對)
{
向該用戶客戶端發送驗證成功的消息 }
Else(三個問題不全對或全不對){
向該用戶客戶端發送驗證失敗信息 }
7.4、修改密保模塊
這里說明一下,修改密保的模塊是在驗證密保答案正確的前提下才能進入的,所以此模塊僅僅是覆蓋掉該用戶的,特此聲明,呵呵,聲明有點晚了。
沒有復雜邏輯判斷,思路如下:
用戶發送給服務器新密保信息,服務器解析出相應的數據,從數據庫中查找該用戶,在數據庫中重寫此人的密保問題和答案,然后子線程接收。
7.5、修改密碼模塊
聲明如7.4所示,不再重復 思路如下:
用戶發送給服務器新密碼信息,服務器解析出相應的數據,從數據庫中查找該用戶,在數據庫中重寫此人的密碼,同時將新設置的密碼加入內存中用戶密碼hashmap中,然后子線程接收。
7.6、找回密碼
山東科技大學 王昌帥 wangchangshuai0010.iteye.com
找回密碼其實和重設密保有什么相識的地方,都是先驗證信息密保信息是否正確,然后根據正確與否做出相應的處理
用戶發送請求后,服務器解析出數據,在數據庫中找到該好友,查看該好友是否設置密保,If(設置了密保){
返回密保問題
。。
判斷接受的密保答案是否正確
If(三個問題都回答正確){
返回驗證成功信息,通知客戶端轉入重設密碼模塊
} Else {
返回驗證失敗信息
} }
Else if(沒有設置密保){
發送回去沒有設置密保的標識,通知該用戶由于沒有設置密碼,通過此方法不能找回密碼。
}
8、移動好友模塊
移動好友模塊設計思路比較簡單,如下
用戶發送移動好友信息包,服務器解析出基本數據,在數據庫中查到該用戶的用戶列表信息,更新列表信息,在數據庫中做相應的修改
9、組操作模塊
由于基本的幾個組操作有很多相似之處,所以將幾個組操作劃為一個模塊,設計思路如下:
山東科技大學 王昌帥 wangchangshuai0010.iteye.com
用戶發送組操作 信息包,服務器解析出基本數據和命令,判斷要進行的組操作是什么操作,然后進行相應的操作,具體設計思路如下:
If(組操作命令為增加組){ 在users數據庫中找到此用戶的groupsList表,在此表中添加相應的組 } Else if(組操作為刪除組){
1、在users數據庫中找到此用戶的friendsList表,把相應組的好友的組屬性改為 我的好友,即將要刪除組中的好友放到我的好友 中,而不是直接將他們刪除,2、在users數據庫中找到此用戶的groupsList表,在此表中刪 除相應的組
} Else if(組操作為修改組的名稱){
1、在users數據庫中找到此用戶的friendsList表,把相應組的 好友的組屬性改為 要修改的組名
2、在users數據庫中找到此用戶的groupsList表,在此表中刪 找到相應的組,修改此組的名稱為要修改的名稱
}
10、發送系統消息模塊
發送系統消息模塊是由服務器直接調用的,來完成一些必須的用戶響應,此模塊發送消息的不同是由器構造函數決定的,其構造函數共有7種,如下:
//
public sendSystemMessageThread(String qq, int status)throws SQLException {
1、發送改變狀態
}
public sendSystemMessageThread(String text)throws SQLException { 43 山東科技大學 王昌帥 wangchangshuai0010.iteye.com
2、發送系統消息(全部人)
}
public sendSystemMessageThread(String qq, int sign, String ip_od, String t)throws SQLException {
3、發送上次登錄信息(登陸者)
}
public sendSystemMessageThread(String qq, String text)throws SQLException {
4、發送系統消息(對登錄者)
}
public sendSystemMessageThread(String qq, systemMessage sys)throws SQLException {
5、發送添加好友請求信息
}
public sendSystemMessageThread(int sign, String qq)throws SQLException {
6、當在其他地方登錄時給另一個QQ發送下線通知
}
public sendSystemMessageThread(String qq, systemMessage sys, int agree){
7、給該用戶發送好友狀態改變
}
由服務器根據不同的需要構造不同 的發送系統消息線程,實現相應的響應
11、更新個人信息模塊
用戶發送給服務器新個人信息信息,服務器解析出相應的數據,從數據庫中查找該用戶,在數據庫中重寫已經更改了的此人的信息
山東科技大學 王昌帥 wangchangshuai0010.iteye.com
12、請求ipPort 模塊
此模塊是服務器中唯一和聊天相關的監聽線程,此種設計方法極大的降低了服務器的壓力,獲取ip 和聊天port 是聊天中很重要的一個環節,設計思路如下:
用戶發送給服務器請求另一個人的port的信息包,服務器解析出相應的數據,從內存中查找另一個用戶的ip 和聊天 port,判斷是否得到此人信息
If(查詢到此人的在線信息){
給客戶端返回找到的在線信息 } Else {
給客戶端返回沒有找到此人信息,也就是此人不在線,客戶端
然后做出相應地相應
}
13、心跳模塊
心跳相互協作的工作組及即時聊天領域發揮著詳單重要的角色,通過發送心跳報,來判斷各個部分工作是否正常,以防某個部分運作異常發現不了,造成嚴重錯誤。
心跳包就是在客戶端和服務器間定時通知對方自己狀態的一個自己定義的命令字,按照一定的時間間隔發送,類似于心跳,所以叫做心跳包。
用來判斷對方(設備,進程或其它網元)是否正常運行,采用定時發送簡單的通訊包,如果在指定時間段內未收到對方響應,則判斷對方已經離線。用于檢測TCP的異常斷開?;驹蚴欠掌鞫瞬荒苡行У呐袛嗫蛻舳耸欠裨诰€,也就是說,服務器無法區分客戶端是長時間在空閑,還是已經掉線的情況。所謂的心跳包就是客戶端定時發送簡單的信息給服務器端告訴它我還在而已。代碼就是每隔幾分鐘發送一個固定信息給服務端,服務端收到后回復一個固定信息如果服務端幾分鐘內沒有收到客戶端信息則視客戶端斷開。
比如有些通信軟件長時間不使用,要想知道它的狀態是在線還是離線就需要心跳包,定時發包收包。發包方:可以是客戶也可以是服務端,看哪邊實現方便合理,一般是客戶端。服務器也可以定時發心跳下去。一般來說,出于效率的考慮,是由客戶端主動向服務器端發包,而不是服務器向客戶端發??蛻舳嗣扛粢欢螘r間發一個包,使用TCP的,用send發,使用UDP的,用sendto發,服務器收到后,就知道當前客戶端還處于“活著”的狀態,否則,如果隔一定時間未收到這樣的包,則服務器認為客戶端已經斷開,進行相應的客戶端斷開邏輯處理。
山東科技大學 王昌帥 wangchangshuai0010.iteye.com
13.1、用戶心跳接收處理模塊
客戶端發送心跳包,服務器心跳接收模塊解析出此用戶的狀態,判斷此人的狀態與上一次心跳的狀態是否相同
If(狀態相同){ 將系統此時的時間寫入內存中此用戶的hashmap節點 } Else if(狀態不同){
將系統此時的時間寫入內存中此用戶的hashmap節點
If(是下線信息){
刪除此人的在線信息
} 給其好友發送狀態改變信息
}
13.2、服務器定時檢測超時模塊
此模塊用于定時檢測用戶心跳超時與否,設計詳細如下:
While(true){ 從內存中的hashmap 中的第一個用戶到最后一個用戶,進行如下操作:
If(此用戶心跳超時){
超時意味著此用戶極有可能已經掉線了,但是不確定,所以此時要調用推拉檢測用戶在線模塊,來確認此人到底在不在線
} Else {
不執行操作
} 休眠5秒后,繼續 }
山東科技大學 王昌帥 wangchangshuai0010.iteye.com
13.3、服務器推拉檢測在線模塊
此模塊是服務器中很特殊的模塊,是主動聯系客戶端 的模塊,在次模塊中,服務器會主動詢問客戶端是否在線,形象的描述如下:
服務器問:******你在線嗎? 客戶端答:我在線?;蛘呖蛻舳藳]反應
這里就要判斷在規定的時間內客戶端是否返回響應 If(在規定的時間能收到相應){ 證明此用戶是活著的,將系統此時的時間寫入內存中此用戶的 hashmap節點
} Else { 此用戶已經意外掉線,所以應刪除此人的所有在線信息 }
14、添加可利用飛Q號
添加可利用的帳號就是,假如可申請的號碼低于規定的個數時,服務器添加帳號現在立即自動添加適當的帳號,保持適當數量的可利用的帳號,描述如下
While(ture){
If(數據庫中的可申請的帳號數量小于某個值){
向數據庫中添加適當數量的帳號,同時向內存中的可申請帳號
hashmap表中添加這些帳號
} Else {
不執行操作
} 線程休眠1小時
}
山東科技大學 王昌帥 wangchangshuai0010.iteye.com
第五篇:軟件工程課程設計報告 之 用戶操作手冊
用戶操作手冊
1.引言
1.1編寫目的本操作手冊供本系統操作人員參考之用,分別為客戶機端使用人員說明本系統操作方法。
1.2項目背景
本項目(飛Q2012系統)由計算機系軟件開發小組負責開發。
1.3定義
WINDOWS NT:本系統所采用的操作系統。
SQL SERVER:系統服務器所使用的數據庫管理系統(DBMS)。
1.4參考資料
[1]黃凱,陶宏才.即時通訊系統服務器端簡要設計[J].成都信息工程學院學報,2006,(4),20-23.[2]馬丹.即時通信系統終端的設計與實現[C].電子科技大學,2005.[3] 潭獻海等編著.網絡編程技術及應用[M].北京:清華大學出版社,2006.12.[4] 鄭人杰,殷人昆,陶永雷.實用軟件工程(第二版)[M].北京:清華大學出版社,1997.4.[5] 徐國平等編著,JSP網絡開發務實,電子工業出版社,2001年9月
2.1目標
本系統分為服務器端和客戶機端兩個部分,用戶為客戶機端。客戶機和
服務器通過網絡進行通信。用戶網絡把信息(qq號,密碼等)傳輸到
服務器,服務器程序通過對數據庫的查詢來為用戶安排登陸查詢等信息
服務,并把結果傳輸到客戶機,客戶機就可以使用了。
2.2功能
系統實現了在各個客戶機端聊天,文件傳輸的功能,并在分布式系統的基礎上采用了一些實時處理,以達到快速響應??蛻魴C端除了簡單的聊
天之外,本系統還可進行查詢和檢索的功能。服務器端還實現了用戶信
息的自動管理和數據庫查詢,維護功能。
2.3性能
輸入數據:
用戶輸入:
飛Q號碼:String
密碼:Sring
輸出數據:
好友列表:
飛Q號碼:String
時間特性:
要求數據傳輸時間在10秒鐘以內,服務器響應時間在10秒以內,總響應時間為0.5分鐘。
3.運行環境
3.1硬件
服務器端:Pentium II 450以上,1024M RAM,36G HD
客戶機端:支持java se 虛擬機的pc機
系統軟件:服務器端:Windows NT Server
客戶機端:Windows NT Workstation
數據庫管理系統:SQL Server
4.使用說明
4.1安裝和初始化
由于使用了安裝自動生成工具,安裝變的非常簡單,只需運行飛Qserver_SQLServer_fat.jar即可根據提示安裝服務器端程序或是客戶機端程序。
在安裝的過程中,系統將自動初始化,為第一次運行作準備。
4.2輸入
4.2.1 數據背景
數據的來源參見需求分析說明書和概要設計說明書。
4.2.2 數據格式
用戶輸入:
飛Q賬號String
密碼String
4.2.3 輸入舉例
旅客輸入:
飛Q賬號1000005
密碼1234567
4.3輸出
4.3.1 數據背景
數據的來源參見需求分析說明書和概要設計說明書。
4.4出錯和恢復
如果輸入數據出錯,可立即進行取消操作,重新輸入。
如果突然斷電或系統沒有響應,則關機,等系統重新啟動時,會根據日志文件自動ROLLBACK到正確的階段。需要等待一段時間。如果系統繁忙,也要等待一段時間。
5. 程序文件和數據文件一覽表
客戶機端:飛Q2012.jar
readme.txt
客戶機端主文件 說明文件