您的位置:首页 >> 编程开发 >> Visual C++ >> 数据库操作 >> 正文
RSS
 

典型网络数据库系统软件设计

http://www.rdxx.com 05年07月20日 14:20 VC知识库 我要投稿

典型网络数据库系统软件设计

作者:∑阿强

下载源代码

一、概述

  1. 本系统为内部系统,帐户由管理员添加、管理;
  2. 分为两个组,User组和Boss组。Boss组的帐户可以发广播通知;
  3. 任意两个用户间可以互相通信;
  4. 数据库接口用DAO,网络通信用 CSocket+CSocketFile;

二、详细设计

1、数据库设计

本系统只是一个消息通信模型,这里的数据库设计比较简单。

ER图:


 

把ER模型转为关系模型,共两个表:

User (No , Name ,Password ,G#) 候选键:No 外键:G#Group (G# , GroupName ,Demo ) 主键 :G#

2、消息格式设计

<1>、传送的消息共有5类------登录消息,验证返回消息,普通消息,用户列表消息,通知消息。定义一个枚举类型:

enum MSGTYPE {LOGIN , LOGINResponse , CHATTING , USERList , NOTICE};

<2>、定义消息类

class CMsg : public CObject  {public:     int m_eType;   //枚举类型,记录消息类型     CString m_strMsg;   //消息     CMsg();     virtual ~CMsg();     void Serialize(CArchive &ar);  //消息类系列化函数,发送和接受消息时用。};      
<3>、m_strMsg 为消息类中存放消息的成员,它的具体格式随着消息类型m_eType不同而不同。
 

m_eType

m_strMsg

LOGIN

呢称|密码

LOGINResponse

GOOD|欢迎!(BOSS) 或 FAILED|验证失败!

CHATTING

发给(来自)的用户名|消息内容

USERList

呢称1|呢称2|…|呢称n|END

NOTICE

ALL|消息内容 或 来自的用户|消息内容

m_strMsg中个内容用“|”隔开,用函数Decode(int n,CString strMsg) 获的相应的内容。

CString Decode(int n,CString strMsg){          int pos;          CString str;          for(int i=1;i<=n;i++)          {              pos=strMsg.Find ("|",0);              if(pos<0)                        str=strMsg;                 else                     str=strMsg.Left (pos);              strMsg=strMsg.Right(strMsg.GetLength ()-pos-1);          }          return str;}      
<4>、消息发送接收的序列化函数
void CMsg::Serialize (CArchive &ar){     if(ar.IsStoring())     {          ar<<m_strMsg<<m_eType;     }     else     {          ar>>m_strMsg>>m_eType;     }}      
3、通信协议设计
  • 验证。客户端发送LOGIN消息,服务器回应 LOGINResponse消息;
  • 通信。客户端发送CHATTING 或 NOTICE 消息,服务器端根据接收到的消息,发送CHATTING,NOTICE或 USERList 消息。

4、服务器设计

<1>、建立工程

  • ①、用MFC AppWizard(exe) 新建一个“单个文档”的工程;
  • ②、在Step 2 of 6中,选 “查看数据库不使用文件支持”,点击“Data Source..”按钮,然后在弹出的对话框中选 “DAO”类型,再浏览选择数据库文件Data.mdb. 按确定,再在弹出的窗口选User表;
  • ③、点击Next到Step 4 of 6,选“windows Sockets”。网络功能支持;
  • ④、按“NEXT“,最后点击 “完成”;
<2>、在CSuperServerView中添加下列成员:
	int m_iPort;//服务器端口	CSocketListen * m_pSocket;  //监听套接字。	CSocketClient m_SocketClient[Max];   //跟客户端通信的套接字。	CArchive * m_pArOut;  //发送消息时的序列化文档对象指针。	CArchive * m_pArIn;   //接收消息时的序列化化文档对象指针。	CSocketFile * m_pSF;   //套接字文件对象指针。	CMsg msg;//消息类对象	CString Decode(int n,CString strMsg);  //消息的解码函数	void SendUserList();	bool CheckLogin(CSocketClient *pClient);	void MyReceive(CSocketClient *pClient);	void MyClose(CSocketClient *pClient);	void MyAccept();      
上一页 下一页

 
 
标签: 数据库系统 , 软件设计 , 网络 , 数据 , 设计 , 系统 , 软件 打印本文
 
 
  热点搜索
 
 
 



Valid XHTML 1.0 Transitional
Copyright ©2005 - 2008 Rdxx.Com,All Rights Reserved
收藏本页
收藏本站