3.2 数据库设计
 
图3.2.1  数据库设计图
系统初始时只有,movie和paper两张表,其余四张表均为自动生成。Movie和paper两张表是从网上搜集来的最原始的信息,包含了论文名和作者名单,电影名和演员名单,其中作者名单和演员名单的每个名字又逗号隔开,以方便程序对数据的分离。具体的表的字段和内容如下图所示。
 
图 3.2.2 论文及作者信息paper
 
图 3.2.3学者信息表author
 
图 3.2.4 学者与论文关系表mip
该表通过将paper表,将论文和学者一一对应起来,该表可以用于快速查询学者的发表的所有作品信息。
娱乐圈的数据库设计与上述同理。
 
图 3.2.5 电影及演员信息表movie
 
图 3.2.6 演员信息表actor
 
图 3.2.7 电影与演员关系表aim
3.3  程序详细设计
3.3.1 Graph类的构造
    节点类型:
typedef struct  
{
    VertexType name;  /* 存放节点名字*/
    int belongto;    /* 存放节点所归属的子图*/
}Vertex;    
    边类型:
typedef struct
{
    VRType adj; /* 顶点关系类型,权值*/
    InfoType *info; /* 该边相关信息的指针(可无) */
    int belongto; /* 边所属子图 */
}ArcCell,AdjLine[MAX_VERTEX_NUM]; /* 边类型 */
typedef AdjLine *AdjMatrix;
    图类型:
class Graph
public:
    Vertex vex[MAX_VERTEX_NUM];    //作者或演员名字
    CString record[MAX_VERTEX_NUM];   //文章或电影名称
    CString names[MAX_VERTEX_NUM];   //用于存分离前的姓名字段
    AdjMatrix  arcs;                    /* 邻接矩阵*/
    int vexnum,arcnum,recordnum,SGnum; /* 图的当前顶点数、弧数、连通子图个数*/
    int SGvexnum[MAX_VERTEX_NUM];        /*存放子图节点数*/

    重要函数:
函数Status LoadFromDb();//从数据库中加载数据并生成图
int LocateVex(CString u);//获得节点位置
void ShortestPath_FLOYD(PathMatrix *P,DistancMatrix *D);//普通模型下floyd算法实现
void ShortestPath_FLOYD_MIST(PathMatrix *P,DistancMatrix *D);//密集度模型下floyd算法实现
void LoadFromrecord(void);//从初始表中生成新表
void ShortestPath_DIJ(int v0,PROW *P,DROW *D);
void Yule_Load(); //加载娱乐圈数据
void DFSTraverse();  //图的深度优先遍历
以上为Graph类的结构,包括节点数组vex,边数组arcs,节点数vexnum,边数arcnum,子图个数SGnum,子图节点数SGvexnum等运算所需的基本数据。由于在时间和数据的限制,节点类型只包含了name和id的基本信息,但是为arcs边类型预留了Info指针可以指向更多的有效信息,以便扩展。
上一篇:基于Kinect的人体运动姿态捕捉和识别技术研究
下一篇:社会标签系统挖掘研究中文博客标签及标签云图的自动生成研究

论利用ebXML和SOAP开发Web服务【2352字】

电子政务环境下公务员的...

用VB实现聊天讨论室和点對点會话【671字】

提高实时操作系统的实时...

嵌入式数据库典型技术―...

联结主义的连续记分IRT模...

使用http协议和winsockapi实现...

10万元能开儿童乐园吗,我...

国内外图像分割技术研究现状

AT89C52单片机的超声波测距...

医院财务风险因素分析及管理措施【2367字】

神经外科重症监护病房患...

C#学校科研管理系统的设计

承德市事业单位档案管理...

志愿者活动的调查问卷表

公寓空调设计任务书

中国学术生态细节考察《...