简单的实现QQ通信功能(二)
第二部分:功能需求以及大体思路
一:功能需求:
1. 角色:登录用户。
2. 登录:
(1)检查用户名和密码是否正确,正确登录成功,否则提醒用户名或密码错误。
(2)登录时可以选择登录状态,送入数据库。
(3)记录登录时间,送入数据库。
3. 登录成功之后显示所有的好友信息:
(1)分类列出所有好友的信息(带头像)。
(2)如果有未读的信息,则给提示。
(3)来新消息提醒。
4. 主界面功能:
(1)显示登录者自己的信息。
(2)可以修改自己的状态。
(3)最小化之后在右下角显示小图标,双击小图标主窗体恢复正常显示。
5. 双击某个好友,能够交互聊天:
(1)能够发送信息。
(2)能够了及时显示当前好友发来的信息。
(3)其它朋友发来的新消息,则给予提示。
(4)聊天窗口左上角显示朋友的信息(含头像)。
6. 关闭主界面(退出)时改变自己的状态。
7. 需要的界面:
(1)登录界面
(2)QQ主界面
(3)聊天窗口
二:大体思路
1. 在应用程序的主入口点造一个登录界面:Login delu = new Login();
然后将登录界面作为一个主窗口下的对话框打开delu.ShowDialog();
如果关闭主界面则所有的副窗体都将关闭,所以登录界面作为一个副对话框打开。
2. 在登录界面里要求输入用户名和密码,用户点击登录的时候用这两个数据去查询数据库,根据返回的table.Rows.Count来判断是否匹配,如果匹配登录成功,更改状态。
3. 登录成功之后将登录者的UserName赋给Uid,将DialogResult设置为OK。在应用程序的主入口点判断一下,如果OK运行主界面,将登录者的Uid传到主界面。
if(delu.ShowDialog()== DialogResult.OK)
{
Application.Run(new MainForm(delu.Uid));
}
4. 在主界面重载构造函数来接收传过来的登录者的名字,用其名字去查询朋友信息,显示在朋友列表里面,在将自己的信息显示在上面。
这里在加载朋友信息的时候用到了一个自定义控件来显示朋友信息。用时钟来查询是否有朋友发来的未读消息,将其提醒,朋友上线提醒。
5. 双击朋友头像的时候弹出聊天窗体,在聊天窗体重载构造函数将朋友的信息和自己的信息传到聊天窗体。
6. 在聊天窗口用时钟来查询对面发来的信息,显示出来,将自己发送的信息显示并且送到数据库,如果消息显示在聊天界面则将消息状态改为已读。
打开聊天窗口,再来此朋友的信息则不进行声音和头像抖动提醒,只会在聊天里面显示,关闭则恢复。
7. 关闭主界面,将登陆者的状态再次改为离线。
简单的实现QQ通信功能(二)的更多相关文章
- 简单的实现QQ通信功能(四)
第四部分:主界面的设计及代码 一:效果图及界面设计 1. 效果图: 2. 界面设计: (1)上面显示自己信息用一个PictureBox和两个Label,用来显示自己的头像和昵称备注名. (2)下面用了 ...
- 简单的实现QQ通信功能(三)
第三部分:登陆界面的设计及代码 一:效果图及界面设计 1. 效果图: 2. 界面设计: (1)仿照QQ的登陆界面,右上角放了三个Label,用来做关闭.最小化和设置,使用了它们的Click事件当做按钮 ...
- 简单的实现QQ通信功能(五)
第五部分:聊天界面的设计及代码 一:效果图及界面设计 1. 效果图: 2. 界面设计: (1)左上角显示朋友的头像和“某某正在和某某聊天”. (2)中间的聊天窗口用了一个ListView,视图用详细信 ...
- 简单的实现QQ通信功能(一)
第一部分:数据库的设计,数据集的建立 一:数据库的设计: 1.用户表:包含用户名.密码.昵称.性别.备注.状态.头像代号和最后登录时间. 2.朋友关系表:自增长列为主键列,用户名和好友名,还有朋友的状 ...
- 经测试稳定可用的蓝牙链接通信Demo,记录过程中遇到的问题的思考和解决办法,并整理后给出一个Utils类可以简单调用来实现蓝牙功能
说明:这是本人在蓝牙开发过程中遇到过的问题记录和分析,以及解决办法. 在研究过程中,许多的前人给出的解决方案和思路指导对我相当有帮助,但并非都是可采取的解决方法, 经过本人对这些方法的测试和使用过后, ...
- QQ通信原理及QQ是怎么穿透内网进行通信的? (转)
原:http://f543711700.iteye.com/blog/978044#bc2344608 QQ是一个基于TCP/UDP协议的通讯软件 发送消息的时候是UDP打洞,登陆的时候使用HTTP~ ...
- QQ通信机制(转)
下面有4个基本的问答: 问题一:为什么只要可以连上互联网的计算机都可以用QQ相互建立通信,而不需要固定IP?也就是这个QQ用户端是怎样找到另一个QQ用户的,而用户在每次使用时他可能用的是不同的计算机, ...
- QQ通信原理及QQ是怎么穿透内网进行通信的?
http://blog.csdn.net/frank_good/article/details/51160027 ******************************************* ...
- QQ通信原理
转载自http://blog.csdn.net/li_xiao_ming/article/details/8106857 下面有4个基本的问答: 问题一:为什么只要可以连上互联网的计算机都可以用QQ相 ...
随机推荐
- 客户端验证的极品--jQuery.validator
最近在做一个用户注册登录的页面,资料查寻过程中发现了一个非常不错的客户端验证的极品-jQuery.validate.它是著名的JavaScript包jQuery的一个插件,其实它还有其它的一些插件应该 ...
- jQuery on()方法绑定动态元素的点击事件
之前就一直受这个问题的困扰,在jQuery1.7版本之后添加了on方法,之前就了解过,其优越性高于live(),bind(),delegate()等方法,在此之前项目中想用这个来测试结果发现,居然动态 ...
- 理解iPhone高清分辨率的问题
理解iPhone高清分辨率的问题可以有两个关键切入点: 1.像素坐标普通屏是480*320,Retina屏是960*640,而逻辑坐标系同为480*320: 2.Retina屏幕一个逻辑坐标点坐标包含 ...
- 【原】Spark中Stage的提交源码解读
版权声明:本文为原创文章,未经允许不得转载. 复习内容: Spark中Job如何划分为Stage http://www.cnblogs.com/yourarebest/p/5342424.html 1 ...
- bsp板级支持包
定义 2作用 ▪ 建立让操作系统运行的基本环境 ▪ 完善操作系统运行的环境 3开发流程 1定义 板级支持包(BSP)是介于主板硬件和操作系统中驱动层程序之间的一层,一般认为它属于操作系统一部 ...
- Linux 设备模型浅析之 uevent 篇(2)
Linux 设备模型浅析之 uevent 篇 本文属本人原创,欢迎转载,转载请注明出处.由于个人的见识和能力有限,不可能面 面俱到,也可能存在谬误,敬请网友指出,本人的邮箱是 yzq.seen@gma ...
- 【原创】Java移位运算
学习移位运算,首先得知道参与移位运算的类型的位数,那先来复习下Java基础类型的占位数吧. Java基础类型 Java基础类型总结一览表 类型 二进制位数 最大值 最小值 初始化值 表示形式 带符号 ...
- Tutorial: Getting Started with SignalR (C#) -摘自网络
Overview This tutorial introduces SignalR development by showing how to build a simple browser-based ...
- 高并发Web服务的演变:节约系统内存和CPU
一.越来越多的并发连接数 现在的Web系统面对的并发连接数在近几年呈现指数增长,高并发成为了一种常态,给Web系统带来不小的挑战.以最简单粗暴的方式解决,就是增加Web系统的机器和升级硬件配置.虽然现 ...
- A Tour of Go Type conversions
The expression T(v) converts the value v to the type T. Some numeric conversions: var i int = 42 var ...