中国学术界和华人影视界X度空间理论初探(6)_毕业论文

毕业论文移动版

毕业论文 > 计算机论文 >

中国学术界和华人影视界X度空间理论初探(6)


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指针可以指向更多的有效信息,以便扩展。 (责任编辑:qin)