#include
#include
#include
#include
struct student
{
char num[20];//学号
char name[20];//用户姓名
char phone[20];//电话号码
char addr[100];//通讯地址
struct student *next;
};
void insert(student* head)//添加一条记录
{
student *p=head;
student *newStud=(student*)malloc(sizeof(student));
printf("输入添加用户信息
");
printf("学号:");
scanf("%s",newStud->num);
printf("姓名:");
scanf("%s",newStud->name);
printf("电话:");
scanf("%s",newStud->phone);
printf("地址:");
scanf("%s",newStud->addr);
while(p->next!=NULL)
{
if(strcmp(p->num,newStud->num)==0)
{
printf("此学号的用户已存在!
");
return;
}
p=p->next;
}
p->next=newStud;
newStud->next=NULL;
printf("添加成功
");
}
void update(student *head)//修改一条记录
{
student *p=head->next;
char num[20];
printf("输入待修改用户学号:");
scanf("%s",num);
while(p!=NULL)
{
if(strcmp(p->num,num)==0)
{
printf("输入修改后信息
");
printf("学号:");
scanf("%s",&p->num);
printf("姓名:");
scanf("%s",&p->name);
printf("电话:");
scanf("%s",&p->phone);
printf("地址:");
scanf("%s",&p->addr);
printf("修改成功
");
return;
}
p=p->next;
}
printf("不存在此学号的用户");
}
void delRecord(student *head) //删除一条记录
{
student *p1,*p2;
p1=head;
p2=p1->next;
char num[20];
printf("输入待删除用户学号:");
scanf("%s",num);
while(p2!=NULL)
{
if(strcmp(p2->num,num)==0)//找到则删除此用户
{
p1->next=p2->next;
free(p2);
printf("删除成功
");
return;
}
p1=p2; //没找到则继续遍历
p2=p2->next;
}
printf("不存在此学号的用户
");
}
void findByNum(student *head)//按学号查找
{
student *p=head->next;
char num[20];
printf("输入待查找用户学号:");
scanf("%s",num);
while(p!=NULL)
{
if(strcmp(p->num,num)==0)
{
printf("学号:%s
",p->num);
printf("姓名:%s
",p->name);
printf("电话:%s
",p->phone);
printf("地址:%s
",p->addr);
return;
}
p=p->next;
}
printf("不存在此学号的用户
");
}
void findByName(student *head)//按姓名查找
{
student *p=head->next;
char name[20];
printf("输入待查找用户姓名:");
scanf("%s",name);
while(p!=NULL)
{
if(strcmp(p->name,name)==0)
{
printf("学号:%s
",p->num);
printf("姓名:%s
",p->name);
printf("电话:%s
",p->phone);
printf("地址:%s
",p->addr);
return;
}
p=p->next;
}
printf("不存在此姓名的用户
");
}
void main()
{
student *head=(student*)malloc(sizeof(student));
head->next=NULL;
char choice;
printf("*****************************
");
printf("1,添加一条记录
");
printf("2,修改一条记录
");
printf("3,删除一条记录
");
printf("4,按学号查找
");
printf("5,按姓名查找
");
printf("6,退出
");
printf("请按键选择
");
printf("*****************************
");
while(true)
{
printf("请按键选择操作:
");
fflush(stdin); //清除缓冲区
choice=getch();
switch(choice)
{
case '1':
insert(head);
break;
case '2':
update(head);
break;
case '3':
delRecord(head);
break;
case '4':
findByNum(head);
break;
case '5':
findByName(head);
break;
case '6':
exit(0);
default:
printf("输入错误
");
}
}
}
你的num应该是char类型吧?
还有,name数组长度不用那么大啊,好浪费空间!
我测试了下,没什么问题,要是有什么问题可以hi我。
全部