窗体应用程序防腾讯QQ源码

  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.Text;
  7 using System.Windows.Forms;
  8 using Aptech.UI;
  9 using System.Data.SqlClient;
 10 using System.Media;
 11
 12 namespace MyQQ
 13 {
 14     public partial class MainForm : Form
 15     {
 16         int fromUserId;   // 消息的发起者
 17         int friendFaceId;  // 发消息的好友的头像Id
 18         int messageImageIndex = 0;  // 工具栏中的消息图标的索引
 19         public static int faceId = 0;        // 头像索引
 20         public MainForm()
 21         {
 22             InitializeComponent();
 23         }
 24
 25         private void MainForm_Load(object sender, EventArgs e)
 26         {
 27             //初始化皮肤
 28             skinEngine1.SkinFile = "SportsGreen.ssk";
 29             // 显示个人的信息
 30             timSound.Start();
 31             wenti();
 32             sbFriends.AddGroup("我的好友");
 33             sbFriends.AddGroup("陌生人");
 34             //this.sideBar1.AddGroup("我的好友");
 35             //this.sideBar1.AddGroup("陌生人");
 36
 37             //this.sideBar1.Groups[0].Items.Add("小红1", 1);
 38             //this.sideBar1.Groups[0].Items.Add("小红2", 1);
 39             //this.sideBar1.Groups[0].Items.Add("小红3", 1);
 40
 41             //SubItem sit = new SbItem("小花", 80);
 42             //sit.Tag = 1000;
 43             //this.sideBar1.Groups[0].Items.Add(sit);
 44             //查看好友
 45             ADDName();
 46
 47            this.Left = Screen.PrimaryScreen.WorkingArea.Width-this.Width;
 48            //this.Top = Screen.PrimaryScreen.WorkingArea.Height - this.Width;
 49            //this.Left = Screen.PrimaryScreen.WorkingArea.Width - this.Height;
 50
 51         }
 52
 53         private void ADDName()
 54         {
 55             //清空信息
 56             sbFriends.Groups[0].Items.Clear();
 57             //创建sql语句(实现查询)
 58             string sql = string.Format(
 59                 "SELECT FriendId,NickName,FaceId FROM Users,Friends WHERE Friends.HostId={0} AND Users.Id=Friends.FriendId",
 60                 UserHelper.loginId);
 61             //执行try块语句
 62             try
 63             {
 64                 //创建command对象
 65                 SqlCommand command = new SqlCommand(sql, DBHelper.connection);
 66                 if (DBHelper.connection.State!= ConnectionState.Open)
 67                 {
 68                     DBHelper.connection.Open();//打开数据库连接
 69                 }
 70                 //使用变量reader来存取执行命令后的值
 71                 SqlDataReader reader = command.ExecuteReader();
 72                 //循环使用Read()方法
 73                 while (reader.Read())
 74                 {
 75                     //创建item对象(使用到ListView控件)
 76                     SbItem item = new SbItem((string)reader["NickName"], (int)reader["FaceId"]);
 77                     item.Tag = reader["FriendId"];//使用Tag临时变量来存取FrienId该列的值
 78                     sbFriends.Groups[0].Items.Add(item);//执行显示(从下标0开始)
 79
 80                 }
 81                 reader.Close();//关闭reader()
 82             }
 83             catch (Exception ex)
 84             {
 85                 //提示错误信息
 86                 MessageBox.Show(ex.Message);
 87             }
 88             finally
 89             {
 90                 //关闭数据库连接
 91                 DBHelper.connection.Close();
 92             }
 93         }
 94         private string wenti()
 95         {
 96             string nickName = "";  // 昵称
 97
 98             bool error = false;    // 标识是否出现错误
 99
100             // 取得当前用户的昵称、头像(实现查询)
101             string sql = string.Format(
102                 "SELECT NickName, FaceId FROM Users WHERE Id={0}",
103                 UserHelper.loginId);
104             //执行try块语句
105             try
106             {
107                 // 创建command对象
108                 SqlCommand command = new SqlCommand(sql, DBHelper.connection);
109                 //打开数据库连接
110                 DBHelper.connection.Open();
111                 //执行command命令
112                 SqlDataReader dataReader = command.ExecuteReader();
113                 //循环使用Read()方法
114                 if (dataReader.Read())
115                 {
116                     if (!(dataReader["NickName"] is DBNull))  // 判断数据库类型是否为空
117                     {
118                         nickName = Convert.ToString(dataReader["NickName"]);
119                     }
120                     //使用变量faceId来存取数据类型转换后的值
121                     faceId = Convert.ToInt32(dataReader["FaceId"]);
122                 }
123                 //关闭dataReader()
124                 dataReader.Close();
125             }
126             catch (Exception ex)
127             {
128                 //提示错误信息
129                 error = true;
130                 Console.WriteLine(ex.Message);
131             }
132             finally
133             {
134                 //关闭数据库连接
135                 DBHelper.connection.Close();
136             }
137
138             // 根据操作数据库结果进行不同的操作
139             if (error)
140             {
141                 //提示用户信息
142                 MessageBox.Show("服务器请求失败!请重新登录!", "意外错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
143                 Application.Exit();//退出当前应用程序
144             }
145             else
146             {
147                 // 在窗体标题显示登录的昵称、号码
148                 this.Text = UserHelper.loginId.ToString();
149                 this.picboName.Image = imglstBig.Images[faceId];
150                 this.label1.Text = string.Format("{0}({1})", nickName, UserHelper.loginId.ToString());
151
152             }
153             return sql;
154         }
155
156         private void tsmiView_Click(object sender, EventArgs e)
157         {
158             if (sbFriends.View == SbView.LargeIcon)
159             {
160                 sbFriends.View = SbView.SmallIcon;
161                 tsmiView.Text = "显示大图像";
162             }
163             else if (sbFriends.View == SbView.SmallIcon)
164             {
165                 sbFriends.View = SbView.LargeIcon;
166                 tsmiView.Text = "显示小图像";
167             }
168         }
169
170         private void sbFriends_ItemDoubleClick(SbItemEventArgs e)
171         {
172             ChatForm chat = new ChatForm();
173             chat.friendId = Convert.ToInt32(e.Item.Tag); // 号码
174             chat.nickName = e.Item.Text;  // 昵称
175             chat.faceId = e.Item.ImageIndex;  // 头像
176             timer2.Stop();//点击收取信息后图片停止换取
177             timer1.Stop();
178             chat.Show();
179         }
180
181         private void picboName_Click(object sender, EventArgs e)
182         {
183             PersonalInfoForm face = new PersonalInfoForm();
184             face.Show();
185         }
186
187         private void timer1_Tick(object sender, EventArgs e)
188         {
189
190
191
192         }
193
194         private void MainForm_FormClosed(object sender, FormClosedEventArgs e)
195         {
196             Application.Exit();
197         }
198
199         private void toolStripMenuItem3_Click(object sender, EventArgs e)
200         {
201             skinEngine1.SkinFile = "SportsGreen.ssk";
202             label1.ForeColor =Color.BlueViolet;
203             sbFriends.ForeColor = Color.BlanchedAlmond;
204             sbFriends.GroupHeaderBackColor = Color.Green;
205             sbFriends.BackColor = Color.SpringGreen;
206         }
207
208         private void 黑色ToolStripMenuItem_Click(object sender, EventArgs e)
209         {
210             skinEngine1.SkinFile = "SteelBlack.ssk";
211             label1.ForeColor = Color.White;
212             sbFriends.ForeColor = Color.Black;
213             sbFriends.GroupHeaderBackColor = Color.Black;
214             sbFriends.BackColor = Color.Gray;
215         }
216
217         private void 橙色ToolStripMenuItem_Click(object sender, EventArgs e)
218         {
219             skinEngine1.SkinFile = "SportsOrange.ssk";
220             label1.ForeColor = Color.Black;
221             sbFriends.ForeColor = Color.White;
222             sbFriends.GroupHeaderBackColor = Color.Orange;
223             sbFriends.BackColor = Color.HotPink;
224         }
225
226         private void toolStripButton2_Click(object sender, EventArgs e)
227         {
228
229             SearchFriendForm Search = new SearchFriendForm();
230             Search.Show();
231         }
232
233         private void tsbSound_Click(object sender, EventArgs e)
234         {
235
236             timer1.Stop();  // 消息timer停止运行
237             // 图片恢复正常
238             messageImageIndex = 0;
239             tsbSound.Image = imageList1.Images[messageImageIndex];
240
241             string sql = string.Format("select FromUserId from dbo.Messages where MessageState = 0 and MessageTypeId = 2  and ToUserId ={0}", UserHelper.loginId);
242
243
244             SqlCommand command = new SqlCommand(sql, DBHelper.connection);
245             DBHelper.connection.Open();
246             int FromUserId = Convert.ToInt32(command.ExecuteScalar());
247
248             DBHelper.connection.Close();
249             RequestForm request = new RequestForm();
250             request.Show();
251
252         }
253         //系统信息,喇叭闪动
254         private void timer1_Tick_1(object sender, EventArgs e)
255         {
256             messageImageIndex = messageImageIndex == 0 ? 1 : 0;//如果messageImageIndex为0就将1赋给它,否则就将0赋给他
257             tsbSound.Image = imageList1.Images[messageImageIndex];
258
259             SoundPlayer soundPlay = new SoundPlayer("system.wav");
260             soundPlay.Play();
261
262         }
263         /// <summary>
264         /// 读取数据库消息启动计时器
265         /// </summary>
266         /// <param name="sender"></param>
267         /// <param name="e"></param>
268         private void timSound_Tick(object sender, EventArgs e)
269         {
270
271         }
272         /// <summary>
273         /// 更新陌生人列表
274         /// </summary>
275         private void UpdateStranger(int loginId)
276         {
277             // 选出这个人的基本信息
278             string sql = "SELECT NickName, FaceId FROM Users WHERE Id=" + loginId;
279             bool error = false; // 用来标识是否出现错误
280             try
281             {
282                 SqlCommand command = new SqlCommand(sql, DBHelper.connection);
283                 DBHelper.connection.Open();
284                 SqlDataReader dataReader = command.ExecuteReader(); // 查询
285                 if (dataReader.Read())
286                 {
287                     SbItem item = new SbItem((string)dataReader["NickName"], (int)dataReader["FaceId"]);
288                     item.Tag = this.fromUserId;           // 将Id记录在Tag属性中
289                     sbFriends.Groups[1].Items.Add(item);  // 向陌生人组中添加项
290                 }
291                 sbFriends.VisibleGroup = sbFriends.Groups[1];  // 设定陌生人组为可见组
292             }
293             catch (Exception ex)
294             {
295                 error = true;
296                 Console.WriteLine(ex.Message);
297             }
298             finally
299             {
300                 DBHelper.connection.Close();
301             }
302
303             // 出错了
304             if (error)
305             {
306                 MessageBox.Show("服务器出现意外错误!", "抱歉", MessageBoxButtons.OK, MessageBoxIcon.Error);
307             }
308         }
309         /// <summary>
310         /// 判断发消息的人是否在列表中
311         /// </summary>
312         private bool HasShowUser(int loginId)
313         {
314             bool find = false;  // 表示是否在当前显示出的用户列表中找到了该用户
315
316             // 循环 SideBar 中的2个组,寻找发消息的人是否在列表中
317             for (int i = 0; i < 2; i++)
318             {
319                 for (int j = 0; j < sbFriends.Groups[i].Items.Count; j++)
320                 {
321                     if (Convert.ToInt32(sbFriends.Groups[i].Items[j].Tag) == loginId)
322                     {
323                         find = true;
324                     }
325                 }
326             }
327             return find;
328         }
329
330         private void timer2_Tick(object sender, EventArgs e)
331         {
332             // 循环好友列表两个组中的每个item,找到发消息的好友,让他的头像闪烁
333             for (int i = 0; i < 2; i++)
334             {
335                 for (int j = 0; j < sbFriends.Groups[i].Items.Count; j++)
336                 {
337                     if (Convert.ToInt32(sbFriends.Groups[i].Items[j].Tag) == this.fromUserId)
338                     {
339                         if (sbFriends.Groups[i].Items[j].ImageIndex < 100)
340                         {
341                             sbFriends.Groups[i].Items[j].ImageIndex = 100;// 索引为100的图片是一个空白图片
342                         }
343                         else
344                         {
345                             sbFriends.Groups[i].Items[j].ImageIndex = this.friendFaceId;
346                         }
347                         sbFriends.Invalidate();  // 重新绘制,只要告诉学生需要这句话才能正常闪烁头像就行
348
349                     }
350                 }
351             }
352             SoundPlayer sound = new SoundPlayer("msg.wav");
353             sound.Play();
354
355         }
356
357         private void sbFriends_Load(object sender, EventArgs e)
358         {
359
360         }
361
362         private void timSound_Tick_1(object sender, EventArgs e)
363         {
364             ADDName();     // 刷新好友列表
365             int messageTypeId = 1;  // 消息类型
366             int messageState = 1;   // 消息状态
367
368             // 找出未读消息对应的好友Id
369             string sql = string.Format(
370                 "SELECT Top 1 FromUserId, MessageTypeId, MessageState FROM Messages WHERE ToUserId={0} AND MessageState=0", UserHelper.loginId);
371             SqlCommand command;
372             try
373             {
374                 command = new SqlCommand(sql, DBHelper.connection);
375                 if (DBHelper.connection.State != ConnectionState.Open)
376                 {
377                     DBHelper.connection.Open();
378                 }
379                 SqlDataReader dataReader = command.ExecuteReader();
380
381                 // 循环读出一个未读消息
382                 if (dataReader.Read())
383                 {
384                     this.fromUserId = (int)dataReader["FromUserId"];
385                     messageTypeId = (int)dataReader["MessageTypeId"];
386                     messageState = (int)dataReader["MessageState"];
387                 }
388                 dataReader.Close();
389             }
390             catch (Exception ex)
391             {
392                 Console.WriteLine(ex.Message);
393             }
394             finally
395             {
396                 DBHelper.connection.Close();
397             }
398
399             // 判断消息类型,如果是添加好友消息,就启动喇叭timer,让小喇叭闪烁
400             if (messageTypeId == 2 && messageState == 0)
401             {
402                 // SoundPlayer player = new SoundPlayer("system.wav");
403                 //player.Play();
404                 timer1.Start();//启动闪喇叭的计时器
405             }
406             // 如果是聊天消息,就启动聊天timer,让好友头像闪烁
407             else if (messageTypeId == 1 && messageState == 0)
408             {
409                 // 获得发消息的人的头像Id
410                 sql = "SELECT FaceId FROM Users WHERE Id=" + this.fromUserId;
411                 try
412                 {
413                     command = new SqlCommand(sql, DBHelper.connection);
414                     DBHelper.connection.Open();
415                     this.friendFaceId = Convert.ToInt32(command.ExecuteScalar());   // 查找到发消息的好友的头像索引
416                 }
417                 catch (Exception ex)
418                 {
419                     Console.WriteLine(ex.Message);
420                 }
421                 finally
422                 {
423                     DBHelper.connection.Close();
424                 }
425
426                 // 如果发消息的人没有在好友列表中就添加到陌生人列表中
427                 if (!HasShowUser(fromUserId))
428                 {
429                     UpdateStranger(fromUserId);
430                 }
431                 // SoundPlayer player = new SoundPlayer("msg.wav");
432                 //player.Play();
433                 timer2.Start();  // 启动闪烁头像定时器
434             }
435         }
436
437         private void toolStripButton1_Click(object sender, EventArgs e)
438         {
439             PersonalInfoForm person = new PersonalInfoForm();
440             person.Show();
441         }
442
443         private void toolStripButton5_Click(object sender, EventArgs e)
444         {
445             Application.Exit();
446         }
447
448         private void update_Tick(object sender, EventArgs e)
449         {
450             //查看好友
451             ADDName();
452             wenti();
453         }
454
455         private void tsmiDelete_Click(object sender, EventArgs e)
456         {
457             string FriendId = sbFriends.SeletedItem.Tag.ToString();
458             sbFriends.SeletedItem.Parent.Items.Remove(sbFriends.SeletedItem);
459
460             string sql = string.Format("delete from dbo.Friends where HostId={0} and FriendId={1}", UserHelper.loginId, FriendId);
461             SqlCommand com = new SqlCommand(sql, DBHelper.connection);
462             DBHelper.connection.Open();
463             int reader = com.ExecuteNonQuery();
464             if (reader == 1)
465             {
466                 MessageBox.Show("成功");
467             }
468             else
469             {
470                 MessageBox.Show("失败");
471             }
472
473             DBHelper.connection.Close();
474         }
475
476         private void tsb_Click(object sender, EventArgs e)
477         {
478             ADDName();
479             wenti();
480         }
481
482         private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
483         {
484             DialogResult res = MessageBox.Show("你确定关吗?", "温馨提示:", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
485             if (res == DialogResult.OK)
486             {
487                 e.Cancel = false;
488             }
489             else
490             {
491                 e.Cancel = true;
492             }
493         }
494
495         private void timer3_Tick(object sender, EventArgs e)
496         {
497             headForm();
498         }
499
500         private void headForm()
501         {
502             string nickName = "";
503             // 取得当前用户的昵称、头像
504             string sql = string.Format(
505                 "SELECT NickName, FaceId FROM Users WHERE Id={0}",
506                 UserHelper.loginId);
507             try
508             {
509                 // 查询
510                 SqlCommand command = new SqlCommand(sql, DBHelper.connection);
511                 DBHelper.connection.Open();
512                 SqlDataReader dataReader = command.ExecuteReader();
513
514                 if (dataReader.Read())
515                 {
516
517                     nickName = Convert.ToString(dataReader["NickName"]);
518
519                     faceId = Convert.ToInt32(dataReader["FaceId"]);
520                 }
521                 dataReader.Close();
522             }
523             catch (Exception ex)
524             {
525
526                 Console.WriteLine(ex.Message);
527             }
528             finally
529             {
530                 DBHelper.connection.Close();
531             }
532
533
534             // 在窗体标题显示登录的昵称、号码
535
536             this.picboName.Image = imglstBig.Images[faceId];
537         }
538
539         private void 沉默是金ToolStripMenuItem_Click(object sender, EventArgs e)
540         {
541             skinEngine1.SkinFile = "MSN.ssk";
542         }
543
544         private void MainForm_MouseHover(object sender, EventArgs e)
545         {
546
547         }
548
549         private void MainForm_MouseMove(object sender, MouseEventArgs e)
550         {
551             //this.Left = Screen.PrimaryScreen.WorkingArea.Width-20;
552
553         }
554         private void MainForm_MouseEnter(object sender, EventArgs e)
555         {
556            // if (this.Left == Screen.PrimaryScreen.WorkingArea.Width - 10)
557            // {
558                 //this.Left = Screen.PrimaryScreen.WorkingArea.Width - this.Width - 100;
559            // }
560            // else
561            // {
562                // this.Top = Screen.PrimaryScreen.WorkingArea.Height - 10;
563             //}
564
565
566
567
568         }
569
570         private void MainForm_MouseLeave(object sender, EventArgs e)
571         {
572
573         }
574
575         private void MainForm_MouseClick(object sender, MouseEventArgs e)
576         {
577
578         }
579     }
580 }

  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.Text;
  7 using System.Windows.Forms;
  8 using System.Data.SqlClient;
  9 namespace MyQQ
 10 {
 11     public partial class ChatForm : Form
 12     {
 13         public int friendId;     // 当前聊天的好友号码
 14         public string nickName;  // 当前聊天的好友昵称
 15         public int faceId;       // 当前聊天的好友头像Id
 16         string messageIdsString = "";  // 消息的Id组成的字符串
 17         string message;         // 消息内容
 18         string messageTime;     // 消息发出的时间
 19         public ChatForm()
 20         {
 21             InitializeComponent();
 22         }
 23
 24         private void ChatForm_Load(object sender, EventArgs e)
 25         {
 26
 27             this.Text = string.Format("与{0}聊天中...", nickName); // 设置窗体标题
 28             lblFriend.Text = string.Format("{0}({1})", nickName, friendId); //当前聊天的好友昵称和号码
 29             picFace.Image = ilFace.Images[faceId];
 30
 31             // 读取所有的未读消息,显示在窗体中
 32             Showview();
 33         }
 34
 35         private void Showview()
 36         {
 37             string str = string.Format(
 38                 "SELECT Id, Message,MessageTime From Messages WHERE FromUserId={0} AND ToUserId={1} AND MessageTypeId=1 AND MessageState=0",
 39             friendId, UserHelper.loginId);
 40
 41             try
 42             {
 43                 SqlCommand com = new SqlCommand(str, DBHelper.connection);
 44                 DBHelper.connection.Open();
 45                 SqlDataReader reader = com.ExecuteReader();
 46                 while (reader.Read())
 47                 {
 48                     messageIdsString += Convert.ToString(reader["Id"]) + "_";
 49                     message = Convert.ToString(reader["Message"]);
 50                     messageTime = Convert.ToDateTime(reader["MessageTime"]).ToString();
 51                     txtMessage.Text += string.Format("\n{0}  {1}\n  {2}", nickName, messageTime, message);
 52                 }
 53                 reader.Close();
 54             }
 55             catch (Exception ex)
 56             {
 57
 58                 MessageBox.Show(ex.Message);
 59             }
 60             finally
 61             {
 62                 DBHelper.connection.Close();
 63             }
 64
 65             if (messageIdsString.Length > 1) //查看Id是否有效
 66             {
 67                 messageIdsString.Remove(messageIdsString.Length - 1);
 68                 NewMethod(messageIdsString, '_');
 69             }
 70         }
 71
 72         private void NewMethod(string messageIdsString, char separator)
 73         {
 74             string[] chai = messageIdsString.Split(separator);
 75             string sql = "update Messages set MessageState=1 where Id=";
 76             string updateSql;
 77             try
 78             {
 79                 SqlCommand com = new SqlCommand();
 80
 81                 com.Connection = DBHelper.connection;
 82                 DBHelper.connection.Open();
 83                 foreach (string id in chai)
 84                 {
 85                     if (id != "")
 86                     {
 87                         updateSql = sql + id;
 88                         com.CommandText = updateSql;
 89                         int result = com.ExecuteNonQuery();
 90                     }
 91                 }
 92             }
 93             catch (Exception ex)
 94             {
 95                 MessageBox.Show(ex.Message);
 96
 97             }
 98             finally
 99             {
100                 DBHelper.connection.Close();
101             }
102         }
103
104         private void btnClose_Click(object sender, EventArgs e)
105         {
106             this.Close();
107         }
108         private void btnSend_Click(object sender, EventArgs e)
109         {
110             //判断txtWrit该控件是否为空,如是提示用户信息
111             if (txtWrit.Text.Trim() == "")
112             {
113                 MessageBox.Show("请输入信息!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
114                 return;
115             }
116             //判断数组长度是否大于等于150,如果大于等于150其实用户信息
117             else if (txtWrit.Text.Trim().Length >= 150)
118             {
119                 MessageBox.Show("此消息过长!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
120                 return;
121             }
122             //否则,执行try块语句(实现增加信息)
123             else
124             {
125                 try
126                 {
127                     //创建sql语句实现增加信息
128                     string sql = string.Format(
129                             "insert into Messages(FromUserId,ToUserId,Message,MessageTypeId,MessageState) values({0},{1},'{2}',1,0)",
130                             UserHelper.loginId, friendId, txtWrit.Text.Trim());
131                     //创建command对象
132                     SqlCommand command = new SqlCommand(sql, DBHelper.connection);
133                     //打开数据库连接
134                     DBHelper.connection.Open();
135                     //执行非查询(增加)命令
136                     command.ExecuteNonQuery();
137                 }
138                 catch (Exception ex)
139                 {
140                     //提示错误信息
141                     MessageBox.Show(ex.Message);
142                 }
143                 finally
144                 {
145                     //关闭数据库连接
146                     DBHelper.connection.Close();
147                 }
148             }
149
150         }
151
152     }
153 }

ChatForm

 1 using System;
 2 using System.Collections.Generic;
 3 using System.ComponentModel;
 4 using System.Data;
 5 using System.Drawing;
 6 using System.Text;
 7 using System.Windows.Forms;
 8 using System.Data.SqlClient;//导入命名空间
 9 namespace MyQQ
10 {
11     public partial class FaceForm : Form
12     {
13
14         public FaceForm()
15         {
16             InitializeComponent();
17         }
18
19         private void butfaceNO_Click(object sender, EventArgs e)
20         {
21             DialogResult result = MessageBox.Show("确定要退出吗?","温馨提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Question);
22             if (result==DialogResult.OK)
23             {
24                 this.Close();//执行关闭当前窗体语句块
25             }
26
27         }
28
29         private void butfaceOK_Click(object sender, EventArgs e)
30         {
31             //判断是否选中图像,如果未选中图像点击确定的时候提示用户信息是否退出
32             if (listface.SelectedItems.Count==0)
33             {
34                DialogResult result= MessageBox.Show("确定要退出吗?","温馨提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Information);
35                if (result == DialogResult.OK)
36                {
37                    this.Close();//执行关闭当前窗体
38                }
39             }
40             else
41             {
42                 //使用变量faceIds来存取选中的该图片
43                 int faceIds = listface.SelectedItems[0].ImageIndex;
44
45
46                 try
47                 {
48                     //创建sql语句(更新语句)
49                     string sql = string.Format(
50                                "update Users set FaceId={0} where Id={1}",
51                                faceIds, UserHelper.loginId);
52                     //创建command对象
53                     SqlCommand command = new SqlCommand(sql, DBHelper.connection);
54                     //打开数据库连接
55                     DBHelper.connection.Open();
56                     //执行非查询命令(更新)
57                     int result = command.ExecuteNonQuery();
58                     if (result > 0)
59                     {
60                         MessageBox.Show("操作成功!");//提示用户信息操作成功
61                     }
62                     else
63                     {
64                         MessageBox.Show("操作失败!");//提示用户信息操作失败
65                     }
66                 }
67                 catch (Exception ex)
68                 {
69
70                     MessageBox.Show(ex.Message);//提示错误信息
71                 }
72                 finally
73                 {
74                     DBHelper.connection.Close();//关闭数据库连接
75                 }
76
77             }
78
79         }
80
81         private void FaceForm_Load(object sender, EventArgs e)
82         {
83             //执行在加载的时候显示信息(ListView控件)
84             for (int i = 0; i < ilFaces.Images.Count; i++)
85             {
86                 //执行增加项语句块(从下标为0开始进行显示)
87                 listface.Items.Add(i.ToString());
88                 listface.Items[i].ImageIndex = i;
89
90
91             }
92         }
93     }
94 }

FaceForm

  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.Text;
  7 using System.Windows.Forms;
  8 using System.Data.SqlClient;//导入命名空间
  9 namespace MyQQ
 10 {
 11     public partial class RegisterForm : Form
 12     {
 13         string sex = "";//声明一个成员变量并且初始化
 14
 15
 16         public RegisterForm()
 17         {
 18             InitializeComponent();
 19         }
 20
 21         private void button2_Click(object sender, EventArgs e)
 22         {
 23             this.Close();
 24         }
 25
 26         private void button1_Click(object sender, EventArgs e)
 27         {
 28
 29             if (rbt.Checked)
 30             {
 31                 sex="男";
 32                 Register();
 33             }
 34             else
 35             {
 36                 sex="女";
 37                 Register();
 38             }
 39
 40         }
 41
 42         private void Register()
 43         {
 44             if (tbopwd1.Text == tbopwd.Text)
 45             {
 46                 int star = 0;
 47                 int boo = 0;
 48                 switch (BooldStyle.Text)
 49                 {
 50                     case "A型":
 51                         boo = 1;
 52                         break;
 53                     case "B型":
 54                         boo = 2;
 55                         break;
 56                     case "O型":
 57                         boo = 3;
 58                         break;
 59                     default:
 60                         boo = 4;
 61                         break;
 62                 }
 63                 switch (Star.Text)
 64                 {
 65                     case "白羊座":
 66                         star = 1;
 67                         break;
 68                     case "双子座":
 69                         star = 3;
 70                         break;
 71                     case "巨蟹座":
 72                         star = 4;
 73                         break;
 74                     case "狮子座":
 75                         star = 5;
 76                         break;
 77                     case "处女座":
 78                         star = 6;
 79                         break;
 80                     case "天秤座":
 81                         star = 7;
 82                         break;
 83                     case "天蝎座":
 84                         star = 8;
 85                         break;
 86                     case "射手座":
 87                         star = 9;
 88                         break;
 89                     case "摩羯座":
 90                         star = 10;
 91                         break;
 92                     case "水瓶座":
 93                         star = 11;
 94                         break;
 95                     case "双鱼座":
 96                         star = 12;
 97                         break;
 98                     default:
 99                         star = 2;
100                         break;
101                 }
102
103                 try
104                 {
105                     string sql = string.Format("insert into dbo.Users(Age,Sex,LoginPwd,NickName,Name,StarId,BloodTypeId) values({0},'{1}','{2}','{3}','{4}','{5}',{6})", tboAge.Text, sex, tbopwd.Text, tboName.Text, ming.Text, star, boo);
106                     SqlCommand command = new SqlCommand(sql, DBHelper.connection);
107                     DBHelper.connection.Open();
108                     int result = command.ExecuteNonQuery();
109                     if (result == 1)
110                     {
111                         //查询新增加的记录的标识号的代码
112                         sql = "select @@Identity from Users";
113                         command.CommandText = sql;      //新增指定command对象的SQL语句
114
115                         //执行查询语句
116                         int num = Convert.ToInt32(command.ExecuteScalar());
117                         string a = string.Format("注册成功!你的MyQQ号是{0}", num);
118                         MessageBox.Show(a, "注册成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
119                         this.Close();
120                     }
121
122
123                 }
124                 catch (Exception ex)
125                 {
126
127                     MessageBox.Show(ex.Message);
128                 }
129                 finally
130                 {
131                     DBHelper.connection.Close();
132                 }
133             }
134             else
135             {
136                 MessageBox.Show("你的两次密码输入不相同!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
137
138             }
139         }
140
141
142     }
143 }

RegisterForm

  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.Text;
  7 using System.Windows.Forms;
  8 using System.Data.SqlClient;
  9 namespace MyQQ
 10 {
 11     public partial class SearchFriendForm : Form
 12     {
 13         bool a = false;//声明一个布尔型的变量a并初始值设为false
 14         private DataSet dataset = new DataSet();//创建datasSet对象
 15         private SqlDataAdapter adapter;//声明变量adaper
 16
 17         public SearchFriendForm()
 18         {
 19             InitializeComponent();
 20         }
 21
 22         /// <summary>
 23         /// 点击查找的事件
 24         /// </summary>
 25         private void btnSerch_Click_1(object sender, EventArgs e)
 26         {
 27             panel1.Visible = true;//将panel1设为true(显示)
 28             //创建sql语句(实现查询)
 29             string sql = "select Id,NickName,Age,Sex from Users";
 30             //给变量赋值
 31             adapter = new SqlDataAdapter(sql, DBHelper.connection);
 32             //使用SqlDataAdaper对象的Fill()方法进行填充
 33             adapter.Fill(dataset);
 34             //执行显示(下标从0开始)
 35             dtVsearch.DataSource = dataset.Tables[0];
 36
 37
 38
 39             if (tabSearch.SelectedIndex == 0)
 40             {
 41
 42                 //精确查找
 43                 rigorSearch();
 44             }
 45             else
 46             {
 47                 //高级查找
 48                 AdvancedSearch();
 49
 50             }
 51         }
 52         /// <summary>
 53         /// 点击加为好友的事件
 54         /// </summary>
 55         private void btnAdd_Click(object sender, EventArgs e)
 56         {
 57             //要加朋友的QQ号码
 58             int friendId = searchID();
 59             //判断是否已被加
 60             a = HasAdded(friendId);
 61
 62             //好友策略
 63             //count等于1:允许任何人加我为好友
 64             //count等于2:需要身份验证才能加我为好友
 65             //count等于3:不允许任何人加我为好友
 66             int count = tactic(friendId);
 67             if (friendId==UserHelper.loginId)
 68             {
 69                 MessageBox.Show("不可以加自己为好友");
 70             }
 71             //可以直接加
 72             else if (a == false && count == 1)
 73             {
 74                 MessageBox.Show("添加成功");
 75                 //添加操作
 76                 addFriendId(friendId);
 77
 78             }
 79             else if (a == false && count == 2)
 80             {
 81                 MessageBox.Show("对方需要验证,验证消息已发出");
 82                 if (friendId!=UserHelper.loginId)
 83                 {
 84                      tacticres(friendId);
 85                 }
 86             //验证添加
 87             }
 88             else if (a == true)
 89             {
 90                 MessageBox.Show("已是你的好友了");
 91             }
 92             else
 93             {
 94                 MessageBox.Show("添加失败,对方不应许任何人加为好友");
 95             }
 96         }
 97         /// <summary>
 98         /// 点击上一步的事件
 99         /// </summary>
100         private void btnBack_Click(object sender, EventArgs e)
101         {
102             this.panel1.Visible = false;//将panel1初始设为false (不可见)
103         }
104         /// <summary>
105         /// 点击关闭的事件
106         /// </summary>
107         private void butoff_Click(object sender, EventArgs e)
108         {
109             this.Close();//关闭当前窗体
110         }
111         /// <summary>
112         /// 点击关闭的事件
113         /// </summary>
114         private void btnClose_Click(object sender, EventArgs e)
115         {
116             this.Close();//关闭当前窗体
117         }
118
119         //高级查找方法
120         private void AdvancedSearch()
121         {
122             //创建sql语句(查询语句)
123             string sql = "";
124             sql = "SELECT Id,NickName,Age,Sex FROM Users";
125             //声明变量初始化和使用变量来存取对应的值
126             string termComAge = "";
127             string termComSex = comSex.Text;
128             //使用switch结构来实现年龄在某个范围内进行运用
129             switch (comAge.SelectedIndex)
130             {
131                 case 1:
132                     termComAge = " Age>=0 AND Age<10";
133                     break;
134                 case 2:
135                     termComAge = " Age>=10 AND Age<20";
136                     break;
137                 case 3:
138                     termComAge = " Age>=20 AND Age<30";
139                     break;
140                 case 4:
141                     termComAge = " Age>=30 AND Age<40";
142                     break;
143                 case 5:
144                     termComAge = " Age>=40 AND Age<50";
145                     break;
146                 case 6:
147                     termComAge = " Age>=50";
148                     break;
149                 default:
150                     termComAge = "";
151                     break;
152             }
153             //判断如果这两个控件的值如果都为空的话,提示用户相应的信息
154             if (termComAge == "" && termComSex == "")
155             {
156                 MessageBox.Show("你还没有选择的啊??");
157                 return;
158             }
159             //判断如果这两个控件的值如果不为空的话,进行相应的计算
160             else
161             {
162                 if (termComAge != "" && termComSex == "")
163                 {
164                     sql += string.Format(" where {0}", termComAge);
165                 }
166                 else if (termComAge == "" && termComSex != "")
167                 {
168                     sql += string.Format(" where Sex='{0}'", termComSex);
169                 }
170                 else
171                 {
172                     sql += string.Format(" where {0} AND Sex='{1}'", termComAge, termComSex);
173                 }
174
175             }
176             //清空表中的信息
177             dataset.Tables[0].Clear();
178             //给变量赋值
179             adapter = new SqlDataAdapter(sql, DBHelper.connection);
180             //使用SqldataAdaper对象的fill()方法进行填充
181             adapter.Fill(dataset);
182             //执行显示语句块(并且下标从0开始)
183             dtVsearch.DataSource = dataset.Tables[0];
184         }
185         //精确查找方法
186         private void rigorSearch()
187         {
188             //创建sql语句块(实现查询)
189             string sql = "";
190
191             sql = "SELECT Id,NickName,Age,Sex FROM Users";
192
193             if (radexactitude.Checked == true)
194             {
195                 if (friendQQ.Text == "" && friendName.Text == "")
196                 {
197
198                     //MessageBox.Show("你还没有填条件的啊@ !@");
199                 }
200                 else if (friendQQ.Text != "" && friendName.Text == "")
201                 {
202                     sql += string.Format(" where ID={0}", int.Parse(friendQQ.Text.Trim()));
203                 }
204                 else
205                 {
206                     sql += string.Format(" where NickName like '%{0}%'", friendName.Text);
207                 }
208             }
209             //清空表中的信息
210             dataset.Tables[0].Clear();
211             //给变量赋值
212             adapter = new SqlDataAdapter(sql, DBHelper.connection);
213             //使用SqldataAdaper对象的fill()方法进行填充
214             adapter.Fill(dataset);
215             //执行显示语句块(并且下标从0开始)
216             dtVsearch.DataSource = dataset.Tables[0];
217         }
218         //发送验证请求方法
219         private int tacticres(int friendId)
220         {
221             int result = 0; // 操作结果
222             string sql = string.Format("INSERT INTO Messages (FromUserId, ToUserId, MessageTypeId, MessageState) VALUES ({0},{1},{2},{3})",
223                 UserHelper.loginId, friendId, 2, 0);
224             try
225             {
226                 // 执行添加操作
227                 SqlCommand command = new SqlCommand(sql, DBHelper.connection);
228                 //打开数据库连接
229                 DBHelper.connection.Open();
230                 //使用变量result来存取执行命令后的值
231                 result = command.ExecuteNonQuery();
232                 if(result>0)
233                 {
234                     MessageBox.Show("操作成功!");//提示用户信息操作成功
235                 }
236                 else
237                 {
238                     MessageBox.Show("操作失败!");//提示用户信息操作失败
239                 }
240             }
241             catch (Exception ex)
242             {
243                 //提示错误信息
244                 MessageBox.Show(ex.Message);
245             }
246             finally
247             {
248                 //关闭数据库连接
249                 DBHelper.connection.Close();
250             }
251             return result;
252         }
253         //添加操作方法
254         private int addFriendId(int friendId)
255         {
256             int result = 0;
257
258             DBHelper.connection.Open();
259             try
260             {
261                 string sql = string.Format("insert into dbo.Friends(HostId,FriendId)values ({0},{1})", UserHelper.loginId, friendId);
262                 //创建command对象
263                 SqlCommand command = new SqlCommand(sql, DBHelper.connection);
264                 //执行命令(使用变量result来存取执行后的值)
265                result = command.ExecuteNonQuery();
266             }
267             catch (Exception ex)
268             {
269                 //提示错误信息
270                 MessageBox.Show(ex.Message);
271             }
272             finally
273             {
274                 //关闭数据库连接
275                 DBHelper.connection.Close();
276             }
277             return result;
278         }
279         //好友策略方法
280         private int tactic(int friendId)
281         {
282
283             int count = 0;//声明变量count并且初始化
284             try
285             {
286                 //创建sql语句块(实现查询)
287                 string sql = string.Format("select FriendshipPolicyId from dbo.Users where id={0}", friendId);
288                 //创建command对象
289                 SqlCommand command = new SqlCommand(sql, DBHelper.connection);
290                 //打开数据库连接
291                 DBHelper.connection.Open();
292                 //执行命令(并且使用变量count来存取,在之前也要进行转换为整型)
293                 count = int.Parse(command.ExecuteScalar().ToString());
294
295
296             }
297             catch (Exception ex)
298             {
299                 //提示错误信息
300                 MessageBox.Show(ex.Message);
301             }
302             finally
303             {
304                 //关闭数据库连接
305                 DBHelper.connection.Close();
306             }
307             return count;
308         }
309         //获取要加的朋友的QQ号码方法
310         private int searchID()
311         {
312             int friendId = 0;
313
314             //当没有选中任何一行
315             if (dtVsearch.SelectedRows.Count == 0)
316             {
317                 MessageBox.Show("请选择一个好友!");
318             }
319             //确保第一个单元格有值
320             else if (dtVsearch.SelectedRows[0].Cells[0] != null)
321             {
322                 //获得第一个单元格的值
323                 friendId = int.Parse(dtVsearch.SelectedRows[0].Cells[0].Value.ToString());
324
325             }
326             return friendId;
327         }
328         //是否已被加的方法
329         public bool HasAdded(int friendId)
330         {
331             //创建sql语句(实现查询)
332             string sql = string.Format("select id from dbo.Friends where HostId ={0} and FriendId={1}", UserHelper.loginId, friendId);
333             //打开数据库连接
334             DBHelper.connection.Open();
335             //执行try块语句
336             try
337             {
338                 SqlCommand command = new SqlCommand(sql, DBHelper.connection);
339                 string reader = Convert.ToString(command.ExecuteScalar());
340                 //不可以加
341                 if (reader != "")
342                 {
343                     this.a = true;
344                 }
345                 //可以加
346                 else
347                 {
348                     this.a = false;
349                 }
350
351             }
352             catch (Exception ex)
353             {
354                 //提示错误信息
355                 Console.WriteLine(ex.Message);
356             }
357             finally
358             {
359                 //关闭数据库连接
360                 DBHelper.connection.Close();
361
362             }
363             return a;
364         }
365
366         private void SearchFriendForm_Load(object sender, EventArgs e)
367         {
368
369         }
370
371
372
373
374
375
376     }
377 }

SearchFriendForm

转载于:https://www.cnblogs.com/cykj/p/The-application-form-of-anti-QQ-source-code.html

窗体应用程序防腾讯QQ源码相关推荐

  1. C#模仿腾讯QQ源码下载(附效果图)_张童瑶的博客

    该源码是C#语言+SQL Server数据库,开发的一套模仿腾讯QQ的功能,可以实现即时聊天,发送抖动窗口,开通会员,充值Qb,后台管理等等众多功能.源代码里面都有大量注释,都是重量级的代码,学习还是 ...

  2. 到家服务公司php源码,微信小程序-仿五洲到家商城源码

    微信小程序-仿五洲到家商城源码 微信小程序仿五洲到家商城源码是一款精仿五洲到家app界面的小程序源码,适用于各类小程序商城系统,功能及模块均值得借鉴! 对应功能模块 > * 首页(定位成功情况且 ...

  3. java毕业生设计疫情防控网站计算机源码+系统+mysql+调试部署+lw

    java毕业生设计疫情防控网站计算机源码+系统+mysql+调试部署+lw java毕业生设计疫情防控网站计算机源码+系统+mysql+调试部署+lw 本源码技术栈: 项目架构:B/S架构 开发语言: ...

  4. java毕业设计社区疫情防控系统mybatis+源码+调试部署+系统+数据库+lw

    java毕业设计社区疫情防控系统mybatis+源码+调试部署+系统+数据库+lw java毕业设计社区疫情防控系统mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈: 项目架构:B/S ...

  5. 制作一个美团外卖饿了么外卖红包优惠券的cps小程序(带分销裂变源码+教程)

    下面是无裂变版本的搭建教程. 源码地址:http://y.mybei.cn 部署步骤 部署后台,填资料 登录后台 http://q.mybei.cn 获取账号,联系微信:mybei95 登录后台 后台 ...

  6. 纯java版QQ源码下载

    纯java版QQ源码下载http://url.cn/7Mjy4P 郑重声明:(可先到华为网盘去看<java至尊QQ演示视频>) 因网盘不稳定,下载不了的话,请点击这里回贴留邮箱. 本人每天 ...

  7. 计算机毕业设计Java校园疫情防控管理软件(源码+系统+mysql数据库+Lw文档)

    计算机毕业设计Java校园疫情防控管理软件(源码+系统+mysql数据库+Lw文档) 计算机毕业设计Java校园疫情防控管理软件(源码+系统+mysql数据库+Lw文档) 本源码技术栈: 项目架构:B ...

  8. 基于JAVA学习自律养成小程序前台.mp4计算机毕业设计源码+系统+数据库+lw文档+部署

    基于JAVA学习自律养成小程序前台.mp4计算机毕业设计源码+系统+数据库+lw文档+部署 基于JAVA学习自律养成小程序前台.mp4计算机毕业设计源码+系统+数据库+lw文档+部署 本源码技术栈: ...

  9. 基于Java毕业设计校园疫情防控管理软件源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计校园疫情防控管理软件源码+系统+mysql+lw文档+部署软件 基于Java毕业设计校园疫情防控管理软件源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构:B/S ...

最新文章

  1. 打造新型智慧城市标杆 金华跻身中国城市信息化50强
  2. ASIHTTPRequest的环境配置和使用示例
  3. [.NET源码] EF的增删改查
  4. class根据状态 vue_系统学习 vue 中使用 css 的各种方式
  5. utf-8转换gbk代码_将代码转换为现金-如何以Web开发人员的身份赚钱并讲述故事。...
  6. 刘世锦:引入区块链等相关技术建立政府、企业和个人的绿色责任账户
  7. MySQL读写分离详解(一)——基本原理
  8. SQL Server数据库查询优化【转】
  9. 【学习笔记】程序设计导引及在线实践 数值转换问题(2)
  10. 服务器2012导出日志文件,MDT2012,client部署日志存放在服务器上
  11. 中国行政区划shp地图数据-2022最新数据预览图
  12. Windows——重建 MBR(Master Boot Record)
  13. CodeForces128A - Statues 解题报告
  14. 惠群计算机科技,电脑报专访:探索新视角,再造多元化的宏碁
  15. 《Web安全之机器学习入门》笔记:第七章 7.5朴素贝叶斯检测WebShell(二)
  16. vscode运行命令是报错:标记“”不是此版本中的有效语句分隔符。
  17. XOP 网格计划是什么?XOP 的特性
  18. 图像的二值化之python+opencv
  19. 微商必备6款软件!十分好用
  20. 【经典蓝牙】蓝牙 A2DP协议分析

热门文章

  1. 生信技能-高通量测序工具bam、samtools、bedtools及conda的下载和安装
  2. 前端如何捕获用户在该页面停留的时长?
  3. 2023最新完美海螺主题v16版无错源码+苹果CMS10内核
  4. DDR扫盲—-关于Prefetch(预取)与Burst(突发)的深入讨论
  5. Java Reminder
  6. 强化学习系列(1):强化学习(Reinforcement Learning)
  7. [python爬虫]--调用有道词典进行翻译
  8. @MapperScan的作用
  9. 安徽高二计算机vb基础知识,vb计算机考试_安徽文师良心产品
  10. echarts labelLine(引导线)呈水平展示