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