资源简介

链表实现学生管理系统

资源截图

代码片段和文件信息

#include 
#include 
#include 

struct Student
{
    int id;
    char name[20];
    int age;
    struct Student *next;
};

enum my_func
{
    f_add=1
    f_delate
    f_find
    f_change
    f_printf_all
    ESC
};

void add(struct Student *p_head);
void delate(struct Student *p_head);
void find(struct Student *p_head);
void change(struct Student *p_head);
void printf_all(struct Student *p_head);
void menu(struct Student *p_head);
int num = 0;

int main()
{
    struct Student *p_head = (struct Student *)malloc(sizeof(struct Student));
    p_head->next = NULL;

    menu(p_head);

    return 0;
}


void menu(struct Student *p_head)
{   
    int choose=0;
    while (1)
    {
        printf(“****************************\n“);
        printf(“*** 欢迎使用学生管理系统   ***\n“);
        printf(“***   1、增加学生信息     ***\n“);
        printf(“***   2、删除信息         ***\n“);
        printf(“***   3、查询信息         ***\n“);
        printf(“***   4、更改信息         ***\n“);
        printf(“***   5、打印所有学生信息  ***\n“);
        printf(“***   6、退出             ***\n“);
        printf(“*** 学生总人数:%d         ***\n“ num);
        printf(“*****************************\n“);
        printf(“***  请输入你的选项序号  ***\n“);
        scanf(“ %d“ &choose);
        getchar();  //等待输入ENTER
        printf(“***************************\n“);

        switch (choose)
        {
            case f_add:
                add(p_head);
                break;
            case f_delate:
                delate(p_head);
                break;
            case f_find:
                find(p_head);
                break;
            case f_change:
                change(p_head);
                break;
            case f_printf_all:
                printf_all(p_head);
                break;
            case ESC:
                printf(“成功退出,欢迎再次使用!\n“);
                return;
            default:
                printf(“输入有误,请重新输入!\n“);
        }
    }
   
}

void add(struct Student *p_head)
{
    struct Student *p = p_head;
    struct Student *tmp = (struct Student *)malloc(sizeof(struct Student));
    tmp->next = NULL;
    printf(“请输入你要添加学生的ID\n“);
    scanf(“%d“ &tmp->id);
    getchar();
    
    while (1)
    {
        if(p->next == NULL)         //刚开始 p->next = NULL;
        {
            p->next = tmp;
            tmp->next = NULL;
            p->next->id = tmp->id;
            num++;
            tmp = NULL;
            break;
        }
        if(p->next->id == tmp->id)
        {
            printf(“ID重复,请重新输入\n“);
            scanf(“%d“ &tmp->id);
            getchar();
            p = p_head;
        }else
        {
            p = p->next;    //移动
        }
    }

    printf(“请输入你要添加学生的姓名\n“);
    scanf(“%s“ p->next->name);
    getchar();
    printf(“请输入你要添加学生的年龄\n“);
    scanf(“%d“ &p->next->age);
    getchar();

    printf(“你添加的学生的信息是:\n“);
    pri

评论

共有 条评论