#include
#include
#include
typedef struct tra
{
int number; //团队编号
char name[20]; //导游姓名
char des[20]; //旅游目的地
char datego[20]; //出发日期
char dateback[20]; //结束日期
int sum; //游客人数
struct tra *next;
}TraLink,*Pointer;
TraLink team[10];
int i,j,k;
void Add(Pointer *Head);
void Search(Pointer Head);
void Modify(Pointer Head);
void Del(Pointer *Head);
void Show(Pointer Head);
void Save(Pointer Head);
void Put(Pointer Head);
int main()
{
Pointer Head=NULL;
int i;
do
{
printf("\n\n\n");
printf("1---增加旅游团信息\t\t\t");
printf("2---查询旅游团信息\n");
printf("3---修改旅游团信息\t\t\t");
printf("4---删除旅游团信息\n");
printf("5---浏览旅游团信息\t\t\t");
printf("6---保存旅游团信息到数据文件\n");
printf("7---查看数据文件中的旅游团信息\t\t");
printf("0---退出\n");
printf("\n");
printf("请输入1-9进行选择:");
scanf("%d",&i);
switch(i)
{
case 1:Add(&Head);
break;
case 2:Search(Head);
break;
case 3:Modify(Head);
break;
case 4:Del(&Head);
break;
case 5:Show(Head);
break;
case 6:Save(Head);
break;
case 7:Put(Head);
break;
case 0:
break;
default:printf("选择错误!请重新选择!");
break;
}
} while(i!=0);
return 0;
}
void Add(Pointer Head)
{
int in_number;
Pointer p,q,r;
printf("请输入旅游团团队编号:\n");
scanf("%d",&in_number);
p=q=*Head;
while(p!=NULL)
{
if(p->number==in_number)
{
printf("已经有相同编号:");
return;
}
else
{
q=p;p=p->next;
}
}
r=(Pointer)malloc(sizeof(TraLink));//没有号
r->next=NULL;
if(r==NULL)
{
printf("分配空间失败");
return;
}
if(q==NULL)//如果是空表,判断空表用q
*Head=r;
else
{q->next=r;}
r->number=in_number;
printf("请输入导游姓名:\n");
scanf("%s",r->name);
printf("请输入旅游目的地:\n");
scanf("%s",&r->des);
printf("请输入出发时间:\n");
scanf("%s",r->datego);
printf("请输入结束时间:\n");
scanf("%s",r->dateback);
printf("请输入旅游团人数:\n");
scanf("%s",r->sum);
}
怎么退出的,进入Add了吗?最好学会使用调试工具,跟踪每一步执行结果
大概看了一下,选择任何一个数都会退出,跟选择0是一样的,所以应该有问题,我好久没看c了,具体你自己解决吧
回1楼:选择1 Add能执行 添加玩人数后退出 不继续循环 ///////
2楼:不是 其他的可以继续循环 只有1 执行一次后 退出
void Add(Pointer Head) void Add(Pointer* Head)
scanf("%s",r->sum); scanf("%d",&r->sum);
break可能对while执行了,建议给break定位置,试一下。你这个代码复制粘贴可能出了问题我测试bug有点多,兄弟加油