第 4 章 概要设计和详细设计 本章将论述软件系统的面向对象设计过程。用Visual C++语言在Windows环境下编程实现。 §4.1总体设计概述 采用客户端——服务器模型,使用从MFC类中的CAsyncSocket类的派生类进行实现底层通讯,底层利用UDP数据报协议进行通讯,这样,便于客户端之间的直接通讯,也可以高效的传送消息。因为使用UDP协议进行通讯,所以要自己控制其可靠性。我每发送一个数据,接受方接受到数据后,会发回一个响应信息,发送方在一个超时时间内,收到响应信息,就表示发送数据成功,若没有收到,就表示发送失败,会按用户指定的次数N,重试N次,如果N次都失败,就返回发送数据失败。当然,发回来的确认信息也可能丢失,但确认信息很短,相对来说,丢失的机率会小一些,是一个折中的办法。 为了保存用户信息和好友信息及一些相关数据,服务器使用到数据库技术。服务器的数据库采用的是ODBC的ACCESS数据源,服务器访问数据库,用的是MFC中的CDatabase和CRecordset,因为,对数据库的操作简单,服务器端,我只要功能,不需做界面,所以使用Sql语句直接访问数据库,已经足够满足要求了。 服务器运行的流程为: 服务器运行后,开启服务,则服务器开始侦听用户请求,如有信息发送过来,首先,发送回确认信息,然后,建立一个线程,处理接受到的数据。在线程里,按照接受到数据的类别,进行相应的处理,如有需要,会向用户发送处理的结果,或成功或失败的消息,处理结束后,线程就结束了。这样,可以实时接受每个用户的请求,不会因为处理一个用户的请求,而忽略了其它用户。 服务器端主要是为用户存储必要的信息,协调用户之间的通讯,服务器端的设计,主要在功能上面。服务器端的设计和底层通讯的方法,将是我讲述的重点。 客户端的运行流程为: 若有本地用户信息,则取出本地用户信息,显示登陆窗口,若没有,则显示用户注册窗口(在登陆窗口里,也可以选择用户注册)。登陆时,可选择是否隐身,进入系统后,好友列表中,在线的人,将以高亮度显示,并处在列表的上头。不在线的人,将以灰色显示。登陆后,如果有的话,服务器会发来好友给你发送的离线消息或广播消息。如果有好友上线了,就会通知你,好友下线了,你也可以在好友列表中看到,你可能接受到别人给你发送的消息,或广播消息等。根据用户的操作,可以向好友发送消息,查看好友信息,查看在线的人,查找用户,发送广播消息等等功能。 客户端主要是提供给用户一个友好的用户界面,方便用户操作,客户端主要负责从服务器上得到数据后,显示给用户。从服务器得到好友的IP和Port后,就可以直接与好友进行通讯,聊天等等。客户端主要是界面的设计(除了底层通讯的以外),根据不同的要求,向服务器发送各种类型的请求。然后等待服务器的响应。客户端的界面的设计很繁琐,没有详细介绍的必要,所以,我的重点,将放在服务器的设计上。客户端只是简要的说明一下。
§4.2服务器数据库的设计:
服务器数据库设计的要求是要能够满足客户端的需求,保存用户信息和用户好友信息,提供离线消息的服务,和发广播消息的服务等。总共有五个表: 用户信息表(Users)好友信息表(Friends)广播消息表(Broadcast)离线广播表(OffBroadcast)离线消息表(OffMsg)
用户信息表(Users) 主键: UserId UserId 自动编号 4字节长整形 Id 用户帐号 4字节长整形 Photoid 用户的图象编号 4字节长整形 password 用户登陆的密码 字符串 name 用户的姓名 字符串 sex 用户的性别 单字节整形 0 男 1 女 2 未知 age 用户的年龄 字符串 (为了适应不愿填写此项的人) canbeadd 能否被人加为好友 //单字节整形 (0,1,2 不能被加入,允许被任何人加入,需要身份验证) email 电子信箱 字符串 homepage 个人主页 字符串 address 地址 字符串 phone 电话  
首页 上一页 1 2 3 4 5 6 7 下一页 尾页 3/17/17