简单的实现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相 ...
随机推荐
- linux 失败无连接 检查电缆吗
将BOOTPROTO=dhcp改成 BOOTPROTO=static 改成手动获取IP的模式 原因: 虚拟机中的Linux目前是默认设成的自动获取IP设置,但你的网络中没有DHCP服务,所以会显示“正 ...
- vijosP1567子串计数
描述现在有一个字符串,请求出这个字符串不相同的子串个数.YXY现在不会做,请你来帮忙…… n<=20W 题解: 后缀数组裸题,其实我在练习模板写对了没 代码: #include<cstdi ...
- 借助 ASR 和 System Center 执行基于 SAN 复制的企业级灾难恢复
Abhishek A. Hemrajani 云 + Enterprise项目经理 对于Azure Site Recovery,我们的优先级已经提升为每个人都可以在任意地点获取易于使用的灾难恢复 (DR ...
- HDU-1238 Substrings
Substrings Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- linux网站配置文件.htaccess伪静态转换到IIS web.config中
linux下的php网站放到Windows服务器IIS下.htaccess文件伪静态规则转换. 此办法只适合于linux下的php网站放到Windows服务器IIS下,网站除了主页面正常以外子页面 ...
- 《C程序设计语言现代方法》第5章 编程题
1 编写一个程序,确定一个数的位数. #include <stdio.h> int main() { ; ) { cnt++; } printf("%d\n", cnt ...
- test-from
title header1 hahhahjl header2 adfkljasd $$a^2$$ point 1 point 2 | table1 | table2 | | ---- | ---- | ...
- 配置 Web Deploy 的步骤 -摘自网络
今天的文章里,我会介绍Microsoft Web Deploy—一个采用全面的发布和部署机制的免费服务器技术.Web Deploy不仅仅让你发布文件—还可以部署数据库结构/数据,运行变更的数据库脚本, ...
- dut1305 台阶
Description 如上图所示的一个台阶他的积水量是4 + 2 + 4 + 3 + 4 = 17. 给你一个长度是n的台阶.告诉你每个台阶的高度,求积水量是多少? Input 多组输入数据: 每组 ...
- Yii防注入攻击笔记
网站表单有注入漏洞须对所有用户输入的内容进行个过滤和检查,可以使用正则表达式或者直接输入字符判断,大部分是只允许输入字母和数字的,其它字符度不允许:对于内容复杂表单的内容,应该对html和script ...