Socket实现仿QQ聊天(可部署于广域网)附源码(4)-加入数据库系统搭建完成

1.前言web

      这是本系列的第四篇文章,上一篇咱们讲到实现了客户端对客户端的抖屏与收发各类类型文件,本篇文章咱们加入SQLServer数据库实现登陆与好友的添加等功能,并对界面作了美化处理。向往常同样我会把聊天服务器部署到广域网服务器上,到时候你们就能够能够在源码里面打开客户端与我聊天啦!(这只是一个初级版功能简单不支持离线消息,因此聊天的前提是我在线(用户ID为19931221,就是我啦。)……),也能够本身打开两个客户端测试一下,程序的部署文档放在个人源码根目录下。数据库

2.本篇实现功能c#

0. 数据库简单设计。安全

1. 服务端管理优化与界面美化。服务器

2.客户端的登陆,注册,找回密码。架构

3.客户端的欢迎界面搭建。dom

4.客户端的聊天界面搭建(核心)。ide

5.客户端的我的信息浮动展现。测试

6.客户端的添加好友。优化

7.客户端的用户头像修改。

8.我的详细信息操做。

9.好友的精确查找。

3.具体实现

(0) 数据库简单设计。

数据库表分为用户表,以及其余几个详细信息表,以及好友表。结构以下

在此基础上搭建了一个三层架构。实现对数据的增删改查。

(1)服务端管理优化与界面美化。

在原有的基础上添加了,数据管理,数据提交功能。实现对客户端的管理(通常数据库操做,这里就不贴代码啦,有兴趣能够下源码)。如图:

(2)客户端的登陆,注册,找回密码。

a.登陆-对用户名,密码,验证码验证。这里贴一段使用GDI+写的验证码(能够收藏一下,web ,winform通用),点击pictureBox进行验证图片切换。代码以下:

 1 private void pictureBox3_Click(object sender, EventArgs e)
 2      {
 3          Random x = new Random();
 4         s= null;
 5          for (int i = 0; i < 5; i++)
 6          {
 7              int num = x.Next(0, 10);
 8              s += num;
 9          }
10          //MessageBox.Show(s);
11          Bitmap bmap = new Bitmap(80, 30);
12          Graphics g = Graphics.FromImage(bmap);
13          for (int i = 0; i < 5; i++)
14          {
15              Point p = new Point(i * 13, 0);
16              string[] fonts = { "微软雅黑", "宋体", "黑体", "隶书", "仿宋" };
17              Color[] colors = { Color.Black, Color.Blue, Color.Red, Color.Green, Color.Orange };
18              g.DrawString(s[i].ToString(), new Font(fonts[x.Next(0, 5)], 20, FontStyle.Bold), new SolidBrush(colors[x.Next(0, 5)]), p);
19 
20          }
21          for (int i = 0; i < 10; i++)
22          {
23              Pen pen = new Pen(Brushes.Gray);
24              Point p2 = new Point(x.Next(0, bmap.Width), x.Next(0, bmap.Height));
25              Point p3 = new Point(x.Next(0, bmap.Width), x.Next(0, bmap.Height));
26              g.DrawLine(pen, p2, p3);
27          }
28          for (int i = 0; i < 200; i++)
29          {
30              Point p1 = new Point(x.Next(0, bmap.Width), x.Next(0, bmap.Height));
31              bmap.SetPixel(p1.X, p1.Y, Color.Green);
32          }
33          pictureBox3.Image = bmap;
34      }
View Code

 

效果:            


b.注册,注意:里面要填的一卡通ID,是我当初作时把咱们学生的一卡通做为了用户主键ID,测试时你们能够随便填一个。

c.找回密码:

(3)客户端的欢迎界面搭建。

(4)客户端的聊天界面搭建(核心)。

 

实现了与好友的普通聊天,发送抖屏,收发文件,(若当前接收的消息不为当前聊天窗体时会在主界面出现聊天提醒如图三,)。

 

注意好友在线列表45秒刷新一次,图界面会出现稍微的卡顿。测试时要等45秒才会刷新好友列表。

 

聊天的核心原理已经在第三篇中讲解,这里主要作了一些界面的美化。效果以下:

 

          

 

 

(5)客户端的我的信息浮动展现。

实现原理为根据当前主窗体的大小及位置,肯定浮动展现出如今左方仍是右方。再加入MouseEnter,MouseLeave事件,代码以下

 1 private void pictureBox1_MouseEnter(object sender, EventArgs e)
 2     {
 3         int UserTop = Top + 20;
 4         int UserLeft = Left - 250;
 5         //屏幕不包括任务栏的高度
 6         int PH = Screen.GetWorkingArea(this).Height;
 7         //判断是否超过屏幕高度
 8         if (UserTop + 181 > PH)
 9         {
10             UserTop = PH - 181 - 5;
11         }
12         //判断是否小于屏幕左边
13         if (UserLeft < 0)
14         {
15             UserLeft = Right + 5;
16         }
17         //窗体不为空传值
18         if (myHead != null)
19         {
20             if (myHead.IsDisposed)
21             {
22                 myHead = new MyHead();
23                 myHead.nowuser = nowuser;
24                 myHead.Show(); 
25             }
26             else
27             {
28                 myHead.Location = new Point(UserLeft, UserTop);
29                 myHead.nowuser = nowuser;
30                 myHead.Show();
31             }
32          
33         }
34         else //窗体为空New一个
35         {
36             myHead = new MyHead();
37             myHead.nowuser = nowuser;
38             myHead.Show();
39         }
40     }
41 
42 private void pictureBox1_MouseLeave(object sender, EventArgs e)
43        {
44            Thread.Sleep(100);
45            if (myHead != null && !myHead.Bounds.Contains(Cursor.Position))
46            {
47                myHead.Hide();
48            }
49        }
View Code

 

(6)客户端的添加好友。

经过输入ID进行添加好友,也能够进入详细搜索

(7)客户端的用户头像修改。

经过一个listview控件展现头像,并对用户头像更新

(8)我的详细信息操做。

a.我的资料

b.安全设置

(9)好友的精确查找。

(4)总结

          本次咱们实现了加入SQLServer数据库实现登陆与好友的添加等功能,并对界面作了美化处理。到如今一个基本的聊天软件基本上搭建完成了。本篇有不少的截图,代码量很少,若是对具体实现感兴趣的话能够下一个源码看一下。最后你能够打开源码的客户端,注册一个帐户,查找用户ID为19931221的就是我,能够与我聊天,我会把服务器部署到广域网上。或者打开两个客户端本身聊天(不须要运行服务端,默认是个人服务器 IP,理论上有网就能够聊天),赶快试一下吧!!!(根目录下有配置文档必定要看哦)

这个系列到目前基本已经完结,后续朋友有什么功能需求能够给我留言,我再添加。这个只是一个小例子(在个人c#课程设计做业的基础上进行完善的),但愿你们多多指教。

       待续。。。。。。。。。。。。。。。。。。。。。,期待您的关注

   MyChatV2.0源码地址:http://pan.baidu.com/s/1eRENjDg

  源码里的Sql脚本有问题改正后的脚本地址:http://pan.baidu.com/s/1cBiokm

相关文章
相关标签/搜索