LinChuan10 2021-06-17 12:39 采纳率: 0%
浏览 303

C++学生学籍管理系统

题目描述:设计一个简单的学籍管理系统,实现出最基本的功能。
功能需求:
(1) 设计一个学生类Student,包含学号,姓名,宿舍,电话。
(2) 设计一个学生成绩类Score,包括学号,课程名称,分值。
(3) 添加、删除、修改学生信息功能。对重复录入进行检查。
(4) 添加,删除,修改学生成绩功能。对重复录入进行检查。
(5) 根据学生学号,查询该学生信息,以及成绩情况。
(6) 使用外部文件存储通讯录信息。

学生类和成绩类都有学号如何处理?希望大佬能给注释

  • 写回答

2条回答 默认 最新

  • CSDN专家-sinJack 2021-06-17 12:42
    关注

    如有帮助望采纳。点击我回答右上角【采纳】按钮。

    #include<stdio.h>  
    #include<stdlib.h>  
    #include<string.h>  
     
    struct stud  
    {  
    long num;  
    char name[20];  
    double score;  
    };  
     
    typedef struct stucode  
    {  
    struct stud student ;  
    struct stucode *next;  
    }L;  
     
     
    void menu();  
    void createlist(struct stucode **r);  
    void out(struct stucode *r);  
    void search1(struct stucode *r);  
    void search2(struct stucode *r);  
    void del(struct stucode **r);  
    void insert(struct stucode **r);  
    void sort(struct stucode **r);  
     
    void main()  
    {  
    char choose;  
    int flag=1;  
    struct stucode *r=NULL;  
     
    while(flag)  
    {  
    system("cls");  
    menu();  
    choose=getchar();  
    switch(choose)  
    {  
    case '1':  
    createlist(&r);  
    out(r);  
    printf("Testing function 1\nPress any key to continue\n");  
    getchar();  
    getchar();  
    break;  
     
    case '2':  
    search1(r);  
    printf("Testing function 1\nPress any key to continue\n");  
    getchar();  
    getchar();  
    break;  
     
    case '3':  
    search2(r);  
    printf("Testing function 1\nPress any key to continue\n");  
    getchar();  
    getchar();  
    break;  
     
    case '4':  
    del(&r);  
    out(r);  
    printf("Testing function 1\nPress any key to continue\n");  
    getchar();  
    getchar();  
    break;  
     
    case '5':  
    insert(&r);  
    out(r);  
    printf("Testing function 1\nPress any key to continue\n");  
    getchar();  
    getchar();  
    break;  
     
    case '6':  
    sort(&r);  
    out(r);  
    printf("Testing function 1\nPress any key to continue\n");  
    getchar();  
    getchar();  
    break;  
     
    case '7':  
    out(r);  
    printf("Testing function 7\nPress any key to continue\n");  
    getchar();  
    getchar();  
    break;  
     
    case '0':  
    flag=0;  
    printf("The end.\n");  
    break;  
     
    default: printf("\nWrong Selection!(选择错误,请重选!)\n");getchar();getchar();  
    }  
    }  
    }  
     
    void createlist(struct stucode **r)  
    {  
    struct stucode *p,*t;  
    long n;  
    char a[20];  
    double s;  
    if(*r) *r=NULL;  
    printf(" \n请输入:\n 学号(请按学号升序排列) 姓名 分数 (若要结束请输入三个为零)  
     
    \n");  
    scanf("%ld%s%lf",&n,a,&s);  
    if(n==0) return;  
     
    p=(L *)malloc(sizeof(L));  
    p->student.num=n;  
    strcpy(p->student.name,a);  
    p->student.score=s;  
    p->next=NULL;  
    *r=p;  
     
    scanf("%ld%s%lf",&n,a,&s);  
     
    while(n)  
    {  
    t=p;  
    p=(L *)malloc(sizeof(L));  
    p->student.num=n;  
    strcpy(p->student.name,a);  
    p->student.score=s;  
    p->next=NULL;  
    t->next=p;  
    scanf("%ld%s%lf",&n,a,&s);  
    }  
    }  
     
    void search1(struct stucode *r)  
    {  
    long x;  
    if(!r)  
    {  
    printf("没有学生信息可查询!\n");  
    return ;  
    }  
    printf(" 请输入要查询的学生信息的学生学号:\n");  
    scanf("%ld",&x);  
    while(r&&r->student.num!=x)  
    r=r->next;  
    if(r==NULL)  
    printf("Error! No such student !\n");  
    else  
    printf("%ld %s %.2lf\n",r->student.num,r->student.name,r->student.score);  
    }  
    void search2(struct stucode *r)  
    {  
    char m[20];  
    if(!r)  
    {  
    printf("没有学生信息可查询!\n");  
    return ;  
    }  
     
    printf(" 请输入要查询的学生信息的学生姓名:\n");  
    scanf("%s",m);  
    while(r&&strcmp(r->student.name,m))  
    r=r->next;  
    if(r==NULL)  
    printf("Error! No such student !\n");  
    else  
    printf("%ld %s %.2lf\n",r->student.num,r->student.name,r->student.score);  
    }  
    void del(struct stucode **r)  
    {  
    long k;  
    struct stucode *p=*r,*t;  
    if(!(*r))  
    {  
    printf("没有学生信息可删除 !\n");  
    return ;  
    }  
    printf(" 请输入要删除的学生信息的学生学号:\n");  
    scanf("%ld",&k);  
     
    if(p->student.num==k)  
    *r=(*r)->next,free(p);  
    else  
    {  
    while(p->next&&p->next->student.num!=k)  
    p=p->next;  
    if(p->next==NULL)  
    printf("Error! No such student !\n");  
    else  
    {  
    t=p->next;  
    p->next=p->next->next;  
    free(t);  
    }  
    }  
     
    }  
    void insert(struct stucode **r)  
    {  
    long n;  
    char a[20];  
    double s;  
     
     
     
    L *p,*t,*k;  
    printf(" 请输入要插入的学生信息的学生学号 姓名 分数:\n");  
    scanf("%ld%s%lf",&n,a,&s);  
    p=(L *)malloc(sizeof(L));  
    p->student.num=n;  
    p->student.score=s;  
    strcpy(p->student.name,a);  
    if(!(*r))  
    {  
    *r=p;  
    (*r)->next=NULL;  
    return ;  
    }  
    if(p->student.num<(*r)->student.num)  
    p->next=(*r),(*r)=p;  
    else  
    {  
    t=*r;  
    k=t;  
    while(t->next&&t->next->student.num<=p->student.num)  
    t=t->next;  
    p->next=t->next;  
    t->next=p;  
    *r=k;  
    }  
    }  
     
     
    void sort(struct stucode **r)  
    {  
    struct stucode *t,*p,*q,*z;  
    if(!r)  
    {  
    printf("没有学生信息可排序!\n");  
    return ;  
    }  
     
    if(!(*r)||!(*r)->next)  
    return;  
     
    t=*r;  
    p=t->next;  
    t->next=NULL;  
    while(p)  
    {  
    q=p->next;  
    if(p->student.score>t->student.score)  
    {  
    p->next=t;  
    t=p;  
    }  
    else  
    {  
    z=t;  
    while(z->next&&z->next->student.score>=p->student.score)  
    z=z->next;  
    p->next=z->next;  
    z->next=p;  
    }  
     
     
    p=q;  
    }  
    *r=t;  
     
    }  
    void out(struct stucode *r)  
    {  
    printf("\n\n");  
    if(!r)  
    {  
    printf("没有学生信息可输出!\n");  
    return ;  
    }  
     
    while(r)  
    {  
    printf("%ld %s %.2lf\n",r->student.num,r->student.name,r->student.score);  
    r=r->next;  
    }  
    printf("\n\n");  
    }  
    void menu()  
    {  
    printf("\n 学生信息管理系统\n");  
    printf("\n 菜单\n\n");  
    printf("\n 1建立链表并显示\n");  
    printf("\n 2查找某学号的学生信息\n");  
    printf("\n 3查找某姓名的学生信息\n");  
    printf("\n 4删除某学号的学生信息\n");  
    printf("\n 5插入新的学生信息\n");  
    printf("\n 6按分数降序排列输出\n");  
    printf("\n 7输出\n");  
    printf("\n 0退出\n");  
     
    printf("\n 请选择您要执行的选项:\n");  
    }
    评论

报告相同问题?