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

窗体应用程序防腾讯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 }
 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 }
  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 }
  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 }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏更流畅、简洁的软件开发方式

用接口实现事件的一种方法,只是玩玩。

  前一阵子,firelong说,应该用接口实现事件,而不应该用委托。我就希望他能给出一个用接口实现事件的方法,我是一直等呀,等到了现在也没有看到。   昨天又...

2428
来自专栏阿炬.NET

JQuery文件上传插件ajaxFileUpload在Asp.net MVC中的使用

3539
来自专栏偏前端工程师的驿站

WPF一步一脚印系列(1):万事起头难

  一直从事Asp.Net的开发,而C/S的开发方面简直是一片空白,于是从上星期开始就痛下决心开始学习WPF。我采取的策略是网上看基础资料+做简单的demo练习...

2489
来自专栏岑志军的专栏

ReactNative-综合案例(02)

1787
来自专栏ASP.NET MVC5 后台权限管理系统

ASP.NET MVC5+EF6+EasyUI 后台管理系统(54)-工作流设计-所有流程监控

先补充一个平面化登陆页面代码,自己更换喜欢的颜色背景 @using Apps.Common; @{ Layout = null; } <!DOCT...

3119
来自专栏游戏杂谈

测试用户的网络环境

这个其实是一个hta文件,目的是测试用户本机请求资源、hosts文件、当前所处的位置。参考stone的checknetwork4qqfarm: http://c...

2711
来自专栏林德熙的博客

win 10 UWP 标签

本文主要翻译:http://visuallylocated.com/post/2015/02/20/Creating-a-WrapPanel-for-your-...

1062
来自专栏葡萄城控件技术团队

七天学会ASP.NET MVC (五)——Layout页面使用和用户角色管理

系列文章 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC 七天学会ASP.NET MVC (二)——ASP.NET MVC 数据传递 ...

3328
来自专栏python爬虫日记

python3下搜狗AI API实现

a、搜狗也发布了自己的人工智能 api,包括身份证ocr、名片ocr、文本翻译等API,初试感觉准确率一般般。

1893
来自专栏酷玩时刻

微信公众号开发之自定义菜单

在Jfinal-weixin中有封装菜单的创建、查询、删除、以及个性化菜单的创建、查询、删除、测试个性化菜单匹配结果

1362

扫码关注云+社区

领取腾讯云代金券