首页 MyQQ聊天程序设计

MyQQ聊天程序设计

举报
开通vip

MyQQ聊天程序设计MyQQ聊天程序设计 聊天程序详细设计 小组成员表 组长:魏杰 成员:魏杰 周兰 验收项目:仿QQ聊天程序 一( 建立数据库 创建MyQQ数据库 建立用户表“UserLog的表“MessageLog UserLog中有xm(姓名),ID(账号),pw(密码),sq(权限),sj(时间) MessageLog中有fz(发送),sz(收收),xx(信息),sj(时间) 二、 基本框架 开始界面 登录界面 查看好友界面: 聊天界面: 取回密码界面: 注册界面: 注册成功界面:...

MyQQ聊天程序设计
MyQQ聊天程序设计 聊天程序详细设计 小组成员表 组长:魏杰 成员:魏杰 周兰 验收项目:仿QQ聊天程序 一( 建立数据库 创建MyQQ数据库 建立用户表“UserLog的表“MessageLog UserLog中有xm(姓名),ID(账号),pw(密码),sq(权限),sj(时间) MessageLog中有fz(发送),sz(收收),xx(信息),sj(时间) 二、 基本框架 开始界面 登录界面 查看好友界面: 聊天界面: 取回密码界面: 注册界面: 注册成功界面: 具体代码实现见附件源代码 二( 实现数据库连接 添加Data类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; using System.Data; namespace MyQQ { class Data { private static string constring = "server=.;database=MyQQ;uid=sa;pwd="; private static SqlConnection sqlcon = new SqlConnection(); private static SqlCommand sqlcom = new SqlCommand(); private static void openConnection() // 打开连接 { if (sqlcon.State == ConnectionState.Closed) { try { sqlcon.ConnectionString = constring; sqlcom.Connection = sqlcon; sqlcon.Open(); } catch (Exception e) { throw new Exception(e.Message); } } } private static void closeConnection()// 关闭连接 { if (sqlcon.State == ConnectionState.Open) { sqlcon.Close(); } sqlcon.Dispose(); sqlcom.Dispose(); } public static void ExecuteSql(string sqlStr)// 执行一条sql语句 { try { openConnection(); sqlcom.CommandType = CommandType.Text; sqlcom.CommandText = sqlStr; sqlcom.ExecuteNonQuery(); } catch (Exception e) { throw new Exception(e.Message); } finally { closeConnection(); } } public static DataSet ExecuteDataSet(string sqlStr)// 执行一条sql语句 { try { openConnection(); sqlcom.CommandType = CommandType.Text; sqlcom.CommandText = sqlStr; SqlDataAdapter sqlda = new SqlDataAdapter(sqlStr, sqlcon); DataSet ds = new DataSet(); sqlda.Fill(ds); return ds; } catch (Exception e) { throw new Exception(e.Message); } finally { closeConnection(); } } } } 三( 实现基本功能 登录代码: private void QQ_Login_Load(object sender, EventArgs e) { textBox1.UseSystemPasswordChar = true; DataSet da = MyQQ.Data.ExecuteDataSet("select xm from UserLog"); comboBox1.Items.Clear(); for (int i = 0; i < da.Tables[0].Rows.Count; i++) comboBox1.Items.Add(da.Tables[0].Rows[i][0]); } 查询好友连接数据库代码: private void Student_Load(object sender, EventArgs e) { DataSet da = MyQQ.Data.ExecuteDataSet("select xm from UserLog"); listBox1.Items.Clear(); for (int i = 0; i < da.Tables[0].Rows.Count; i++) listBox1.Items.Add(da.Tables[0].Rows[i][0]); } 删除用户代码实现: for (int i = 0; i < 好友.CheckedItems.Count; i++) { string temp = (string)好友.CheckedItems[i]; string st = "delete message_log where fz='" + temp + "' or sz='" + temp + "'"; database.liaotianDB.ExecuteSql(st); string st1 = "delete user_log where xm='" + temp + "'"; database.liaotianDB.ExecuteSql(st1); MessageBox.Show("删除成功~"); this.Hide(); new 聊天界面(name).Show(); } 注册代码实现(需要更新数据库): private void button1_Click(object sender, EventArgs e) { if (textBox1.Text != "") { if (textBox2.Text != "") { if (textBox2.Text == textBox3.Text) { string a = textBox1.Text; string b = textBox2.Text; float sq = 0; string sj; DateTime dt = DateTime.Now; sj = string.Format("{0}{1:d2}{2:d2} {3}", dt.Year, dt.Month, dt.Day, dt.ToLongTimeString()); string st = "insert into UserLog (xm,pw,sq,sj) values ('" + a + "','" + b + "','" + sq + "','" + sj + "')"; MyQQ.Data.ExecuteSql(st); new Done().Show(); this.Hide(); } else { MessageBox.Show("您输入的两次密码不相同,请重新输入"); textBox2.Text = ""; textBox3.Text = ""; this.textBox2.Focus(); } } else { MessageBox.Show("请您输入密码~"); this.textBox2.Focus(); } } else { MessageBox.Show("用户名不允许为空~"); this.textBox1.Focus(); } } 取回密码代码 private void button1_Click(object sender, EventArgs e) { if (textBox4.Text.Equals(str)) { string xm1 = textBox1.Text; string sql = "select pw from UserLog where xm='" + xm1 + "'"; DataSet da = MyQQ.Data.ExecuteDataSet(sql); if (da.Tables[0].Rows.Count == 0) { MessageBox.Show("用户不存在~"); } else if (textBox3.Text != "计算机科学与技术") { MessageBox.Show("密保答案不正确,请重新输入~"); textBox3.Focus(); } else { string pw = (string)da.Tables[0].Rows[0][0]; MessageBox.Show("你的密码是:" + pw + " 请你记住你的密码~"); } } else { MessageBox.Show("验证码错误,请重新输入~"); Random rd = new Random(); str = ""; for (int i = 0; i < 6; i++) { str += chr[rd.Next(chr.Length - 1)]; } label6.Text = str; } } 实现聊天代码 namespace MyQQ { public partial class Chat : Form { string name;//登录人账号 string time;//读取信息时间 string sq1;//登录人权限 public Chat(string st) { InitializeComponent(); this.name = st; label2.Text = st; DataSet da = MyQQ.Data.ExecuteDataSet("select sq,sj from UserLog where xm='" + st + "'"); this.sq1 = (string)da.Tables[0].Rows[0][0]; this.time = (string)da.Tables[0].Rows[0][1]; if (this.sq1 == "0") { this.button3.Enabled = false; } else this.button3.Enabled = true; } private string getTime() { DateTime dt = DateTime.Now; if (dt.Hour > 10) { return string.Format("{0}{1:d2}{2:d2}-{3}", dt.Year, dt.Month, dt.Day, dt.ToLongTimeString()); } else { return string.Format("{0}{1:d2}{2:d2}-0{3}", dt.Year, dt.Month, dt.Day, dt.ToLongTimeString()); } } private void button1_Click(object sender, EventArgs e) { DataSet da = MyQQ.Data.ExecuteDataSet("select * from MessageLog where sj> '" + time + "' and ( fz='" + name + "' or sz='ALL' or sz='" + name + "')"); time = getTime(); string st = "update UserLog set sj='" + time + "' where xm='" + name + "'"; MyQQ.Data.ExecuteSql(st); for (int i = 0; i < da.Tables[0].Rows.Count; i++) { listBox1.Items.Add(""); listBox1.Items.Add(""); DataSet da1 = MyQQ.Data.ExecuteDataSet("select xm from UserLog where xm='" + da.Tables[0].Rows[i][0] + "'"); if ((string)da.Tables[0].Rows[i][1] != "ALL") { DataSet da2 = MyQQ.Data.ExecuteDataSet("select xm from UserLog where xm='" + da.Tables[0].Rows[i][1] + "'"); listBox1.Items.Add(string.Format("---==={0}({1})-->{2}({3}) {4}===---", da1.Tables[0].Rows[0][0], da.Tables[0].Rows[i][0], da2.Tables[0].Rows[0][0], da.Tables[0].Rows[i][1], da.Tables[0].Rows[i][2])); } else { listBox1.Items.Add(string.Format("---==={0}({1})-->ALL {2}===---", da1.Tables[0].Rows[0][0], da.Tables[0].Rows[i][0], da.Tables[0].Rows[i][2])); } listBox1.Items.Add(string.Format("{0}", da.Tables[0].Rows[i][3])); } } private void button2_Click(object sender, EventArgs e) { if (checkedListBox1.Enabled == false) { //群聊 if (textBox1.Text == "") { MessageBox.Show("发送信息不允许为空~"); } else { string st = "insert into MessageLog (fz,sz,sj,xx) values ('" + name + "','ALL','" + getTime() + "','" + textBox1.Text + "')"; MyQQ.Data.ExecuteSql(st); textBox1.Text = ""; } } else if (checkedListBox1.CheckedItems.Count != 0) { //私聊 if (textBox1.Text == "") { MessageBox.Show("发送信息不允许为空~"); } else { for (int i = 0; i < checkedListBox1.CheckedItems.Count; i++) { string temp = (string)checkedListBox1.CheckedItems[i]; string st = "insert into MessageLog (fz,sz,sj,xx) values ('" + name + "','" + temp + "','" + getTime() + "','" + textBox1.Text + "')"; MyQQ.Data.ExecuteSql(st); } textBox1.Text = ""; } } else MessageBox.Show("请选择聊天的好友~"); } private void button3_Click(object sender, EventArgs e) { for (int i = 0; i < checkedListBox1.CheckedItems.Count; i++) { string temp = (string)checkedListBox1.CheckedItems[i]; string st = "delete MessageLog where fz='" + temp + "' or sz='" + temp + "'"; MyQQ.Data.ExecuteSql(st); string st1 = "delete UserLog where xm='" + temp + "'"; MyQQ.Data.ExecuteSql(st1); MessageBox.Show("删除成功~"); this.Hide(); new Chat(name).Show(); } } private void button4_Click(object sender, EventArgs e) { DataSet da0 = MyQQ.Data.ExecuteDataSet("select xm,pw from UserLog"); checkedListBox1.Items.Clear(); for (int i = 0; i < da0.Tables[0].Rows.Count; i++) { checkedListBox1.Items.Add(da0.Tables[0].Rows[i][0] + " (" + da0.Tables[0].Rows[i][1] + ")"); } DataSet da = MyQQ.Data.ExecuteDataSet("select * from MessageLog where sj> '" + time + "' and ( fz='" + name + "' or sz='ALL' or sz='" + name + "')"); time = getTime(); string st = "update UserLog set sj='" + time + "' where xm='" + name + "'"; MyQQ.Data.ExecuteSql(st); for (int i = 0; i < da.Tables[0].Rows.Count; i++) { listBox1.Items.Add(""); listBox1.Items.Add(""); DataSet da1 = MyQQ.Data.ExecuteDataSet("select xm from UserLog where xm='" + da.Tables[0].Rows[i][0] + "'"); if ((string)da.Tables[0].Rows[i][1] != "ALL") { DataSet da2 = MyQQ.Data.ExecuteDataSet("select xm from UserLog where xm='" + da.Tables[0].Rows[i][1] + "'"); listBox1.Items.Add(string.Format("---==={0}({1})-->{2}({3}) {4}===---", da1.Tables[0].Rows[0][0], da.Tables[0].Rows[i][0], da2.Tables[0].Rows[0][0], da.Tables[0].Rows[i][1], da.Tables[0].Rows[i][2])); } else { listBox1.Items.Add(string.Format("---==={0}({1})-->ALL {2}===---", da1.Tables[0].Rows[0][0], da.Tables[0].Rows[i][0], da.Tables[0].Rows[i][2])); } listBox1.Items.Add(string.Format("{0}", da.Tables[0].Rows[i][3])); } } private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { new Student().Show(); } private void checkBox1_CheckedChanged(object sender, EventArgs e) { this.checkedListBox1.Enabled = !checkBox1.Checked; } private void Chat_Load(object sender, EventArgs e) { DataSet da = MyQQ.Data.ExecuteDataSet("select xm from UserLog"); checkedListBox1.Items.Clear(); for (int i = 0; i < da.Tables[0].Rows.Count; i++) checkedListBox1.Items.Add(da.Tables[0].Rows[i][0]); } private void Chat_FormClosing(object sender, FormClosingEventArgs e) { Application.Exit(); } } } 四( 小结 本聊天程序系统能实现用户注册,(如果已经注册)可以找回密 码,以及登录。 在登陆界面,点击设置,可以查看好友信息、实现修改密码 单击聊天,可进入聊天程序 在聊天过程中,可以查看聊天记录,可以给个人或者 全体发送消息。如果消息过多可以实现清屏。对于好友管理,可 以实现删除好友操作。
本文档为【MyQQ聊天程序设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_589748
暂无简介~
格式:doc
大小:275KB
软件:Word
页数:25
分类:生活休闲
上传时间:2017-09-27
浏览量:31