单链表实现学生管理系统

单链表实现学生管理系统(参照顺序表技能)写出菜单界面switch选择,功能1创建单链表,2录入学生信息,3删除一个学生信息,4按照成绩修改一个学生的年龄,5、按照姓名顺序查找一个学生是否存在。

#include<stdio.h>
#include<string.h>
#include<myhead.h>
typedef struct stu
{
	int age;
	int score;
	char name[20];
	long phone;


}student;
typedef struct node
{
	union
	{
		int len;
		student data;
	
	};
	struct node*next;



}Node,*pnode;

pnode get_head()
{
	pnode p =malloc(sizeof(Node));
	p->len=0;
	p->next=NULL;
	return p;


}
int head_insert(pnode L)
{
	int i,j,k;
//	pnode t=malloc(sizeof(Node));
	printf("输入你要输入的学生个数:");
	scanf("%d",&k);
	for(i=0;i<k;i++)
	{
		pnode t=malloc(sizeof(Node));
		printf("输入你要输入的第%d个学生信息\n",i+1);
		scanf("%d%d%s%ld",&(t->data.age),&(t->data.score),t->data.name,&(t->data.phone));
	
	t->next=L->next;
	L->next=t;
	L->len++;
	}
}
int node_output(pnode L)
{
	int i;
	pnode t=L;
		printf("学生信息如下:\n");
		for(i=0;i<L->len;i++)
	{
		t=t->next;
	
		printf("%d %d %s %ld\n",t->data.age,t->data.score,t->data.name,t->data.phone);

	
	}



}
int any_pos_dele(pnode L,int e)
{
	int i;

	pnode t=L;
	for(i=0;i<e-1;i++)
	{
		t=t->next;
	
	}
	pnode Q=t->next;
	t->next=Q->next;
	L->len--;
	free(Q);
	Q=NULL;



}
int any_socre_change(pnode L,int e)
{
	int i,k;

	pnode t=L;
	for(i=0;i<L->len;i++)
	{
		t=t->next;
		if(t->data.score==e)
		{
			printf("输入要修改的年龄:\n");
			scanf("%d",&k);
			t->data.age=k;
			break;
		
		}
		else
		{
			printf("该学生不存在\n");
		}
	
	}



}
int find_node(pnode L,char a[])

{
	int i;
	pnode t=L;
	int key =1;
	for(i=0;i<L->len;i++)
	{
		t=t->next;
		if(strcmp(t->data.name,a)==0)
		{
			printf("查找成功,学生信息如下\n");
			printf("%d\t %d\t %s\t %ld\n",t->data.age,t->data.score,t->data.name,t->data.phone);
			key=0;
			break;
		}
		
	
	
	}
	printf("%d\n",i);
	printf("%d\n",key);
	if(i==L->len&&key==1)
	{
		printf("该学生不存在\n");
	
	}



}
int main(int argc, const char *argv[])
{
	int i;
	int j;
	int key;
	char b[20];
	pnode L=get_head();

	while(1)
	{
	printf("*****学生管理系统*****\n");
	printf(	"*****输入需要的功能*****\n");
	printf(	"输入1:创建单链表\n");
	printf("输入2:录入学生信息\n");
	printf("输入3:删除一个学生信息\n");
	printf("输入4:按照成绩修改一个学生的年龄\n");
	printf(	"输入5:按照姓名顺序查找一个学生是否存在\n");
	printf(	"输入0:退出\n");
	scanf("%d",&key);
	switch(key)
	{
	

	case 1:	printf("创建成功");break;
	case 2 : head_insert(L);node_output(L);break;
	case 3:	printf("输入要删除的第几个位子\n");
	scanf("%d",&i);

	any_pos_dele(L,i);
	node_output(L);break;
	case 4 :printf("输入要修改学生的年龄\n");
	scanf("%d",&j);
	any_socre_change(L,j);
	node_output(L);break;
	case 5:printf("输入要查找的学生姓名\n");
		   scanf("%s",b);
	find_node(L,b);
	node_output(L);break;
	case 0:return 0;
	}	
	}
	return 0;
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值