数据结构--员工管理系统

数据结构项目

目录

数据结构项目

1.定义结构体

2.定义数据类型

3.创建员工信息

4.插入员工信息

5.员工信息的删除

6.员工信息的显示

7.查找员工信息

8.销毁表


1.定义结构体

//定义结构体

typedef struct info

{

int num;//编号

char name;//姓名

int state;//状态(在职/离职)

int phone;//电话

}data_type;

2.定义数据类型

//定义存储类型

typedef struct node

{

data_type data;

struct Node *pNext;

}Node;

typedef struct hash

{

Node *pArr[SIZE];

int count;

}Hash;

3.创建员工信息

//创建hash表

Hash *createHash()
{    
    Hash *pHash = NULL;
    pHash = (Hash*pHash)malloc(sizeof(Hash));
    if(NULL == pHash)
    {    
        perror("malloc error")
        return NULL;
    }

    memset(pHash,0,sizeof(Hash));
    return pHash;
}

int HashFunc(int key)
{    
    return Key-1;
}

4.插入员工信息

//员工信息的插入

int insertHash(Hash *pHash, data_type item)
{    
    if(NULL == pHash)
    {
        return NULLERROR;
    }
    Node *pNew = NULL;
    pNew=(Node *)malloc(sizeof(Node));
    memset(pNew,0,sizeof(Node));
    pNew->data = item;
    int pos = HashFunc(item,num);
    pNew->pNext = pHash->pArr[pos];
    pHash->pArr[pos] = pNew;
    pHash->count++;
    return OK;
}

5.员工信息的删除

//员工信息的删除

int deleteHash(Hash *pHash,int num)
{    
    if( NULL == pHash)
    {    
        return NULLERROR;
    }
    if(num<0 || num>pHash->lastcount)
    {    
        perror("num error")
        return NUMERROR;
    }
    Node *pDel = NULL;
    int pos = HashFunc(num);
    pDel = pHash->pArr[pos];
    if(NULL == pDel)
    {    
        return NOBODY;
    }
    while(pDel != NULL)
    {    
        if(pDel->data.num == num)
        {    
            strcpy(pDel->data.state,"离职")
        }
        pDel = pDel->pNext;
    }
        return OK;
}


6.员工信息的显示

//显示员工信息

int showHash(Hash *pHash)
{    

    if(NULL == pHash)
    {    
        return NULLERROR;
    }
    int i;
    Node *pFind = NULL;
        
    for(i=0;i<pHash->lastcount;i++)
    {    
        pFind = pHash->pArr[i];
        while(pFind != NULL)
        {    
            printf("************************\n")
            printf("员工姓名:%s\n",pFind->data.name)
            printf("员工工号:%d\n",pFind->data.num)
            printf("员工电话:%d\n",pFind->data.phone)
            printf("员工在职状态:%s\n",pFind->data.state)
            printf("************************\n")
            pFind = pFind->pNext;
        }
    }
    return OK;
}

 

7.查找员工信息

//查找员工信息

int searchHash(Hash *pHash, int num, data_type *Data)
{    
    if(NULL == pHash)
    {    
        return NULLERROR;
    }
    if(num<0 || num>pHash->lastcount)
    {    
        return NUMERROR;
    }
    Node *pFind = NULL;
    pFind = pHash->pArr[pos];
    if(NULL == pFind)
    {    
        return NOBODY;
    }
        while(pFind != NULL)
        {    if(num == pFind->data.num)
            {
            printf("************************\n")
            printf("员工姓名:%s\n",pFind->data.name)
            printf("员工工号:%d\n",pFind->data.num)
            printf("员工电话:%d\n",pFind->data.phone)
            printf("************************\n")
            *Data = pFind->data;
            break;
            }
            else
            {    
                pFind = pFind->pNext;
            }
        }
            return OK;
}

8.销毁表

//销毁表

int destroyHash(Hash **pHash)
{    
    if(NULL == pHash)
    {    
        return NULLERROR;
    }
    Node *pDel = NULL;
    Node *pDes = NULL;
    int i;
    for(i=0;i<(*pHash)->lastcount;i++)
    {    
        pDel = (*pHash)->pArr[i];
        while(NULL != pDes)
        {    
            pDes = pDel;
            pDel = pDel->pNext;
            free(pDes);
            pDes = NULL;
        }
    }
    free(*pHash);
    *pHash = NULL;
    return OK;
}

 

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值