c语言实现简易学生管理系统

1.内容用到结构体,链表,函数,文件操作

 

2.该代码实现了增删改查,不过缺点,没有进行链表的内存释放会造成内存泄漏,写还是挺简单的,不过懒得写了

直接上代码自己感悟:

代码:

#include<stdio.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<unistd.h>
#include<string.h>
#include<stdlib.h>
typedef struct student{
    char name[64];
    int age;
    char id[24];
    char sex[5];
    float cn;
    float en;
    struct student *next;
}stu;
void menu(void)
{
    int choice;
    printf("welcome to student systems\n");
    printf("1.add    2.delect          \n");
    printf("3.show    4.update          \n");
    printf("0.exit\n");
    printf("\n");
}
void add(void)
{    
    int nu;
    FILE *pf=NULL;
    pf=fopen("student.txt","a");
    if(NULL==pf)
    {
        printf("open false!\n");
        return ;
    }
    while(1)
    {    
        getchar();
        printf("input 1=contine;0=break;\n");
        scanf("%d",&nu);
        if(!nu)
        {
            break;    
        }
        stu*s=(stu*)malloc(sizeof(stu));
        s->next=NULL;
        getchar();
        printf("please input student name:");
        fgets(s->name,64,stdin);
        s->name[strlen(s->name)-1]='\0';
        printf("please input age:");
        scanf("%d",&(s->age));
        getchar();
        printf("please input id:");
        fgets(s->id,16,stdin);
        s->id[strlen(s->id)-1]='\0';
        printf("please input sex:");
        fgets(s->sex,5,stdin);
        s->sex[strlen(s->sex)-1]='\0';
        printf("please input cn sorce :");
        scanf("%f",&(s->cn));
        printf("please input en sorce :");
        scanf("%f",&(s->en));
        fprintf(pf,"%s  %d  %s  %s  %.2f  %.2f\n",s->name,s->age,s->id,s->sex,s->cn,s->en);
        free(s);
    }
    fclose(pf);
    pf=NULL;
}
void delect(char*ck)
{
    FILE*pf=NULL;
    pf=fopen("student.txt","r");
    char pk;
    stu*p=(stu*)malloc(sizeof(stu));
    p->next=NULL;
    stu*po=p;
    while(1)
    {
        stu*a=(stu*)malloc(sizeof(stu));
        a->next=NULL;
        p->next=a;
        if(fscanf(pf,"%s  %d  %s  %s  %f  %f",a->name,&(a->age),a->id,a->sex,&(a->cn),&(a->en))==EOF)
        {
            break;
        }
        pk=fgetc(pf);
        p=a;
    }
    stu*pd=po;
    stu*pg;
    fclose(pf);
    pf=NULL;
    while(po->next!=NULL)
    {
        pg=po;
        if(strcmp(po->next->id,ck)==0)
        {
            po=po->next;
            pg->next=po->next;
            free(po);
            break;
        }
        po=po->next;
    }
    pf=fopen("student.txt","w");
    pd=pd->next;
    while(pd!=NULL)
    {    
        if(pd->id!=0)
        {
        fprintf(pf,"%s  %d  %s  %s  %.2f  %.2f\n",pd->name,pd->age,pd->id,pd->sex,pd->cn,pd->en);
        }
        pd=pd->next;

    }
    fclose(pf);
    pf=NULL;
}
int show(char*ck)
{    
    int i=0;
    FILE*pf=NULL;
    pf=fopen("student.txt","r");
    char pk;
    stu*p=(stu*)malloc(sizeof(stu));
    p->next=NULL;
    stu*po=p;
    while(1)
    {
        stu*a=(stu*)malloc(sizeof(stu));
        a->next=NULL;
        p->next=a;
        if(fscanf(pf,"%s  %d  %s  %s  %f  %f",a->name,&(a->age),a->id,a->sex,&(a->cn),&(a->en))==EOF)
        {
            break;
        }
        pk=fgetc(pf);
        p=a;
    }
    fclose(pf);
    pf=NULL;
    po=po->next;
    while(po!=NULL)
    {
        if(strcmp(po->id,ck)==0)
        {
            i=1;
            printf("name=%s ,age=%d ,id=%s ,sex=%s ,cn=%.2f ,en=%.2f \n",po->name,po->age,po->id,po->sex,po->cn,po->en);
            break;
        }
        po=po->next;
    }
    return i;
}
void menu_2(void)
{
    printf("update information   \n");
    printf("1.id    2.name      \n");
    printf("3.en    4.cn      \n");
    printf("5.sex    6.sex      0.exit      \n");
    printf("\n");
}
void update_id(char*ck)
{
    int i=0;
    FILE*pf=NULL;
    pf=fopen("student.txt","r");
    char pk;
    stu*p=(stu*)malloc(sizeof(stu));
    p->next=NULL;
    stu*po=p;
    while(1)
    {
        stu*a=(stu*)malloc(sizeof(stu));
        a->next=NULL;
        p->next=a;
        if(fscanf(pf,"%s  %d  %s  %s  %f  %f",a->name,&(a->age),a->id,a->sex,&(a->cn),&(a->en))==EOF)
        {
            break;
        }
        pk=fgetc(pf);
        p=a;
    }
    fclose(pf);
    pf=NULL;
    po=po->next;
    stu *pt=po;
    while(po!=NULL)
    {
        if(strcmp(po->name,ck)==0)
        {    
            printf("please update id:");
            fgets(po->id,24,stdin);
            po->id[strlen(po->id)-1]='\0';
            break;
        }
        po=po->next;
    }
    pf=fopen("student.txt","w");
    while(pt!=NULL)
    {    
        if(pt->age!=0)
        {
            fprintf(pf,"%s  %d  %s  %s  %.2f  %.2f\n",pt->name,pt->age,pt->id,pt->sex,pt->cn,pt->en);
        }
        pt=pt->next;
    }
    fclose(pf);
    pf=NULL;
}
void update_name(char*ck)
{
    int i=0;
    FILE*pf=NULL;
    pf=fopen("student.txt","r");
    char pk;
    stu*p=(stu*)malloc(sizeof(stu));
    p->next=NULL;
    stu*po=p;
    while(1)
    {
        stu*a=(stu*)malloc(sizeof(stu));
        a->next=NULL;
        p->next=a;
        if(fscanf(pf,"%s  %d  %s  %s  %f  %f",a->name,&(a->age),a->id,a->sex,&(a->cn),&(a->en))==EOF)
        {
            break;
        }
        pk=fgetc(pf);
        p=a;
    }
    fclose(pf);
    pf=NULL;
    po=po->next;
    stu *pt=po;
    while(po!=NULL)
    {
        if(strcmp(po->id,ck)==0)
        {    
            printf("please update name:");
            fgets(po->name,64,stdin);
            po->name[strlen(po->name)-1]='\0';
            break;
        }
        po=po->next;
    }
    pf=fopen("student.txt","w");
    while(pt!=NULL)
    {    
        if(pt->age!=0)
            fprintf(pf,"%s  %d  %s  %s  %.2f  %.2f\n",pt->name,pt->age,pt->id,pt->sex,pt->cn,pt->en);
        pt=pt->next;
    }
    fclose(pf);
    pf=NULL;
}
void update_cn(char*ck)
{

    FILE*pf=NULL;
    pf=fopen("student.txt","r");
    char pk;
    stu*p=(stu*)malloc(sizeof(stu));
    p->next=NULL;
    stu*po=p;
    while(1)
    {
        stu*a=(stu*)malloc(sizeof(stu));
        a->next=NULL;
        p->next=a;
        if(fscanf(pf,"%s  %d  %s  %s  %f  %f",a->name,&(a->age),a->id,a->sex,&(a->cn),&(a->en))==EOF)
        {
            break;
        }
        pk=fgetc(pf);
        p=a;
    }
    fclose(pf);
    pf=NULL;
    po=po->next;
    stu *pt=po;
    while(po!=NULL)
    {
        if(strcmp(po->id,ck)==0)
        {    
            printf("please update cn:");
            scanf("%f",&(p->cn));
            break;
        }
        po=po->next;
    }
    pf=fopen("student.txt","w");
    while(pt!=NULL)
    {    
        if(pt->age!=0)
            fprintf(pf,"%s  %d  %s  %s  %.2f  %.2f\n",pt->name,pt->age,pt->id,pt->sex,pt->cn,pt->en);
        pt=pt->next;
    }
    fclose(pf);
}
void update_en(char*ck)
{
    FILE*pf=NULL;
    pf=fopen("student.txt","r");
    char pk;
    stu*p=(stu*)malloc(sizeof(stu));
    p->next=NULL;
    stu*po=p;
    while(1)
    {
        stu*a=(stu*)malloc(sizeof(stu));
        a->next=NULL;
        p->next=a;
        if(fscanf(pf,"%s  %d  %s  %s  %f  %f",a->name,&(a->age),a->id,a->sex,&(a->cn),&(a->en))==EOF)
        {
            break;
        }
        pk=fgetc(pf);
        p=a;
    }
    fclose(pf);
    pf=NULL;
    po=po->next;
    stu *pt=po;
    while(po!=NULL)
    {
        if(strcmp(po->id,ck)==0)
        {    
            printf("please update en:");
            scanf("%f",&(po->en));
            break;
        }
        po=po->next;
    }
    pf=fopen("student.txt","w");
    while(pt!=NULL)
    {    
        if(pt->age!=0)
            fprintf(pf,"%s  %d  %s  %s  %.2f  %.2f\n",pt->name,pt->age,pt->id,pt->sex,pt->cn,pt->en);
        pt=pt->next;
    }
}
void update_sex(char*ck)
{

    FILE*pf=NULL;
    pf=fopen("student.txt","r");
    char pk;
    stu*p=(stu*)malloc(sizeof(stu));
    p->next=NULL;
    stu*po=p;
    while(1)
    {
        stu*a=(stu*)malloc(sizeof(stu));
        a->next=NULL;
        p->next=a;
        if(fscanf(pf,"%s  %d  %s  %s  %f  %f",a->name,&(a->age),a->id,a->sex,&(a->cn),&(a->en))==EOF)
        {
            break;
        }
        pk=fgetc(pf);
        p=a;
    }
    fclose(pf);
    pf=NULL;
    po=po->next;
    stu *pt=po;
    while(po!=NULL)
    {
        if(strcmp(po->id,ck)==0)
        {    
            printf("please update sex:");
            fgets(po->sex,5,stdin);
            po->sex[strlen(po->sex)-1]='\0';
            break;
        }
        po=po->next;
    }
    pf=fopen("student.txt","w");
    while(pt!=NULL)
    {    
        if(pt->age!=0)
            fprintf(pf,"%s  %d  %s  %s  %.2f  %.2f\n",pt->name,pt->age,pt->id,pt->sex,pt->cn,pt->en);
        pt=pt->next;
    }

}
void update_age(char*ck)
{

    FILE*pf=NULL;
    pf=fopen("student.txt","r");
    char pk;
    stu*p=(stu*)malloc(sizeof(stu));
    p->next=NULL;
    stu*po=p;
    while(1)
    {
        stu*a=(stu*)malloc(sizeof(stu));
        a->next=NULL;
        p->next=a;
        if(fscanf(pf,"%s  %d  %s  %s  %f  %f",a->name,&(a->age),a->id,a->sex,&(a->cn),&(a->en))==EOF)
        {
            break;
        }
        pk=fgetc(pf);
        p=a;
    }
    fclose(pf);
    pf=NULL;
    po=po->next;
    stu *pt=po;
    while(po!=NULL)
    {
        if(strcmp(po->id,ck)==0)
        {    
            printf("please update age:");
            scanf("%d",&(po->age));
            break;
        }
        po=po->next;
    }
    pf=fopen("student.txt","w");
    while(pt!=NULL)
    {    
        if(pt->age!=0)
            fprintf(pf,"%s  %d  %s  %s  %.2f  %.2f\n",pt->name,pt->age,pt->id,pt->sex,pt->cn,pt->en);
        pt=pt->next;
    }
}
int main(void)
{    
    int choice,i,k;
    stu*p=(stu*)malloc(sizeof(stu));
    p->next=NULL;
    menu();
    while(1)
    {
        printf("please input nums:");
        scanf("%d",&choice);
        switch(choice)
        {
            case 0:
                goto a;
            break;
            case 1:
                add();
            break;
            case 2:
                getchar();
                printf("please iput id:");
                fgets(p->id,16,stdin);
                p->id[strlen(p->id)-1]='\0';
                delect(p->id);
            break;
            case 3:
                getchar();
                printf("please input student id:");
                fgets(p->id,16,stdin);
                p->id[strlen(p->id)-1]='\0';
                i=show(p->id);
                if(!i)
                {
                    printf("select false!\n");
                }
            break;
            case 4:
                getchar();
                menu_2();
                while(1)
                {
                    printf("please input nums:");
                    scanf("%d",&k);
                    switch(k)
                    {
                        case 0:
                            goto cp;
                            break;
                        case 1:
                            getchar();
                            printf("please the id of the student_name:");
                            fgets(p->name,64,stdin);
                            p->name[strlen(p->name)-1]='\0';
                            update_id(p->name);
                            break;
                        case 2:
                            getchar();
                            printf("please iput the student_name of id:");
                            fgets(p->id,24,stdin);
                            p->id[strlen(p->id)-1]='\0';
                            i=show(p->id);
                            if(!i)
                            {
                                printf("no student!\n");
                                break;
                            }
                            update_name(p->id);
                            break;
                        case 3:
                            getchar();
                            printf("please iput the student_name of id:");    
                            fgets(p->id,24,stdin);
                            p->id[strlen(p->id)-1]='\0';
                            update_cn(p->id);
                            break;
                        case 4:
                            getchar();
                            printf("please iput the student_name of id:");    
                            fgets(p->id,24,stdin);
                            p->id[strlen(p->id)-1]='\0';
                            update_en(p->id);
                            break;
                        case 5:

                            getchar();
                            printf("please iput the student_name of id:");    
                            fgets(p->id,24,stdin);
                            p->id[strlen(p->id)-1]='\0';
                            update_sex(p->id);
                            break;
                        case 6:
                            getchar();
                            printf("please iput the student_name of id:");    
                            fgets(p->id,24,stdin);
                            p->id[strlen(p->id)-1]='\0';
                            update_age(p->id);
                            break;
                    }
                
                
                }
cp:
            break;
        
        }
    
    }

a:
    free(p);
    return 0;
}

 

 会学生管理系统和什么管理系统啊,订餐系统之类的都差不多.

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值