千家信息网

C语言中怎么使用链表实现学生籍贯管理系统

发表于:2024-09-26 作者:千家信息网编辑
千家信息网最后更新 2024年09月26日,这篇文章主要讲解了"C语言中怎么使用链表实现学生籍贯管理系统",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C语言中怎么使用链表实现学生籍贯管理系统"吧
千家信息网最后更新 2024年09月26日C语言中怎么使用链表实现学生籍贯管理系统

这篇文章主要讲解了"C语言中怎么使用链表实现学生籍贯管理系统",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C语言中怎么使用链表实现学生籍贯管理系统"吧!

源码

#include#include#include//定义一个学生结构体typedef struct student{    char no[12];            //学号    char name[40];          //姓名    char tele[20];          //电话号码    int D[18];              //电话号码码    char jg[60];            //籍贯    char addr[80];          //通讯地址    struct student* next;   //指向下一节点的指针}STU;//函数声明放在这里STU* LIstInit(STU* L);STU* ListCreate(STU* L, int n);void ListInsert(STU* L);void ListDelete(STU* L, char n[40]);void LIstSearch(STU* L, char n[]);void input(STU* p, int i);void output(STU* L);void menu();//创建表头,初始化链表STU* LIstInit(STU* L){    STU* head = NULL;    head = (STU*)malloc(sizeof(STU));    head->next = NULL;    L = head;    return L;}//创建链表,将新生成的节点插入到链表的表头STU* ListCreate(STU* L, int n){    int i;    for (i = 0; i < n; i++)    {        STU* p;        //将新生成的节点插入到链表中        p = NULL;        p = (STU*)malloc(sizeof(STU));        input(p, i);        p->next = L->next;        L->next = p;    }    return L;}//对链表进行节点的插入操作void ListInsert(STU* L){    STU* s = NULL;    //生成一个新节点s    s = (STU*)malloc(sizeof(STU));    printf("请输入您要插入的学生的学号:");    scanf("%s", &s->no);    printf("请输入您要插入的学生的姓名:");    scanf("%s", &s->name);    printf("请输入您要插入的学生的电话号码:");    scanf("%s", &s->tele);    printf("请输入您要插入的学生的身份证号码:");    scanf("%s", &s->D);    printf("请输入您要插入的学生的籍贯:");    scanf("%s", &s->jg);    printf("请输入您要插入的学生的通讯地址:");    scanf("%s", &s->addr);    s->next = L->next;    L->next = s;}//对链表的进行节点的删除操作void ListDelete(STU* L, char n[]){    STU* p = L->next, * pre = L;  //定义p指针指向头节点的指向,定义pre指向头节点,pre始终指向p的前驱节点    if (p == NULL)        printf("数据为空,无法删除!");    else    {        while (strcmp(p->name, n) != 0)        {            pre = p;            p = pre->next;            if (p == NULL)            {                printf("没有找到相关信息,无法删除\n");                return;            }        }        pre->next = p->next;        free(p);        printf("删除成功");    }}void LIstSearch(STU* L, char n[]){    STU* p = L->next;    if (p == NULL)        printf("数据为空,无法查找!");    else    {        while (strcmp(p->name, n) != 0)        {            p = p->next;            if (p == NULL)            {                printf("没有找到相关信息\n");                return;            }        }        printf("该学生的籍贯为:\n");        printf("\t%s\n", p->jg);    }}void ListModify(STU* L, char na[]){    char JG[60];    STU* p = L->next;    while (p != NULL)    {        if (strcmp(p->name, na) == 0)        {            printf("请选择您修改后的学生籍贯:\n");            scanf("%s", &JG);            strcpy(p->jg, JG);            break;        }        p = p->next;    }}void input(STU* p, int i){    printf("请输入第%d名学生的学号:", i + 1);    scanf("%s", &p->no);    printf("请输入第%d名学生的姓名:", i + 1);    scanf("%s", &p->name);    printf("请输入第%d名学生的电话号码:", i + 1);    scanf("%s", &p->tele);    printf("请输入第%d名学生的身份证号码:", i + 1);    scanf("%s", &p->D);    printf("请输入第%d名学生的籍贯:", i + 1);    scanf("%s", &p->jg);    printf("请输入第%d名学生的通讯地址:", i + 1);    scanf("%s", &p->addr);}void output(STU* L){    STU* p = L->next;    while (p != NULL)    {        printf("%s\t", p->no);        printf("%s\t", p->name);        printf("\t%s", p->tele);        printf("\t\t%s", p->D);        printf("\t%s", p->jg);        printf("\t%s", p->addr);        printf("\n");        p = p->next;    }}void PrintFile(STU* L){    STU* p = L->next;    FILE* fp;    fp = fopen("student.txt", "w");    fprintf(fp, "学号\t\t姓名\t\t电话号码\t\t身份证号码\t\t籍贯\t\t通讯地址\n");    while (p != NULL)    {        fprintf(fp, "%s\t", p->no);        fprintf(fp, "%s\t", p->name);        fprintf(fp, "\t%s", p->tele);        fprintf(fp, "\t%s", p->D);        fprintf(fp, "\t%s", p->jg);        fprintf(fp, "\t\t%s", p->addr);        fprintf(fp, "\n");        p = p->next;    }    printf("保存成功,请到当前目录下的student.txt文件中查看");    fclose(fp);}void menu(){    printf("\n\n");    printf("\t\t\t===================学试报名管理系统===================\n");    printf("\t\t\t* 作者:XXX  班级:XXXXXXXX  学号:XXXXXXXXXXXXXXX      *\n");    printf("\t\t\t*                                                  *\n");    printf("\t\t\t*          1>. 录入学生的相关信息                    *\n");    printf("\t\t\t*          2>. 全部学生的相关信息                    *\n");    printf("\t\t\t*          3>. 查找某个就学生的籍贯                  *\n");    printf("\t\t\t*          4>. 修改某个学生的籍贯                    *\n");    printf("\t\t\t*          5>. 删除某个学生的相关信息                *\n");    printf("\t\t\t*          6>. 插入某个学生的相关信息                *\n");    printf("\t\t\t*          7>. 保存学生信息                         *\n");    printf("\t\t\t*          0>. 退出管理系统                         *\n");    printf("\t\t\t*                                    欢迎使用本系统!*\n");    printf("\t\t\t=====================================================\n");    printf("\t\t\t输入选项,按回车进入选项:                             \n");}int main(){    int item, n;         //item用于接收输入的命令,n用于接收输入的学生人数    char nam[30];    STU* L = NULL;    L = LIstInit(L);    do    {        menu();        printf("请输入相应的数字,进行相应的操作:\n");        scanf("%d", &item);        switch (item)        {        case 1:            printf("请输入您要录入的学生人数:");            scanf("%d", &n);            L = ListCreate(L, n);            break;        case 2:            printf("全部学生信息如下:\n");            printf("学号\t\t姓名\t\t电话号码\t\t身份证号码\t\t籍贯\t\t通讯地址\n");            output(L);            break;        case 3:            printf("请输入您要查找的学生姓名:");            scanf("%s", nam);            LIstSearch(L, nam);            break;        case 4:            printf("请输入您要修改的学生姓名:");            scanf("%s", nam);            ListModify(L, nam);            break;        case 5:            printf("请输入您要删除的学生的姓名:");            scanf("%s", nam);            ListDelete(L, nam);            break;        case 6:            ListInsert(L);            break;        case 7:            PrintFile(L);            break;        case 0:            printf("即将退出学生籍贯管理系统.....");            exit(0);        default:            break;        }        printf("\n\n\n\n");    } while (item);    return 0;}

部分运行结果截图

感谢各位的阅读,以上就是"C语言中怎么使用链表实现学生籍贯管理系统"的内容了,经过本文的学习后,相信大家对C语言中怎么使用链表实现学生籍贯管理系统这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

0