汽车租赁公司客户档案管理

#include"stdio.h"
#include"stdlib.h"
#define Status int
#define OK 1
typedef int TElemType;
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define OVERFLOW -2
#define ERROR 0
#define OK 1
#define TRUE 1
#define FALSE 0

typedef struct BiTNode
{
int id;
char name[8],date[8];

struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree,*SElemType;

void CreatInfor(BiTree &T,BiTree P,int key)
{
if(!T)
{
T=(BiTree)malloc(sizeof(BiTNode));
T->id=key;
printf("请输入姓名\n");
scanf("%s",&T->name);
printf("请输入租车日期:格式为19880501\n");
scanf("%s",&T->date);
T->lchild=T->rchild=NULL;

if(P)
{
if(P->id>key)
{
P->lchild=T;
}
else if(P->id{
P->rchild=T;
}
}
}

else if(T->id>key)
{
P=T;
CreatInfor(T->lchild,P,key);
}
else if(T->id{
P=T;
CreatInfor(T->rchild,P,key);
}
}//递归方式建立二叉排序树

Status SearchInfor(BiTree T,BiTree &P,int key)
{
while(T)
{

if(T->id==key)
{
printf("%d\n",T->id);
printf("%s\n",T->name);
printf("%s\n",T->date);
return OK;
}
else if(T->id>key)
T=T->lchild;
else
T=T->rchild;

}

return FALSE;

}


Status VisitInfor(BiTree T)
{
if (T)
{
VisitInfor(T->lchild);
printf("%d\n ",T->id);
printf("%s\n",T->name);
printf("%s\n",T->date);
VisitInfor(T->rchild);

}

return OK;
}//中序遍历即按升序输出信息





Status DeleteInfor(BiTree &T,BiTree P,int key)
{
BiTree temp,Q,L;
L=Q=T;
if(Q->id==key)
{
if(!(Q->lchild)&&!(Q->rchild))
{
free(Q);
printf("现在没有用户信息了!\n");
return FALSE;
}
else if(Q->rchild)
{
Q=Q->rchild;

while(Q->lchild)
Q=Q->lchild;
Q->lchild=L->lchild;
free(L);
T=Q;
}
else if(Q->lchild)
{
free(L);
T=Q;
}
return OK;


} //单独删除头节点

else
{

while(Q)
{

if(Q->id==key)
{
P=temp;

break;
}
temp=Q;//记下节点的父节点
if(Q->id>key)
Q=Q->lchild;
else if(Q->idQ=Q->rchild;
}
if(Q)
{
if(!(Q->lchild)&&!(Q->rchild))
{

if(key>temp->id)
{
temp->rchild=NULL;
}
else if(keyid)
{
temp->lchild=NULL;
}
free(Q);
return OK;

}//删除叶子节点
else
{
L=Q;
if(Q->lchild)
Q=Q->lchild;
else if(Q->rchild)
Q=Q->rchild;
temp=Q;
if(key>P->id)
{
P->rchild=Q;

while(Q->lchild)
{
temp->lchild=Q;
Q=Q->lchild;
}

}
else if(keyid)
{
P->lchild=Q;
while(Q->rchild)
{
temp->rchild=Q;
Q=Q->rchild;
}

}

free(L);
return OK;
}
}
}
return FALSE;
}


void AddInfor(B

iTree &T,BiTree P,int key)
{
if(!(SearchInfor(T,P,key)))
{
CreatInfor(T,P,key);
printf("用户的信息已成功添加!\n");
}
else
printf("对不起该用户的信息已存在,添加失败\n");
}


void WelcomInfor()
{
printf("欢迎使用汽车租赁公司客户档案管理系统\n");
printf("1------------查询客户信息\n");
printf("2------------增加客户信息\n");
printf("3------------删除客户信息\n");
printf("4------------显示所有客户信息\n");
printf("请选择您要的服务\n");
}

Status DoSearchInfor(BiTree T,BiTree P)
{
int key;
printf("请输入你要查询用户的ID号\n");
scanf("%d",&key);
if(!SearchInfor(T,P,key))
printf("对不起没有该用户!\n");
return OK;
}


Status DoAddInfor(BiTree &T,BiTree P)
{
int key;
printf("请输入你要增加的用户id号\n");
scanf("%d",&key);
AddInfor(T,P,key);
return OK;
}
Status DoDeleteInfor(BiTree&T,BiTree P)
{
int key;
printf("请输入您要删除用户的id号\n");
scanf("%d",&key);
if(DeleteInfor(T,P,key))
printf("删除成功!\n");
else if(!(DeleteInfor(T,P,key)))
printf("对不起删除失败!\n");
return OK;

}








void main()
{
BiTree T=NULL,P=NULL;
int choice,v=1;
char s='y';
while(v)
{
WelcomInfor();
printf("请输入您的选择!\n");
scanf("%d",&choice);
switch(choice)
{
case 1:DoSearchInfor(T,P);break;
case 2:DoAddInfor(T,P);break;
case 3:DoDeleteInfor(T,P);break;
case 4:VisitInfor(T);break;
default:printf("处理出错!\n");
}
printf("如果想继续请输入y否则请输入n!\n");
scanf("%c",&s);scanf("%c",&s);
if(s=='n')
v=0;
}
printf("再见!\n");
}

相关文档
最新文档