单链表学生管理系统(2day8)

//单链表实现学生管理系统(参照顺序表技能)
//写出菜单界面switch选择,
//功能1创建单链表,
//2录入学生信息
//3删除一个学生信息,
//4按照成绩修改一个学生的年龄,
//5、按照姓名顺序查找一个学生是否存在
//
//1、学生信息结构体姓名,分数,年龄,电话。
//2.其他功能函数自定义,分文件编译。
 

主函数文件 main.c

#include "link.h"
//单链表实现学生管理系统(参照顺序表技能)
//写出菜单界面switch选择,
//功能1创建单链表,
//2录入学生信息
//3删除一个学生信息,
//4按照成绩修改一个学生的年龄,
//5、按照姓名顺序查找一个学生是否存在
//
//1、学生信息结构体姓名,分数,年龄,电话。
//2.其他功能函数自定义,分文件编译。
int main(int argc, const char *argv[])

{
	int a;
	while(1)
	{
 Pnode L;
		printf("输入业务序号:\n");
		scanf("%d",&a);
		switch(a)
		{
			case 1 : L=Application_header();
				break;
			case 2 : Request_space(L);
				break;
			case 3 : delete_my(L);
				break;
			case 4 : change_my(L);
				break;
			case 5 : find_my(L);
				break;
			case 6 : check_my(L);
				break;
			default : printf("序号有误,从新输入\n");
				break;
		}
	}
		
		
		return 0;
}

声明文件 fun.h

#ifndef __FUN_H__
#define __FUN_H__
#include <myhead.h>
#define MAX 30
typedef struct student
{
	char name[MAX];
	float  score;
	int   age;
	char number[MAX];
}stu;
typedef struct node
{
	union
	{
		int len;
		stu information;
	};
	struct node *next;
}Node,*Pnode;
//申请头
Pnode Application_header();
//录入
void Request_space(Pnode L);
//查看
void check_my(Pnode L);
//删除
int  delete_my(Pnode L);
//修改
int change_my(Pnode L);
//查找
int find_my(Pnode L);



#endif

功能函数 fun.c

#include "link.h"
Pnode Application_header()
{
	Pnode p=malloc(sizeof(Node));
	if(p==NULL)
	{
		printf("创建失败\n");
		return NULL;
	}
	p->len=0;
	p->next=NULL;
	return p;
}
//尾插
void Request_space(Pnode L)
{
	if(L==NULL)
	{
		printf("单链表不存在\n");
	}
	//Pnode p;
	Pnode t=L;
	int key=L->len;
	int i,d;
	printf("输入录入学生的个数\n");
	scanf("%d",&d);
	printf("输入学生信息\n");
	for(i=0;i<key;i++)
	{
		t=t->next;
	}
	for(i=0;i<d;i++)
	{

		Pnode p=malloc(sizeof(Node));
		scanf("%s%f%d%s",
				p->information.name,
				&p->information.score,
				&p->information.age,
				p->information.number);
		t->next=p;
		p->next=NULL;
		t=t->next;
		L->len++;
	}
}
//删除
int  delete_my(Pnode L)
{
	if(L==NULL||L->len==0)
	{
		printf("单链表不存在或为空\n");
		return -1;
	}
	int i,min=-1;
	char arr[MAX];
	Pnode t=L;
	Pnode Q;
	printf("输入学生姓名:\n");
	scanf("%s",arr);
	for(i=0;i<=L->len;i++)
	{
		t=t->next;
		if(strcmp(arr,t->information.name)==0)
		{
			min=i;
			break;
		}
	}
			if(min==-1)
	{
		printf("没找到该学生\n");
		return 0;
	}
	t=L;
	if(min==0)
	{
		t=L;
		Q=t->next;
		t->next=Q->next;
		free(Q);
		Q=NULL;
		L->len--;
		printf("删除成功\n");
	}
	else
	{
	for(i=0;i<min;i++)
	{
		t=t->next;
	}
		Q=t->next;
		t->next=Q->next;
		free(Q);
		Q=NULL;
		L->len--;
		printf("删除成功\n");
	}
		return 0;
}
//修改
int change_my(Pnode L)
{
	if(L==NULL||L->len==0)
	{
		printf("单链表不存在或为空\n");
		return -1;
	}
	int i;
	float arr;
	printf("输入成绩\n");
	scanf("%f",&arr);
	int f,min=-1;
	Pnode t=L;
	for(i=0;i<L->len;i++)
	{
		t=t->next;
		if(arr==t->information.score)
		{
			printf("输入需要修改的年龄\n");
			scanf("%d",&f);
			t->information.age=f;
			printf("修改成功\n");
			min=i+1;
			break;
		}
		}
	if(min==-1)
	{
		printf("不存在该成绩的学生\n");
	}
	return 0;
}
//查找
int find_my(Pnode L)
{
	if(L==NULL||L->len==0)
	{
		printf("单链表不存在或为空\n");
		return -1;
	}
	int i,min=0;
	char arr[MAX];
	Pnode t=L->next;
	printf("输入学生姓名:\n");
	scanf("%s",arr);
	for(i=0;i<L->len;i++)
	{
		if(strcmp(arr,t->information.name)==0)
		{	
			printf("姓名:%s\t成绩:%.2f\t年龄:%d\t电话号码:%s\n",
					t->information.name,
					t->information.score,
					t->information.age,
					t->information.number);
			break;
		}
		t=t->next;
	}
	return 0;
}


//查看
void check_my(Pnode L)
{
	int i;
	Pnode t = L;
	for(i=0;i<L->len;i++)
	{
		t=t->next;
		printf("姓名:%s\t成绩:%.2f\t年龄:%d\t电话号码:%s\n",
				t->information.name,
				t->information.score,
				t->information.age,
				t->information.number);
	}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值