#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define CHAR char
#define BYTE unsigned char
#define UINT16 unsigned short
#define UINT32 unsigned int
#define VOID void
#define RTN_OK (0U)
#define RTN_ERR (1U)
#define AP_NAME_MAX_SIZE (50U) /* ap名字最大长度 */
#define APO_NAME_MAX_SIZE (50U) /* apo名字最大长度 */
#define COP_NAME_MAX_SIZE (50U) /* cop名字最大长度 */
#define BU_NAME_MAX_SIZE (50U)
#define MINISTER_NAME_MAX_SIZE (50U)
#define ERR_CODE_RTN_ERR (1U)
#define ERR_CORE_NULL_POINTER (0x10000U) /* 错误码--空指针 */
typedef struct ap_mgr_t
{
CHAR ap_name[AP_NAME_MAX_SIZE];
CHAR cop_name[COP_NAME_MAX_SIZE];
BYTE ap_age;
UINT32 ap_no;
struct ap_mgr_t *p_next;
}AP_MGR_T;
typedef struct cop_mgr_t
{
CHAR cop_name[COP_NAME_MAX_SIZE];
CHAR apo_name[APO_NAME_MAX_SIZE];
UINT16 ap_num;
AP_MGR_T *p_ap;
struct cop_mgr_t *p_next;
}COP_MGR_T;
UINT32 mgr_init(AP_MGR_T **p_ap, COP_MGR_T **p_cop)
{
*p_ap = (AP_MGR_T *)malloc(sizeof(AP_MGR_T));
if (NULL == *p_ap)
{
return ERR_CORE_NULL_POINTER;
}
*p_cop = (COP_MGR_T *)malloc(sizeof(COP_MGR_T));
if (NULL == *p_cop)
{
return ERR_CORE_NULL_POINTER;
}
memset((*p_ap), 0, sizeof(AP_MGR_T));
memset((*p_cop), 0, sizeof(COP_MGR_T));
(*p_ap)->p_next = NULL;
(*p_cop)->p_next = NULL;
return RTN_OK;
}
UINT32 ap_is_in_cop(AP_MGR_T *p_node, COP_MGR_T *p_cop)
{
while (p_node)
{
if (0 == strcmp(p_cop->cop_name, p_node->cop_name))
{
return RTN_OK;
}
p_cop = p_cop->p_next;
}
return RTN_ERR;
}
UINT32 cop_is_exist(COP_MGR_T **p_head, CHAR *p_cop_name)
{
COP_MGR_T *p_new = NULL;
p_new = *p_head;
while (p_new)
{
if (0 == strcmp(p_new->cop_name, p_cop_name))
{
*p_head = p_new;
return RTN_OK;
}
p_new = p_new->p_next;
}
return RTN_ERR;
}
UINT32 ap_is_exist(AP_MGR_T *p_head, UINT32 ap_no)
{
while (p_head)
{
if (p_head->ap_no == ap_no)
{
return RTN_OK;
}
p_head = p_head->p_next;
}
return RTN_ERR;
}
UINT32 ap_add(AP_MGR_T *p_ap, COP_MGR_T *p_cop)
{
AP_MGR_T *p_ap_new = NULL;
UINT32 rtn = 0;
p_ap_new = (AP_MGR_T *)malloc(sizeof(AP_MGR_T));
if (NULL == p_ap_new)
{
return ERR_CORE_NULL_POINTER;
}
memset(p_ap_new, 0, sizeof(AP_MGR_T));
printf("please input the ap cop_name:");
scanf("%s", p_ap_new->cop_name);
rtn = cop_is_exist(&p_cop, p_ap_new->cop_name);
if (0 != rtn)
{
printf("The cop '%s' is not exist!\n", p_ap_new->cop_name);
free(p_ap_new);
p_ap_new = NULL;
return ERR_CODE_RTN_ERR;
}
p_ap_new->p_next = p_ap->p_next;
p_ap->p_next = p_ap_new;
printf("please input ap_name:");
scanf("%s", p_ap_new->ap_name);
printf("please input ap_age:");
scanf("%hhu", &p_ap_new->ap_age);
printf("please input ap_no:");
scanf("%u", &p_ap_new->ap_no);
++p_cop->ap_num;
p_cop->p_ap->p_next = p_ap_new;
return RTN_OK;
}
UINT32 cop_add(COP_MGR_T *p_head)
{
COP_MGR_T *p_cop_node = NULL;
AP_MGR_T *p_ap_node = NULL;
UINT32 rtn = 0;
p_cop_node = (COP_MGR_T *)malloc(sizeof(COP_MGR_T));
if (NULL == p_cop_node)
{
return ERR_CORE_NULL_POINTER;
}
memset(p_cop_node, 0, sizeof(COP_MGR_T));
printf("please input cop name:");
scanf("%s", p_cop_node->cop_name);
printf("p_new->cop_name: %s\n", p_cop_node->cop_name);
printf("p_head->cop_name: %s\n", p_head->cop_name);
rtn = cop_is_exist(&(p_head), p_cop_node->cop_name);
if (RTN_OK == rtn)
{
printf("The cop '%s' is exist!\n", p_cop_node->cop_name);
return RTN_OK;
}
p_ap_node = (AP_MGR_T *)malloc(sizeof(AP_MGR_T));
if (NULL == p_ap_node)
{
return ERR_CORE_NULL_POINTER;
}
memset(p_ap_node, 0, sizeof(AP_MGR_T));
printf("please input cop apo_name:");
scanf("%s", p_cop_node->apo_name);
p_cop_node->p_next = p_head->p_next;
p_head->p_next = p_cop_node;
p_cop_node->p_ap = p_ap_node;
p_ap_node->p_next = NULL;
return RTN_OK;
}
UINT32 cop_apo_update(COP_MGR_T *p_head)
{
CHAR cop_name[COP_NAME_MAX_SIZE] = {0};
UINT32 rtn = 0;
printf("please input update cop name:");
scanf("%s", cop_name);
rtn = cop_is_exist(&p_head, cop_name);
if (rtn)
{
printf("The cop '%s' is not exist!\n", cop_name);
return RTN_ERR;
}
printf("please input cop '%s' new apo_name:", p_head->cop_name);
scanf("%s", p_head->apo_name);
return RTN_OK;
}
void ap_info_show(AP_MGR_T *p_node)
{
while (p_node)
{
printf("ap_name: %s\n", p_node->ap_name);
printf("ap_age: %hhu\n", p_node->ap_age);
printf("ap_no: %u\n", p_node->ap_no);
p_node = p_node->p_next;
}
}
void cop_info_show(COP_MGR_T *p_node)
{
while (p_node)
{
printf("cop name: %s\n", p_node->cop_name);
printf("cop apo name: %s\n", p_node->apo_name);
printf("cop ap num: %hu\n", p_node->ap_num);
p_node = p_node->p_next;
}
}
VOID cop_ap_info_show(COP_MGR_T *p_head)
{
AP_MGR_T *p_ap_pre = NULL;
AP_MGR_T *p_ap_node = NULL;
CHAR cop_name[] = {0};
UINT32 rtn = 0;
printf("please input cop name:");
scanf("%s", cop_name);
rtn = cop_is_exist(&p_head, cop_name);
if (RTN_OK != rtn)
{
printf("cop '%s' is not exist!\n", cop_name);
return RTN_OK;
}
p_ap_node = p_head->p_ap->p_next;
printf("%s: p_ap_node:0x%p\n", __FUNCTION__, p_ap_node);
while (p_ap_node)
{
printf("ap name: %s\n", p_ap_node->ap_name);
printf("ap age: %u\n", p_ap_node->ap_age);
printf("ap no: %u\n", p_ap_node->ap_no);
printf("ap apo name: %s\n", p_head->apo_name);
p_ap_pre = p_ap_node;
printf("%s: p_ap_node->p_next:0x%p\n", __FUNCTION__, p_ap_node->p_next);
p_ap_node = p_ap_node->p_next;
}
}
UINT32 main(VOID)
{
AP_MGR_T *p_ap = NULL;
COP_MGR_T *p_cop = NULL;
UINT32 rtn = 0;
UINT32 i = 0;
rtn = mgr_init(&p_ap, &p_cop);
if (RTN_OK != rtn)
{
printf("init fail!\n");
return RTN_ERR;
}
for (i = 0; i < 3; i++)
{
rtn = cop_add(p_cop);
if (RTN_OK != rtn)
{
return RTN_ERR;
}
rtn = ap_add(p_ap, p_cop);
if (RTN_OK != rtn)
{
return RTN_ERR;
}
}
cop_apo_update(p_cop);
ap_info_show(p_ap->p_next);
cop_info_show(p_cop->p_next);
cop_ap_info_show(p_cop);
return RTN_OK;
}
部门人员管理系统
最新推荐文章于 2024-05-02 21:48:08 发布