目前为止该QQ项目实现如下功能:添加好友到好友列表,可以把好友在不同分类中移动,同时支持离线查找添加好友,离线更换头像,离线发送消息,保存所有好友聊天记录,发送窗口抖动,查看对方信息,更改/添加信息等。

先来看一下项目的部分截图

这个是登陆界面,腾讯QQ的号码通常是9位,这个版本的QQ号码是5位,也就是说注册的时候只能注册5位号码,超过5位就会提示出错

这是注册界面

登陆成功后显示如上界面,可以看到每个分类下的好友列表,我创建了一个群组作为例子。我的好友,同学,亲人,陌生人当前在线人数,机制为一个线程,当有成员上线或下线,线程内方法收到通知并且重新绘制当前面板,实时统计在线人数。消息盒内存放当前未读的消息,可以是在线好友发送的消息,也可以是离线好友发送的消息,当点击时,会弹出对话框与之进行会话。下面的五个功能按钮分别是查找好友,个人资料,聊天记录,修改头像,用户注销。

更换界面

聊天窗口,可以更改聊天字体大小,颜色,发送抖动窗口,查看聊天记录等;

 难点:在项目中,我实际体会到很多难点,下面举一些例子

1首先生成好友列表是一个难点,需要构造自己的JTree,订制自己的渲染器,重写里面的方法,记得当时为了做这一个功能还专门看了一本书:《Swing高级编程》 
          2当你要和好友聊天的时候,必须保证一个好友只有一个聊天窗口,而且这么多窗口之间不能出现混乱,具有一定的处理难度。

3在做的过程中最难的莫过于离线处理的情况。比如现在A要添加B为好友,但是B不在线,A查找到B并且发出添加好友的请求。这时,又有很多情况。第一种情况,A发出请求后一直未下线,等待B上线,B上线后可以同意A的好友请求也可以不同意;第二种情况,A发出请求后下线,B上线,B可以同意A的请求也可以不同意。所以要想做得细致这些问题都要考虑到,因为最难的就是业务逻辑。我体会到把一件事情做好的品质是认真,细致。此时服务器端就会有很多容器,它们负责接收不同的消息对象,而且要做到不能混乱。哪些是离线消息,哪些是在线消息,都要管理好。

4保存所有好友的聊天记录也不是一件容易的事情,其实最核心的是考虑到一个map数据结构,围绕它做文章,key和value分别对应QQ号码(唯一)和聊天记录(多余200条自动刷新)。

5把好友在不同分类中移动有一定难度

不足:

1未完成视频,语音等功能,难度不大,有待完成。

2不能动态增加好友分类,难度较大。

3未完成自定义上传头像图片的功能,只允许使用系统订制的。

4当时未掌握设计模式,代码结构较为混乱。

这一次团队项目大家都想要努力的做好,中间也出了一些问题,每个人都非常的努力,不可避免的我们也发生了一些摩擦,最后顺利完成里项目大家都是很开心,毕竟这是我们自己完成的,有一些不足之处,以后会继续改正。

团队项目--关于QQ项目的运行和总结的更多相关文章

  1. TheSuperego 实验六 团队作业3:项目需求分析与原型设计

    项目 内容 课程班级博客链接 班级博客 这个作业要求链接 作业要求 团队名称 TheSuperego 团队成员分工描述 杨丽霞:组织QQ会议,合理明确组内分工,推进任务,实施关于我们原型设计陈来弟:负 ...

  2. JavaEDU614 团队第三周项目总结

    JavaEDU614 团队第三周项目总结 本周,根据项目计划完成模块的设计代码 本项目主要是完成俄罗斯方块的基本操作.用户可以自己练习和娱乐.需要满足以下几点要求. (1)界面控制游戏开始.暂停和结束 ...

  3. 【集美大学1411_助教博客】团队作业4——第一次项目冲刺(Alpha版本) 成绩

    写在前面的话 第一次alpha冲刺,大家完成得都很好,从博客中体现出来的是所有团队都完成了预期的目标. 一个团队从最初建立,到磨合,到做出一个能被接受的产品,真是一件不容易的事情.就好像TheNexu ...

  4. 团队作业4——第一次项目冲刺(Alpha版本)4.28

    团队作业4--第一次项目冲刺(Alpha版本) Day seven: 会议照片 每日站立会议: 项目进展 今天是项目的Alpha敏捷冲刺的第七天,先大概整理下昨天已完成的任务以及今天计划完成的任务.今 ...

  5. 团队作业4——第一次项目冲刺(Alpha版本)第六天and第七天

    团队作业4--第一次项目冲刺(Alpha版本)第六天and第七天 第一次项目冲刺(Alpha版本)第六天 一.Daily Scrum Meeting照片   二.燃尽图 1.解释说明横纵坐标代表的含义 ...

  6. 团队作业4——第一次项目冲刺(Alpha版本)4.22

    团队作业4--第一次项目冲刺(Alpha版本) Day one: 会议照片 由于团队中的组员今天不在学校,所以我们的站立会议提前一天展开. 项目进展 由于今天是Alpha版本项目冲刺的第一天,所以没有 ...

  7. 团队作业4——第一次项目冲刺(Alpha版本) 4.23

    团队作业4--第一次项目冲刺(Alpha版本) Day two: 会议照片 每日站立会议: 项目进展 今天是项目的Alpha敏捷冲刺的第二天,先大概整理下昨天已完成的任务以及今天计划完成的任务.今天主 ...

  8. 团队作业4——第一次项目冲刺(Alpha版本) 4.24

    团队作业4--第一次项目冲刺(Alpha版本) Day four: 会议照片 每日站立会议: 项目进展 今天是项目的Alpha敏捷冲刺的第三天,先大概整理下昨天已完成的任务以及今天计划完成的任务.今天 ...

  9. 团队作业4——第一次项目冲刺(Alpha版本)4.25

    团队作业4--第一次项目冲刺(Alpha版本) Day four: 会议照片 每日站立会议: 项目进展 今天是项目的Alpha敏捷冲刺的第四天,先大概整理下昨天已完成的任务以及今天计划完成的任务.今天 ...

随机推荐

  1. linux sed命令

    一.初识sed 在部署openstack的过程中,会接触到大量的sed命令,比如 # Bind MySQL service to all network interfaces. sed -i 's/1 ...

  2. RabbitMQ基本概念和使用

    RabbitMQ是一个消息代理,核心原理:发送消息,接收消息. RabbitMQ主要用于组件之间的解耦,消息发送者无需知道消息使用者的存在,反之亦然.   单向解耦                   ...

  3. 【ASP.NET 插件】zyUpload的HTML5上传插件

    个人能力有限,只能网上找图片批量上传插件,看到一个还不错的插件zyUpload ,可以用来上传文件,但没有.NET 版本,特修改了下用以批量上传图片,效果图如下: update:2016年3月8日 有 ...

  4. HDU 4902 Nice boat --线段树(区间更新)

    题意:给一个数字序列,第一类操作是将[l,r]内的数全赋为x ,第二类操作是将[l,r]中大于x的数赋为该数与x的gcd,若干操作后输出整个序列. 解法: 本题线段树要维护的最重要的东西就是一个区间内 ...

  5. Android SQLite (一) 数据库简介

    大家好,今天来介绍一下SQLite的相关知识,并结合Java实现对SQLite数据库的操作. SQLite是D.Richard Hipp用C语言编写的开源嵌入式数据库引擎.它支持大多数的SQL92标准 ...

  6. sublime配置全攻略

    大家好,今天给大家分享一款编辑器:sublime text2     我用过很多编辑器, EditPlus.EmEditor.Notepad++.Notepad2.UltraEdit.Editra.V ...

  7. JavaScript---Angular 和JQuery

    Angular  三层模式 M model和data 数据层 , V view 视图层 , C controller  控制器,程序主逻辑 ,通过指令扩展HTML,通过表达式绑定数据到HTML. Vi ...

  8. Open Sans字体兼容问题解决办法[font-face]

    参考:http://www.tantengvip.com/2014/11/open-sans/ 1.font-face使用方法 font-face是CSS3中的一个模块,主要是把自定义的Web字体嵌入 ...

  9. 使用DataAnnotations实现数据验证

    https://msdn.microsoft.com/zh-cn/library/system.componentmodel.dataannotations.aspx http://www.cnblo ...

  10. svn使用过程forMac

    在Windows环境中,我们一般使用TortoiseSVN来搭建svn环境.在Mac环境下,由于Mac自带了svn的服务器端和客户端功能,所以我们可以在不装任何第三方软件的前提下使用svn功能,不过还 ...