c语言学生成绩管理系统_学生成绩管理系统c++代码结构体

c语言学生成绩管理系统_学生成绩管理系统c++代码结构体c语言管理系统牛~~/*引用库函数*/#include<stdio.h>#include<stdlib.h>#include<string.h>/*定义结构体数组*/typedefstruct{charnum[12];/*学号*/charname[20];/*姓名*/charsex[2];/*性别*/intscore[3];/*成绩*/

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

c语言管理系统

牛~~

/*引用库函数*/
#include<stdio.h> 
#include<stdlib.h>
#include<string.h>

/*定义结构体数组*/
typedef struct 
{ 
   
    char num[12];       /*学号*/
    char name[20];      /*姓名*/
    char sex[2];        /*性别*/
    int score[3];       /*成绩*/
    float avg;          /*平均分*/
    int sum;            /*总成绩*/
}Student;

Student studentAll[80]; /*结构体数组*/
int student_number = 0; /*总人数*/
/*菜单函数*/
int menu_select() 
{ 
   
    int check_number;
    do{ 
   
        system("cls");  /*运行前清屏clear screen,在stdlib.h中*/
        printf("\t************学生成绩管理系统*************\n"); /*菜单选择*/
        printf("\t*| 1. 添加学生信息 *\n");
        printf("\t*| 2. 显示学生信息 *\n");
        printf("\t*| 3. 按学号排序 *\n");
        printf("\t*| 4. 按总成绩排序 *\n");
        printf("\t*| 5. 查找单个学生 *\n");
        printf("\t*| 6. 删除指定学生 *\n");
        printf("\t*| 7. 修改学生信息 *\n"); 
        printf("\t*| 8. 查看各门课程的成绩情况 *\n");
        printf("\t*| 9. 待定功能 *\n");
        printf("\t*| 0. 保存退出 *\n");
        printf("\t*****************************************\n");
        printf("请输入选择(0-9):");
        scanf("%d",&check_number);              /*读入选择*/
    }while(check_number<0||check_number>9);
    return(check_number);                   /*返回选择*/
}

//以下的student都是形式参数,真正的数组是在全局变量里定义的studentAll数组

 /*输入若干条记录*/
void Input(Student student[])
{ 
   
    int i=0,j;
    char flag,clear[10];                        /*clear[10]为清除多余的数据所用*/
    char studentNum[12];                        //暂存某学生学号
                                    
    //判断是否已经存在相同学生的学号
    while(flag!='n'&&flag!='N')             //判断flag是不是n/N,以此判断是否继续输入学生信息
    { 
   
     printf("请输入学生学号: ");
      scanf("%s",studentNum);
    
      while(strcmp(student[i].num,studentNum)!=0&&i<student_number)
      { 
    
        i++;                            /*查找判断*/
      }
      //查找到学生,无法增加学生信息,返回主函数
       if(i<student_number)
        printf("已有相同学号的学生,请重新输入\n");
    //如果没有查找到学生,即可增加学生信息
       else 
      { 
    if(i==student_number) 
            { 
   memset(student[i].num, 0, sizeof(student[i].num));//字符串清空
            strcpy(student[i].num,studentNum);
            
            printf("学生姓名:");
            scanf("%s",student[student_number].name);
            printf("学生性别:");
            scanf("%s",student[student_number].sex);            
            printf("c语言成绩:");
            scanf("%d",&student[student_number].score[0]);
            printf("数据结构成绩:");
            scanf("%d",&student[student_number].score[1]);
            printf("数据库成绩:");
            scanf("%d",&student[student_number].score[2]);
            
            student[student_number].sum=0;
            for(j=0;j<3;j++)
            student[student_number].sum+=student[student_number].score[j];
            student[student_number].avg = (float)student[student_number].sum/3;
            //printf("%.2f\n",student[student_number].avg);
            gets(clear);                        //*清除多余的输入
            printf("此学生信息录入完毕,是否继续?(Y/N)");
            scanf("%c",&flag);          //输入判断
            student_number++;//总人数加1
            i=0;}
        }       
        
        
    }
        
}
    







/*显示所有记录*/
void Display(Student student[]) 
{ 
   
    int i;
    printf("共有%d名同学\n",student_number);
    printf("----------------------------------------------------------------------------------------------------------\n");
    printf("学生学号\t学生姓名\t学生性别\tc语言成绩\t数据结构成绩\t数据库成绩\t平均成绩\t总成绩\n");
    printf("----------------------------------------------------------------------------------------------------------\n");
    for(i=0;i<student_number;i++)
    { 
   
        printf("%s\t\t%s\t\t%s\t\t%d\t\t%d\t\t%d\t\t%f\t%d\n",student[i].num,student[i].name,student[i].sex,student[i].score[0],student[i].score[1],student[i].score[2],student[i].avg,student[i].sum);
    }
    system("pause");
    
}

/*按学号排序*/
void Sort_by_num(Student student[]) 
{ 
    
    int i,j;
    for(i=0;i<student_number-1;i++)
    { 
   
        for(j=0;j<student_number-1-i;j++)
        { 
   
            if(strcmp(student[j].num,student[j+1].num))
            { 
   
                Student t;
                t=student[j];
                student[j]=student[j+1];
                student[j+1]=t;
            }
        }
    }
    
}

/*按总成绩排序*/
void Sort_by_sum(Student student[]) 
{ 
    
    int i,j;
    for(i=0;i<student_number-1;i++)
    { 
   
        for(j=0;j<student_number-1-i;j++)
        { 
   
            if(student[j].sum<student[j+1].sum)
            { 
   
                Student t;
                t=student[j];
                student[j]=student[j+1];
                student[j+1]=t;
            }
        }
    }
    
}

/*按姓名查找,删除一条记录*/
void Delete_a_record(Student student[]) 
{ 
   
    char studentName[20];
    int i=0;
    printf("请输入要删除记录的姓名");
    scanf("%s",studentName);
    while(strcmp(student[i].name,studentName)!=0&&i<student_number)
    { 
   
        i++;                            /*查找判断*/
    }
    int t=i;
    if(i<student_number)
    { 
   
        int j=student_number-1;
        for(;j>i;i++)
        { 
   
            student[i]=student[i+1];
        }
        student_number--;
    }
    if(t==student_number)
    { 
   
        printf("没有此人,请重新输入");
    }   
}

/*按姓名查找并显示一个记录*/
void Query_a_record(Student student[]) 
{ 
   
    char studentName[20];
    int i=0;
    printf("请输入要查找记录的姓名");
    scanf("%s",studentName);
    while(strcmp(student[i].name,studentName)!=0&&i<student_number)
    { 
   
        i++;                            /*查找判断*/
    }
    if(i<student_number)
    { 
   
        printf("------------------------------------------------------------------------------------------------------------------------\n");
        printf("学生学号\t学生姓名\t学生性别\tc语言成绩\t数据结构成绩\t数据库成绩\t平均成绩\t总成绩\n");
        printf("------------------------------------------------------------------------------------------------------------------------\n");
        printf("%s\t\t%s\t\t%s\t\t%d\t\t%d\t\t%d\t\t%f\t%d\n",student[i].num,student[i].name,student[i].sex,student[i].score[0],student[i].score[1],student[i].score[2],student[i].avg,student[i].sum);
    }
    if(i==student_number)
    { 
   
        printf("没有此人,请重新输入");
    }   
    
    

    
}
/*修改学生信息*/
void modifyStudentinformation(Student student[])
{ 
   
    char studentName[20];
    int i=0;
    printf("请输入要修改记录的姓名");
    scanf("%s",studentName);
    while(strcmp(student[i].name,studentName)!=0&&i<student_number)
    { 
   
        i++;                            /*查找判断*/
    }
    if(i<student_number)
    { 
   
        printf("修改前的记录:");
        printf("------------------------------------------------------------------------------------------------------------------------\n");
        printf("学生学号\t学生姓名\t学生性别\tc语言成绩\t数据结构成绩\t数据库成绩\t平均成绩\t总成绩\n");
        printf("------------------------------------------------------------------------------------------------------------------------\n");
        printf("%s\t\t%s\t\t%s\t\t%d\t\t%d\t\t%d\t\t%f\t%d\n",student[i].num,student[i].name,student[i].sex,student[i].score[0],student[i].score[1],student[i].score[2],student[i].avg,student[i].sum); 
        printf("\n学生学号:");
        scanf("%s",student[i].num);
        printf("学生姓名:");
        scanf("%s",student[i].name);
        printf("学生性别:");
        scanf("%s",student[i].sex);         
        printf("c语言成绩:");
        scanf("%d",&student[i].score[0]);
        printf("数据结构成绩:");
        scanf("%d",&student[i].score[1]);
        printf("数据库成绩:");
        scanf("%d",&student[i].score[2]);
        for(int j=0;j<3;j++)
            student[i].sum+=student[i].score[j];
            student[i].avg = (float)student[i].sum/3;
        printf("\n修改后的记录:\n");
        printf("------------------------------------------------------------------------------------------------------------------------\n");
        printf("学生学号\t学生姓名\t学生性别\tc语言成绩\t数据结构成绩\t数据库成绩\t平均成绩\t总成绩\n");
        printf("------------------------------------------------------------------------------------------------------------------------\n");
        printf("%s\t\t%s\t\t%s\t\t%d\t\t%d\t\t%d\t\t%f\t%d\n",student[i].num,student[i].name,student[i].sex,student[i].score[0],student[i].score[1],student[i].score[2],student[i].avg,student[i].sum);
    }
    if(i==student_number)
    { 
   
        printf("没有此人,请重新输入");
    }   
    
    

    
}

/*查看各门课程的成绩情况*/
void showClass(Student student[]) 
{ 
    
    char studentName[20];
    int i=0;
    printf("请输入要查看各门课程成绩的学生的姓名");
    scanf("%s",studentName);
    while(strcmp(student[i].name,studentName)!=0&&i<student_number)
    { 
   
        i++;                            /*查找判断*/
    }
    if(i<student_number)
    { 
   
        printf("***********\n");
        printf("c语言成绩:%d\n",student[i].score[0]);
        printf("***********\n\n");
        printf("**************\n");
        printf("数据结构成绩:%d\n",student[i].score[1]);
        printf("**************\n\n");
        printf("**************\n");
        printf("数据库成绩:%d\n",student[i].score[2]);
        printf("**************\n");
    }
    if(i==student_number)
    { 
   
        printf("没有此人,请重新输入");
    }   
}

/*从文件中读入数据*/
void AddfromText(Student student[]) 
{ 
    
    int i=0;
    int number = 0;
    FILE *fp;                                                           /*定义文件指针*/
    if((fp=fopen("D:\\student.txt","rb"))==NULL)                /*打开二进制文件,如果不存在则创建*/
    { 
    
        fp=fopen("D:\\student.txt","rb") ;
        
    }

    fscanf(fp,"%d",&student_number);                                    /*读入总记录量*/

    
    while(i<student_number)                                             /*循环读入数据*/
    { 
   
        fscanf(fp,"%s%s%s%d%d%d%f%d",student[i].num,student[i].name,student[i].sex,&student[i].score[0],&student[i].score[1],&student[i].score[2],&student[i].avg,&student[i].sum);
        i++;
    }
    fclose(fp); 
    
}
/*将所有记录写入文件*/
WritetoText(Student student[])
{ 
   
    FILE *fp;
    if((fp=fopen("D:\\student.txt","wb"))==NULL)
    { 
   
        printf("error");
    }
    else
    { 
   
        fprintf(fp,"%d",student_number);
        for(int i=0;i<student_number;i++)
        { 
   
            fprintf(fp,"\t%s\t%s\t%s\t%d\t%d\t%d\t%f\t%d\n",student[i].num,student[i].name,student[i].sex,student[i].score[0],student[i].score[1],student[i].score[2],student[i].avg,student[i].sum);
        }
        fclose(fp);
    }  
}


/*主函数*/
int main() 
{ 
   
    AddfromText(studentAll);
    for(;;)
    { 
   
        switch(menu_select())                                           /*选择判断*/
        { 
   
            case 1:
            printf("插入学生信息\n");                             /*输入若干条记录*/
            Input(studentAll);
            break;
            case 2:
            printf("显示记录\n");                               /*显示所有记录*/
            Display(studentAll);
            break;
            case 3:
            printf("按学号排序\n");
            Sort_by_num(studentAll);                                    /*按学号排序*/
            printf("按学号排序成功!\n");
            Display(studentAll);
            system("pause");
            break;
            case 4:
            printf("按总成绩排序\n");
            Sort_by_sum(studentAll);                                    /*按总成绩排序*/
            printf("按总成绩排序成功!\n");
            Display(studentAll);
            system("pause");
            break;
            case 5:
            printf("查找单个学生\n");
            Query_a_record(studentAll);                                 /*按姓名查找学生*/
            system("pause");
            break;
            case 6:
            printf("删除指定学生\n");
            Delete_a_record(studentAll);                                /*按姓名查找,删除一条记录*/
            system("pause");
            break;
            case 7:
            printf("修改学生信息\n");
            modifyStudentinformation(studentAll);                               /*查看学生成绩情况*/
            system("pause");
            break;
            case 8:
            printf("查看各门课程的成绩情况\n");
            showClass(studentAll);                                      /*查看各门课程的成绩情况*/
            system("pause");
            break;
            case 9:
            printf("待定功能\n");
            printf("功能描述");
            system("pause");
            break;
            case 0:
            WritetoText(studentAll);
            printf("已保存,退出系统\n");       /*结束程序*/
            system("pause");
            //exit(0);
        }
    }
} 



靓仔点赞

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/193697.html原文链接:https://javaforall.net

(0)
上一篇 2025年11月20日 下午1:22
下一篇 2025年11月20日 下午2:01


相关推荐

  • 力矩< torque>详解

    力矩< torque>详解力矩:物理学里是指作用力使得物体绕着转动轴或支点转动的趋向。单位是牛顿-米。力对物体产生转动作用的物理量(分为:力对轴的矩和力对点的矩)即为:M=L*F。L是从转动轴到着力点的距离矢量,F也是矢量力;因此力矩也是矢量。力对轴的矩是力对物体产生绕某一轴转动作用的物理量,其大小等于力在垂直于该轴的平面上的分量和此分力作用线到该轴垂直距离的乘积。例如开门时,外力F平行于门轴的分力FП

    2022年5月14日
    61
  • 数据库的三大范式[通俗易懂]

    数据库的三大范式[通俗易懂]当你应聘后端岗位的时候,数据库的知识必不可少,今天给大家分享一下数据库三大范式的通俗理解第一范式:无重复的列第二范式:属性完全依赖于主键第三范式:属性不依赖于其他非主属性总结:第一范式(1NF)原子性:保证数据不可再分第二范式(2NF)前提:满足第一范式每张表只描述一件事情,就是主键对应着所有信息第三范式(3NF)前提:满足第一和第二范式第三范式需要保证表中的数据和主键直接相关,而不是间接相关注意:阿里巴巴要求关联查询的表不得超过3张,数据库的性能更加重要,适当考虑规范性就好其实目前关系数据库有六种范式:

    2025年12月9日
    5
  • PAT乙级题库

    PAT乙级题库1001害死人不偿命的(3n+1)猜想(15分)1002写出这个数(20分)1004成绩排名(20分)1006换个格式输出整数(15分)1007素数对猜想(20分)1008数组元素循环右移问题(20分)1011A+B和C(15分)1012数字分类(20分)1013数素数(20分)1016部分A+B(1…

    2022年5月25日
    60
  • 有趣的微分方程之常数变易法

    有趣的微分方程之常数变易法什么是常数变易法呢 常数变易法是一种解线性微分方程的行之有效的方法 它是拉格朗日十一年的研究成果 我们所用仅是他的结论 并无过程 https baike baidu com item E5 B8 B8 E6 95 B0 E5 8F 98 E6 98 93 E6 B3 95 fr aladdin 百度百科连接 求解过程呢 一阶假如我们有一个非齐次线性微分方程 一

    2026年3月16日
    2
  • 软件需求规格说明书样例

    软件需求规格说明书样例1 目的规范化软件开发过程中的 需求说明书 的编写 使之成为整个开发工作的基础 2 适用范围本规范适用于集团开发项目的 软件 需求说明书 的编写 3 编写内容提示 1 引言 3 1 1 背景说明说明被开发软件的名称 任务提出者 用户及实现该软件的计算机网络 3 1 2 参考资料列出有关资料 名称 发表日期 出版单位 作者等 3 1 3 术语和缩写词列出本文件中用到的专门术语的定义 及术语缩写词

    2025年11月11日
    5
  • Agentic AI 时代,半导体产业到底该怎么看?

    Agentic AI 时代,半导体产业到底该怎么看?

    2026年3月14日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号