软件工程第五次实验

来源:互联网 发布:网络借贷陷阱 编辑:程序博客网 时间:2024/06/04 23:38

一、实验目的

        给Linktable增加Callback方式的接口;

        进一步改进Linktable的Callback方式的接口;

        用callback函数实现的多态浅析;

        信息隐藏。

二、实验要求和内容

     给lab5-1.tar.gz(在实验楼Linux虚拟机环境下~/se_files/目录下)找bug,quit命令无法运行的bug;

         将lab5-1.tar.gz中的代码(即解压后lab5.1/目录下的源文件)直接放到Code/shiyanlou_cs122/lab5/目录下继续完成后面的实验内容;

         利用callback函数参数使Linktable的查询接口更加通用;

         注意接口的信息隐藏。

三、主要的程序代码段

         1.quit命令的Bug解决

        SearchLinkTableNode()函数

tLinkTableNode * SearchLinkTableNode(tLinkTable *pLinkTable, int Conditon(tLinkTableNode * pNode)){    if(pLinkTable == NULL || Conditon == NULL)    {        return NULL;    }    tLinkTableNode * pNode = pLinkTable->pHead;    while(pNode != pLinkTable->pTail)    {            if(Conditon(pNode) == SUCCESS)        {            return pNode;                            }        pNode = pNode->pNext;    }    return NULL;}
        

         发现遍历链表的循环语句while()条件结束的标志为找到表结尾,这就导致了程序在遍历到表结尾最后一个命令quit的时候,直接结束了,因此需要修改while语句结束的条件为pNode != NULL,即可。

         2.利用callback函数参数使Linktable的查询接口更加通用

         先将cmd字符串取消定义为全局变量,然后修改callback函数。

tLinkTableNode * SearchLinkTableNode(tLinkTable *pLinkTable, int Conditon(tLinkTableNode * pNode, void* args), void* args);

        

         3.信息的隐藏

         在linktable.c中定义Linktable结构体,而在linktable.h中只留下LinkTable结构的声明。

typedef struct LinkTable tLinkTable;struct LinkTable{    tLinkTableNode *pHead;    tLinkTableNode *pTail;    int SumOfNode;    pthread_mutex_t mutex;};


         4、实验的运行结果及分析

         运行结果截图


    5.实验总结

    此次实验由于家里出了点事是在荆州老家完成的,没法当面找同学帮忙,只能线上询问同学搜集资料,收获也是不错的。。。。。


原创粉丝点击