c语言 增加 删除 修改的功能 不用链表,求c语言链表建立删除添加和修改程序要题目说的程序不用你自己写在C 爱问知识人...

#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我。

全部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值