#include<stdio.h>
#include<malloc.h>
#include<string.h>
#define MAXSIZE 100
typedef struct
{
char num[15];
char name[20];
char sex[6];
int class;
}elemtype;
typedef struct
{
elemtype data[MAXSIZE];
int last;
}Sequenlist;
Sequenlist*InitList(Sequenlist*L)
{
L->last=0;
return(L);
}
int Insert(Sequenlist*L)
{
int i,n;
if(L->last==MAXSIZE-1)
printf("表满,插入失败!\n");
else
{
printf("请输入您要输入的学生个数n(n<=100):");
scanf("%d",&n);
printf("请输入%d个学生信息\n",n);
for(i=0;i<n;i++)
{
scanf("%s",&L->data[L->last].num);
getchar();
scanf("%s",&L->data[L->last].name);
getchar();
scanf("%s",&L->data[L->last].sex);
getchar();
scanf("%d",&L->data[L->last].class);
L->last++;
if(L->last==MAXSIZE-1)
{
printf("表满,本次插入失败!\n");
break;
}
}
}
return 0;
}
int Output(Sequenlist*L)
{
int i;
if(L->last==0)
printf("表空\n");
else
{
for(i=0;i<L->last;i++)
{
printf("%s %s %s %d\n",L->data[i].num,L->data[i].name,L->data[i].sex,L->data[i].class);
}
}
return 0;
}
int DelItem(Sequenlist*L)
{
int j,k;
char Num[15];
printf("输入指定学生的学号:");
scanf("%s",&Num);
if(L->last==0)
printf("表空\n");
else
{
for(j=0;j<L->last;j++)
{
if(strcmp(L->data[j].num,Num)==0)
{
k=j;
break;
}
}
if(j>=L->last)
{
printf("没有该学号学生信息\n");
return 0;
}
for(j=k;j<L->last;j++)
{
L->data[j-1]=L->data[j];
}
L->last--;
printf("删除该学生后剩下所有学生的信息\n");
for(j=0;j<L->last;j++)
printf("%s %s %s %d\n",L->data[j].num,L->data[j].name,L->data[j].sex,L->data[j].class);
}
return 0;
}
int LocItem(Sequenlist*L)
{
int j,k;
char Num[15];
printf("输入指定学生的学号:");
scanf("%s",Num);
if(L->last==0)
printf("表空\n");
else
{
for(j=0;j<L->last;j++)
{
if(strcmp(L->data[j].num,Num)==0)
{
k=j;
break;
}
}
if(j>=L->last)
{
printf("没有该学号学生信息\n");
return 0;
}
printf("该学生的信息:\n");
printf("%s %s %s %d\n",L->data[k].num,L->data[k].name,L->data[k].sex,L->data[k].class);
}
return 0;
}
int main()
{
Sequenlist*L;
L=(Sequenlist*)malloc(sizeof(Sequenlist));
InitList(L);
printf("输入学生信息(学号、姓名、性别、班级)\n");
Insert(L);
printf("输出所有学生信息\n");
Output(L);
printf("删除指定学号的学生信息\n");
DelItem(L);
printf("查找指定学号的学生信息\n");
LocItem(L);
return 0;
}