学生信息的顺序表存储
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");
#define MAXSIZE 20
typedef struct
{
int id;
char name[20];
int age;
}student;
typedef struct
{
student arr[MAXSIZE];
int len;
}Slist;
void input(Slist *p);
void output(Slist *p);
void del(Slist *p,int loc);
void modify(Slist *p,int loc);
void insert(Slist *p,int loc,student e);
void search(Slist *p,int loc);
int findname(Slist *p,char s_name[]);
int main()
{
Slist s;
s.len=0;
int loc;
student e;
char s_name[20];
int result;
for(;;)
{
int bh;
printf("\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\t0.退出\n");
printf("请输入您的选项:");
scanf("%d",&bh);
switch(bh)
{
case 1:
{
input(&s);
}
break;
case 2:
{
output(&s);
}
break;
case 3:
{
printf("请输入要删除学生的位置:");
scanf("%d",&loc);
del(&s,loc);
output(&s);
}
break;
case 4:
{
printf("输入要插入的位置:");
scanf("%d",&loc);
printf("请输入要插入的学号:");
scanf("%d",&e.id);
printf("请输入要插入的姓名:");
scanf("%s",&e.name);
printf("请输入要插入的年龄:");
scanf("%d",&e.age);
insert(&s,loc,e);
output(&s);
}
break;
case 5:
{
printf("请输入要修改学生的位置:");
scanf("%d",&loc);
modify(&s,loc);
output(&s);
}
break;
case 6:
{
printf("请输入要查找的位置:");
scanf("%d",&loc);
search(&s,loc);
}
break;
case 7:
{
printf("请输入要查找学生的姓名:");
scanf("%s",s_name);
result=findname(&s,s_name);
if(result==-1)
{
printf("没有该学生\n");
}
else
{
printf("查找成功,在第%d个位置\n",result+1);
}
}
break;
case 0:
{
exit(0);
}
break;
default:
{
printf("输入编号有误\n");
}
}
}
}
void input(Slist *p)
{
int num;
int i;
printf("请输入学生的人数:");
scanf("%d",&num);
for(i=0;i<num;i++)
{
printf("请输入第%d个学生的信息:\n",i+1);
printf("请输入学号:");
scanf("%d",&p->arr[i].id);
printf("请输入姓名:");
scanf("%s",&p->arr[i].name);
printf("请输入年龄:");
scanf("%d",&p->arr[i].age);
printf("\n");
p->len++;
}
}
void output(Slist *p)
{
int i;
for(i=0;i<p->len;i++)
{
printf("学号:%d\t",p->arr[i].id);
printf("姓名:%s\t",p->arr[i].name);
printf("年龄:%d\n",p->arr[i].age);
}
}
void del(Slist *p,int loc)
{
int i;
if(loc<1||loc>p->len)
{
printf("无法删除\n");
}
else
{
for(i=loc;i<p->len;i++)
{
p->arr[i-1]=p->arr[i];
}
p->len--;
}
}
void insert(Slist *p,int loc,student e)
{
int i;
if(loc<1||loc>p->len+1||p->len==MAXSIZE)
{
printf("无法插入\n");
}
else
{
for(i=p->len-1;i>=loc-1;i--)
{
p->arr[i+1]=p->arr[i];
}
p->arr[loc-1]=e;
p->len++;
}
}
void modify(Slist *p,int loc)
{
int xh;
student e;
if(loc<1||loc>p->len)
{
printf("无法修改\n");
}
else
{
printf("请输入要修改的学号:");
scanf("%d",&e.id);
printf("请输入要修改的姓名:");
scanf("%s",e.name);
printf("请输入要修改的年龄:");
scanf("%d",&e.age);
p->arr[loc-1]=e;
}
}
void search(Slist *p,int loc)
{
if(loc<1||loc>p->len)
{
printf("查找有误\n");
}
else
{
printf("第%d个位置学生的学号是:%d\t姓名是:%s\t年龄是%d\n",loc,p->arr[loc-1].id,p->arr[loc-1].name,p->arr[loc-1].age);
}
}
int findname(Slist *p,char s_name[])
{
int i;
for(i=0;i<p->len;i++)
{
if(strcmp(p->arr[i].name,s_name)==0)
{
return i;
}
}
return -1;
}