mymain.c
#include<stdio.h>
#include<string.h>
#include"list.h"
int main(int argc, const char *argv[])
{
int c;
Ptack L=NULL;
while(1)
{
printf("1、创建顺序表\n");
printf("2、录入学生信息\n");
printf("3、插入学生信息\n");
printf("4、删除学生信息\n");
printf("5、修改学生信息\n");
printf("6、查找学生信息\n");
printf("7、学生排序\n");
printf("请输入操作序号>>>>>");
scanf("%d",&c);
getchar();
switch(c)
{
case 1:printf("~~~~~~~~~~~~~~~~~~~\n");
L=malloc(sizeof(Tack));
L=insert_head();
break;
case 2:printf("~~~~~~~~~~~~~~~~~~~\n");
insert_student(L);
output(L);
break;
case 3:printf("~~~~~~~~~~~~~~~~~~~\n");
insert_stu_pos(L);
output(L);
break;
case 4:printf("~~~~~~~~~~~~~~~~~~~\n");
delete_stu(L);
output(L);
break;
case 5:printf("~~~~~~~~~~~~~~~~~~~\n");
amend_stu(L);
output(L);
break;
case 6:printf("~~~~~~~~~~~~~~~~~~~\n");
amend_name(L);
output(L);
break;
case 7:printf("~~~~~~~~~~~~~~~~~~~\n");
direct(L);
output(L);
break;
default:printf("输入错误\n");
}
}
}
LIST.H
#ifndef _LIST_H_
#define _LIST_H_
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
typedef struct
{
char name[20];
float score;
int age;
char phone_number[15];
}stu;
typedef struct
{
int len;
stu student[20];
}Tack,*Ptack;
Ptack insert_head();
int insert_student(Ptack L);
int output(Ptack L);
int insert_stu_pos(Ptack L);
int delete_stu(Ptack L);
int amend_stu(Ptack L);
int amend_name(Ptack L);
int direct(Ptack L);
#endif
LIST.C
#include"list.h"
Ptack insert_head()
{
Ptack p=malloc(sizeof(Tack));
if(p==NULL)
{
printf("创建失败\n");
return NULL;
}
p->len=0;
memset(p->student,0,sizeof(p->student));
return p;
}
int insert_student(Ptack L)
{
if(L==NULL||L->len>10)
{
printf("学生信息录入失败\n");
return 0;
}
int i=L->len;
printf("请依次输入学生姓名、分数、年龄、电话\n");
scanf("%s %f %d %s",L->student[i].name,&L->student[i].score,&L->student[i].age,L->student[i].phone_number);
L->len++;
return 0;
}
int output(Ptack L)
{
for(int i=0;i<L->len;i++)
{
printf("%d",L->len);
printf("______________________________________________________\n");
printf("|学生名单:\n");
printf("|________学生姓名:%s 分数:%.2f 年龄:%d 电话号码:%s\n",L->student[i].name,L->student[i].score,L->student[i].age,L->student[i].phone_number);
printf("——————————————————————————————————————————————————————\n");
}
return 0;
}
int insert_stu_pos(Ptack L)
{
int pos;
printf("请输入插入学生的位置>>>>");
scanf("%d",&pos);
if(L->len<pos)
{
printf("插入失败\n");
return 0;
}
for(int i=L->len-1;i>=pos-1;i--)
{
stu temp;
temp=L->student[i];
L->student[i]=L->student[i+1];
L->student[i+1]=temp;
}
printf("请依次输入学生姓名、分数、年龄、电话\n");
scanf("%s %f %d %s",L->student[pos-1].name,&L->student[pos-1].score,&L->student[pos-1].age,L->student[pos-1].phone_number);
L->len++;
return 0;
}
int delete_stu(Ptack L)
{
int pos;
printf("请输入删除学生的位置>>>>");
scanf("%d",&pos);
for(int i=pos-1;i<L->len;i++)
{
L->student[i]=L->student[i+1];
}
bzero(&L->student[L->len],sizeof(stu));
L->len--;
return 0;
}
int amend_stu(Ptack L)
{
int pos;
printf("请输入该学生的位置>>>>");
scanf("%d",&pos);
printf("请重新学生信息\n");
printf("请依次输入学生姓名、分数、年龄、电话\n");
scanf("%s %f %d %s",L->student[pos-1].name,&L->student[pos-1].score,&L->student[pos-1].age,L->student[pos-1].phone_number);
return 0;
}
int amend_name(Ptack L)
{
char amend[20];
int felw=0;
printf("请被查找人姓名:");
scanf("%s",amend);
for(int i=0;i<L->len;i++)
{
if(strcmp(L->student[i].name,amend)==0)
{
felw=1;
printf("______________________________________________________\n");
printf("|学生名单:\n");
printf("%s %.2f %d %s",L->student[i].name,L->student[i].score,L->student[i].age,L->student[i].phone_number);
printf("——————————————————————————————————————————————————————\n");
continue;
}
}
if(felw==0)
{
printf("查无此人");
}
return 0;
}
int direct(Ptack L)
{
stu temp;
int i,j;
for( i=1;i<L->len;i++)
{
temp=L->student[i];
for(j=i-1;j>=0;j--)
{
if(temp.age<L->student[j].age)
{
L->student[j+1]=L->student[j];
}
else
{
break;
}
}
L->student[j+1 ]=temp;
}
return 0;
}