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的人体运动姿态捕捉和识别技术研究
- 下一篇:社会标签系统挖掘研究中文博客标签及标签云图的自动生成研究
-
-
-
-
-
-
-
java+mysql车辆管理系统的设计+源代码
乳业同业并购式全产业链...
当代大学生慈善意识研究+文献综述
杂拟谷盗体内共生菌沃尔...
河岸冲刷和泥沙淤积的监测国内外研究现状
中考体育项目与体育教学合理结合的研究
酸性水汽提装置总汽提塔设计+CAD图纸
电站锅炉暖风器设计任务书
大众媒体对公共政策制定的影响
十二层带中心支撑钢结构...