顺序表实现学生管理系统

顺序表实现学生管理系统(参照顺序表技能)写出菜单界面switch选择,功能1创建顺序表(堆区),2录入学生信息,3插入一个学生信息,4删除一个学生信息,5按照位置修改一个学生信息,6、按照姓名顺序查找一个学生是否存在7、对学生年龄直接插入排序(从小到大)。

#include "text.h"
//
//
//顺序表实现学生管理系统(参照顺序表技能)写出菜单界面switch选择,功能
//1创建顺序表(堆区),
//2录入学生信息,
//3插入一个学生信息,
//4删除一个学生信息,
//5按照位置修改一个学生信息,
//6、按照姓名顺序查找一个学生是否存在
//7、对学生年龄直接插入排序(从小到大)。
//1、学生信息结构体姓名,分数,年龄,电话。
//2、其他功能函数自定义,分文件编译。
//
//
//
//
//
int main(int argc, const char *argv[])
{
	qstu L=stu_insert();
	int a;
	while(a!=0)
	{
	biao();
	printf("请输入你的选择>>>>\n");
	scanf("%d",&a);
	switch(a)
	{
	case 1:input_xinxi(L);
		   break;
	case 2:insert_stu(L);
		   break;
	case 3:dele_stu(L);
		   break;
	case 4:weizhi_change_stu(L);
		   break;
	case 5:name_find_stu(L);
		   break;
	case 6:age_paixu_stu(L);
		   break;
	case 7:output_stu(L);
		   break;
		 	

	}
	}
	return 0;
}
#include "text.h"
void biao()
{
	
	printf("1:录入学生信息\n");
	printf("2:插入一个学生信息\n");
	printf("3:删除一个学生信息\n");
	printf("4:按位置修改一个学生信息\n");
	printf("5:按名字查找一个学生是否存在\n");
	printf("6:对学生年龄进行排序(小到大)\n");
	printf("7:输出学生信息\n");
	printf("0:退出系统");

	

}
qstu stu_insert()//申请空间
{
	qstu q=malloc(sizeof(stu));
	if(q==NULL)
	{
	printf("创建顺序表失败\n");
	return NULL;
	}
	q->len=0;
	memset(q->data,0,sizeof(q->data));//缓存区至0
	return q;
}
int input_xinxi(qstu L)
{
	int i,a;
	printf("输入学生信息>>>>\n");
	for(i=0;i<N;i++)
	{
	printf("请输入第%d个学生信息--  0 结束输入\n",i+1);
	printf("姓名");
	scanf("%s",L->data[i].name);
	printf("分数");
	scanf("%d",&L->data[i].srcoe);
	printf("年龄");
	scanf("%d",&L->data[i].age);
	printf("电话");
	scanf("%s",L->data[i].phoen);
	L->len++;
	printf("继续请输入任意数子: 否:0\n");
	scanf("%d",&a);
	if(a==0)
	{
	break;
	}
	}
	
	return 0; 
}
int output_stu(qstu L)
{
printf("学生信息如下:\n");
int i;
for(i=0;i<L->len;i++)
{
printf("%s\t%d\t%d\t%s\t",
		L->data[i].name,L->data[i].srcoe,
		L->data[i].age,L->data[i].phoen);
putchar(10);
}
return 0;
}
int insert_stu(qstu L)
{
	int e,i;
	L->len++;
		printf("请输入你要插入的位置>>\n");
	scanf("%d",&e);
	if(L==NULL || e<1||e>L->len||L->len==0)
	{
	printf("插入失败!!!!!!!\n");
	return -1;
	}
	for(i=L->len;i>=e;i--)
	{
	L->data[i]=L->data[i-1];
	}
	printf("姓名");
	scanf("%s",L->data[i].name);
	printf("分数");
	scanf("%d",&L->data[i].srcoe);
	printf("年龄");
	scanf("%d",&L->data[i].age);
	printf("电话");
	scanf("%s",L->data[i].phoen);
	printf("插入成功!!!!!!\n");
		return 0;
}
int dele_stu(qstu L)
{
	int a,i;
	printf("请输入你要删除的学生位置\n");
	scanf("%d",&a);
	if(0<a&&a<L->len)
	{
	for(i=a-1;i<L->len;i++)
	{
		L->data[i]=L->data[i+1];
	}
	
	L->len--;
	printf("删除成功\n");
	}
	else
	{
	printf("位置输入错位 无法删除!!!!!!\n");
	}
	return 0;
}
int weizhi_change_stu(qstu L)
{
	int i,a;
	printf("请输入你要修改学生信息的位置\n");
	scanf("%d",&a);
	if(a>0&&a<L->len)
	{
		for(i=0;i<L->len;i++)
		{
			if(i==a-1)
			{
				printf("请输入该学生要修改的信息:\n");
				printf("姓名");
				scanf("%s",L->data[i].name);
				printf("分数");
				scanf("%d",&L->data[i].srcoe);
				printf("年龄");
				scanf("%d",&L->data[i].age);
				printf("电话");
				scanf("%s",L->data[i].phoen);
				printf("修改成功!!!!!!\n");
				break;
			}
		}
	}
	else
	{
		printf("位置错误 修改失败!!!!!\n");
	}
	return 0;
}
int name_find_stu(qstu L)
{
	printf("请输入你要查找学生的名字\n");
	char name[20];
	scanf("%s",name);
	int i;
	int findt=-1;
	for(i=0;i<L->len;i++)
	{
		if(strcmp(L->data[i].name,name)==0)
		{
			findt=i;
		}
	}
	if(findt==-1)
	{
		printf("不存在该姓名的学生!!!\n");
	}
	else
	{
		printf("查找成功!!!!\n 该学生在%d位置\n",findt+1);
	}
}
int age_paixu_stu(qstu L)
{
	int i,j,min;
	student t;
	
	for(i=0;i<L->len-1;i++)
	{
		min=i;
			for(j=i+1;j<L->len;j++)
		{
			if(L->data[j].age <L->data[min].age)
			{
				min=j;		
			}
		}
			if(i!=min)	
		{
			t=L->data[min];
			L->data[min]=L->data[i];
			L->data[i]=t;
		}
		
	}
	return 0;

}
#ifndef _TEXT_H_
#define _TEXT_H_
#include <myhead.h>
#define N 100
typedef struct
{
	char name[20];
	int srcoe;
	int age;
	char phoen[20];
}student;
typedef struct
{
	student data[N];
	int len;
}stu,*qstu;
void biao();
qstu stu_insert();
int input_xinxi(qstu L);
int output_stu(qstu L);
int insert_stu(qstu L);
int dele_stu(qstu L);
int weizhi_change_stu(qstu L);
int name_find_stu(qstu L);
int age_paixu_stu(qstu L);


#endif

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值