C语言 做一个学生信息管理系统

cpp 复制代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct person 
{
	char name[30];
	char sex[10];
	int num;
    struct person *next;
}stu;
stu *head = NULL;
void printf_link(stu *head)
{
    stu *pd = head;
    while(pd != NULL)
    {
        printf("姓名:%s\t性别:%s\t学号%d\n",pd->name,pd->sex,pd->num);
        pd = pd->next;
    }
    printf("\n");
}
stu *add(stu *head,stu *stu1)
{
    if(stu1 == NULL )
    {
        return head;
    }
    if(head == NULL)
    {
        head = stu1;
        printf("添加成功\n");
        return head;
    }
    stu *lastNode = head;
    while(lastNode != NULL)
    {
        if(lastNode->next == NULL)
        {
            break;
        }
        else
        {
            lastNode = lastNode->next;
        }
    }
    lastNode->next = stu1;
    printf("添加成功\n");
    return head;
}
stu * add_stu(stu *head)
{
    stu *stu1 = calloc(1,sizeof(stu));
    printf("请输入学员姓名:\n");
    scanf("%s",stu1->name);
    printf("请输入学院性别:\n");
    scanf("%s",stu1->sex);
    printf("请输入学院学号:\n");
    scanf("%d",&stu1->num);  
    head = add(head,stu1); 
    return head;
}
int get_len(stu *head)
{
    int i = 0;
    stu *pd = head;
    while(pd != NULL)
    {
        i++;
        pd = pd->next;
      
    }
    return i;
}
stu *insert(stu *head)
{
    stu *stu1 = calloc(1,sizeof(stu));
    printf("请输入要插入学员的姓名\n");
    scanf("%s",stu1->name);
    printf("请输入要插入学员的性别\n");
    scanf("%s",stu1->sex);
    printf("请输入要插入学员的学号\n");
    scanf("%s",&stu1->num);
    printf("请输入要插入学员的位置(从0开始)\n");
    int index = 0;
    scanf("%d",&index);
    int len = get_len(head);
    if(index > len)
    {
        head = add(head,len);
        return head;
    }
    if(index < 0)
    {
        printf("输入位置有误\n");
        return head;
    }
    if(index == 0)
    {
        stu1->next = head;
        head = stu1;
        printf("添加成功\n");
        return head;
    }
    stu *pd = head;
    for(int i;i < index-1;i++)
    {
        pd = pd->next;
    }
    stu1->next = pd->next;
    pd->next = stu1;
    printf("添加成功\n");
    return head;
}
stu * delete(stu *head)
{
    int a;
    stu *pd=NULL,*p;
    printf("请输入要删除的学号:\n");
    scanf("%d",&a);
    if(!head) 
    {
        printf("系统中已经没有数据可以删除\n");
        return head;
    }
    p=head;
    while(p&&p->num !=a)
    {
        pd=p;
        p=p->next;
    }
    if(p)
    {
        if(!pd) 
        {
        head =head->next;
        }
        else 
        pd->next=p->next;
        free(p);
    }
    return head;
}
void find(stu *head)
{
    int b = 0;
    stu *pd = NULL,*p;
    printf("请输入要查找的学号:\n");
    scanf("%d",&b);
    if(!head) 
    {
        printf("系统中已经没有数据可以删除\n");
        return head;
    }
    p=head;
    while(p&&p->num !=b)
    {
        pd=p;
        p=p->next;
    }
    if(p)
    {
        if(!pd) 
        {
        head =head->next;
        }
        else 
        pd->next=p->next;
        free(p);
    }
    return head;
}
void my_menu(int tag)
{
    switch(tag)
    {
    case 1:
        printf_link(head);
        break;
    case 2:
        head = add_stu(head);
        break;
    case 3:
        head = insert(head);
        break;
    case 4:
        head = delete(head);
        break;
    case 5:
        break;
    case 6:
        break;
    default:
    printf("输入有误请重新输入:\n");
        break;
    }
}
void free_link(stu *head)
{
    stu *pd = head;
    while(pd != NULL)
    {
        stu *next = pd->next;
        free(pd);
        pd = next;
    }
}
int main(int argc, char const *argv[])
{
    while (1)
    {
        printf("1,查询所有学员信息\n2,添加学员信息\n3,插入学员信息\n4,删除学员信息\n5,修改学员信息\n6,查找指定位置的学员\n7,退出程序\n");
        printf("请输入菜单号:\n");
        int tag = 0;
        scanf("%d",&tag);
        if(tag != 7)
        {
            my_menu(tag);
        }
        else{
            free_link(head);
            printf("您下次再来\n");
            break;
        }
    }
    return 0;
}
相关推荐
charlie1145141916 小时前
RK3506B: buildroot:出一份正规的最小 rootfs
开发语言·嵌入式·开源项目·rk3506b
珠海西格电力7 小时前
数据采集与治理:零碳园区管理系统的 “生命线”
大数据·人工智能·算法·架构·能源
Byron Loong7 小时前
【c#】Bitmap释放之 大象与蚊子
开发语言·c#
●VON7 小时前
HarmonyKit | 鸿蒙新特性:router 导航 API 从 pushUrl 到 UIContext 的演进
算法·华为·交互·harmonyos
星释7 小时前
鸿蒙智能体开发实战:31.鸿蒙壁纸大师 - 环境搭建与基础配置
算法·华为·ai·harmonyos·鸿蒙
ysa0510307 小时前
【板子】树上启发式合并
数据结构·c++·笔记·算法
音符犹如代码7 小时前
Java动态线程池:避坑原生线程池,吃透Dynamic-TP,手写一个Demo
java·开发语言
喜欢就别7 小时前
平均风险:Rényi DP 和零集中 DP
开发语言·r语言
学究天人7 小时前
数学公理体系大全:第一章 命题逻辑:真值之舞
人工智能·算法·机器学习·数学建模·动态规划·图论·抽象代数
小O的算法实验室7 小时前
2025年Neurocomputing,基于LLM的进化优化器:结合精英策略推理
算法