使用顺序表编写一个学生信息管理系统,实现以下功能

使用顺序表编写一个学生信息管理系统,实现学生信息的增删改查等功能
(1)定义学生结构体,实现简单的输入输出和文件操作功能,完成测试
(2)搭建信息管理系统构架,输入数字执行模拟功能(类似ATM取款机界面)
(3)定义学生顺序表,编写顺序表的基本操作
(4)在主函数中使用顺序表,实现具体功能,完成测试

参考:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define MAXSIZE 100

typedef struct{
    char no[20]; // 学号
    char name[20]; // 姓名
    int price; // 成绩
}Student;

typedef struct{
    Student elem[MAXSIZE]; //线性表占用的数组空间
    int last; //最后一个元素的下标
}SeqList;

int Locate(SeqList *L,Student e) //按照姓名查找
{ /*用e返回L中第i个数据元素的值*/
    int i;
    for(i=0;i<L->last+1;i++)
    {
        if(!strcmp(L->elem[i].name,e.name)) //比较两个字符串是否相同
            return i+1;
    }
    return 0;
}

int InsList(SeqList *L,int i,Student e) //插入学生信息
{ /*在L中第i个位置之前插入新的数据元素e,L的长度加1*/
    int k;
    if(i<1||(i>L->last+2))
    {
        return 0;
    }
    for(k=L->last;k>=i-1;k--) //元素向后移动位置
        L->elem[k+1]=L->elem[k];
    L->elem[i-1]=e;
    L->last++;
    return 1;
}

int DelList(SeqList *L,int i) //删除指定位置学生记录
{
    int k;
    if(i<1||i>L->last+1)
        return 0;
    for(k=i;k<=L->last;k++)
    {
        L->elem[k-1]=L->elem[k]; //将后面元素依次前移
    }
    L->last--;
    return 1;
}

void showmenu()
{
    system("cls");
    printf("********************************************************************\n");
    printf("* 1. 根据指定学生个数,逐个输入学生信息; *\n");
    printf("* 2. 逐个显示学生表中所有学生的相关信息; *\n");
    printf("* 3. 根据姓名进行查找,返回此学生的学号和成绩; *\n");
    printf("* 4. 根据指定的位置返回相应的学生信息(学号,姓名,成绩); *\n");
    printf("* 5. 给定一个学生信息,插入到表中指定的位置; *\n");
    printf("* 6. 删除指定位置的学生记录; *\n");
    printf("* 7. 统计表中学生个数; *\n");
    printf("* 0. 退出。 *\n");
    printf("********************************************************************\n");
    printf("请选择你要操作的选项:");
}

int main()
{
    int i,x,a,temp,select=1,sum=0,c;
    SeqList L;
    Student m,e;
    while(1)
    {
        showmenu();
        scanf("%d",&select);
        switch(select)
        {
        case 1:
            printf("请输入学生的数量:");
            scanf("%d",&x);
            sum=x;
            for(i=0;i<x;i++)
            {
                printf("第%d位学生信息\n",i+1);
                printf("学号:");
                scanf("%s",L.elem[i].no);
                printf("-----------------------------\n");
                printf("姓名:");
                scanf("%s",L.elem[i].name);
                printf("-----------------------------\n");
                printf("成绩:");
                scanf("%d",&L.elem[i].price);
                printf("-----------------------------\n");
            }
            L.last=x;
            break;
        case 2:
            printf("所有学生的相关信息为:\n");
            for(i=0;i<L.last;i++)
            {
                printf("学号:%s 姓名:%s 成绩:%d\n",L.elem[i].no,L.elem[i].name,L.elem[i].price);
            }
            break;
        case 3:
            printf("请输入你要查找的姓名:");
            scanf("%s",e.name);
            temp=Locate(&L,e);
            if(temp!=0)
                printf("学号:%s 成绩:%d\n",L.elem[temp-1].no,L.elem[temp-1].price);
            else
                printf("查找失败!\n");
            break;
        case 4:
            printf("请输入你要查询的位置:");
            scanf("%d",&i);
            if(i<=0||i>L.last)
                printf("查询失败!\n");
            else
                printf("该位置的学生信息为\n学号:%s 姓名:%s 成绩:%d\n",L.elem[i-1].no,L.elem[i-1].name,L.elem[i-1].price);
            break;
        case 5:
            printf("请输入你要插入的位置:");
            scanf("%d",&a);
            printf("请输入插入学生信息:\n");
            printf("学号:");
            scanf("%s",m.no);
            printf("姓名:");
            scanf("%s",m.name);
            printf("成绩:");
            scanf("%d",&m.price);
            if(InsList(&L,a,m))
            {
                sum++;
                printf("插入成功!\n");
            }
            else
                printf("插入失败!\n");
            break;
        case 6:
            printf("请输入要删除学生的位置:");
            scanf("%d",&c);
            if(DelList(&L,c))
            {
                sum--;
                printf("删除成功!\n");
            }
            else
                printf("删除失败!\n");
            break;
        case 7:
            {
                printf("总学生个数为:%d\n",sum);
            }
            break;
        case 0:
            {
                exit(0);
            }
            break;
        }
        system("pause");
    }
    return 0;
}