C语言如何使用链表实现学生信息管理系统

这篇文章主要介绍了C语言如何使用链表实现学生信息管理系统,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

代码实现的功能:

1.插入学生信息 2.显示学生信息 3.删除学生信息 4.在指定位置插入学生信息 5.查找学生信息

代码内容:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#defineMax_Student_Num10
#defineMax_Str_len20

typedefstructT_student{
intnumber;
charname[Max_Student_Num];
charphone[Max_Student_Num];
};

typedefstructT_Node{
structT_students;
structT_Node*next;
};

charcommand_str[]={"\n1displayallmember;\n2insertmember;\n3delmember;\n4exit\nCommandselection:"};

structT_studentstudents[Max_Student_Num];
structT_Node*head=NULL;

intmain(intargc,char*argv[])
{
intcommand,i;
structT_studentstudent;
structT_Node*pStu=head;
memset(&student,0,sizeof(student));

while(1){
printf("%s",command_str);
scanf("%d",&command);
switch(command)
{
case1:
if(head==NULL){
printf("empty!!!!!!!!!!!!\n");
break;
}
if(head->next==head){
display_student(head);
}else{
pStu=head->next;
do
{
display_student(pStu);
pStu=pStu->next;
}while(pStu!=head->next);
//
}

break;
case2:
printf("enternewstudentnumber:");
scanf("%d",&student.number);
printf("enternewstudentname:");
scanf("%s",&student.name);
if(strlen(student.name)>Max_Str_len)
{
printf("nameistoolong!!\n");
continue;
}

printf("enternewstudentphone:");
scanf("%s",&student.phone);

if(strlen(student.phone)>Max_Str_len)
{
printf("phoneistoolong!!\n");
continue;
}

printf("\n");

if(student.number!=0)
insert_student(student);

break;
case3:
printf("Interdeletedstudentnumber:");
scanf("%d",&student.number);
del_student(student);
break;
case4:
return0;
default:
printf("errorcommand,tryagain\n");
break;
}
}
}


voiddisplay_student(structT_Node*pStu){
printf("number:%dname:%sphone:%s\n",pStu->s.number,pStu->s.name,pStu->s.phone);
}

voidinsert_student(structT_studentstudent){

structT_Node*pNode;
structT_Node*pStu=NULL;
intsize=sizeof(structT_Node);
pStu=(structT_Node*)malloc(size);
if(pStu==NULL){
return;
}
memcpy(&pStu->s,&student,sizeof(student));

if(head==NULL){

pStu->next=head;
head=pStu;
head->next=head;
return;
}
pStu->next=head->next;
head->next=pStu;


}

voiddel_student(structT_studentstudent){
structT_Node*pNode=NULL,*p=NULL;
if(head->next==head&&head->s.number==student.number){
pNode=head;
head=NULL;
free(pNode);
printf("success");
return;
}
for(pNode=head->next;pNode!=head;pNode=pNode->next){
if(pNode->next->s.number==student.number){
p=pNode->next->next;

free(pNode->next);
pNode->next=p;

printf("Deletesuccess!\n");
return;
}

}
printf("NotFound\n");
}

测试截图:

1.插入功能:

C语言如何使用链表实现学生信息管理系统

2.显示功能:

C语言如何使用链表实现学生信息管理系统

3.查询功能:

C语言如何使用链表实现学生信息管理系统

4.删除功能:

C语言如何使用链表实现学生信息管理系统

5.指定位置插入:

C语言如何使用链表实现学生信息管理系统

感谢你能够认真阅读完这篇文章,希望小编分享的“C语言如何使用链表实现学生信息管理系统”这篇文章对大家有帮助,同时也希望大家多多支持恰卡编程网,关注恰卡编程网行业资讯频道,更多相关知识等着你来学习!

发布于 2021-05-30 14:07:51
收藏
分享
海报
0 条评论
169
上一篇:C语言中如何实现纸牌24点小游戏 下一篇:numpy如何实现神经网络反向传播算法
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码