zoukankan      html  css  js  c++  java
  • 仿QQ聊天软件2.0版

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012027907/article/details/36952893

    仿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


  • 相关阅读:
    软件工程师的悲哀
    关于ControlTemplate 2
    DataTemplate总结2(学习)
    ObjectiveC——类
    6 Popular Ideas That Fail
    Develop Cross Platform Mobile App
    DP 与 DO(学习)
    Titanium颜色总结
    Illustrator Tips
    Titanium API
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/9993879.html
Copyright © 2011-2022 走看看