数据结构实验

数据结构实验:写一个学生管理系统:
代码如下:
#define OVERFLOW -1
#define OK 1
#define ERROR -1
#define MAXSIZE 6
#define INCREMENT 10
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h>
typedef int Status;
typedef struct
{
char no[8];
char name[20];
int price;
}Student;
typedef Student ElemType;

typedef struct
{
ElemType elem[MAXSIZE];
int length;
}SqList;
void InitList(SqList *&L) //创建化顺序表
{
L=(SqList *)malloc(sizeof(SqList));
L->length=0;
}
void chushihua(SqList *&L,ElemType a[],int n) //初始化链表
{
for(int j=0;j<n;j++)
{
L->elem[j]=a[j];
L->length++;
}
}

void chushihua1(SqList *&L,int n)
{
for(int m=0;m<n;m++)
{

ElemType child;
printf("输入名字:");
scanf("%s",child.name);
printf("输入学号:");
scanf("%s",child.no);
printf("输入分数:");
scanf("%d",&child.price);
L->elem[m]=child;
L->length++;
}

}
void menu1()
{
printf(“\n");
printf(“1.按数组初始化顺序表\n”);
printf(“2.按学生人数初始化顺序表\n”);
printf(“3.插入学生\n”);
printf(“4.打印顺序表\n”);
printf(“5.通过名字查找\n”);
printf(“6.通过位置查找\n”);
printf(“7.删除指定1位置的元素\n”);
printf(“8.打印当前的学生人数\n”);
printf("
\n”);
}

Status InsertList(SqList *&L,int i,ElemType e) //在指定位置插入指定元素
{
if(i<1||i>L->length+1)
return ERROR;
if(L->length==MAXSIZE)
return ERROR;
i–;
int m=L->length-1;
for(m;m>=i;m–)
{
L->elem[m+1]=L->elem[m];
}
L->elem[i]=e;
L->length++;
return OK;

}

void PrintList(SqList *L) //打印顺序表
{
printf("\n");
for(int i=0;ilength;i++)
{
printf("%s %s %d \n ",L->elem[i].no,L->elem[i].name,L->elem[i].price);
}
}

Status FindName(SqList *L,char ch[]) //名字查找
{
int i=0,j=0;
for(i;ilength;i++)
{
if(strcmp(L->elem[i].name,ch)==0)
{
return i;
}
}
return ERROR;
}

Status shanchu(SqList *&L,int n) //删除位置元素
{
if(n<1||n>L->length)
return ERROR;
n–;
for(int j=n;jlength-1;j++)
{
L->elem[j]=L->elem[j+1];
}
L->length–;
return OK;
}
Status Findlocad(SqList *L,int i) //位置查找
{
if(i<0||i>L->length)
return ERROR;
else
printf("\n%s \n %s \n %d \n ",L->elem[i-1].no,L->elem[i-1].name,L->elem[i-1].price);
}

void tongji(SqList *L)
{
printf(“当前学生人数为:%d\n”,L->length);
}

void main()
{
menu1();
SqList *L;
char ch[8];
ElemType ren;
int m=3,n;
ElemType a[]={“1236789”,“刘胜波”,20,“1233524”,“罗华荣”,50,“4562541”,“裴先易”,60};
InitList(L);
int flag=1,j;

while(flag==1)
{
	printf("请选择:");
	scanf("%d",&j);
	switch(j)
	{
	case 1:chushihua(L,a,m);
		break;
	case 2:printf("输入要录入的学生数量:");
		scanf("%d",&n);
		chushihua1(L,n);
		break;
	case 3:printf("输入要插入的姓名:");
		scanf("%s",ren.name);
		printf("\n");
		printf("输入要插入的学号:");
		scanf("%s",ren.no);
		printf("\n");
		printf("输入要插入的成绩:");
		scanf("%d",ren.price);
		printf("\n");
		printf("输入要插入的位置:");
		scanf("%d",&n);
		InsertList(L,n,ren);
		break;
	case 4:PrintList(L);
		break;
	case 5:printf("输入查找对象:");
		scanf("%s",ch);
		if(FindName(L,ch)!=ERROR)
			printf("学号:%s\n成绩:%d\n",L->elem[FindName(L,ch)].no,L->elem[FindName(L,ch)].price);
		if(FindName(L,ch)==ERROR)
			printf("查无此人!!!");
		break;
	case 6:printf("输入你想查找的位置:");
			scanf("%d",&n);
			Findlocad(L,n);
			break;
	case 7:printf("输入你想删除的位置:");
			scanf("%d",&n);
			shanchu(L,n);
			break;
	case 8:tongji(L);
		break;

低级学生系统,哈哈哈

}

}

}
我也是小白一个,插入还有问题,现在还不知道怎么改,先把它留在这里,等我以后有时间了再回来看一下,哈哈哈哈哈,如果对你有用的话,也是不错的体验。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值