、顺序表实现学生管理系统(参照顺序表技能)写出菜单界面switch选择,功能1创建顺序表(堆区),2录入学生信息,3插入一个学生信息,4删除一个学生信息,5按照位置修改一个学生信息,6、按照姓名顺序查找一个学生是否存在7、对学生年龄直接插入排序(从小到大)。
主函数
#include"link.h"
int main(int argc, const char *argv[])
{
int i,key;
key = 0;
//申请空间
Plist L = apply_area();
while(1)
{
if(key==0)
{ printf("\n查看操作步骤请输入:0\n");
printf("\n输入学生信息请输入:1\n");
printf("\n插入学生信息请选择:2\n");
printf("\n删除学生信息请选择:3\n");
printf("\n按照位置修改学生信息请选择:4\n");
printf("\n按照姓名查找学生请选择:5\n");
printf("\n对学生年龄进行排序请选择:6\n");
printf("\n输出学生信息请选择:7\n");
printf("\n跳出操作请选择:8\n");
}
printf("请选择你要进行的操作:");
scanf("%d",&key);
switch(key)
{
case 0: break;
case 1: input_student(L,3);break;//输入学生信息
case 2: intsert_pos(L);break;//插入学生信息
case 3: dele_student(L);break;//删除学生信息
case 4: change_pos(L);break;//按照位置修改学生信息
case 5: change_name(L);break;//按照姓名顺序查找一个学生是否存在
case 6: sort_age(L);break;//对学生年龄进行直接插入排序
case 7: output_student(L);break;//输出学生信息
case 8: return 0;
}
}
return 0;
}
link.h
#ifndef _LINK_H_
#define _LINK_H_
#include<myhead.h>
#define MAX 30
typedef struct stu
{
char name[20];
int score;
int age;
int phone;
}student;
typedef struct list
{
int len;
student data[MAX];
}List,*Plist;
Plist apply_area();
void input_student(Plist L,int n);
void output_student(Plist L);
void intsert_pos(Plist L);
void dele_student(Plist L);
void change_pos(Plist L);
void change_name(Plist L);
void sort_age(Plist L);
#endif
link.c
#include"link.h"
Plist apply_area()
{
Plist p = malloc(sizeof(List));
p->len=0;
memset(p->data,0,sizeof(p->data));
return p;
}
void input_student(Plist L,int n)
{
printf("请输入学生信息\n");
int i;
for(i=0;i<n;i++)
{
printf("请输入第%d个学生信息:",i+1);
scanf("%s%d%d%d",L->data[i].name,&L->data[i].score,
&L->data[i].age,&L->data[i].phone);
L->len++;
}
printf("\n");
}
void output_student(Plist L)
{
int i;
for(i=0;i<L->len;i++)
{
printf("姓名:%s\t成绩:%d\t年龄:%d\t电话:%d\n",
L->data[i].name,L->data[i].score,
L->data[i].age,L->data[i].phone);
}
printf("\n");
}
void intsert_pos(Plist L)
{
int i,n;
student t;
printf("请输入插入学生位置:");
scanf("%d",&n);
printf("请输入要插入学生的信息:");
scanf("%s%d%d%d",t.name,&t.age,&t.score,&t.phone);
if(n<1 || n>L->len+1 || L->len==MAX || L==NULL)
{
printf("插入失败\n");
}
else
{
for(i=L->len-1;i>=n-1;i--)
{
L->data[i+1] = L->data[i];
}
L->data[n-1] = t;
L->len++;
printf("\n");
}
}
void dele_student(Plist L)
{
int i,n;
printf("请选择删除入学生位置:");
scanf("%d",&n);
if(n<1 || n>L->len || L->len==0 || L==NULL)
{
printf("删除失败\n");
}
else
{
for(i=n;i<L->len;i++)
{
L->data[i-1] = L->data[i];
}
L->len--;
printf("\n");
}
}
void change_pos(Plist L)
{
int i,n;
student t;
printf("请选择要修改学生位置:");
scanf("%d",&n);
printf("请输入要修改的信息:");
scanf("%s%d%d%d",t.name,&t.age,&t.score,&t.phone);
if(n<1 || n>L->len || L->len==0 || L==NULL)
{
printf("修改失败\n");
}
else
{
L->data[n-1] = t;
printf("\n");
}
}
void change_name(Plist L)
{
int i,flag = 0;
char n[20];
printf("请选查找的学生姓名:");
scanf("%s",n);
for(i=0;i<L->len;i++)
{
if(strcmp(n,L->data[i].name)==0)
{
printf("查找成功该学生存在\n");
flag = 1;
}
}
if(flag == 0)
{
printf("查找失败,该学生不存在\n");
}
}
void sort_age(Plist L)
{
int i,j;
student t;
for(i=1;i<L->len;i++)
{
t = L->data[i];
for(j=i-1;j>=0;j--)
{
if(L->data[j].age>t.age)
{
L->data[j+1] = L->data[j];
}
else
{
break;
}
}
L->data[j+1] = t;
}
printf("\n");
}