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和HTML5的企业门户...

基于Android的手机找回APP设计和实现

基于433MHz的智能家居系统设计硬件和驱动层

C#中国象棋游戏的设计与实现

php企业人事管理系统的设计和实现

jsp+mysql物业管理系统的设计和ER图

PHPStudy天气预报软件的设计和实现

压疮高危人群的标准化中...

AES算法GPU协处理下分组加...

上海居民的社会参与研究

酵母菌发酵生产天然香料...

从政策角度谈黑龙江對俄...

基于Joomla平台的计算机学院网站设计与开发

STC89C52单片机NRF24L01的无线病房呼叫系统设计

提高教育质量,构建大學生...

浅谈高校行政管理人员的...

浅论职工思想政治工作茬...