MyQQ需求分析

上传人:小** 文档编号:174690820 上传时间:2022-12-16 格式:DOC 页数:10 大小:114KB
收藏 版权申诉 举报 下载
MyQQ需求分析_第1页
第1页 / 共10页
MyQQ需求分析_第2页
第2页 / 共10页
MyQQ需求分析_第3页
第3页 / 共10页
资源描述:

《MyQQ需求分析》由会员分享,可在线阅读,更多相关《MyQQ需求分析(10页珍藏版)》请在装配图网上搜索。

1、一、八个窗体LoginForm(登录窗体)RegisterForm(注册窗体)FacesForm(选择头像的窗体)MainForm(主窗体)EditPersonInfoForm(编辑个人信息窗体)SearchFriendForm(查找好友窗体)ChatForm(聊天窗体:sbFriends_ItemDoubleClick事件触发)Request(系统信息窗体)二、各窗体界面及功能实现1、LoginForm(登录窗体)界面.:两个label:ForeColor为Highlight两个LinkLabel:两个Button:btnLogin,btnCannel(三个控件的背景色都设为透明)两个Tex

2、tBox:txtId,txtPwd功能模块:I两个事件:btnLogin_click事件和linkLabel1_LinkClickedIf(IsExist(id,pwd)将登主的体界面码和密码保存到出跋矗响中在btnLogin_click事件中:首先声明两个变量stringid=txtId.text.trim();stringpwd=txtPwd.text.trim();If(IsValidate()else弹出用户名或密码错误的对消息对话框两个方法:boolIsValidate()用途:判断用户是否输入调用处:btnLogin_click事件中方法体说明:不需声明bool变量,如果没有录入直

3、接returnfalse,否则returntrue即可boolIsExist(stringid,stringpwd)用途:判断是否在数据库users表中存在调用处:btnLogin_click事件中方法体说明:在此方法中需要声明一个boolisExist=false,如果count=1,isExist=true,否则,isExist=false,在tryfinally夕卜面returnisExist2、RegisterForm(注册窗体)面.:两个GroupBox:grpBaseInfo(注册基本信息),grpDetails(选填详细信息)五个TextBox:txtNickName,txtAg

4、e,txtPwd,txtRePwd,txtName两个RadioButton:rdoMale,rdoFemale两个ComboBox:cboStar,cboBloodType两个Button:btnRegister,btnCannel功能模块:|其实就是往数据库users表中添加一条记录,如果添加成功,马上查找出其记录自动生成的ID号返回给用户即可两个事件:RegisterForm_Load事件和btnRegister_click事件在RegisterForm_Load事件中就只调用SetCboText()方法在btnRegister_click事件中stringsqlString=GetSq

5、lString();intQQId=AddUser(sqlString);if(QQId!=0)stringmessage=string.Format(注册成功,你的QQ号码是0,QQId);MessageBox.Show(message);this.Close();if(IsValidate()四个方法:voidSetCboText()调用处:RegisterForm_Load事件方法体说明:1.创建dataTable对象(无参数的构造方法),2.构建SQL语句3.创建SqlDataAdapterboolIsValidate()调用处:btnRegister_click事件方法体说明:不需声

6、明bool变量,如果没有输入值,直接returnfalse,否则returntrue(!rdoFemale.Checked&!rdoMale.Checked)(txtRePwd.Text.Trim()!=txtPwd.Text.Trim()4. 填充dataAdapter.Fill(dataTable对象名)5.下拉框与dataTable表绑定cboBlood.DataSource=dataTable对象名6.将列与下位框对应的项绑定,并将初始值设为将列与下位框对应的项绑定,并将初始值设为.StringGetSqlString()调用处:btnRegister_click事件方法体说明:首先声

7、明变量注意类型:age为int,starld,bloodTypeld为Object类型,其他都为string取值:只有startId,bloodTypeId需要判断如果为空,赋值为“null“,否则赋值为(Object)cboStar.selectedValue。其他的变量直接从界面上取值即可构建SQL语句时因为有两个默认值的字段,所以需要指明具体的字段名称intAddUser(stringsqlString)调用处:btnRegister_click事件方法体说明:首先声明一个变量intQQId=0,用来存储增加记录成功后返回的QQ号码通过传过来的sqlString创建command对象向数

8、据库增加一个用户,然后判断女口果count=1,stringsqlFindId=selectIdentityfromUsers,command.CommandText=sqlFindId;QQId=Convert.ToInt16(command.ExecuteScalar();首先加载的时候调用voidSetCboText()从数据库查找出数据给下拉框赋值,再调用boolIsValidate()判断用户是否输入,获取录入的值,并根据是否选择星座和血型构造不同的sQl语句,StringGetSqlString(),intAddUser(stringsqlString),增加成功后返回一个QQ号3

9、、MainForm(主界面窗体)界面::1、2、3、添加背景图片一个PictureBox:picFace一个label:lblQQId(设置字体颜色和大小)一个ToolStrip:tsOperation设置为下方,添加背景图片,添加五个工具条按钮分别是(设置Name,Text,image属性即可)“(tsbtnPersonInfo)个人信息”、“(tsbtnFindFriend)查找好友”、“(tsbtnUpdateFriendList)更新好友列表”、“(tsbtnMessageReading)系统消息”“(tsbtnExit)退出”五项功能,4、5、使用image属性(不是BackGrou

10、ndImage)添加图片两个ImageList:ilMessages,ilFaces分别向图像列表中添加图片将ilMessages的图像大小设为40,40将imFaces的图像大小设为24,24一个SideBar:sbFriends首先将第三方控件加到工具箱中(步骤:单击右键T“选择项”9“浏览”T选择“SideBar.dll”然后在代码中引入命名空间:usingAptech.UI(使用声音的命名空间:System.Media)最后将SideBar控件拖到MainForm窗体上,并取名为:sbFriends设置属性:BackColor-TAliceBlue,GroupHeaderBackCol

11、or-LightSkyBlueItemTextColor-TNavyView-9LargeIcon,一、亠、,ContextMenuStrip-TcmsFriendList(绑定上下文菜单)ImageList-9ilFaces(绑定头像图片框)6、三个Timer:tmrMessage,(喇叭闪烁)tmrAddFriend,(头像闪烁)tmrChatRequest在属性面板中将tmrMessage的Enabled设为true,Inteval设为2000其他两个都分别设为false和5007、一个ContextMenuStrip:cmsFriendList三个ToolStripMenuItem:(

12、tsmiView)显示小图标(tsmiAddFriens)添加好友(tsmiDelete)删除功能实现:I声明四个成员变量:一、intmessageImageIndex=0;工具栏中图标的索引intfromUserId=0;发送人的QQintfriendFaceId=0;发送人的头像Id;stringfriendNickName=;发送人的昵称;十五个事件:1. MainForm_Load(窗体加载事件)ShowPersonInfo();sbFriends.AddGroup(“我的好友)ShowFriendList();2. sbFriendsItemDoubleClick(双击组件中好友或陌

13、生人头像触发此事件).if(tmrChatRequest.Enabled=true)tmrChatRequest.Stop();e.Item.ImageIndex=this.friendFaceId;ChatFormchatForm=newChatForm();chatForm.faceId=e.Item.ImageIndex;chatForm.friendId=Convert.ToInt32(e.Item.Tag);chatForm.nickName=e.Item.Text;chatForm.Show();3. cmsFriendList_Opening(打开上下文菜单事件)if(sbFri

14、ends.SeletedItem!=null)tsmiDelete.Visible=true;elsetsmiDelete.Visible=false;if(sbFriends.SeletedItem!=null&sbFriends.SeletedItem.Parent=sbFriends.Groups1)tsmiAddFriend.Visible=true;elsetsmiAddFriend.Visible=false;4、sbFriends_VisibleGroupChanged(可见组发生改变时事件)SoundPlayerplayer=newSoundPlayer(folder.wav)

15、;player.Play();5、MainForm_FormClosing(关闭窗体事件)Application.Exit();6、tsbtnPersonInfo_Click,tsbtnFindFriend_Click,tsbtnMessageReading_Click分别打开对应的窗体其中tsbtnMessageReading_Click事件中tmrAddFriend.Stop();图片恢复正常宀tsbtnMessageReading.Image=ilMessages.Imagesl;然后苒打开RequestForm窗体7、tsmiView_Click(单击上下文菜.单中“显示小、图像”选项

16、事件)(略)tgmiAddFriend_Ciick(单击上下文菜单中“添加好友”选项事件)声明intfriendld=Convert.ToInt32(sbFriends.SeletedItem.Tag);SQL语句:string.Format(insertintofriendsvaiues(0,1),UserHeiper.qqld,friendld);女如果resuit=1sbFriends.SeietedItem.Parent.Items.Remove(sbFriends.SeietedItem);ShowFriendList()tsmiDeiete_Ciick(单击上下文菜单中“删除”选项

17、事件)if(sbFriends.SeietedItem.Parent=sbFriends.Groups1)sbFriends.SeietedItem.Parent.Items.Remove(sbFriends.SeietedItem);eiseSQL语句:string.Format(deietefromfriendswherehostId=0andfriendId=1,UserHeiper.qqId,sbFriends.SeietedItem.Tag);如果resuit=1sbFriends.SeietedItem.Parent.Items.Remove(sbFriends.SeietedIt

18、em);ShowFriendList()messageImageIndex=messageImageIndex=0?1:0;tsbtnMessageReading.Image=iiMessages.ImagesmessageImageIndex;tmrChatRequest_Tick(喇叭闪烁定时器)for(inti=0;i2;i+)for(intj=0;jsbFriends.Groupsi.Items.Count;j+)if(Convert.ToInt16(sbFriends.Groupsi.Itemsj.Tag)=this.fromUserId)if(sbFriends.Groupsi.I

19、temsj.ImageIndex100)sbFriends.Groupsi.Itemsj.ImageIndex=100;eisesbFriends.Groupsi.Itemsj.ImageIndex=this.friendFaceId;sbFriends.Invaiidate();tmrMessage_Tick(定时扫描message表信息)8、tmrAddFriend_Tick(喇叭闪烁定时器)ShowFriendList(),/第一步:从Messages表格中查询出发送人ID,消息类型,消息状态SQL语句:string.Format(seiecttop1fromUserld,message

20、Typeld,messageStatefrommessageswhereToUserld=0andmessageState=0,UserHeiper.qqId);/第二步:根据消息类型分两种情况判断:if(messageTypeId=2&messageState=0)SoundPiayerpiayer=newSoundPiayer(system.wav);piayer.Piay();tmrAddFriend.Start();eiseif(messageTypeId=1&messageState=0)SQL语句:string.Format(seiectfaceld,nickNamefromuse

21、rswhereid=0,this.fromUserld);得到好友的头像Id和昵称并赋给全局变量friendFaceld,friendNicknameif(!(HasShowUser(fromUserId)UpdateStranger();添加声音,启动头像闪烁定时器四个方法:VoidShowPersonInfo()用途:显示登录者的QQ号码,昵称,头像使用处:MainForm_Load事件中方法体说明:Sqi语句:(selectnickName,faceldfromuserswhereid=0,UserHeiper.QQId)this.Text=QQId.ToString();this.pi

22、cFace.Image=iiFaces.ImagesfaceId;this.ibiQQId.Text=string.Format(0(1),nickName,QQId);VoidShowFriendList()用途:显示好友列表使用处:MainForm_Load事件中、方法体说明:sbFriends.Groups0.Items.Ciear();Sqi语句:string.Format(seiectfriendld,nickName,faceldfromfriends,userswherefriends.hostId=0andfriends.friendId=users.id,UserHeiper

23、.qqId);whiie(dataReader.Read()SbItemsbItem=newSbItem(string)dataReadernickName,(int)dataReaderfaceId);sbItem.Tag=(int)dataReaderfriendId;sbFriends.Groups0.Items.Add(sbItem);VoidHasShowUser(intfromUserId)用途:判断发送人是否在列表中存在,不需关联数据库使用处:tmrMessage_Tick事件中eiseif(messageTypeId=1&messageState=0).if()方法体说明:bo

24、oifind=faise;for(inti=0;i2;i+)for(intj=0;jsbFriends.Groupsi.Items.Count;j+)if(Convert.ToInt16(sbFriends.Groupsi.Itemsj.Tag)=fromUserId)find=true;returnfind;VoidUpdateStranger()用途:将发送人添加到陌生人列表中,不需关联数据库使用处:tmrMessage_Tick事件中if(!(HasShowUser(fromUserId)UpdateStranger();方法体说明:SbItemsbItem=newSbItem(this

25、.friendNickName,this.friendFaceId);sbItem.Tag=this.fromUserId;sbFriends.Groups1.Items.Add(sbItem);4、EditPersonInfoForm(编辑个人信息窗体)界面:I两个panel:pnlDetails/pnlSecurity五个PicBox:picDetails/picSecurity/picHeadl/picHead2/picFace三个button:btnShowFaces/btnOk/btnCannel两个group:grpPwd/grpFriendPolicy五个事件:宀、1.EditP

26、ersonInfoForm_Load(窗体加载事件)两个imageList:ilFace/illinkpnlDetails.Visible=true;pnlSecurity.Visible=false;picDetails.Image=ilLink.Imagesl;picSecurity.Image=ilLink.Images2;声明变量用来存储从数据库中查询出来的各个值SQL语句:select*fromuserswhereid=UserHelper.Qqid在给变量赋值时,注意数据库中允许为空的三个字段(name,starId,bloodTypeId)需要判断:if(!(dataReader

27、nameisDBNull)name=Convert.ToString(dataReadername);将变量的值绑定到各个控件时注意两个下拉框的绑定和头像图片的显示调用SetCboText(intstarId,intbloodTypeId)设定下拉框的值,先全部查询出数据后,最后加上cboStar.SelectedValue=starId;/根据faceId设置头像框的头像并将此值保存到UserHelper类中以备后用picFace.Image=ilFaces.ImagesfaceId;UserHelper.faceId=faceId;2. picSecurity_Click(点击安全设置事件

28、)pnlSecurity.Location=pnlDetails.Location;pnlSecurity.Visible=true;pnlDetails.Visible=false;picSecurity.Image=ilLink.Images3;picDetails.Image=ilLink.Images0;3、picDetails_Click(点击基本设置事件)pnlDetails.Visible=true;pnlSecurity.Visible=false;picDetails.Image=ilLink.Images1;picSecurity.Image=ilLink.Images24

29、、btnShowFace_MouseClick(鼠标单击小按钮时触发)/比较特别,只有这样才可以显示选中的头像,直接在FacesForm中创建EditPersonInfoForm对象调用ShowFace()显示不了头像FacesFormfacesForm=newFacesForm();facesForm.editPersonInfoForm=this;为什么要这样做?facesForm.Show();5、btnOk_Click(确定修改个人信息事件)步骤一、声明变量存储控件上修改后的数据特别要注意FaceId的值和PWD的取值faceId的值如果用户重新选择了头像,那么头像Id赋给了picFa

30、ce.Tag所以faceId=picFace.Tag,如果没有重选,则picFace.Tag=null,那B么faceId=UserHelper.faceIdif(picFace.Tag=null)faceId=UserHelper.faceId;elsefaceId=(int)picFace.Tag;Pwd的值:需要判断,因为用户有可能没有修改密码,也有可能修改了密码stringpwd=”if(!GetPwd(refpwd)return;步骤二、SQL语句:string.Format(updateuserssetLoginPwd=0,friendShipPolicyId=1,nickName

31、=2,FaceId=3,sex=4,age=5,name=6,starId=7,bloodTypeId=8whereid=9,pwd,friendShipPolicyId,nickName,faceId,sex,age,name,starId,bloodTypeId,serHelper.qqId);步骤三、修改数据库里面的数据。注意将if(count=1)MessageBox.Show(“服务器已接受你的请求”)放在trycatchfinally语句的夕F面三个方法:1. voidSetCboText(stringsex,intstarId,intbloodTypeId)用途:设置下拉框的值调

32、用处:EditPersonInfoForm_Load事件方法体:(略)2. boolGetPwd(refstringpwd)if(txtNewPwd.Text.Trim()=)pwd=UserHelper.pwd;returntrue;若修改了密码,直接从文本框中获取新密码的值else因因为用户没有修为密码读方式接从以不能直接获取取只密码的值田曲闷去取值if(txtNewPwdAgain.Text.Trim()!=txtNewPwd.Text.Trim()MessageBox.Show(”确认密码与原密码不一致,请重新输入”);returnfalse;elsepwd=txtNewPwd.Tex

33、t.Trim();returntrue;3、voidshowFace(intcurrentFaceId)用途:显示QQ头像调用处:、FaceForm窗体的确定事件和双击头像项事件中方法体说明:picFace.Image=ilFaces.ImagescurrentFaceId;picFace.Tag=currentFaceld;5、SearchFriendForm(查找/添加好友窗体)界面:一个PictureBox:picLogo一个GroupBox:grpNicetySearchCondition(精确查找条件)一个TabControl(选项卡):tabSearch四个Button:btnBa

34、ck,btnAddFriend,btnClose,btnSearch四个Panel:pnlBaseCondition,pnlBaseResult,pnlAdvancedCondition,pnlAdvancedResult两个DataGridView:dgvBaseResult,dgvAdvancedResult界面显示首先在属性面板中将btnSearch,btnClose,pnlBaseCondition,pnlAdvancedCondition的visible设为true,其他都设为false功能模块:两个全局变量:DataTableuserTable=newDataTble(),SqlD

35、ataAdapterdataAdapter;六个事件:1、SearchFriendForm_Load(窗体加载事件)SQL语句selectid,nickName,age,sexfromusers;dataAdapter=newSqlDataAdapter(sqlString,DBHelper.connection);dataAdapter.Fill(usersTable);dgvBasicResult.DataSource=usersTable;dgvAdvancedResult.DataSource=usersTable;2、btnBack_Click(返回查询条件面板事件)pnlBaseC

36、ondition.Visible=true;pnlBaseResult.Visible=false;btnBack.Visible=false;btnAdd.Visible=false;pnlAdvancedCondition.Visible=true;pnlAdvancedResult.Visible=false;3、btnSearch_Click(返回查询结果面板事件)if(tabControl1.SelectedIndex=0)BaseSearch();elseAdvancedSearch();4、rdoNicetySearch_CheckedChanged(选择精确查询单选按钮事件)i

37、f(rdoNicetySearch.Checked=true)grpNicetySearchCondition.Visible=true;elsegrpNicetySearchCondition.Visible=false;5、tabControll_SelectedIndexChanged(切换选项卡事件)pnlAdvancedResult.Visible=false;pnlBaseResult.Visible=false;btnAdd.Visible=false;btnBack.Visible=false;6、btnAdd_Click(加为好友按钮事件)、思路:首先判断如果没有选择,选择自

38、己本身,选择的已在好友列表直接return,然后根据好友ID、返回取得对方的好友策略,再进行判断,=3,直接return;=2,向Messages发送一条记录;=1,向Friends发送一条记录intfriendId=GetFriendId();if(friendId=-1)returnelseif(friendId=UserHelper.QQid)returnelseif(HasAdded(friendId)returnintfriendPolicyId=GetFriendPolicy(friendId);if(friendPolicyId=3)elseif(friendPolicyId=2

39、)(intresult=SendRequest(friendld);if(result=1)MessageBox.Show(皮加为好友,已发送消息);elseMessageBox.Show(添加失败,请稍候再试);elseintresult=AddFriend(friendld);if(result=1)MessageBox.Show(”添加成功,请刷新好友列表);elseMessageBox.Show(添加失败,请稍候再试);七个方法:1、voidBaseSearch()用途:基本查询调用处:btnSearch_Click事件方法体说明:SQL语句:selectid,nickName,sex

40、,agefromuserswhere1=1;if(rdoNicetySearch.Checked=true)if(两个文本框都为)returnif(txtLoginId.text!=null)sql+=andid=0if(txtNickName!=null)sql+=andnickNamelike%0%dataAdapter.SelectCommand.CommandText=sqlString;usersTable.Clear();dataAdapter.Fill(usersTable);dgvBasicResult.DataSource=usersTable;nlBaseResult.Lo

41、cation=pnlBaseCondition.Location;pnlBaseResult.Visible=true;btnBack.Visible=true;btnAdd.Visible=true;2、voidAdvancedSearch()用途:高级查询调用处:btnSearch_Click事件方法体说明:stringageCondition=;SQL语句:selectid,nickName,sex,agefromuserswhere1=1;if(两者都为空)returnelseif(年龄!=null)swith(cboAge.Text.Trim()case:重新给sql语句赋值If(性

42、别!=null)与上类似oo类同基本查询3、intGetFriendId()用途:获取想要添加为好友的Id调用处:btnAdd_Click事件方法体说明:intfriendId=-1;if(tabControl1.SelectedIndex=0)if(dgvBasicResult.SelectedRows.Count=0)friendId=-1;elseif(dgvBasicResult.SelectedRows0.Cells0!=null)friendId=Convert.ToInt32(dgvBasicResult.SelectedRows0.Cells0.Value.ToString()

43、;else如果选项卡为14、boolHasAdded(intfriendId)用途:判断是否已在数据库friends表调用处:btnAdd_Click事件方法体说明:声明boolisExistSQL语句string.Format(selectcount(*)fromfriendswherehostId=0andfriendId=l,UserHelper.qqId,friendId);5、intGetFriendPolicy(intfriendId)用途:获取好友策略调用处:btnAdd_Click事件方法体说明:SQL语句selectfriendShipPolicyIdfromuserswhe

44、reid=+friendId;6、intSendRequest(intfriendId)用途:发送添加好友的消息调用处:btnAdd_Click事件方法体说明:SQL语句string.Format(insertintomessages(fromUserId,ToUserId,MessageTypeId,MessageState)values(0,l,2,3),UserHelper.qqId,friendId,2,0);7、intAddFriend(intfriendId)用途:增加好友调用处:btnAdd_Click事件方法体说明:SQL语句:string.Format(insertintof

45、riendsvalues(0,1),UserHelper.qqId,friendId);6、选择头像窗体界面:一个ListView:lvFaces一个ImagesList:ilFaces功能模块:I三个事件:1、FacesForm_Load(窗体加载事件)for(inti=0;i1)setMessageReaded(messageIdsString);2、setMessageReaded(stringmessageIdsString)用途:更改已读信息的状态调用处:ChatForm_Load事件方法体说明:stringmessageIds=messageIdsString.Split(_);t

46、rystringsqlString=updatemessagessetmessageState=1whereid=;stringupdateString=;SqlCommandcommand=newSqlCommand();,/创建command对象command.Connection=DBHelper.connection;/指定数据库连接DBHelper.connection.Open();foreach(stringidinmessageIds)updateString=sqlString+id;command.CommandText=updateString;command.Execu

47、teNonQuery();if(id!=null&id!=)11、Timer控件的使用三个Timer:tmrAddFriend(喇叭闪烁定时器)先声明messageimageindex=0;tmrChatRequest(头像闪烁定时器,找到发消息的好友的位置,并使头像不停的闪烁sbFriends.Invalidate()tmrMessage(定时扫描数据库中Messages表,扫描未读消息(如果“添加好友消息(2)”控制喇叭闪烁),如果消息为“普通消息(1)”控制头像闪烁)定时扫描Messages表,(将Enabled属性设为true,即窗体一加载就启动)首先从数据库中Messages表查询出

48、发出消息的发送人,消息类型,消息状态0代表未读)(条件:ToUserId=DBHelper.loginId,MessageState=0)根据消息类型分两大块判断类型为2启动tmrAddFriend定时器类型为1启动tmrChatRequest定时器流程:如果是聊天消息还得从Users表查询出发送人的FaceId,nickName(条件:id=this.fromUserId)为什么要查询出这两个数据呢?在将发送人增加到陌生人栏中需要nickName,在tmrChatRequest()定时器中需要faceId的值再判断发消息的人如果不在当前列表中,(HasShowUser()进行判断)重新添加到

49、陌生人列表中(UpdateStranger()最后启动头像闪烁定时器12、往messages表中添加消息的两个地方?第一个地方:点击工具栏下方的查询/添加好友按钮,弹出待选QQ用户,选定一个后(根据选定项得到friendId,再根据friendId得到friendShipPolicyId)根据好友策略进行判断,对方的好友策略若为2,此时就要向messages添加一条添加好友的消息第二个地方:在主窗体的sbFriends_ItemDoubleClick事件中弹出ChatForm窗体,在ChatForm窗体中点击发送时,此时就要向message添加一条聊天的消息13、为了自动刷新好友列表,可以在扫

50、描信息定时器事件中刚开始部分就加上ShowUserList();14、发送消息比较简单,在btnSend_click事件中写一条SQL语句注意messages表中fromUserId=DBHelper.QQId,ToUserId=this.friendId15、显示所有未读的聊天消息,如果存在消息,同时将已读信息状态更改为1比较麻烦一点,在sbFriends_ItemDoubleClick事件中调用ShowMessages()方法写一条SQL语句,根据fromUserId=this.friendId,ToUserId=DBHelper.QQId,messageType=1,messageSta

51、te=0,查找出信息Id,message,messageTime注意点:要将查找出来的消息ID通过一个_连成一个字符串,然后判断这个字符串的长度如果大于1,(表示有未读信息存在)调用setMessageReaded(stringmessageIdsString,charseparator)将显示出来的信息在数据库里更改为1在setMessageReaded()方法中首先将字符串通过分割放进一个字符串数组中,然后遍历数组每取出一个ID,重新更改sql语句的条件部分,并重新执行SQL语句修改messages表中的状态为116、上下文菜单界面:一个contextMenuStrip:cmsFriend

52、List此菜单共添加三个项:大小头像(tsmiView),添加为好友(tsmiAddFriend)删除(tsmiDelete)功能:在cmsFriendList_Opening事件(右击打开上下文菜单时)中设置哪些菜单可见或不可见第一种情况:如果sbFriend.SelectedItem不为空,就设置tsmiDelete.visible=true;否则为false第二种情况:(即选中的是陌生人)sbFriend.SelectedItem不为空并且sbFriend.selectedItem.parent=sbFriends.Groupsl就设置tsmiAddFriend=true,否则为fals

53、e1、大小头像的切换(在tsmiView_click事件)首先将sbFriend的view属性的LargeIcon设为true2、添加为好友(在tsmiAddFriend_click事件)添加好友即向messages表中添加一条记录,如果添加成功,从陌生人栏中直接去掉已添加为好友的QQ号码(sbFriends.selectedItem.parent.Items.remove(sbFriends.selectedItem),并同时调用showFriendList()刷新好友列表3、删除(在tsmiDelete_click事件)分两种情况判断:第一、删除的是陌生人栏的QQ,直接在界面去掉即可,不需要创建SQL语句从数据库中去删除。第二、如果是从好友栏中删除,因为此QQ已经在数据库中存在,所以就得构建SQL语句从数据库中的Friends表中去删除,并同时调用showFriendList()刷新列表

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!