中国学术界和华人影视界X度空间理论初探(6)
时间:2017-06-19 21:55 来源:毕业论文 作者:毕业论文 点击:次
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) |