顺序表-【学生信息管理系统】


<span style="font-size:18px;">#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define OK 1
#define ERROR 0
#define PF printf("\n")
#define size 1000 
typedef int Status;
int total;
typedef struct
{
    char no[9];   //8 位学号   
	char name[20]; // 姓名 
    double price;     // 成绩
}Student;
typedef  struct
{
  Student  *elem;     // 指向数据元素的基地址
  int  length;       // 线性表的当前长度                                                           
}SqList;
SqList L;
Status InitList()//建立顺序表 
{
	L.elem=new Student[size];
	if(!L.elem)
		return ERROR; 
	L.length=0;
	return OK;
}
void in_put()
{
	int num,i;
	PF;PF;
	printf("输入学生数量:");
	scanf("%d",&num);
	PF;
	while(num<1||num>size)
	{
		printf("输入有误,请重新输入: ");
		scanf("%d",&num); 
	} 
	for(i=0;i<num;++i)
	{
		printf("学号:");
		scanf("%s",L.elem[i].no);
		while(strlen(L.elem[i].no)!=8)
		{
			printf("输入有误,请输入8为学号: ");
			scanf("%s",L.elem[i].no);
		}
		PF;
		printf("姓名:"); 
		scanf("%s",L.elem[i].name);
		PF;
		printf("成绩:");
		scanf("%lf",&L.elem[i].price);
		PF; 
	}
	L.length=num;
	system("cls");
}
void out_put()
{
	int num;
	for(num=0;num<L.length;++num)
	{
		printf("*******第%d个学生*******\n",num+1);
		printf("学号:%s\n",L.elem[num].no);
		printf("姓名:%s\n",L.elem[num].name);
		printf("分数:%.2lf\n",L.elem[num].price);
	}
} 
void find_name()
{
	PF;PF;
	system("cls");
	printf("请输入该学生的姓名:");
	char s[20];
	scanf("%s",s);
	int i,flag=1;
	for(i=0;i<L.length;++i)
	{
		if(strcmp(L.elem[i].name,s)==0)
		{
			flag=0;
			printf("学号:%s\n",L.elem[i].no);
			printf("姓名:%s\n",L.elem[i].name);
			printf("分数:%.2lf\n",L.elem[i].price);
			PF;PF;
		} 
	} 
	if(flag)
	{
		PF;PF;
		printf("不存在该生!!\n\n");
		system("cls"); 
	} 
} 
void find_point()
{
	system("cls");
	int pos;
	PF;PF;
	printf("请输入给学生的位置:");
	scanf("%d",&pos);
	if(pos<1||pos>L.length)
	{
		printf("不存在该生!!\n\n");
		return ;
	} 
	PF;PF;
	printf("学号:%s\n",L.elem[pos-1].no);
	printf("姓名:%s\n",L.elem[pos-1].name);
	printf("分数:%.2lf\n",L.elem[pos-1].price);
}
void new_insert()
{
	PF;PF;
	printf("请输入插入的位置:");
	int pos;
	scanf("%d",&pos);
	while(pos<1||pos>L.length+1)
	{
		printf("该位置不合法,请重新输入:");
		scanf("%d",&pos); 
	}
	if(L.length==size)
	{
		printf("磁盘已满!!\n");
		return ; 
	}
	int k;
	for(k=L.length-1;k>=pos-1;--k)
	{
		L.elem[k+1]=L.elem[k]; 
	} 
	printf("请输入该生的学号:");
	char no[9];
	scanf("%s",no);
	while(strlen(no)!=8)
	{
		printf("输入有误,请输入8为学号: ");
		scanf("%s",no); 
	} 
	strcpy(L.elem[pos-1].no,no); 
	printf("请输入该生的姓名:");
	scanf("%s",L.elem[pos-1].name); 
	printf("请输入该生的成绩:");
	double price;
	scanf("%lf",&L.elem[pos-1].price);
	L.length++;  
} 
void stu_del()
{
	PF;PF;
	system("cls");
	int pos;
	printf("请输入删除的位置:");
	scanf("%d",&pos);
	while(pos<1||pos>L.length)
	{
		printf("该位置不合法,请重新输入:");
		scanf("%d",&pos); 
	}
	for(--pos;pos<L.length;++pos)
	{
		L.elem[pos]=L.elem[pos+1]; 
	}
	--L.length;
	printf("该生已删除!\n");
}
void count()
{
	PF;PF;
	printf("一共有 %d 个学生,还可以增加 %d 个学生哦@_@\n",L.length,size-L.length);
	PF;PF; 
} 
int main()
{
	InitList();
	PF;PF;
	while(1)
	{
		int n;
		printf("\t\t1、学生信息输入\n");
		printf("\t\t2、学生信息浏览\n");
		printf("\t\t3、姓名查找学生信息\n");
		printf("\t\t4、指定位置查找学生信息\n");
		printf("\t\t5、新增学生\n");
		printf("\t\t6、删除指定位置学生信息\n");
		printf("\t\t7、统计学生人数\n");
		printf("\t\t8、退出\n");
		PF;PF;
		printf("\t\t请选择:"); 
		scanf("%d",&n);
		switch(n)
		{
			case 1:in_put();break;
			case 2:out_put();break;
			case 3:find_name();break;
			case 4:find_point();break;
			case 5:new_insert();break;
			case 6:stu_del();break;
			case 7:count();break;
			case 8:exit(0); 
		} 
	}
	return 0;
}</span>


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值