1、首先,我们编写C语言的头文件#include <stdio.h>。
2、然后我们编写Main函数框架。
3、接下来我们定义两个变量,如下图所示。
4、然后我们编写输入的函数,如下图所示。
5、接下来在输入后,我们编写输出程序。
6、这时候,我们便可以观察最终结果。
例子QQ的通信原理
QQ 聊天程序采用的是C/S 通信模式,即客户/服务模式,它把一个应用划分成功能不同的两个部分,分别在不同的计算机上运行,其中一个为服务端程序,用来响应和提供固定的服务,一个为客户端程序,用来向服务端提出请求和要求某种服务。在数量关系上,通常有一对一的(即一个服务端程序和一个客户端程序之间通信),也有一对多的(即一个服务端程序和多个客户端程序之间通信),也有多对多的(即多个服务端程序和多个客户端程序之间通信)。所谓服务端程序、客户端程序也是相对的概念,有时在一个程序中既有服务端又有客户端的功能。QQ 聊天程序分成了两个程序,一个安装在腾讯公司的服务器上,我们称之为服务端程序,一个安装在QQ 用户的计算机上,我们称之为客户端程序。在许多介绍网络通信编程的书籍中有关网络聊天的例子,当一个客户要与另一个客户聊天时,第一个客户先把聊天数据发送给服务器,然后服务器再把聊天数据转发给第二个客户,服务器好像一个中转站,这在客户数量比较少时,服务器还能承受,在客户数量比较多时,服务器肯定要瘫痪。何况客户之间还要传送文件、语音聊天、视频聊天等等,为了减少服务器的压力,各客户端之间需要直接通信。
1。在服务端和客户端之间(一对多)
用于客户端程序登录,验证用户密码,获取其它在线好友信息等等。
2。在客户端和客户端之间(多对多)
用于在线好友间直接通信聊天。此时每个客户端程序上既有实现服务端功能的部分,又有实现客户端功能的部分,前者用于接收聊天数据,后者用于发送聊天数据。
在用C/S 模式进行通信时,作为客户端在请求与服务端连接时需要知道服务端的IP 地址,腾讯公司的服务器具有固定的公网地址,这没有问题。但是在客户端和客户端之间通信时,每个用户的IP 地址都是ISP 所给的临时地址,无法固定,那么某个用户要与另一个用户连接时,怎么知道对方的IP 地址呢?当一个用户连接到Internet 后,获得了一个临时的公网地址,当登录到QQ 时,QQ 服务端会获得该上线用户的IP 地址,然后告知其他要与该上线用户聊天的用户,其他用户就可以连接该用户与之直接通信了。
我写过一次,好多功能都没实现,这是我们老师对我们的要求,你有什么问题,加我qq331074366,我教你数据库设计
数据库名称:MYqq
数据库表信息
(1) 用户表:Users,用来寸放用户的基本信息。安全设置信息
表名 user
主键 ID
列名 数据类型 允许空 说明
Id Int 否 主键,自动增长,标识种子为10000
LoginPwd Varchar(50) 否 用户密码
friendshippolicyid int 否 外键,对应FriendshipPolicy表中的Id,当别人添加自己为好友时,是否同意,需要验证
nickname Vachar(50) 否 用户呢称
faceid int 是 用户头像的索引,使用的imagelist头像列表的索引
sex Varchar(50) 否 性别,两个值:男,女
age int 否 年龄
name Varchar(50) 是 真实姓名
startid int 是 外键,对应star表中的ID表示星座
bloodtypeid int 是 外键,对应boodtype中的id,表示血型
(2) 好友表:friends,用来存放用户之间的好友关系,一对好友关系存为一条记录。
表名 Friends
主键 Id
列名 数据类型 允许空 说明
Id Int 否 主键,自增
Hostid Int 否 好友关系中,主任的号码
FriendId Int 否 好友关系中,好友的号码
(3)好友策略表:FriendshipPolicy ,用来存放几种好友策略。
表名 FriendshipPolicy
主键 Id
列名 数据类型 允许空 说明
Id Int 否 主键,自增,标识种子1
FriendshipPolicy Varchar(50) 否 好友策略的描述
FriendshipPolicy 表中包含3条数据,如图 1 所示。
允许任何人加我为好友
需要验证
不允许
(4)星座表:Star ,存放12星座的名称和编号,是基础数据表,各星座的名称进提供的电子资料。
表名 Star
主键 Id
列名 数据类型 允许空 说明
Id Int 否 主键,自增,标识种子 1
Star Varchar(50) 否 星座名称
(5)血型表:BlooType,存放4中血型的名称和编号,是基础数据表。
表名 BlooType
主键 Id
列名 数据类型 允许空 说明
Id Int 否 主键,自增,标识种子 1
BlooType Varchar(50) 否 血型名称
(6)消息表:Messages,存放聊天信息、添加好友请求纤细。
表名 Messages
主键 Id
列名 数据类型 允许空 说明
Id Int 否 主键,自增,表识种子 1
FromUserId Int 否 发消息的用户号码
ToUserId Int 否 收消息的用户号码
Messages Varchar(50) 是 消息内容
MessageType Int 否 外键,对应 MessafeType表中的Id。表示消息类型
MessageState Int 否 消息状态,0表示未读,1表示已读
MessageTime dateTime 否 消息发送的时间,插入数据是,由数据库自动生成
(7)消息类型表:messagetype,存放消息的类型描述和编号。
表名 messagetype
主键 Id
列名 数据类型 允许空 说明
Id Int 否 主键,自增,标识种子 1
MessageType Varchar(50) 否 消息类型
Messagetype 表包含2条数据,如图所示
Id messagetype
1 普通聊天消息
2 添加好友消息
三、要求
利用winform编程,实现myqq聊天工具。要求实现用户注册,用户登录,好友列表,修改个人信息,查找/添加好友,聊天功能,该工具是c/s结构,客户端通过公共的数据库交换信息,消息的发送和读取都是通过 *** 作数据库来完成的。在程序中采用定时扫描数据库的方式来查找未读消息。
1.“注册”窗口界面如下图所示。输入注册的基本资料,向数据库插入一条用户记录,在数据库中自动生成一个新的myqq号码(users表的id 字段),以消息框的形式告诉用户他申请成功的myqq号码。
2.“登陆”窗口界面如下图所示。单击“申请号码”标签,打开注册界面。在登陆界面输入myqq号码和密码后,单击‘登陆‘按纽,打开登陆后的主界面’忘记密码功能不要求实现,只要放置一个带链接的标签控键即可。
3登陆后的主界面如下图所示。登陆后要在“我的好友”列表中显示好友列表,包括好友的头像和呢称,在主窗体的顶部要显示当前登陆的用户头像,呢称和myqq号码。
实现右键菜单功能,通过右键菜单能够切换大小头像。能够把陌生人转为好友,能够删除一个好友或陌生人。
当有新的聊天消息时候。发来的消息的好友头像要闪动,双击头像d出“聊天”窗口后,头像停止闪动,当有添加好友请求消息时,窗体底部的小喇叭要闪烁,单击喇叭d出“系统消息”窗体后,喇叭停止闪烁。
通过主窗体下方的按纽打开“查找/添加好友”窗体,“个人信息”窗口,“系统消息”窗口
提示:
显示好友列表的控键可以用提供的第三方控键sidebar,见提示的电子资料,该控键的命名空间为Aptech.ui。
Sidebar是一个能够以分组形式显示列表的控件,能够实现类似QQ的好友分组功能,sidebar控键中可以包含很多组(sbgroup),每个组可以包含很多sidebar项(sbitem)。
Sidebar的列表项有两种显示方式:大图标和小图标,它可以通过它的view属性来设置。
Sidebar 控件还有一个imagelist 属性,可以和一个imagelist控件关联,列表项中显示的
图片就是存放在imagelist控件中的图片。可以通过Sidebar项(sbitem)的imageindex
来指定图片在imagelist控件中的索引。
代码提示:
//添加Sidebar的两个组
Sbfriends.addgroup(“我的好友”);
Sbfriends.addgroup(陌生人);
//创建一个Sidebar项,指定显示的文本和图片索引
Sbitem item = new SbItem((string)dataReadwr[“NickName”],(int)dataReader[“FaceId”])
//向“我的好友“组中添加一项
sbFriends.Group[0].Item.Add(item)
4.“查找/添加好友”窗体界面如下图所示。
点击“查找”后结果如下图所示:
单击“上一步”则回到“基本查找”页面。
点击“精确查找”,如下图所示:
输入帐号或呢称,点击“查找”可以显示查询结果。
“高级查找”界面如下图所示:
*** 作方法同基本查找类似。
单击“查找”按纽后在窗体中显示查询结果。要求以datagridview 控键显示查找的结果。选中一个用户,单击“加为好友”按纽,进行添加好友的 *** 作,并根据不同的情况d出消息对话框,告知用户如“添加好友请求成功”,“对方不让任何人添加他为好友“,“对方需要身份验证,已发出验证请求”等。如果需要身份验证,不要求输入验证消息内容,直接发送验证消息即可。
5“聊天”窗口界面如图13 所示。当有消息来时。主窗体中的好有头像闪烁,双击头像,d出“聊天”窗口,在“聊天”窗口中显示好友为读消息。并能够给好友发送消息。
6“个人信息”窗口界面如下图所示,在“个人信息”窗口能够修改个人的基本资料,进行安全设置。单击头像旁边的按纽,d出“头像选择“窗口。
7“头像选择”窗体界面,头像列表要求使用listview 控键实现。双击窗口中头像或者单击“确定”按纽,更新“个人信息”窗口中的头像。
8“系统消息”窗口界面如QQ。单击主窗体低部的喇叭按纽,d出“系统消息”窗口,显示向用户发送的未读的添加好友请求消息。单击“同意”按纽,实现对方添加当前用户为好友的 *** 作。
四、推荐实现步骤
1. 建立数据库,数据表,建立表的关系。
2. 建立myqq项目
(1) 实现注册功能
(2) 实现登陆功能
(3) 实现查找/添加好友功能
(4) 实现好友列表功能
(5) 实现聊天功能
(6) 实现修改个人信息功能
3. 测试运行
一. 注意事项
A. 仔细审题,把题目要求理解准确;
B. 请注意按照界面设计要求来进行界面设计
C. 请注意代码的书写,命名符合规范和适当的注释;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)