1. 程式人生 > >仿QQ聊天軟體2.0版

仿QQ聊天軟體2.0版

仿QQ聊天軟體2.0版

轉載請標明出處:牟尼的專欄 http://blog.csdn.net/u012027907

    上次課設做了Java版的仿QQ聊天程式。這次軟體實訓,我們繼續完好了仿QQ聊天程式,將上次未完畢及不完好的地方進行完好和改進,還新加了部分功能:表情輸入、氣泡模式、檔案傳輸、截圖、語音聊天。

逐步向QQ的基本功能靠齊。通過這次軟體實訓。又有了非常多收穫。

一、設計內容及要求

1.1綜述

A.系統概述

我們要做的就是相似QQ這種面向企業內部的聊天軟體。基本功能和QQ相似。首先,系統分為兩大部分,第一部分是client,是使用者使用的部分,第二部分就是server,全部的client都是通過server來進行使用者身份驗證及聊天轉接的。client提供基本的介面及服務請求,如:登入介面、註冊介面、找回password介面、主視窗介面、聊天介面、資訊檢視介面等。client主要提供服務請求介面,核心的業務邏輯處理主要由server提供。並向client傳送請求的結果。同一時候,server要能提供服務的開啟、關閉功能及檢視線上人數及client登入日誌。

人員組成及分工

張亞超(組長):負責總體的架構設計、後臺資料庫及通訊部分。

房 鑫(組員):聊天介面、註冊介面、登入介面、找回password、表情輸入及字型設定。

高 明(組員):主視窗介面、資訊檢視及檔案傳輸。

苟周平(組員):截圖傳輸、語音聊天

B.要求

1).小組成員必須按時完畢各自的任務。

2).設計上與技術上有問題的先自行解決(看書、上網查),如不能解決的集體討論解決。

有其它的問題及時提出來!

3).必須寫文件(寫把各自模組的總體設計用UML圖或Viso畫的圖(儘量不要僅僅是簡單的語言敘述)表達出來)。學會用面向物件的思想來來設計,採用模組化的思想分解模組。(設計原則與設計模式能用的用)

4).每一個類必須有類說明。每一個函式也必須有函式說明,函式的詳細設計也必須有必要的凝視。

5).假設不能遵守規定或要求的能夠提前退出。不強留。

(注:即使不會寫程式碼,也沒關係,僅僅要一能用UML圖或其它的圖等表達出自己的設計思想及詳細的實現設計也行)

C.開發環境

執行環境:Myeclipse整合開發環境,jdk 1.6版本號。

使用語言:Java語言。

使用資料庫:Oracle資料庫。

 

 

1.2需求分析

需求背景

即時通訊軟體為我們提供了諸多的方便,使我們逐步享受資訊時代的便捷。

大家最熟悉的即時通訊軟體就是QQ了。由於它差點兒已經融入了我們每一個人的日常生活。沒有了QQ。沒有了手機,我們也許真的“活不了了”。由此可見,生活在資訊時代的人們對即時通訊、聊天軟體有巨大的需求,這種軟體也將為我們節省大量的時間和金錢,也許還能成為我們發家致富的工具,比方:產品的推介、售後服務及技術交流等。

    然而,既然已經有了QQ如此強大的即時通訊軟體,我們再去做這種軟體還有什麼競爭力嗎?QQ已經深入人心。要想再去做可能沒有不論什麼競爭力。

此時,我們能夠換一個角度,調整使用者物件。現在,企業內部資訊在這個資訊時代就是金錢,尤其是一些大企業的內部資訊。假設這些資訊洩露,可能會造成巨大的經濟損失,甚至將導致企業破產。

可是,為了便捷企業員工之間的交流。做這種一個企業內部即時通訊、聊天軟體還是非常有市場的。我們的目標就是做的像QQ,但面向企業內部使用。

      企業內部為了方便員工之間便捷的交流,須要開發一款適合企業內部員工進行即時通訊的軟體。這種軟體既滿足了企業內部員工之間便捷的交流,同一時候,也防止企業內部資訊的外流,開發這樣一塊麵向企業內部的即時通訊軟體,對於企業來說獲益良多。

       在開發這款軟體時。為了使習慣了使用QQ的使用者,更加方便的使用本軟體,我們將非常大程度上,模仿QQ的使用者介面設計。以適應使用者的使用習慣,方便使用者使用。

 

功能需求


1)client:提供登入、主視窗及聊天等介面及對應的業務邏輯,向server傳送對應的服務請求,並接受對應的處理結果。

client是輕量級的軟體,僅僅負責連結遠端server,併發出對應的服務請求。並不進行核心業務邏輯的處理。

詳細的處理交給server,而client僅僅接收server處理的結果並顯示給使用者。

2)server:監控登入資訊及線上使用者資訊。接收client的服務請求,並做對應的處理,然後將處理結果傳送給client。server負責處理核心的業務邏輯,並負責連線資料庫。儲存和讀取資料。因此,server端設計的好壞也直接影響即時通訊軟體的質量。

3)各項功能需求:

1.登陸:使用者通過QQ號和password登入。

2.註冊賬號:使用者要先註冊賬戶才幹登入聊天。

3.好友聊天:這是最基本也是最基本的功能,能夠傳送文字、表情等。

4.找回password:為了避免使用者忘記password而無法登入。

5.檢視個人和好友資訊:能夠檢視使用者的個人資訊。

6.查詢加入刪除好友:查詢好友能夠加入,刪除好友用於剔除使用者。

7.截圖並傳輸:擷取使用者螢幕截圖並傳輸。

8.傳送檔案:能夠傳送使用者檔案。

9.語音聊天:能夠實時進行語音聊天。

用例描寫敘述

1)client:

                                                                                       圖 1-1 client用例圖

2)server:

                                                                           圖 1-2 server端用例圖

 

二、設計原理及方案

2.1總體設計

系統架構設計

1)採用MVC架構模式

client:

A.   包view(檢視、介面層):僅僅負責介面的顯示。

B.   包business(業務邏輯層):核心業務的處理。

C.   包data  (資料訪問層):讀寫資料、接收發送資料。

server:

A. 包view(檢視、介面層):僅僅負責介面的顯示。

B. 包business(業務邏輯層):核心業務的處理。

C. 包data  (資料訪問層):讀寫資料、接收發送資料。

 

 

2)           檔案組織

A.     client:


圖2-1 client檔案組織結構

B.     server:


圖2-2 server檔案組織結構

3)             採用基於網路的三層C/S模式


圖2-3 基於C/S的模式圖

功能模組設計

1)client:


圖2-4 client功能模組圖

 

2)server:



圖3-5 server功能模組圖

資料庫設計

1)概念結構設計


   圖 2-6 資料庫實體E-R圖

2)邏輯結構設計

使用者表(QQ號、password、簽名、頭像編號、暱稱、性別、生日、星座、血型、學歷、電話、郵箱、所在地)

分組表(組號、組名、建立時間、QQ號)

好友表(好友QQ號、QQ號、所屬分組號、加入時間、是否上線)

聊天記錄表(記錄編號、傳送者QQ號、接受者QQ號、傳送時間、資訊編號)

聊天內容資訊編號、內容、字型型別、字型大小、字型顏色)

登入資訊表(登入編號、登入IP、port號、登入時間、是否線上、QQ號)

QQ群群編號、群名稱、建立時間)

使用者與群關係關係編號、QQ號、群編號)

找回password資訊表(編號、問題、答案、QQ號)

表情資訊表(資訊編號、表情代號、表情名稱)


3)表結構設計

表 2-1 使用者與群關係(User_Group)

欄位名稱

說明

欄位型別

欄位長度

是否為空

約束

ugno

關係編號

Number

2

主鍵

qq

QQ號

number

5

外來鍵

gno

群編號

number

5

外來鍵

 

表 2-2 使用者資訊表(UserInfo)

欄位名稱

說明

欄位型別

欄位長度

是否為空

約束

qq

QQ號

number

5

主鍵

pwd

password

Nvarchar2

10

 

sign

簽名

Nvarchar2

30

 

photoID

頭像編號

Number

2

 

nickname

暱稱

Nvarchar2

10

 

sex

性別

Char

2

男或女

birthday

生日

Date

 

 

constellation

星座

Nvarchar2

60

 

bloodType

血型

Char

10

A、B、O、AB

diploma

學歷

Nvarchar2

10

 

telephone

電話

Nvarchar2

15

 

email

電子郵件

Nvarchar2

20

 

address

所在地

Nvarchar2

20

 

 表 2-3分組資訊表(Subgroup)

欄位名稱

說明

欄位型別

欄位長度

是否為空

約束

sno

組號

Number

2

主鍵

sname

組名

Nvarchar2

20

 

sdate

建立日期

Date

 

預設當前日期

qq

QQ號

number

5

外來鍵

 表 2-4好友資訊表(Friends)

欄位名稱

說明

欄位型別

欄位長度

是否為空

約束

Fno

編號

Number

2

主鍵

fqq

好友QQ

number

5

 

外來鍵

fsno

所屬分組號

Number

2

外來鍵

fdate

加入日期

Date

 

 

 

Fstatus

是否線上

number

2

 

 

qq

本人QQ

number

5

 

外來鍵

 表 2-5聊天記錄表(ChatInfo)

欄位名稱

說明

欄位型別

欄位長度

是否為空

約束

cno

記錄編號

number

2

 

主鍵

csendqq

傳送者QQ

number

5

 

外來鍵

creceiveqq

接受者QQ

number

5

 

外來鍵

cdate

傳送日期

TimeStamp

 

 

 

tno

資訊編號

Number

3

 

外來鍵

 

 表 2-6資訊表(Text)

欄位名稱

說明

欄位型別

欄位長度

是否為空

約束

tno

資訊編號

Number

3

主鍵

tcontext

內容

Nvarchar2

200

 

 

tfonttype

字型型別

Nvarchar2

10

 

 

tfontsize

字型大小

Number

5

 

 

tfontcolor

字型顏色

Nvarchar2

5

 

 

 表 2-7登入資訊表(Login)

欄位名稱

說明

欄位型別

欄位長度

是否為空

約束

lno

登入編號

Number

5

主鍵

lip

登入IP

Nvarchar2

20

 

 

lport

port號

Number

5

 

 

ldate

登入日期

Date

 

 

 

lstatus

是否線上

Number

1

 

1 or 0

lqq

QQ號

number

5

外來鍵

 表 2-8 QQ群資訊(GroupTable)

欄位名稱

說明

欄位型別

欄位長度

是否為空

約束

gno

群編號

Number

5

主鍵

gname

群名稱

Nvarchar2

20

 

gdate

建立日期

date

 

 

 

 表 3-9找回password資訊表(GetPwdInfo)

欄位名稱

說明

欄位型別

欄位長度

是否為空

約束

Gpno

編號

Number

4

主鍵

Question

問題編號

number

4

 

Answer

答案

Nvarchar2

50

 

gQq

QQ號

number

5

外來鍵


表 3-10表情資訊表(FaceInfo)

欄位名稱

說明

欄位型別

欄位長度

是否為空

約束

fcno

資訊編號

Number

4

主鍵

Fnumber

表情代號

number

4

 

name

表情名

Nvarchar2

50

 



通訊協議設計

計算機之間傳送資料由兩種。即TCP通訊和UDP通訊。TCP是可靠的面向連線的通訊協議,二UDP是不可靠的面向無連線的通訊協議。

1)基於TCP的通訊

在進行登入使用者驗證、加入好友、刪除好友等操作時。採用基於TCP的通訊協議。

2)基於UDP的通訊

基於UDP通訊的基本模式:

(1)將資料打包。稱為資料包(好比將信件裝入信封一樣)。然後將資料包發往目的地。

      (2)接受別人發來的資料包(好比接收信封一樣)。然後檢視資料包中的內容。

       在進行使用者聊天時。採用基於UDP的通訊協議。

快取資料設計

1) 使用者資訊Bean

 為了儲存使用者及好友的個人資訊,此處設計使用者資訊快取資料。當用戶登入時,將使用者個人及好友的基本資訊儲存,以備使用者查詢,就不用再次連線資料庫獲取了。

 UserInfoBean類:儲存使用者QQ號、暱稱、簽名、血型、地址等資訊。

2) 訊息資訊Bean

 使用者在進行聊天時。須要傳遞必要的資訊,此處的訊息Bean資料結構就是儲存收發使用者的QQ號、IP地址、訊息內容、字型大小、字型顏色、字型型別等資訊。

  Message類:儲存收發使用者的QQ號、IP地址等資訊。

轉載請標明出處:牟尼的專欄 http://blog.csdn.net/u012027907

2.2詳細設計

系統流程圖


圖 2-7 系統流程圖

設計模式使用

1)中介者模式:

全部的使用者都通過server進行通訊,server當中介的作用。

2)觀察者模式:

  當實使用者登入時,會通知其它線上好友,其它好友及時改動此使用者的線上狀態。

通訊協議的實現

2.1.3.1基於TCP的通訊

在進行登入使用者驗證、加入好友、刪除好友等操作時,採用基於TCP的通訊協議。

A.clientTCP通訊設計

  設計ClientToServer類,該類實現了Runnable介面,是一個執行緒。

主要方法:

[1] boolean sendLoginInfoToServer(User u) :登入請求。

[2] void getProgerties():獲取配置檔案裡的serverIP地址資訊。

[3] void logout(): 下線。通知server該使用者下線。

[4]inttoRegister(UserInfoBean user):新使用者註冊,返回QQ號。

[5] void noticeUpdate():通知重新整理好友資訊。

B. serverTCP通訊設計

1)設計ServerThread執行緒類:處理使用者連線server請求,併為其啟動單獨的服務(Server)執行緒。

主要方法:

[1] void run(): 重寫執行緒類Thread的方法。不斷的等待client的連線請求。

[2] void pauseThread():暫停服務。

[3] void reStartThread():恢復服務。

2)設計Server執行緒類:處理每一個上線使用者個各種服務請求。

主要方法:

[1] void run():不斷的等待使用者的請求資訊。並推斷請求型別。

[2] void login():處理使用者登入。

[3] void registerNewUser():處理註冊新使用者

[4] void queryUser():處理查詢使用者。

[5] void addFriend():加入好友。

[6] void deleteFriend():刪除好友。

[7] void updateOwnInfo():更新自己的資訊。

[8] void logout():下線。

[9] void queryFriend():查詢好友資訊。

2.1.3.2基於UDP的通訊

在進行使用者聊天時。採用基於UDP的通訊協議。

A.clientUDP通訊設計

  設計ClientToServerThread執行緒類:負責UDP通訊。

主要方法:

[1]void run():迴圈等待監聽發來的資料。

[2]void getPropertieInfo():獲取通訊的server的IP地址及本機通訊port。

[3]void sendData(byte buffer[]):傳送資料。

[4]void Object ByteToObject(byte[] bytes):將Byte資料轉為Object型別。

[5]void ObjectToByte(Object obj):將Object型資料轉為Byte型。

[6]void closeSocket():關閉收發資料報套接字。

B. serverUDP通訊設計

設計ClientToServerThread執行緒類:負責UDP通訊。主要是轉發使用者傳送的資訊,並儲存使用者的聊天記錄。

主要方法:

[1]void run():迴圈等待監聽發來的資料。

[2]void getPropertieInfo():獲取通訊的server的IP地址及本機通訊port。

[3]void sendData(byte buffer[]):傳送資料。

[4] void Object ByteToObject(byte[] bytes):將Byte資料轉為Object型別。

[5]void ObjectToByte(Object obj):將Object型資料轉為Byte型。

[6]void closeSocket():關閉收發資料報套接字。

資料訪問層的實現

2.1.4.1 開啟資料庫連線類(ConnectionFactory)

[1]void getPropertiesInfo():從配置檔案裡獲取資料庫連線資訊。

[2]Connection getConnection():開啟資料庫連線。

2.1.4.2 關閉資料庫連線類(DbClose)

[1]void getPropertiesInfo():從配置檔案裡獲取資料庫連線資訊。

[2]void close(Connection conn):關閉資料庫連線。

[3]void close(PreparedStatement pre):關閉資料庫語句

[4]void close(ResultSet rs):關閉結果集

[5]voidclose(Connection conn, PreparedStatement pre, ResultSet rs)

2.1.4.3 資料操作類(Dml)

[1]void insert(UserInfoBean user):新增新使用者,插入資訊。

[2]void update(UserInfoBean user):更新使用者資訊。

[3]void delete(int qq):刪除資訊。

介面層的實現

2.1.5.1登入介面

JLoginFrm登陸視窗主要用於使用者登陸。註冊和找回password。

內部類:

BackgroundPanel 繼承於JPanel主要用於設定視窗背景圖片

主要函式:

1.actionPerformed(ActionEvent e)主要對視窗的按鍵監聽

2.JLoginFrm()建構函式,控制元件的初始化。

 

2.1.5.2註冊介面

JRegisterFrm繼承與JFrame主要用於使用者基本資訊的註冊。

主要函式:

1. Void setDay()依據不同的年份和月份設定天數

2.String getBir()以1-1月-2014形式得到使用者的生日

3.getUserInfo()得到使用者的全部資訊

2.1.5.3 聊天介面

ChatPanel主要用於使用者間的聊天通訊

主要函式:

1、setMessage()設定當前顯示全部會話的面板。不可編輯

2、setSendMessage()設定當前傳送訊息的面板,可編輯

3、sendMessage()傳送訊息,講傳送訊息面板的內容傳送到會話面板            和對方。

4、sendFile()傳輸檔案

5、sendImage()傳送圖片

6、startShake()傳送震動訊息

2.1.5.4 主介面

主介面的主要內容有QQ頭像設定,包括暱稱、QQ號、簽名的顯示。使用者登入狀態設定,還有好友列表顯示,像這些建立好友列表所須要的資訊是從服務端獲得的。另一些輔助介面。比方檢視好友資料或者檢視自己的資料介面,查詢好友介面,加入好友介面等。

原始碼中的一些主要類及類中的主要方法及其作用:

1.ColorConvertOp類:這個類主要負責顏色轉換的

[1] public ImageIcon getGrayPicture(String path)//該方法獲取圖片路徑,將轉換後的灰色ImageIcon返回。

[2] public class CombListRenderer extends JLabelimplements       2.ListCellRenderer//該類個性化設定combobox的單元格屬性

[1] publicComponent getListCellRendererComponent(JList list,Object obj,int row,boolean sel,booleanhasFocus)   

//該方法是重寫了ListCellRenderer中的getListCellRendererComponent,返回了一個自己定義的Component

3、public class findFriendFrm extends JFrame

//該類負責查詢好友介面

[1] public String getName()//獲得找到好友的暱稱或者QQ號

[2] public class InformationFrm extends JFrame

//該類負責顯示好友資訊的介面

2.1.5.5 使用者資訊介面

  好友資訊介面主要是將從服務端讀取的好友的個人資訊顯示出來。

[1] publicInformationFrm(UserInfoBean userInfo)

//在該構造方法中必須傳入一個UserInfoBean 的物件,此物件中包括了好友的全部資訊

[2] public class selectGroupFrm extends JFrame

//該類負責顯示加入好友的一個介面

4.4.6 截圖功能

     設計Cut類這個類實現了截圖功能:

     [1]Dimensiond =Toolkit.getDefaultToolkit().getScreenSize();

image=robot.createScreenCapture(newRectangle(0,0, d.width,d.height));// 獲得整個螢幕

      [2] RescaleOp ro = new RescaleOp(0.8f,0,null);//構造一個具有所希望的縮放因子和偏移量

tempImage =ro.filter(image, null);// 對源 BufferedImage物件image進行重縮放g.drawImage(tempImage, 0, 0,this);

  4.4.7 語音功能

      設計了Gain_Voice 和Play_Voice類實現語音的接收和播放功能:

 [1]AudioFormat format =newAudioFormat(8000,16,2,true,true);//捕獲音訊

  DataLine.Info info = newDataLine.Info(TargetDataLine.class,format);

  [2] line =(TargetDataLine) AudioSystem.getLine(info);

         line.open(format, line.getBufferSize());//開啟具有指定格式和請求緩衝區大小的行

 

 三、實現效果

登入

   

 圖5-1登入介面                        

         

 圖5-2登入介面

找回password


找回password


註冊介面

                                            圖5-4 註冊介面

聊天介面


圖5-5 聊天介面 

5.4主介面

  

圖5-6主介面                          

    圖5-7個人資訊介面


訊息記錄介面


圖 5-8 訊息記錄介面

5.6語音聊天

圖 5-9 語音聊天介面

檔案傳輸

圖 5-10 檔案傳輸介面

server登入


圖 5-9 server登入介面


圖 5 – 10 server管理介面



四、測試與除錯

1.登入

參與者:  程式使用者  

目標:    通過client使用者登陸介面登陸server,獲

取個人賬戶相關資訊。

預期結果:  

1.   使用者啟動程式

2.   使用者輸入自己的username

3.   使用者輸入自己的password

4.   登陸確認

5.   登陸成功:進入主面板,更新好友列表

6.   登陸失敗:輸出提示資訊

異常:

1.   沒有聯網

2.   password錯誤或輸入不對

3.   username不存在

4.   網路通訊錯誤

2註冊賬號  

參與者:  程式使用者  

目標:    使用者通過註冊介面註冊帳號

預期結果:  

1.   開啟註冊介面。點選賬號註冊  

2.   轉到賬號註冊頁面  

3.   輸入註冊的個人資訊  

4.   確認,轉到password找回問題設定頁面,  

5.   設定password找回問題和答案  

6.   確認,賬號註冊成功  

 

異常:  

1.   個人資訊輸入錯誤  

2.   password找回問題設定錯誤  

3.   網路通訊錯誤  

3好友聊天  

參與者:  程式使用者。聊天兩方  

目標:  使用者通過聊天介面與好友進行聊天,顯示輸入的訊息

和好友傳送的訊息  

預期結果:  

1.   使用者雙擊好友列表中要進行聊天的好友圖示(頭像)  

2.   彈出聊天視窗  

3.   在訊息輸入區。輸入要傳送的訊息,並在訊息顯示區顯示  

4.   接收到的好友傳送的資訊在訊息顯示區  

5.   關閉聊天視窗  

異常:  

1.   訊息傳送失敗  

2.   網路通訊錯誤


4找回password  

參與者:  程式使用者  

目標:使用者通過註冊時使用的密保,找回password

預期結果:  

1.   開啟站點。點選找回password  

2.   轉到找回password頁面  

3.   輸入預設問題和答案,確認  

4.   成功。返回賬號password  

5.   失敗。提示找回password失敗

 

異常:  

1.   問題回答錯誤  

2.   網路通訊錯誤  

 

5 檢視個人和好友資訊  

參與者:  程式使用者  

目標:    使用者檢視設定個人資訊  

預期結果:  

1.   使用者點選主面板使用者頭像  

2.   彈出個人資訊視窗  

3.   選擇所要改動的個人資訊項  

4.   確定改動,個人資訊更新。視窗關閉  

5.   取消改動      

異常:  

1.   個人資訊更新失敗  

2.   網路通訊錯誤  

 

6 查詢加入和刪除好友  

參與者:  程式使用者。被加入使用者  

目標:  使用者通過加入好友的介面查詢加入好友。發出加入請

求,被加入使用者進行確認。

預期結果:  

1.   使用者開啟查詢加入好友介面  

2.   使用者輸入要查詢的賬號  

3.   選擇加入的賬號  

4.   確認加入。傳送加入請求  

5.   等待被加入使用者驗證通過  

6.   驗證通過:加入為好友,並更新個人好友列表  

7.   驗證被拒:提示加入失敗 

 

異常:  

1.   不存在的賬號  

2.   網路通訊錯誤  

 

7 向好友傳送檔案  

參與者:  程式使用者  

目標:    使用者向好友傳送本機檔案  

預期結果:  

1.   使用者點擊發送檔案  

2.   彈出檔案選擇視窗  

3.   選擇要傳送的檔案  

4.   確認傳送檔案  

5.   好友確認接收發送的檔案  

6.   提示已接收到檔案  

異常:  

1.   檔案傳送失敗  

2.   網路通訊錯誤  

 

 8 截圖並傳輸  

參與者:  程式使用者  

目標:    使用者擷取本機螢幕圖片,並向好友傳送截圖圖片  

預期結果:  

1.   使用者單擊截圖

2.   彈出截圖矩形框  

3.   選擇要擷取螢幕 

4.   確認截圖

5.   傳送截圖

5.   好友接收發送的截圖     

異常:  

1.   截圖異常

2.   圖片傳送失敗  

3.   網路通訊錯誤

 

9 語音聊天  

參與者:  程式使用者  

目標:    進行實時的語音交流

預期結果:

1.   使用者點選開始語音聊天 

2.   傳送資訊通知好友

3.   好友允許語音聊天

4    開啟兩方的語音監聽和播放執行緒

5.   

異常:  

1.                網路通訊錯誤  

2.                語音監聽錯誤或異常

3.                語音播放錯誤或異常

 

 

五、總結

    通過這次聊天程式課程設計。又有了很多收穫。

    聊天軟體,是我之前一直想完畢的一個小軟體,但沒有機會去做。這次有機會做,我決定把它做好,做的像QQ一樣。

剛開始,對於網路通訊、資料庫連線及操作這部分。我們之前沒練習過,因此,對於總體的設計都非常難把握,我們參考了部分書籍,大概瞭解了其原理。之後就是確定需求。儘管我們對QQ都非常熟悉,也都基本瞭解其大概需求,但在實際設計時,非常多需求方面東西都是看不見的,必須自己查資料、思考、練習才幹發掘。

然後就是總體設計及人員分工。這一步也非常關鍵。怎樣協調每一個人。怎樣發揮每一個人的優勢,這須要非常多工作。

  在總體設計完畢後,我們考慮先開發出簡單的聊天軟體。然後逐步細化。因此,在詳細設計時,我們簡化了一些東西,先開發出一個基本原型,用以驗證技術並進一步明白需求。

然後,對部分技術進行改進和細化,最後,再次基礎上不斷的迭代進行,由於我們的水平有限。我們最初的設計並不一定是好的設計。僅僅有不斷的試驗和改進,才幹開發出好的軟體。當然,前期的總體架構設計非常重要。這將非常大程度上決定軟體的質量和適應需求變更的能力。總之。在試驗與改進中,我們學到了非常多東西,不光是技術,還有合作。

這是第二次小組一起完畢一個小專案。總體感覺相對個人完畢比較輕鬆。並且完畢的專案,比個人的更好,相互之間能夠互相學習,能夠看到別人的程式碼風格,和對同一問題的不同解決方法。每一個人的設計思想,可充分展示每一個人的優勢,並通過相互學習,補充自己的知識不足之處,更快更好的學習知識。

本次課程設計我做的是一部分介面設計,沒啥核心技術。就是對一些元件使用的鞏固,通過使用這些元件。加深了對一些經常使用元件的繼承關係的理解,有些小問題還沒有解決,可是以後會自己慢慢解決的。

總體而言,我們完畢的聊天軟體,較好的實現了預期的目標。

軟體的長處:具有美麗、友好的介面、功能較全,軟體具有較好的架構設計,使用者體驗較好。

軟體的缺點:部分功能測試還不理想,有些功能還未實現。

參考文獻

1.石彥芳。李丹.《Oracle資料庫應用與開發》.機械工業出版社,2013

2.耿祥義。張躍平.《Java面向物件程式設計》.清華大學出版社,2010

3.張海藩.《軟體project導論》(第5版).北京.清華大學出版社,2008

4.劉新.《Java開發技術大全》.北京.清華大學出版社,2009

5.明日科技 《Java經典程式設計300例》清華大學出版社 2012

6.樑建全  《你必須知道的261個Java語言問題》  人民郵電大學 2009

轉載請標明出處:牟尼的專欄http://blog.csdn.net/u012027907